diff --git a/server/ItemScripts/AGnollsDoll.lua b/server/ItemScripts/AGnollsDoll.lua
new file mode 100755
index 000000000..8e4ca2966
--- /dev/null
+++ b/server/ItemScripts/AGnollsDoll.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : ItemScripts/AGnollsDoll.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.17 07:05:00
+ Script Purpose :
+ :
+--]]
+local Quest = 5838
+
+function examined(Item, Player)
+ if not HasCompletedQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "These gnolls and their dark magic must stop!","Offer")
+ end
+ AddConversationOption(conversation, "[Keep the little stuffed animal in your bag.]")
+ AddConversationOption(conversation, "[Drop it. You've done enough gnoll hunting.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This doll is similar to one you've seen before. The dark magics it was used for still infuriate you!")
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Look closely at the stuffed animal.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the stuffed animal away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This is a cute little stuffed animal.")
+end
+
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "Antonica would be a safer place with fewer Darkpaw Mystics.", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the stuffed animal away away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This small stuffed animal looks to have been a human child's toy at one-time. The toy looks to have been used in some ritual magic as it has many bite marks and bone powder caking its surface.")
+
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,1825) then
+ RemoveItem(Player,1825,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/ARuinedBloodsaberChestpiece.lua b/server/ItemScripts/ARuinedBloodsaberChestpiece.lua
new file mode 100755
index 000000000..95556ab6d
--- /dev/null
+++ b/server/ItemScripts/ARuinedBloodsaberChestpiece.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : ItemScripts/ARuinedBloodsaberChestpiece.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.19 03:05:54
+ Script Purpose :
+ :
+--]]
+--
+local Quest = 5841
+
+function examined(Item, Player)
+if not HasQuest(Player, Quest) and not HasCompletedQuest(Player, Quest) then
+ Dialog1(Item,Player)
+elseif GetQuestStep(Player,Quest)==1 or GetQuestStep(Player,Quest)==2 or GetQuestStep(Player,Quest)==3 then
+ Dialog2(Item,Player)
+elseif GetQuestStep(Player,Quest)==4 or GetQuestStep(Player,Quest)==5 or GetQuestStep(Player,Quest)==6 then
+ Dialog3(Item,Player)
+elseif GetQuestStep(Player,Quest)==7 or GetQuestStep(Player,Quest)==8 then
+ Dialog4(Item,Player)
+elseif HasCompletedQuest(Player, Quest)then
+ Completed(Item,Player)
+end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Inspect the chestpiece closely]", "Dialog2")
+ AddConversationOption(conversation, "[Put the chestpiece away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This leather armor has seen better days. You have to wonder why someone would hold on to this...")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==3 then
+ AddConversationOption(conversation, "[Attempt a repair using the gnoll armor sections.]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the ruined chestpiece away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This appears to be a chestpiece that belonged to the once powerful Bloodsaber Clan. There seems to be a large hole in the back of this armor; whatever arcane forces hit this piece of armor must have devastated the poor soul wearing it.")
+end
+
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==6 then
+ AddConversationOption(conversation, "[Use the Queen Klicnik eye on the armor.]", "Dialog4")
+ end
+ if GetQuestStep(Player,Quest)==3 then
+ SetStepComplete(Player,Quest,3)
+ end
+ AddConversationOption(conversation, "[Consider a way to disenchant the armor.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "While attempting to attach the gnoll armor segment you notice that it is almost repelled by the Bloodsaber armor. Magical forces seem to be preventing the repair of this armor.")
+end
+
+function Dialog4(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==8 then
+ AddConversationOption(conversation, "[Craft a lining from the kodiak hides.]", "QuestFinish")
+ end
+ if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+ end
+ AddConversationOption(conversation, "[Put the jagged chestpiece away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "When held near the gnoll armor segments the Bloodsaber armor starts shaking. The gnoll armor is pulled into and seemingly absorbed by the Bloodsaber armor. While the armor is now functional, the rough edges will make it almost impossible to wear.")
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if GetQuestStep(Player,Quest)==8 then
+ SetStepComplete(Player,Quest,8)
+ end
+ if HasItem(Player,2543) then
+ RemoveItem(Player,2543,1)
+ end
+end
+
+function Completed(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Hold on to the ruined chestpiece.]", "QuestFinish")
+ AddConversationOption(conversation, "[Toss this aside. It is ruined, after all.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This ruined chestpiece has the same Bloodsaber clan emblem from one you repaired. Apparently, more than one of them met their fate to a similar wound. Hopefully the one you repaired lasts longer than this one!")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/ATwitchingCrabClaw.lua b/server/ItemScripts/ATwitchingCrabClaw.lua
index 269fae67b..3fbd5267a 100755
--- a/server/ItemScripts/ATwitchingCrabClaw.lua
+++ b/server/ItemScripts/ATwitchingCrabClaw.lua
@@ -1,6 +1,28 @@
local QUEST = 385
+
+
function examined(Item, Player)
- if CanReceiveQuest(Player, QUEST)
+ Dialog1(Item,Player)
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,QUEST) then
+ AddConversationOption(conversation, "[Try to pry the shiney object from the pincer.]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the twitching claw away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This crab claw twitches slightly. You notice something glint near the closed pincer...")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player, QUEST)
then OfferQuest(NPC, Player, QUEST)
end
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "These crabs must die! I will slay them ALL!", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The claw spasms tightly on your finger! You wince at the pinch as you wrestle your hand free. You are seething with anger at this... this CRAB! Your throbbing finger will be avenged...")
+ PlayFlavor(Player,"","","wince",0,0,Player)
end
\ No newline at end of file
diff --git a/server/ItemScripts/AWantedPoster.lua b/server/ItemScripts/AWantedPoster.lua
new file mode 100755
index 000000000..efaa4fdaa
--- /dev/null
+++ b/server/ItemScripts/AWantedPoster.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : ItemScripts/AWantedPoster.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.19 01:05:03
+ Script Purpose :
+ :
+--]]
+local Quest = 5835
+
+function examined(Item, Player)
+ if not HasCompletedQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "These mutated creatures do not belong here!", "Offer")
+ end
+ AddConversationOption(conversation, "[Keep the poster in your bags.]")
+ AddConversationOption(conversation, "[Toss the poster. You've taken care of the gnolls.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This weathered poster is identical to one you worked with before. There must have been countless of them posted about.")
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Unfurl the poster.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the poster away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Time has not been kind to this rolled-up poster. The edges are frayed and splottched from moisture.")
+end
+
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Pursue the gnolls!]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the poster away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This is obviously an old wanted poster with images of gnoll faces across the top. You can make out some of the words.\n\n\"WANTED!\"\n\n\"Darkpaw gnolls have pillaged Antonica farmlands and must be dealt with!\"\n\n Unfortunately any mention of a reward has worn away.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,3213) then
+ RemoveItem(Player,3213,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/AcommemorativeQeynosCoin.lua b/server/ItemScripts/AcommemorativeQeynosCoin.lua
index 2082eb790..2d49437f0 100755
--- a/server/ItemScripts/AcommemorativeQeynosCoin.lua
+++ b/server/ItemScripts/AcommemorativeQeynosCoin.lua
@@ -9,13 +9,20 @@
function examined(Item, Player)
choice = MakeRandomInt(0,100)
if choice >=2 then
-conversation = CreateConversation()
-PlayFlavor(Player, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_1.mp3", "", "", 499186274, 1744595600, Player)
+ if GetClientVersion(Player) >546 then
+ conversation = CreateConversation()
+ PlayFlavor(Player, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_1.mp3", "", "", 499186274, 1744595600, Player)
-- PlayFlavor(Player,"voiceover/english/tullia_domna/fprt_hood04/quests/tulladomna/tulla_x1_initial.mp3","","",309451026,621524268,Player)
-- PlayFlavor(Player,"voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech.mp3","","", 2297205435, 1273418227,Player)
-AddConversationOption(conversation, "\"Many among you...\"", "visage03")
-AddConversationOption(conversation, "Put the coin away.", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "As you clutch the coin in your hand, you hear a voice magically speaking in your mind. \"Good traveler, you have seen much in your journey, and now you seek refuge in our humble City of Qeynos. As ruler and servant of the good people of Qeynos, I, Antonia Bayle, welcome you.\"")
+ AddConversationOption(conversation, "\"Many among you...\"", "visage03")
+ AddConversationOption(conversation, "Put the coin away.", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "As you clutch the coin in your hand, you hear a voice magically speaking in your mind. \"Good traveler, you have seen much in your journey, and now you seek refuge in our humble City of Qeynos. As ruler and servant of the good people of Qeynos, I, Antonia Bayle, welcome you.\"")
+ else
+ conversation = CreateConversation()
+ PlayFlavor(Player,"voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech.mp3","","", 2297205435, 1273418227,Player)
+ AddConversationOption(conversation, "Put the coin away.", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "As you clutch the coin in your hand, you hear a voice magically speaking in your mind.")
+end
else
conversation = CreateConversation() -- A SECRET DEEP DIVE INTO ANTONIA'S THOUGHTS (This is in jest, obviously)
PlayFlavor(Player,"voiceover/english/tullia_domna/fprt_hood04/quests/tulladomna/tulla_x1_initial.mp3","","",309451026,621524268,Player)
diff --git a/server/ItemScripts/Acrudegnollscrawling.lua b/server/ItemScripts/Acrudegnollscrawling.lua
new file mode 100755
index 000000000..70393195d
--- /dev/null
+++ b/server/ItemScripts/Acrudegnollscrawling.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : ItemScripts/Acrudegnollscrawling.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.13 05:05:06
+ Script Purpose :
+ :
+--]]
+quest = 5644
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+if CanReceiveQuest(Player,quest) then
+AddConversationOption(conversation, "Warn Walcott.","QuestStart")
+end
+AddConversationOption(conversation, "Put the scroll away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The crude scrawling seems to be a map. It shows four crop fields with the name Walcott scrawled on it. Just to the west of the fields is the drawing of a gate and castle beyond a wall.")
+end
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, quest)
+end
+
diff --git a/server/ItemScripts/AnOrcBrain.lua b/server/ItemScripts/AnOrcBrain.lua
index f302cbdb8..04534ae90 100755
--- a/server/ItemScripts/AnOrcBrain.lua
+++ b/server/ItemScripts/AnOrcBrain.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/AnOrcBrain.lua
- Script Author : Premierio015
+ Script Author : Premierio015//Dorbin
Script Date : 2021.06.20 09:06:23
Script Purpose : Item Script for Lore and Legend:Orc Quest
:
@@ -10,19 +10,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 3) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 3)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 3)
-RemoveItem(Player, 3796)
+if HasItem(Player,3796,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 3)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3796)
+end
end
diff --git a/server/ItemScripts/AnOrcEar.lua b/server/ItemScripts/AnOrcEar.lua
index 496069bf0..d2c36cab9 100755
--- a/server/ItemScripts/AnOrcEar.lua
+++ b/server/ItemScripts/AnOrcEar.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/AnOrcEar.lua
- Script Author : Premierio015
+ Script Author : Premierio015//Dorbin
Script Date : 2021.06.20 09:06:11
Script Purpose : Item Script for Lore and Legend:Orc Quest
:
@@ -11,19 +11,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 8)
-RemoveItem(Player, 3797)
+if HasItem(Player,3797,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3797)
+end
end
diff --git a/server/ItemScripts/AnOrcEye.lua b/server/ItemScripts/AnOrcEye.lua
index c14f8ad60..4cace96bf 100755
--- a/server/ItemScripts/AnOrcEye.lua
+++ b/server/ItemScripts/AnOrcEye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/AnOrcEye.lua
- Script Author : Premierio015
+ Script Author : Premierio015//Dorbin
Script Date : 2021.06.20 09:06:00
Script Purpose : Item Script for Lore and Legend:Orc Quest
:
@@ -9,19 +9,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 4)
-RemoveItem(Player, 3798)
+if HasItem(Player,3798,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3798)
+end
end
diff --git a/server/ItemScripts/AnOrcHeart.lua b/server/ItemScripts/AnOrcHeart.lua
index 0085d84f9..c136cbfb7 100755
--- a/server/ItemScripts/AnOrcHeart.lua
+++ b/server/ItemScripts/AnOrcHeart.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/AnOrcHeart.lua
- Script Author : Premierio015
+ Script Author : Premierio015//Dorbin
Script Date : 2021.06.20 09:06:24
Script Purpose : Item Script for Lore and Legend:Orc Quest
:
@@ -9,19 +9,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 2) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 2)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 2)
-RemoveItem(Player, 3799)
+if HasItem(Player,3799,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 2)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3799)
+end
end
diff --git a/server/ItemScripts/AnOrcSkin.lua b/server/ItemScripts/AnOrcSkin.lua
index 3a38beb4d..adcf76b66 100755
--- a/server/ItemScripts/AnOrcSkin.lua
+++ b/server/ItemScripts/AnOrcSkin.lua
@@ -9,19 +9,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 5)
-RemoveItem(Player, 3800)
+if HasItem(Player,3800,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3800)
+end
end
diff --git a/server/ItemScripts/AnOrcTooth.lua b/server/ItemScripts/AnOrcTooth.lua
index e51414e57..ed0a50b5b 100755
--- a/server/ItemScripts/AnOrcTooth.lua
+++ b/server/ItemScripts/AnOrcTooth.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/AnOrcTooth.lua
- Script Author : Premierio015
+ Script Author : Premierio015//Dorbin
Script Date : 2021.06.20 09:06:36
Script Purpose : Item Script for Lore and Legend:Orc Quest
:
@@ -11,19 +11,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 6)
-RemoveItem(Player, 3802)
+if HasItem(Player,3802,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3802)
+end
end
diff --git a/server/ItemScripts/AntonicaCreatureCatalog.lua b/server/ItemScripts/AntonicaCreatureCatalog.lua
new file mode 100755
index 000000000..9dc007d85
--- /dev/null
+++ b/server/ItemScripts/AntonicaCreatureCatalog.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : ItemScripts/AntonicaCreatureCatalog.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.15 04:09:12
+ Script Purpose :
+ :
+--]]
+local Catalogue = 5885
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Before the Rending, Antonica was the name of a very large continent that included the cities of Qeynos, Freeport, Halas, Rivervale, Highhold, Oggok and Gukta. Since the cataclysms that changed the lands, the name \"Antonica\" refers only to the western half of the continent of Karan. Its major city is Qeynos, which is located on Antonica's western coast.")
+end
+
+
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page2")
+AddConversationOption(conversation, "Turn back to previous section.","examined")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Antonica is the western half of the continent of Karan. It is surrounded by the ColdwindCoast on its north, west and southwestern edges. To the southeast, the PhantomMountains separate Antonica from the Thundering Steppes. Travel through the PhantomMountains is difficult. One can take advantage of Blind Man's Pass which is under the protection of the Qeynos Guard, however the lands surrounding the Pass are inhospitable.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page3")
+AddConversationOption(conversation, "Turn back to previous section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The climate of Antonica is temperate, with cool nights and comfortable days. The winds are generally from the west during the days, bringing sea breezes from across the ColdwindCoast. In the evenings, the wind flows from the east down the slopes of the Phantom Mountains. When the winds are reversed, the air is drier during the day but not uncomfortably so. Rains are generally mild during Growth and Harvest seasons. Overnight frosts are common during Decay, but melt away with the sunrise.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page4")
+AddConversationOption(conversation, "Turn back to previous section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "As the temperatures are so temperate, Antonica has a good season of Growth. The fertile lands contain scattered farms with pastures and fields. Trees are mainly deciduous oaks and maples in the valleys, while the hills are crowned by coniferous pines. Beneath the shade of the trees one can find flowers such as violets, Tunare's breath and dwarf-bearded iris. At night, one might be fortunate enough to find the rare night blooming gnoll's bane.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+if not HasQuest(Player,Catalogue) and not HasCompletedQuest(Player,Catalogue)then
+AddConversationOption(conversation, "Record the depicted creatures in your journal.","QuestStart")
+end
+AddConversationOption(conversation, "Turn back to previous section.","Page3")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Gnolls are the most obvious creature throughout Antonica. Various clans stake out territories for themselves and attempt to establish themselves as the major player in the region. Non-sentient creatures scattered through the green hills include timber wolves, badgers, bears, and klicnik beetles. Bats are known to wander near old ruined structures or amongst the trees. The ColdwindCoast around Antonica abounds with sea life as well, including crabs, pikes and lurkers.")
+end
+
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Catalogue)
+end
+
+
+
+
diff --git a/server/ItemScripts/AntonicaCreatureCatalogComplete.lua b/server/ItemScripts/AntonicaCreatureCatalogComplete.lua
new file mode 100755
index 000000000..83c864988
--- /dev/null
+++ b/server/ItemScripts/AntonicaCreatureCatalogComplete.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : ItemScripts/AntonicaCreatureCatalogComplete.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.15 04:09:53
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Before the Rending, Antonica was the name of a very large continent that included the cities of Qeynos, Freeport, Halas, Rivervale, Highhold, Oggok and Gukta. Since the cataclysms that changed the lands, the name \"Antonica\" refers only to the western half of the continent of Karan. Its major city is Qeynos, which is located on Antonica's western coast.")
+end
+
+
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page2")
+AddConversationOption(conversation, "Turn back to previous section.","examined")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Antonica is the western half of the continent of Karan. It is surrounded by the ColdwindCoast on its north, west and southwestern edges. To the southeast, the PhantomMountains separate Antonica from the Thundering Steppes. Travel through the PhantomMountains is difficult. One can take advantage of Blind Man's Pass which is under the protection of the Qeynos Guard, however the lands surrounding the Pass are inhospitable.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page3")
+AddConversationOption(conversation, "Turn back to previous section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The climate of Antonica is temperate, with cool nights and comfortable days. The winds are generally from the west during the days, bringing sea breezes from across the ColdwindCoast. In the evenings, the wind flows from the east down the slopes of the Phantom Mountains. When the winds are reversed, the air is drier during the day but not uncomfortably so. Rains are generally mild during Growth and Harvest seasons. Overnight frosts are common during Decay, but melt away with the sunrise.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page4")
+AddConversationOption(conversation, "Turn back to previous section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "As the temperatures are so temperate, Antonica has a good season of Growth. The fertile lands contain scattered farms with pastures and fields. Trees are mainly deciduous oaks and maples in the valleys, while the hills are crowned by coniferous pines. Beneath the shade of the trees one can find flowers such as violets, Tunare's breath and dwarf-bearded iris. At night, one might be fortunate enough to find the rare night blooming gnoll's bane.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn back to previous section.","Page3")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Gnolls are the most obvious creature throughout Antonica. Various clans stake out territories for themselves and attempt to establish themselves as the major player in the region. Non-sentient creatures scattered through the green hills include timber wolves, badgers, bears, and klicnik beetles. Bats are known to wander near old ruined structures or amongst the trees. The ColdwindCoast around Antonica abounds with sea life as well, including crabs, pikes and lurkers.")
+end
+
+
+
+
+
+
+
+
diff --git a/server/ItemScripts/BardCertificationPapers.lua b/server/ItemScripts/BardCertificationPapers.lua
new file mode 100755
index 000000000..be7c94a08
--- /dev/null
+++ b/server/ItemScripts/BardCertificationPapers.lua
@@ -0,0 +1,328 @@
+--[[
+ Script Name : ItemScripts/BardCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 10:06:07
+ Script Purpose :
+ :
+--]]
+local Quest = 5855
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==31 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Bard\" if you signed it and are a Commoner or Scout.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Bard.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Bard","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Bard as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Bard.")
+ if GetClass(Player)== 1 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,35)
+ local level = GetLevel(Player)*5
+
+if not HasSkill(Player, 1921433074) then -- Reconnaissance
+ AddSkill(Player, 1921433074,1,level)
+ SendMessage(Player, "You have learned the Reconnaissance skill")
+end
+if not HasSkill(Player, 1311635100) then -- Melodies/Bard
+ AddSkill(Player, 1311635100,1,level)
+ SendMessage(Player, "You have learned the Melodies skill")
+end
+if not HasSkill(Player, 1468243427) then -- Tracking
+ AddSkill(Player, 1468243427,1,level)
+ SendMessage(Player, "You have learned the Tracking skill")
+end
+if not HasSkill(Player, 2200201799) then -- Disarm Trap
+ AddSkill(Player, 2200201799,1,level)
+ SendMessage(Player, "You have learned the Disarm Trap skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,31,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Spawn, 613995491) then -- Disruption
+ AddSkill(Spawn, 613995491,1,level)
+ SendMessage(Spawn, "You have learned the Disruption skill")
+end
+if not HasSkill(Spawn, 366253016) then -- Ministration
+ AddSkill(Spawn, 366253016,1,level)
+ SendMessage(Spawn, "You have learned the Ministration skill")
+end
+if not HasSkill(Spawn, 3587918036) then -- Ordination
+ AddSkill(Spawn, 3587918036,1,level)
+ SendMessage(Spawn, "You have learned the Ordination skill")
+end
+if not HasSkill(Spawn, 882983852) then -- Subjugation
+ AddSkill(Spawn, 882983852,1,level)
+ SendMessage(Spawn, "You have learned the Subjugation skill")
+end
+--REMOVE SKILLS
+-- Remove Fighter for Scout
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+
+
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Scout
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Scout
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+
+ SendMessage(Player, "Congratulations! You are a Bard.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Bard.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001099) then
+ RemoveItem(Player,1001099,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/BeggarsCourtcitizenshiptask.lua b/server/ItemScripts/BeggarsCourtcitizenshiptask.lua
new file mode 100755
index 000000000..ccac098b0
--- /dev/null
+++ b/server/ItemScripts/BeggarsCourtcitizenshiptask.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : ItemScripts/BeggarsCourtcitizenshiptask.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 03:06:10
+ Script Purpose :
+ :
+--]]
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog2")
+StartDialogConversation(conversation, 2, Item, Player, "By order of the Overlord, all residents wishing to become citizens of the city must complete a trial to prove themselves.")
+
+end
+
+
+function Dialog2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read about where tokens are found]","Dialog3")
+StartDialogConversation(conversation, 2, Item, Player, "Tokens are scattered throughout the surrounding area. You must find five of these tokens to earn the right to speak to a city official.")
+end
+
+
+function Dialog3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog4")
+
+StartDialogConversation(conversation, 2, Item, Player, "Each district has been assigned an area in which to hunt for their tokens. Only tokens from within that area will be accepted.")
+end
+
+function Dialog4(Item, Player)
+conversation = CreateConversation()
+if GetLevel(Player)<6 then
+ AddConversationOption(conversation, "[I need more experience to pursue Citizenship]","CloseItemConversation")
+elseif not HasQuest(Player,5867) and not HasCompletedQuest(Player,5867)then
+AddConversationOption(conversation, "[write this in your quest journal]","StartQuest")
+end
+if HasQuest(Player,5867) or HasCompletedQuest(Player,5867) then
+AddConversationOption(conversation, "[continue]","StartQuest")
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Beggar's Court residents must gather five tokens from the Sunken City.")
+end
+
+function StartQuest(Item,Player)
+conversation = CreateConversation()
+if not HasQuest(Player,5867) and not HasCompletedQuest(Player,5867)then
+ OfferQuest(nil,Player,5867)
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Use the citizenship sign to report to Abbetor T'avi once you complete your task.")
+end
diff --git a/server/ItemScripts/BigBendcitizenshiptask.lua b/server/ItemScripts/BigBendcitizenshiptask.lua
new file mode 100755
index 000000000..3a477b05b
--- /dev/null
+++ b/server/ItemScripts/BigBendcitizenshiptask.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ItemScripts/BigBendcitizenshiptask.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 03:06:24
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog2")
+StartDialogConversation(conversation, 2, Item, Player, "By order of the Overlord, all residents wishing to become citizens of the city must complete a trial to prove themselves.")
+
+end
+
+
+function Dialog2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read about where tokens are found]","Dialog3")
+StartDialogConversation(conversation, 2, Item, Player, "Tokens are scattered throughout the surrounding area. You must find five of these tokens to earn the right to speak to a city official.")
+end
+
+
+function Dialog3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog4")
+
+StartDialogConversation(conversation, 2, Item, Player, "Each district has been assigned an area in which to hunt for their tokens. Only tokens from within that area will be accepted.")
+end
+
+function Dialog4(Item, Player)
+conversation = CreateConversation()
+if GetLevel(Player)<6 then
+ AddConversationOption(conversation, "[I need more experience to pursue Citizenship]","CloseItemConversation")
+elseif not HasQuest(Player,5866) and not HasCompletedQuest(Player,5866)then
+AddConversationOption(conversation, "[write this in your quest journal]","StartQuest")
+end
+if HasQuest(Player,5866) or HasCompletedQuest(Player,5866) then
+AddConversationOption(conversation, "[continue]","StartQuest")
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Big Bend residents must gather five tokens from the Sprawl.")
+end
+
+function StartQuest(Item,Player)
+conversation = CreateConversation()
+if not HasQuest(Player,5866) and not HasCompletedQuest(Player,5866)then
+ OfferQuest(nil,Player,5866)
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Use the citizenship sign to report to Abbetor T'avi once you complete your task.")
+end
diff --git a/server/ItemScripts/BlightoftheMorning.lua b/server/ItemScripts/BlightoftheMorning.lua
new file mode 100755
index 000000000..9aa4dbaff
--- /dev/null
+++ b/server/ItemScripts/BlightoftheMorning.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : ItemScripts/BlightoftheMorning.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.11 12:10:41
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Blight of the Morning when Activated. Lasts for 12 hours.
+ * On a combat hit this spell may cast Poison on target of attack. Lasts for 24.0 seconds. Triggers about 5.0 times per minute.
+ * Inflicts 9 poison damage on target
+ * Inflicts 11 poison damage on target instantly and every 6 seconds
+ * Cannot be modified except by direct means
+ * Grants a total of 100 triggers of the spell.
+
+End Item Effects--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+ Spell = GetSpell(2550440)
+ CastCustomSpell(Spell, Player, Player)
+end
+
+
diff --git a/server/ItemScripts/BootstruttersFieldGuidetoAntonica.lua b/server/ItemScripts/BootstruttersFieldGuidetoAntonica.lua
new file mode 100755
index 000000000..27329ef68
--- /dev/null
+++ b/server/ItemScripts/BootstruttersFieldGuidetoAntonica.lua
@@ -0,0 +1,147 @@
+--[[
+ Script Name : ItemScripts/BootstruttersFieldGuidetoAntonica.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.22 10:04:48
+ Script Purpose :
+ :
+--]]
+
+local Bootstrutter = 5806
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry One","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Antonica was once called Qeynos Hills. It was renamed Antonica after the Age of Cataclysms left the former continent of Antonica divided into islands. This land is part of the territory claimed as the Kingdom of Qeynos.")
+end
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Two","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Crater Pond:\n\nThis is a shallow pond. A meteor of large size impacted and created this crater that is now filled with inviting clear cool water. Do not be deceived traveler. This water is toxic allowing only the rarest of aquatic life to exist in its embrace. I waded through the water to reach the rock from the sky in the middle: a chunk of Luclin!")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Three","Page3")
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Coldwind Point:\n\n This is an isle resting just off the Southwest tip of Antonica. Upon this isle, the Lamp of Prexus acts as a beacon to warn ships of the dangerous crags that lurk beneath the water's surface. This lighthouse is a safe haven for those caught beyond the walls of Qeynos during thunderstorms.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Four","Page4")
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Fippy's Hill:\n\n This is an often gnoll-infested hill near the Qeynos gates. A gnoll by the name of Fippy Darkpaw used to climb atop this hill to plot out his next storming of the Qeynos Gates. Gnolls usually pitch camp up here to spy on the Qeynosians. They are frequently chased from this hill only to return.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Five","Page5")
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Forbidden Isle:\n\n This isle is far from forbidden any longer. It contains the ruins of a mausoleum that belonged to an evil mage who was placed in this warded mausoleum, Varsoon the Undying. The wards were to hold his soul for eternity, but a meteor shower breached the walls and released the evil.")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Six","Page6")
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Keep of the Ardent Needle:\n\n This is the refurbished keep of what was the grand citadel of the Clothspinners of Qeynos. They made their fortune in textiles and built this magnificent keep in the outskirts of the Qeynos Hills. As with many of the dreams of Old Antonica, the falling skies of the Shattering put an end to it. Lord Quinn Clothspinner has begun to rebuild his ancestor's estate, but his distaste for visitors makes this a place better left off the traveler's itinerary.")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Seven","Page7")
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Tower of the Oracles:\n\n This spire is unrivaled in Antonica. One look tells you that arcane inhabitants are present. This is the residence of the Coldwind Oracles. It was difficult to arrange a meeting with these mages. They prefer that their activities remain clandestine, and we dare not delve into their mysteries.")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Eight","Page8")
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Qeynos Hill:\n\n It is said that this is the hill that the Qeynos Claymore was wielded to repel an evil avatar in the War of Plagues. A replica of the Qeynos Claymore monument found in Qeynos was built here as well. On days of remembrance of past battles, Qeynosians come here to praise the fallen.")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Nine","Page9")
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Archer Woods, The Glade:\n\n This little thicket was once the training ground of early bowman. Rumor has it that the legendary Holly Windstalker honed her skills here as well, marking one tree with her secret symbol. This place is now the occasional training ground for the elite division of the Qeynos Guard known as the Green Hoods. But beware all who enter ... the local gnolls now claim these woods.")
+end
+
+function Page9(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Ten","Page10")
+AddConversationOption(conversation, "Turn back to previous entry.","Page8")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Bells of Vhalen:\n\n This was a region-wide signal device designed by a legendary bard named Vhalen. The tower was destroyed during the War of Plagues when Vhalen used it to not only warn the entire region of invasion but played some of the largest bard spells ever composed. Here he fell to a horde, hands still tugging at the bells to the end.")
+end
+
+function Page10(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Eleven","Page11")
+AddConversationOption(conversation, "Turn back to previous entry.","Page9")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Keep of the Gnollslayers:\n\n This ruin is all that remains of the keep that once held the Order of Gnollslayers, a band of knights dedicated to patrolling the borders of Qeynos and slaying all gnolls. It is rumored that their leader, Lord Hefax Tinmar, buried the magical Sabertooth sword near here. I searched in vain.")
+end
+
+function Page11(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Twelve","Page12")
+AddConversationOption(conversation, "Turn back to previous entry.","Page10")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Fangbreaker Keep:\n\n As with most keeps in the region, this is nothing but ruins. The werewolf hunting Order of the Fangbreakers was once based here. They once rid the Plains of Karana of its werewolves in the Age of Turmoil. Tales tell of a horde of werewolves slaying the entire order on this spot. The merchant lords of Caltorsis were quick to purchase the deed. An odd act considering they were at odds with the order for quite some time.")
+end
+
+function Page12(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Thirteen","Page13")
+AddConversationOption(conversation, "Turn back to previous entry.","Page11")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Ruins of Caltorsis:\n\n Caltorsis was once a small port and keep established to service the watch of the northern coastline. Mere seasons after the beginning of the Age of Destiny the knights of Caltorsis were all slain in a battle with pirates invading the shoreline. All that remains is the crumbling keep.")
+end
+
+function Page13(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Fourteen","Page14")
+AddConversationOption(conversation, "Turn back to previous entry.","Page12")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Grave of Windstalker:\n\n This gravesite overlooks the serene village of Windstalker Pond. Here rests the remains of one of the most revered and feared rangers of the Age of Turmoil, Holly Windstalker. Many rangers regard this as a sacred place imbued with magical powers.")
+end
+
+function Page14(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Fifteen","Page15")
+AddConversationOption(conversation, "Turn back to previous entry.","Page13")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Hidden Vale:\n\n This isolated place of green grandeur is unknown to most Antonicans. I happened upon the narrow passage leading to the secret vale within the Doghold Mountains. A very curious thing--my first visit I noted an obelisk in the vale, and on my second return it was not to be found! Perhaps I should sip less Clockwork Oil Stout.")
+end
+
+
+function Page15(Item, Player)
+conversation = CreateConversation()
+if not HasQuest(Spawn,Bootstrutter) and not HasCompletedQuest(Spawn,Bootstrutter)then
+AddConversationOption(conversation, "Write down these locations in your journal","QuestStart")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page14")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Stormhold:\n\n The grand entryway has been found! There I stood gazing at the sinking grandeur of what was once a marble entryway to the lost fortress called Stormhold. The sprawling underground bunker is rumored to be littered with jewels and artifacts, but beware... the evil that befell the Knights of Thunder that dwelt there still lurks in the dark bowels of Stormhold.")
+end
+
+
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Bootstrutter)
+end
+
diff --git a/server/ItemScripts/BrawlerCertificationPapers.lua b/server/ItemScripts/BrawlerCertificationPapers.lua
new file mode 100755
index 000000000..3b745e5e5
--- /dev/null
+++ b/server/ItemScripts/BrawlerCertificationPapers.lua
@@ -0,0 +1,302 @@
+--[[
+ Script Name : ItemScripts/BrawlerCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.11 07:06:34
+ Script Purpose :
+ :
+--]]
+local Quest = 5845
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==1 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Brawler\" if you signed it and are a Commoner or Fighter.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Brawler.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Brawler","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Brawler as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Brawler.")
+ if GetClass(Player)== 1 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,5)
+
+ RemoveSpellBookEntry(Player, 2550401)
+
+ local level = GetLevel(Player)*5
+
+if not HasSkill(Player, 1408356869) then -- Martial
+ AddSkill(Player, 1408356869,1,level)
+ SendMessage(Player, "You have learned the Martial skill")
+end
+if not HasSkill(Player, 3856706740) then -- Brawling
+ AddSkill(Player, 3856706740,1,level)
+ SendMessage(Player, "You have learned the Brawling skill")
+end
+if not HasSkill(Player, 3850377186) then -- Deflection
+ AddSkill(Player, 3850377186,1,level)
+ SendMessage(Player, "You have learned the Deflection skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,1,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,36,36)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 3177806075) then -- Fists
+ AddSkill(Player, 3177806075,1,level)
+ SendMessage(Player, "You are now more proficient with your Fists")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+
+--REMOVED SKILLS
+--Removed Advance Fighter
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout for Fighter
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Fighter
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Fighter
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVED WEAPON
+if not HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3173504370) then -- Roundshield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 2476073427) then -- Axe
+ RemoveSkill(Player, 2476073427)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if not HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 2200201799) then -- Disarm Trap
+ RemoveSkill(Player, 2200201799)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+ SendMessage(Player, "Congratulations! You are a Brawler.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Brawler.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001098) then
+ RemoveItem(Player,1001098,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/BucklerofUncommonBravery.lua b/server/ItemScripts/BucklerofUncommonBravery.lua
new file mode 100644
index 000000000..9d9631027
--- /dev/null
+++ b/server/ItemScripts/BucklerofUncommonBravery.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : ItemScripts/BucklerofUncommonBravery.lua
+ Script Author : coldllama (testing/can delete)
+ Script Date : 2024.01.02 02:01:32
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+
+end
\ No newline at end of file
diff --git a/server/ItemScripts/CaltorsisClericPage14.lua b/server/ItemScripts/CaltorsisClericPage14.lua
new file mode 100755
index 000000000..fda8b5be7
--- /dev/null
+++ b/server/ItemScripts/CaltorsisClericPage14.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : ItemScripts/CaltorsisClericPage14.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 02:05:28
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5839
+
+function examined(Item, Player)
+ if not HasCompletedQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "These undead should have learned their lesson!", "Offer")
+ end
+ AddConversationOption(conversation, "[Roll up the page and put it away.]")
+ AddConversationOption(conversation, "[Get rid of it. You've already learned what you can.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This old page appears to be part of a journal that has long since been torn away.")
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Try to read the page]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the page away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This old page appears to be part of a journal that has long since been torn away.")
+end
+
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "The Caltorsis clerics will not be around much longer.", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the page away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I have the journal entry of a Paladin named Grentithius. It reads: \"I'm concerned about the undead population in this area. Left unchecked, they may prove to be the end of our great city. I should destroy the more powerful undead to cull their numbers.\"")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,1001094) then
+ RemoveItem(Player,1001094,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/CastleviewHamletcitizenshiptask.lua b/server/ItemScripts/CastleviewHamletcitizenshiptask.lua
index 8d245d155..7a2ad03e7 100755
--- a/server/ItemScripts/CastleviewHamletcitizenshiptask.lua
+++ b/server/ItemScripts/CastleviewHamletcitizenshiptask.lua
@@ -47,6 +47,6 @@ conversation = CreateConversation()
if not HasQuest(Player,5719) and not HasCompletedQuest(Player,5719)then
OfferQuest(nil,Player,5719)
end
-AddConversationOption(conversation, "[put the note]","CloseItemConversation")
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
StartDialogConversation(conversation, 2, Item, Player, "After you complete your task, report to Marshal Glorfel using the citizenship sign.")
end
\ No newline at end of file
diff --git a/server/ItemScripts/ChugglesToolbox.lua b/server/ItemScripts/ChugglesToolbox.lua
index 82bef5469..29b98b002 100755
--- a/server/ItemScripts/ChugglesToolbox.lua
+++ b/server/ItemScripts/ChugglesToolbox.lua
@@ -8,7 +8,7 @@
local ChugglesToolbox = 483
-
+--
function examined(Item, Player)
if not HasQuest(Player, ChugglesToolbox) and not HasCompletedQuest(Player, ChugglesToolbox) then
OfferQuest(nil, Player, ChugglesToolbox)
@@ -16,5 +16,49 @@ end
end
+local ChugglesToolbox = 483
+function examined(Item, Player)
+ if CanReceiveQuest(Player,ChugglesToolbox) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the toolbox away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This toolbox is similar to one you've found before. You can't fathom a need for it, but someone else might be able to use it.")
+ end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,ChugglesToolbox) then
+ AddConversationOption(conversation, "[Inspect the toolbox.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the toolbox away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This box feels lighter than you expected.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,ChugglesToolbox) then
+ AddConversationOption(conversation, "[Write the list in your journal.]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the toolbox away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The words \"Chuggle of Temple Street\" are inscribed on a plate on top of the lid. The box is empty except for a handwritten note stuck to the inside of the box's top; the note lists the tools that once belonged in the box, and who among the denizens of Thieves' Way they were allocated to.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,ChugglesToolbox) then
+ OfferQuest(nil,Player,ChugglesToolbox)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,5014) then
+ RemoveItem(Player,5014,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/ClericCertificationPapers.lua b/server/ItemScripts/ClericCertificationPapers.lua
new file mode 100755
index 000000000..430d6507f
--- /dev/null
+++ b/server/ItemScripts/ClericCertificationPapers.lua
@@ -0,0 +1,284 @@
+--[[
+ Script Name : ItemScripts/ClericCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 03:06:45
+ Script Purpose :
+ :
+--]]
+local Quest = 5848
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==11 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Cleric\" if you signed it and are a Commoner or Priest.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Cleric.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Cleric","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Cleric as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Cleric.")
+ if GetClass(Player)== 11 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,12)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 2463145248) then -- Inspirations
+ AddSkill(Player, 2463145248,1,level)
+ SendMessage(Player, "You have learned the Inspirations skill")
+end
+if not HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ AddSkill(Player, 3341842907,1,level)
+ SendMessage(Player, "You have learned the Theurgy skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Remove Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+
+
+ SendMessage(Player, "Congratulations! You are a Cleric.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Cleric.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001102) then
+ RemoveItem(Player,1001102,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/CrusaderCertificationPapers.lua b/server/ItemScripts/CrusaderCertificationPapers.lua
new file mode 100755
index 000000000..313d840d2
--- /dev/null
+++ b/server/ItemScripts/CrusaderCertificationPapers.lua
@@ -0,0 +1,287 @@
+--[[
+ Script Name : ItemScripts/CrusaderCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.11 07:06:47
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==1 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Crusader\" if you signed it and are a Commoner or Fighter.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Crusader.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Crusader","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Crusader as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Crusader.")
+ if GetClass(Player)== 1 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,8)
+ local level = GetLevel(Player)*5
+
+if not HasSkill(Player, 1408356869) then -- Martial
+ AddSkill(Player, 1408356869,1,level)
+ SendMessage(Player, "You have learned the Martial skill")
+end
+if not HasSkill(Player, 3809066846) then -- Faith/Crusader
+ AddSkill(Player, 3809066846,1,level)
+ SendMessage(Player, "You have learned the Faith skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 2246237129) then -- Medium Armor
+ AddSkill(Player, 2246237129,1,level)
+ SendMessage(Player, "You are now more proficient with Medium Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 2608320658) then -- Kite Shield
+ AddSkill(Player, 2608320658,1,level)
+ SendMessage(Player, "You are now more proficient with a Kite Shield")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Player, 2292577688) then -- Great Sword
+ AddSkill(Player, 2292577688,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Sword")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+
+--REMOVED SKILLS
+--Removed Advance Fighter
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout for Fighter
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Fighter
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Fighter
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVED WEAPON
+if not HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2476073427) then -- Axe
+ RemoveSkill(Player, 2476073427)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 3180399725) then -- Staff(2h)
+ RemoveSkill(Player, 3180399725)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 2200201799) then -- Disarm Trap
+ RemoveSkill(Player, 2200201799)
+end
+ SendMessage(Player, "Congratulations! You are a Crusader.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Crusader.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001097) then
+ RemoveItem(Player,1001097,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/DirtCakedShield.lua b/server/ItemScripts/DirtCakedShield.lua
new file mode 100755
index 000000000..e05b84759
--- /dev/null
+++ b/server/ItemScripts/DirtCakedShield.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : ItemScripts/DirtCakedShield.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 12:05:54
+ Script Purpose :
+ :
+--]]
+local Quest = 5831
+
+function examined(Item, Player)
+if not HasQuest(Player, Quest) and not HasCompletedQuest(Player, Quest) then
+ Dialog1(Item,Player)
+elseif GetQuestStep(Player,Quest)==1 or GetQuestStep(Player,Quest)==2 then
+ Dialog2(Item,Player)
+elseif GetQuestStep(Player,Quest)==3 or GetQuestStep(Player,Quest)==4 then
+ Dialog3(Item,Player)
+elseif GetQuestStep(Player,Quest)==5 or GetQuestStep(Player,Quest)==6 then
+ Dialog4(Item,Player)
+elseif HasCompletedQuest(Player, Quest)then
+ Completed(Item,Player)
+end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Examine the shield more closely.]", "Dialog2")
+ AddConversationOption(conversation, "[Put the dirt-encrusted shield away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This dirt-encrusted shield has seen better days. Whoever originally owned it didn't care of it. Even now it's caked with so much dirt that it's hard to make out what was originally embossed on the face.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ AddConversationOption(conversation, "[Wipe the caked dirt off the shield face.]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the shield away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The dirt is hard-packed into the grooves of the shield. It may be possible to remove all the dried soil and see what the shield originally looked like. You may want to dip it in Crater Lake to loosen up the outer layer.")
+end
+
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==4 then
+ AddConversationOption(conversation, "[Scrub the dirt with the badger fur]", "Dialog4")
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+ end
+ AddConversationOption(conversation, "[Put the shield away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The water from Crater Lake was able to loosen up most of the dirt, making it a bit muddy. Scraping away the outer layer of mud reveals even more dirt inside all of the etchings. You're going to need to scrub it out with something. The fur from the badgers in Antonica might do the job.")
+end
+
+function Dialog4(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==6 then
+ AddConversationOption(conversation, "[Scrub the tarnish away with the centipede poison.]", "Dialog5")
+ end
+ if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+ end
+ AddConversationOption(conversation, "[Put the shield away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The hard fur from the badgers seems to do the trick. You are able to brush out all of the grime from the crevices. In the end, you see that it's an old shield with an image of the Qeynos gates on it. Unfortunately, it's rather tarnished. Maybe the poison from centipedes might be able to get rid of the tarnish.")
+end
+
+function Dialog5(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Admire your reflection in the smooth shield face]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "Making sure not to get any on your hands, you scrub at the metal with the centipede poison. After a while, you start to see the original luster shine on the face of the shield again. Even though it's a very old shield, you're certain it'll work just as good as it did when it was originally forged.")
+end
+--
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+ end
+ if HasItem(Player,6448) then
+ RemoveItem(Player,6448,1)
+ end
+end
+
+function Completed(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the shield, for whatever reason.]")
+ AddConversationOption(conversation, "[Toss the shield into the mud]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This dirt-caked shield resembles one you cleaned up before! You have no need to keep this one around.")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/DruidCertificationPapers.lua b/server/ItemScripts/DruidCertificationPapers.lua
new file mode 100755
index 000000000..b20defbdc
--- /dev/null
+++ b/server/ItemScripts/DruidCertificationPapers.lua
@@ -0,0 +1,288 @@
+--[[
+ Script Name : ItemScripts/DruidCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 03:06:56
+ Script Purpose :
+ :
+--]]
+local Quest = 5849
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==11 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Druid\" if you signed it and are a Commoner or Priest.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Druid.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Druid","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Druid as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Druid.")
+ if GetClass(Player)== 11 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,15)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 2463145248) then -- Inspirations
+ AddSkill(Player, 2463145248,1,level)
+ SendMessage(Player, "You have learned the Inspirations skill")
+end
+if not HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ AddSkill(Player, 3282420779,1,level)
+ SendMessage(Player, "You have learned the Archegenesis skill")
+end
+if not HasSkill(Player, 3341842907) then -- Theurgy/Druid
+ AddSkill(Player, 3341842907,1,level)
+ SendMessage(Player, "You have learned the Theurgy skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Remove Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Remove Priest
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Remove Mage
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 545043066) then -- Symbol
+ RemoveSkill(Player, 545043066)
+end
+
+
+ SendMessage(Player, "Congratulations! You are a Druid.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Druid.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001104) then
+ RemoveItem(Player,1001104,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/DwarvenWorkBoots.lua b/server/ItemScripts/DwarvenWorkBoots.lua
new file mode 100755
index 000000000..ac30e9384
--- /dev/null
+++ b/server/ItemScripts/DwarvenWorkBoots.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : ItemScripts/DwarvenWorkBoots.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 07:04:14
+ Script Purpose :
+ :
+--]]
+
+local DwarvenWorkBootsID = 146379
+local TheLegendaryDwarvenWorkBootsID = 66088
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Place the mounting on the item. (This will remove any adornments and reforging)", "mount")
+AddConversationOption(conversation, "Leave the item as is", "CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The Dwarven Work Boots can be mounted and placed on the surface.")
+end
+
+function mount(Item, Player)
+RemoveItem(Player, DwarvenWorkBootsID)
+SummonItem(Player, TheLegendaryDwarvenWorkBootsID)
+end
\ No newline at end of file
diff --git a/server/ItemScripts/EnchanterCertificationPapers.lua b/server/ItemScripts/EnchanterCertificationPapers.lua
new file mode 100755
index 000000000..a311eaf38
--- /dev/null
+++ b/server/ItemScripts/EnchanterCertificationPapers.lua
@@ -0,0 +1,282 @@
+--[[
+ Script Name : ItemScripts/EnchanterCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 04:06:36
+ Script Purpose :
+ :
+--]]
+local Quest = 5851
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==21 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Enchanter\" if you signed it and are a Commoner or Priest.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Enchanter.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Enchanter","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Enchanter as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Enchanter.")
+ if GetClass(Player)== 21 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,25)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 3820670534) then -- Evocations/Mage
+ AddSkill(Player, 3820670534,1,level)
+ SendMessage(Player, "You have learned the Evocations skill")
+end
+if not HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ AddSkill(Player, 287643040,1,level)
+ SendMessage(Player, "You have learned the Enchantments skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+--REMOVE SKILLS
+-- Removed Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 770311065) then -- Mace
+ RemoveSkill(Player, 770311065)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 545043066) then -- Symbol
+ RemoveSkill(Player, 545043066)
+end
+if HasSkill(Player, 4037812502) then -- Buckler
+ RemoveSkill(Player, 4037812502)
+end
+
+ SendMessage(Player, "Congratulations! You are a Enchanter.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Enchanter.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001105) then
+ RemoveItem(Player,1001105,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/FishWine.lua b/server/ItemScripts/FishWine.lua
new file mode 100755
index 000000000..7af25f718
--- /dev/null
+++ b/server/ItemScripts/FishWine.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : ItemScripts/FishWine.lua
+ Script Author : neatz09
+ Script Date : 2023.12.12 03:12:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5463)
+ Regenz = 24.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
\ No newline at end of file
diff --git a/server/ItemScripts/ForgeryFreeportCitizenshipPapers.lua b/server/ItemScripts/ForgeryFreeportCitizenshipPapers.lua
new file mode 100644
index 000000000..4c0e96be6
--- /dev/null
+++ b/server/ItemScripts/ForgeryFreeportCitizenshipPapers.lua
@@ -0,0 +1,630 @@
+--[[
+ Script Name : ItemScripts/ForgeryFreeportCitizenshipPapers.lua
+ Script Author : dorbin
+ Script Date : 2024.01.09 04:01:41
+ Script Purpose :
+ :
+--]]
+local BB = 5860 --Welcome to Freeport (Big Bend )
+local BB_F = 5866 --Big Bend Citizenship Task
+local BC = 5861 --Beggar's Court
+local BC_F = 5867
+local LA = 5862 --Longshadow Alley
+local LA_F = 5868
+local SB = 5859 --Stonestair Byway
+local SB_F = 5870
+local SY = 5863 --Scale Yard
+local SY_F = 5869
+local TS = 5864 --Temple Street
+local TS_F = 5871
+
+
+
+function examined(Item, Player)
+local Race = GetRace(Player)
+conversation = CreateConversation()
+if not HasQuest(Player,BB)
+ and not HasQuest(Player,BB_F)
+
+ and not HasQuest(Player,BC)
+ and not HasQuest(Player,BC_F)
+
+ and not HasQuest(Player,SB)
+ and not HasQuest(Player,SB_F)
+
+ and not HasQuest(Player,LA)
+ and not HasQuest(Player,LA_F)
+
+ and not HasQuest(Player,SY)
+ and not HasQuest(Player,SY_F)
+
+ and not HasQuest(Player,TS)
+ and not HasQuest(Player,TS_F) then
+
+ if CanReceiveQuest(Player,BB) or
+ CanReceiveQuest(Player,BC) or
+ CanReceiveQuest(Player,SB) or
+ CanReceiveQuest(Player,LA) or
+ CanReceiveQuest(Player,SY) or
+ CanReceiveQuest(Player,TS) then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ AddConversationOption(conversation, "[Put the papers away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This stack of papers looks like Freeport Citzenship forms. They could be useful for someone looking to quickly become a citizen...")
+elseif
+ GetQuestStep(Player,BB_F) <12 or
+ GetQuestStep(Player,BC_F) <12 or
+ GetQuestStep(Player,SB_F) <12 or
+ GetQuestStep(Player,LA_F) <12 or
+ GetQuestStep(Player,SY_F) <12 or
+ GetQuestStep(Player,TS_F) <12 then
+ Welcome2(Item,Player)
+ elseif
+ GetQuestStep(Player,BB_F) ==12 and CanReceiveQuest(Player,BB) or
+ GetQuestStep(Player,BC_F) ==12 and CanReceiveQuest(Player,BC) or
+ GetQuestStep(Player,SB_F) ==12 and CanReceiveQuest(Player,SB) or
+ GetQuestStep(Player,LA_F) ==12 and CanReceiveQuest(Player,LA) or
+ GetQuestStep(Player,SY_F) ==12 and CanReceiveQuest(Player,SY) or
+ GetQuestStep(Player,TS_F) ==12 and CanReceiveQuest(Player,TS) then
+ Task1(Item,Player)
+ elseif
+ GetQuestStep(Player,BB_F) ==12 and GetQuestStep(Player,BB)==1 or
+ GetQuestStep(Player,BC_F) ==12 and GetQuestStep(Player,BC)==1 or
+ GetQuestStep(Player,SB_F) ==12 and GetQuestStep(Player,SB)==1 or
+ GetQuestStep(Player,LA_F) ==12 and GetQuestStep(Player,LA)==1 or
+ GetQuestStep(Player,SY_F) ==12 and GetQuestStep(Player,SY)==1 or
+ GetQuestStep(Player,TS_F) ==12 and GetQuestStep(Player,TS)==1 then
+ Task1(Item,Player)
+ else
+ Intro(Item,Player)
+end
+end
+
+function Intro(Item,Player)
+ local Race = GetRace(Player)
+ conversation = CreateConversation()
+ if Race == 11 then --Kerra
+ if not HasQuest(Player,LA_F) and not HasCompletedQuest(Player,LA_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,LA_F)
+ end
+
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if not HasQuest(Player,SY_F) and not HasCompletedQuest(Player,SY_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,SY_F)
+ end
+
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if not HasQuest(Player,LA_F) and not HasCompletedQuest(Player,LA_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,LA_F)
+ end
+
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if not HasQuest(Player,SB_F) and not HasCompletedQuest(Player,SB_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,SB_F)
+ end
+
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if not HasQuest(Player,BC_F) and not HasCompletedQuest(Player,BC_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,BC_F)
+ end
+
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 or Race == 16 then
+ if not HasQuest(Player,TS_F) and not HasCompletedQuest(Player,TS_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,TS_F)
+ end
+
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if not HasQuest(Player,BB_F) and not HasCompletedQuest(Player,BB_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,BB_F)
+ end
+
+ else
+ if not HasQuest(Player,LA_F) and not HasCompletedQuest(Player,LA_F) then
+ AddConversationOption(conversation, "[Make up a Overseer name]","Welcome1")
+ OfferQuest(nil,Player,LA_F)
+ end
+ end
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "It states a Overseer is suppose to sign the document...\n\n[ ACCEPT THE QUEST ]")
+end
+
+function Welcome1(Item,Player) --ALIGNMENT/FACTION CHANGE + CHECK FOR QUEST1
+local Race = GetRace(Player)
+if not HasQuest(Player,BB)
+ and not HasQuest(Player,BB_F)
+
+ and not HasQuest(Player,BC)
+ and not HasQuest(Player,BC_F)
+
+ and not HasQuest(Player,SB)
+ and not HasQuest(Player,SB_F)
+
+ and not HasQuest(Player,LA)
+ and not HasQuest(Player,LA_F)
+
+ and not HasQuest(Player,SY)
+ and not HasQuest(Player,SY_F)
+
+ and not HasQuest(Player,TS)
+ and not HasQuest(Player,TS_F) then
+Intro(Item,Player)
+else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Forge an address and check the list]","Welcome2")
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The form states you need signitures from a landlord and to complete their checklist...")
+ Faction(Item,Player)
+end
+end
+
+function Faction(Item,Player)
+ Freeport = GetFactionAmount(Player, 11)
+ Freeport_Add = (10000-Freeport)
+ Freeport = GetFactionAmount(Player, 12)
+ Freeport_Add = (-20000-Freeport)
+ Neriak = GetFactionAmount(Player, 13)
+ Kelethin = GetFactionAmount(Player, 14)
+ Halas = GetFactionAmount(Player, 16)
+ Gorowyn = GetFactionAmount(Player, 17)
+ alignment = GetAlignment(Player)
+ if Freeport <10000 and Freeport >=0 then ChangeFaction(Player, 11, Freeport_Add)
+ elseif Freeport <0 then ChangeFaction(Player, 11, (Freeport*-1))
+ Faction(Item,Player)
+end
+if Freeport <-20000 then ChangeFaction(Player, 12, Freeport_Add)
+ elseif Freeport >-20000 then ChangeFaction(Player, 12, (Freeport*-1))
+end
+if Neriak >0 then ChangeFaction(Player, 13, -Neriak)
+ elseif Neriak <0 then ChangeFaction(Player, 13, (Neriak*-1))
+end
+if Kelethin >0 then ChangeFaction(Player, 14, -Kelethin)
+ elseif Kelethin <0 then ChangeFaction(Player, 14, (Kelethin*-1))
+end
+if Halas >0 then ChangeFaction(Player, 16, -Halas)
+ elseif Halas <0 then ChangeFaction(Player, 16, (Halas*-1))
+end
+if Gorowyn >0 then ChangeFaction(Player, 17, -Gorowyn)
+ elseif Gorowyn <0 then ChangeFaction(Player, 17, (Gorowyn*-1))
+end
+if GetRace(Player) == 0 or GetRace(Player) == 3 or GetRace(Player) == 5 or GetRace(Player) == 6 or GetRace(Player) == 9 or GetRace(Player) == 11 or GetRace(Player) == 20 then
+SetAlignment(Player, 2)
+end
+end
+
+
+function Welcome2(Item,Player)
+ local Race = GetRace(Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Read the second form]","Task1")
+ if Race == 11 then --Kerra
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,1)
+ SetStepComplete(Player,LA_F,2)
+ SetStepComplete(Player,LA_F,3)
+ SetStepComplete(Player,LA_F,4)
+ SetStepComplete(Player,LA_F,5)
+ SetStepComplete(Player,LA_F,6)
+ SetStepComplete(Player,LA_F,7)
+ SetStepComplete(Player,LA_F,8)
+ SetStepComplete(Player,LA_F,9)
+ SetStepComplete(Player,LA_F,10)
+ SetStepComplete(Player,LA_F,11)
+ SetStepComplete(Player,LA_F,12)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if HasQuest(Player,SY_F) then
+ SetStepComplete(Player,SY_F,1)
+ SetStepComplete(Player,SY_F,2)
+ SetStepComplete(Player,SY_F,3)
+ SetStepComplete(Player,SY_F,4)
+ SetStepComplete(Player,SY_F,5)
+ SetStepComplete(Player,SY_F,6)
+ SetStepComplete(Player,SY_F,7)
+ SetStepComplete(Player,SY_F,8)
+ SetStepComplete(Player,SY_F,9)
+ SetStepComplete(Player,SY_F,10)
+ SetStepComplete(Player,SY_F,11)
+ SetStepComplete(Player,SY_F,12)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,1)
+ SetStepComplete(Player,LA_F,2)
+ SetStepComplete(Player,LA_F,3)
+ SetStepComplete(Player,LA_F,4)
+ SetStepComplete(Player,LA_F,5)
+ SetStepComplete(Player,LA_F,6)
+ SetStepComplete(Player,LA_F,7)
+ SetStepComplete(Player,LA_F,8)
+ SetStepComplete(Player,LA_F,9)
+ SetStepComplete(Player,LA_F,10)
+ SetStepComplete(Player,LA_F,11)
+ SetStepComplete(Player,LA_F,12)
+ elseif HasQuest(Player,SY_F) then
+ SetStepComplete(Player,SY_F,1)
+ SetStepComplete(Player,SY_F,2)
+ SetStepComplete(Player,SY_F,3)
+ SetStepComplete(Player,SY_F,4)
+ SetStepComplete(Player,SY_F,5)
+ SetStepComplete(Player,SY_F,6)
+ SetStepComplete(Player,SY_F,7)
+ SetStepComplete(Player,SY_F,8)
+ SetStepComplete(Player,SY_F,9)
+ SetStepComplete(Player,SY_F,10)
+ SetStepComplete(Player,SY_F,11)
+ SetStepComplete(Player,SY_F,12)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if HasQuest(Player,SB_F) then
+ SetStepComplete(Player,SB_F,1)
+ SetStepComplete(Player,SB_F,2)
+ SetStepComplete(Player,SB_F,3)
+ SetStepComplete(Player,SB_F,4)
+ SetStepComplete(Player,SB_F,5)
+ SetStepComplete(Player,SB_F,6)
+ SetStepComplete(Player,SB_F,7)
+ SetStepComplete(Player,SB_F,8)
+ SetStepComplete(Player,SB_F,9)
+ SetStepComplete(Player,SB_F,10)
+ SetStepComplete(Player,SB_F,11)
+ SetStepComplete(Player,SB_F,12)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if HasQuest(Player,BC_F) then
+ SetStepComplete(Player,BC_F,1)
+ SetStepComplete(Player,BC_F,2)
+ SetStepComplete(Player,BC_F,3)
+ SetStepComplete(Player,BC_F,4)
+ SetStepComplete(Player,BC_F,5)
+ SetStepComplete(Player,BC_F,6)
+ SetStepComplete(Player,BC_F,7)
+ SetStepComplete(Player,BC_F,8)
+ SetStepComplete(Player,BC_F,9)
+ SetStepComplete(Player,BC_F,10)
+ SetStepComplete(Player,BC_F,11)
+ SetStepComplete(Player,BC_F,12)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if HasQuest(Player,TS_F) then
+ SetStepComplete(Player,TS_F,1)
+ SetStepComplete(Player,TS_F,2)
+ SetStepComplete(Player,TS_F,3)
+ SetStepComplete(Player,TS_F,4)
+ SetStepComplete(Player,TS_F,5)
+ SetStepComplete(Player,TS_F,6)
+ SetStepComplete(Player,TS_F,7)
+ SetStepComplete(Player,TS_F,8)
+ SetStepComplete(Player,TS_F,9)
+ SetStepComplete(Player,TS_F,10)
+ SetStepComplete(Player,TS_F,11)
+ SetStepComplete(Player,TS_F,12)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if HasQuest(Player,BB_F) then
+ SetStepComplete(Player,BB_F,1)
+ SetStepComplete(Player,BB_F,2)
+ SetStepComplete(Player,BB_F,3)
+ SetStepComplete(Player,BB_F,4)
+ SetStepComplete(Player,BB_F,5)
+ SetStepComplete(Player,BB_F,6)
+ SetStepComplete(Player,BB_F,7)
+ SetStepComplete(Player,BB_F,8)
+ SetStepComplete(Player,BB_F,9)
+ SetStepComplete(Player,BB_F,10)
+ SetStepComplete(Player,BB_F,11)
+ SetStepComplete(Player,BB_F,12)
+ end
+ else
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,1)
+ SetStepComplete(Player,LA_F,2)
+ SetStepComplete(Player,LA_F,3)
+ SetStepComplete(Player,LA_F,4)
+ SetStepComplete(Player,LA_F,5)
+ SetStepComplete(Player,LA_F,6)
+ SetStepComplete(Player,LA_F,7)
+ SetStepComplete(Player,LA_F,8)
+ SetStepComplete(Player,LA_F,9)
+ SetStepComplete(Player,LA_F,10)
+ SetStepComplete(Player,LA_F,11)
+ SetStepComplete(Player,LA_F,12)
+ end
+ end
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "There is another form meant to accompany the first. This second mentions a citizenship task. It states something about tokens and needing to prove yourself....\n\nWho has time for that?")
+end
+
+function Task1(Item,Player)
+ local Race = GetRace(Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Check all the boxes and sign]","Task2")
+ if Race == 1 or Race == 19 or Race == 17 then
+ if CanReceiveQuest(Player,LA) then
+ OfferQuest(nil,Player,LA)
+ end
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ if CanReceiveQuest(Player,SY) then
+ OfferQuest(nil,Player,SY)
+ end
+
+ -- Erudite / Kerra
+ elseif Race == 3 or Race == 11 then
+ if CanReceiveQuest(Player,SB) then
+ OfferQuest(nil,Player,SB)
+ end
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ if CanReceiveQuest(Player,BC) then
+ OfferQuest(nil,Player,BC)
+ end
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ if CanReceiveQuest(Player,TS) then
+ OfferQuest(nil,Player,TS)
+ end
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ if CanReceiveQuest(Player,BB) then
+ OfferQuest(nil,Player,BB)
+ end
+ else
+ if CanReceiveQuest(Player,BC) then
+ OfferQuest(nil,Player,BC)
+ end
+ end
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The second form lists...yadda yadda yadda.\n\nA few marks here and there should finish up everything.\n\n[ ACCEPT THE QUEST ]")
+end
+
+function Task2(Item,Player)
+local Race = GetRace(Player)
+ if Race == 11 then --Kerra
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,13)
+ end
+ if HasQuest(Player,LA) then
+ SetStepComplete(Player,LA,1)
+ SetStepComplete(Player,LA,2)
+ SetStepComplete(Player,LA,3)
+ SetStepComplete(Player,LA,4)
+ SetStepComplete(Player,LA,5)
+ SetStepComplete(Player,LA,6)
+ SetStepComplete(Player,LA,7)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if HasQuest(Player,SY_F) then
+ SetStepComplete(Player,SY_F,13)
+ end
+ if HasQuest(Player,SY) then
+ SetStepComplete(Player,SY,1)
+ SetStepComplete(Player,SY,2)
+ SetStepComplete(Player,SY,3)
+ SetStepComplete(Player,SY,4)
+ SetStepComplete(Player,SY,5)
+ SetStepComplete(Player,SY,6)
+ SetStepComplete(Player,SY,7)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,13)
+ end
+ if HasQuest(Player,LA) then
+ SetStepComplete(Player,LA,1)
+ SetStepComplete(Player,LA,2)
+ SetStepComplete(Player,LA,3)
+ SetStepComplete(Player,LA,4)
+ SetStepComplete(Player,LA,5)
+ SetStepComplete(Player,LA,6)
+ SetStepComplete(Player,LA,7)
+ end
+ if HasQuest(Player,SY_F) then
+ SetStepComplete(Player,SY_F,13)
+ end
+ if HasQuest(Player,SY) then
+ SetStepComplete(Player,SY,1)
+ SetStepComplete(Player,SY,2)
+ SetStepComplete(Player,SY,3)
+ SetStepComplete(Player,SY,4)
+ SetStepComplete(Player,SY,5)
+ SetStepComplete(Player,SY,6)
+ SetStepComplete(Player,SY,7)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if HasQuest(Player,SB_F) then
+ SetStepComplete(Player,SB_F,13)
+ end
+ if HasQuest(Player,SB) then
+ SetStepComplete(Player,SB,1)
+ SetStepComplete(Player,SB,2)
+ SetStepComplete(Player,SB,3)
+ SetStepComplete(Player,SB,4)
+ SetStepComplete(Player,SB,5)
+ SetStepComplete(Player,SB,6)
+ SetStepComplete(Player,SB,7)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if HasQuest(Player,BC_F) then
+ SetStepComplete(Player,BC_F,13)
+ end
+ if HasQuest(Player,BC) then
+ SetStepComplete(Player,BC,1)
+ SetStepComplete(Player,BC,2)
+ SetStepComplete(Player,BC,3)
+ SetStepComplete(Player,BC,4)
+ SetStepComplete(Player,BC,5)
+ SetStepComplete(Player,BC,6)
+ SetStepComplete(Player,BC,7)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if HasQuest(Player,TS_F) then
+ SetStepComplete(Player,TS_F,13)
+ end
+ if HasQuest(Player,TS) then
+ SetStepComplete(Player,TS,1)
+ SetStepComplete(Player,TS,2)
+ SetStepComplete(Player,TS,3)
+ SetStepComplete(Player,TS,4)
+ SetStepComplete(Player,TS,5)
+ SetStepComplete(Player,TS,6)
+ SetStepComplete(Player,TS,7)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if HasQuest(Player,BB_F) then
+ SetStepComplete(Player,BB_F,13)
+ end
+ if HasQuest(Player,BB) then
+ SetStepComplete(Player,BB,1)
+ SetStepComplete(Player,BB,2)
+ SetStepComplete(Player,BB,3)
+ SetStepComplete(Player,BB,4)
+ SetStepComplete(Player,BB,5)
+ SetStepComplete(Player,BB,6)
+ SetStepComplete(Player,BB,7)
+ end
+ else
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,13)
+ end
+ if HasQuest(Player,LA) then
+ SetStepComplete(Player,LA,1)
+ SetStepComplete(Player,LA,2)
+ SetStepComplete(Player,LA,3)
+ SetStepComplete(Player,LA,4)
+ SetStepComplete(Player,LA,5)
+ SetStepComplete(Player,LA,6)
+ SetStepComplete(Player,LA,7)
+ end
+end
+ conversation = CreateConversation()
+
+ if GetClass(Player)==1 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Fighter", "Task3")
+ elseif GetClass(Player)==11 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Priest", "Task3")
+ elseif GetClass(Player)==21 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Mage", "Task3")
+ elseif GetClass(Player)==31 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Scout", "Task3")
+ else
+ AddConversationOption(conversation, ""..GetName(Player).."", "Task3")
+ end
+
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "All that is left to do is sign your name...\n\nAre you ready to be a citizen of Freeport?")
+end
+
+function Task3(Item,Player)
+local Race = GetRace(Player)
+ if Race == 11 then --Kerra
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,14)
+ end
+ if HasQuest(Player,LA) then
+ SetStepComplete(Player,LA,8)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if HasQuest(Player,SY_F) then
+ SetStepComplete(Player,SY_F,14)
+ end
+ if HasQuest(Player,SY) then
+ SetStepComplete(Player,SY,8)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,14)
+ end
+ if HasQuest(Player,LA) then
+ SetStepComplete(Player,LA,8)
+ end
+ if HasQuest(Player,SY_F) then
+ SetStepComplete(Player,SY_F,14)
+ end
+ if HasQuest(Player,SY) then
+ SetStepComplete(Player,SY,8)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if HasQuest(Player,SB_F) then
+ SetStepComplete(Player,SB_F,14)
+ end
+ if HasQuest(Player,SB) then
+ SetStepComplete(Player,SB,8)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if HasQuest(Player,BC_F) then
+ SetStepComplete(Player,BC_F,14)
+ end
+ if HasQuest(Player,BC) then
+ SetStepComplete(Player,BC,8)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if HasQuest(Player,TS_F) then
+ SetStepComplete(Player,TS_F,14)
+ end
+ if HasQuest(Player,TS) then
+ SetStepComplete(Player,TS,8)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if HasQuest(Player,BB_F) then
+ SetStepComplete(Player,BB_F,14)
+ end
+ if HasQuest(Player,BB) then
+ SetStepComplete(Player,BB,8)
+ end
+ else
+ if HasQuest(Player,LA_F) then
+ SetStepComplete(Player,LA_F,14)
+ end
+ if HasQuest(Player,LA) then
+ SetStepComplete(Player,LA,8)
+ end
+end
+ AddSpellBookEntry(Player, 8057, 1) --CALL TO QEYNOS
+ SendMessage(Player, "You are now a Citizen of Freeport!","yellow")
+ SendPopUpMessage(Player, "You are now a Citizen of Freeport!",250,250,250)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Spawn), GetY(Spawn), GetZ(Spawn), Spawn)
+ ApplySpellVisual(Player, 324)
+ AddTimer(Player,1000,"TaskDone",1)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Stuff the completed forms away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "Well done, you've faked becoming a citizen of Freeport!")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001112) then
+ RemoveItem(Player,1001112,1)
+ end
+end
+
diff --git a/server/ItemScripts/ForgeryQeynosCitizenshipPapers.lua b/server/ItemScripts/ForgeryQeynosCitizenshipPapers.lua
new file mode 100755
index 000000000..1b1a750e7
--- /dev/null
+++ b/server/ItemScripts/ForgeryQeynosCitizenshipPapers.lua
@@ -0,0 +1,634 @@
+--[[
+ Script Name : ItemScripts/ForgeryQeynosCitizenshipPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.10 11:06:34
+ Script Purpose :
+ :
+--]]
+local BB = 5718 --Welcome to Qeynos (Babbuelshrie)
+local BB_Q = 5760 --Baubbleshire Citizenship Task
+local CV = 5719 --Castleview
+local CV_Q = 5765
+local NV = 5721 --Nettleville
+local NV_Q = 5763
+local GS = 5720 --Graystone
+local GS_Q = 5764
+local SC = 5722 --Starcrest
+local SC_Q = 5762
+local WW = 5723 --Willow Wood
+local WW_Q = 5761
+
+
+
+function examined(Item, Player)
+local Race = GetRace(Player)
+conversation = CreateConversation()
+if not HasQuest(Player,BB)
+ and not HasQuest(Player,BB_Q)
+
+ and not HasQuest(Player,CV)
+ and not HasQuest(Player,CV_Q)
+
+ and not HasQuest(Player,GS)
+ and not HasQuest(Player,GS_Q)
+
+ and not HasQuest(Player,NV)
+ and not HasQuest(Player,NV_Q)
+
+ and not HasQuest(Player,SC)
+ and not HasQuest(Player,SC_Q)
+
+ and not HasQuest(Player,WW)
+ and not HasQuest(Player,WW_Q) then
+
+ if CanReceiveQuest(Player,BB) or
+ CanReceiveQuest(Player,CV) or
+ CanReceiveQuest(Player,GS) or
+ CanReceiveQuest(Player,NV) or
+ CanReceiveQuest(Player,SC) or
+ CanReceiveQuest(Player,WW) then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ AddConversationOption(conversation, "[Put the papers away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This stack of papers looks like Qeynos Citzenship forms. They could be useful for someone looking to quickly become a citizen...")
+elseif
+ GetQuestStep(Player,BB_Q) <12 or
+ GetQuestStep(Player,CV_Q) <12 or
+ GetQuestStep(Player,GS_Q) <12 or
+ GetQuestStep(Player,NV_Q) <12 or
+ GetQuestStep(Player,SC_Q) <12 or
+ GetQuestStep(Player,WW_Q) <12 then
+ Welcome2(Item,Player)
+ elseif
+ GetQuestStep(Player,BB_Q) ==12 and CanReceiveQuest(Player,BB) or
+ GetQuestStep(Player,CV_Q) ==12 and CanReceiveQuest(Player,CV) or
+ GetQuestStep(Player,GS_Q) ==12 and CanReceiveQuest(Player,GS) or
+ GetQuestStep(Player,NV_Q) ==12 and CanReceiveQuest(Player,NV) or
+ GetQuestStep(Player,SC_Q) ==12 and CanReceiveQuest(Player,SC) or
+ GetQuestStep(Player,WW_Q) ==12 and CanReceiveQuest(Player,WW) then
+ Task1(Item,Player)
+ elseif
+ GetQuestStep(Player,BB_Q) ==12 and GetQuestStep(Player,BB)==1 or
+ GetQuestStep(Player,CV_Q) ==12 and GetQuestStep(Player,CV)==1 or
+ GetQuestStep(Player,GS_Q) ==12 and GetQuestStep(Player,GS)==1 or
+ GetQuestStep(Player,NV_Q) ==12 and GetQuestStep(Player,NV)==1 or
+ GetQuestStep(Player,SC_Q) ==12 and GetQuestStep(Player,SC)==1 or
+ GetQuestStep(Player,WW_Q) ==12 and GetQuestStep(Player,WW)==1 then
+ Task1(Item,Player)
+ else
+ Intro(Item,Player)
+end
+end
+
+function Intro(Item,Player)
+ local Race = GetRace(Player)
+ conversation = CreateConversation()
+ if Race == 11 then --Kerra
+ if not HasQuest(Player,NV_Q) and not HasCompletedQuest(Player,NV_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,NV_Q)
+ end
+
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if not HasQuest(Player,SC_Q) and not HasCompletedQuest(Player,SC_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,SC_Q)
+ end
+
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if not HasQuest(Player,NV_Q) and not HasCompletedQuest(Player,NV_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,NV_Q)
+ end
+
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if not HasQuest(Player,GS_Q) and not HasCompletedQuest(Player,GS_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,GS_Q)
+ end
+
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if not HasQuest(Player,CV_Q) and not HasCompletedQuest(Player,CV_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,CV_Q)
+ end
+
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 or Race == 16 then
+ if not HasQuest(Player,WW_Q) and not HasCompletedQuest(Player,WW_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,WW_Q)
+ end
+
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if not HasQuest(Player,BB_Q) and not HasCompletedQuest(Player,BB_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,BB_Q)
+ end
+
+ else
+ if not HasQuest(Player,NV_Q) and not HasCompletedQuest(Player,NV_Q) then
+ AddConversationOption(conversation, "[Make up a Steward name]","Welcome1")
+ OfferQuest(nil,Player,NV_Q)
+ end
+ end
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "It states a Steward is suppose to sign the document...\n\n[ ACCEPT THE QUEST ]")
+end
+
+function Welcome1(Item,Player) --ALIGNMENT/FACTION CHANGE + CHECK FOR QUEST1
+local Race = GetRace(Player)
+if not HasQuest(Player,BB)
+ and not HasQuest(Player,BB_Q)
+
+ and not HasQuest(Player,CV)
+ and not HasQuest(Player,CV_Q)
+
+ and not HasQuest(Player,GS)
+ and not HasQuest(Player,GS_Q)
+
+ and not HasQuest(Player,NV)
+ and not HasQuest(Player,NV_Q)
+
+ and not HasQuest(Player,SC)
+ and not HasQuest(Player,SC_Q)
+
+ and not HasQuest(Player,WW)
+ and not HasQuest(Player,WW_Q) then
+Intro(Item,Player)
+else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Forge an address and check the list]","Welcome2")
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The form states you need signitures from a landlord and to complete their checklist...")
+ Faction(Item,Player)
+end
+end
+
+function Faction(Item,Player)
+ Qeynos = GetFactionAmount(Player, 11)
+ Qeynos_Add = (10000-Qeynos)
+ Freeport = GetFactionAmount(Player, 12)
+ Freeport_Add = (-20000-Freeport)
+ Neriak = GetFactionAmount(Player, 13)
+ Kelethin = GetFactionAmount(Player, 14)
+ Halas = GetFactionAmount(Player, 16)
+ Gorowyn = GetFactionAmount(Player, 17)
+ alignment = GetAlignment(Player)
+ if Qeynos <10000 and Qeynos >=0 then ChangeFaction(Player, 11, Qeynos_Add)
+ elseif Qeynos <0 then ChangeFaction(Player, 11, (Qeynos*-1))
+ Faction(Item,Player)
+end
+if Freeport <-20000 then ChangeFaction(Player, 12, Freeport_Add)
+ elseif Freeport >-20000 then ChangeFaction(Player, 12, (Freeport*-1))
+end
+if Neriak >0 then ChangeFaction(Player, 13, -Neriak)
+ elseif Neriak <0 then ChangeFaction(Player, 13, (Neriak*-1))
+end
+if Kelethin >0 then ChangeFaction(Player, 14, -Kelethin)
+ elseif Kelethin <0 then ChangeFaction(Player, 14, (Kelethin*-1))
+end
+if Halas >0 then ChangeFaction(Player, 16, -Halas)
+ elseif Halas <0 then ChangeFaction(Player, 16, (Halas*-1))
+end
+if Gorowyn >0 then ChangeFaction(Player, 17, -Gorowyn)
+ elseif Gorowyn <0 then ChangeFaction(Player, 17, (Gorowyn*-1))
+end
+if GetRace(Player) == 0 or GetRace(Player) == 3 or GetRace(Player) == 5 or GetRace(Player) == 6 or GetRace(Player) == 9 or GetRace(Player) == 11 or GetRace(Player) == 20 then
+SetAlignment(Player, 2)
+end
+end
+
+
+function Welcome2(Item,Player)
+ local Race = GetRace(Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Read the second form]","Task1")
+ if Race == 11 then --Kerra
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,1)
+ SetStepComplete(Player,NV_Q,2)
+ SetStepComplete(Player,NV_Q,3)
+ SetStepComplete(Player,NV_Q,4)
+ SetStepComplete(Player,NV_Q,5)
+ SetStepComplete(Player,NV_Q,6)
+ SetStepComplete(Player,NV_Q,7)
+ SetStepComplete(Player,NV_Q,8)
+ SetStepComplete(Player,NV_Q,9)
+ SetStepComplete(Player,NV_Q,10)
+ SetStepComplete(Player,NV_Q,11)
+ SetStepComplete(Player,NV_Q,12)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if HasQuest(Player,SC_Q) then
+ SetStepComplete(Player,SC_Q,1)
+ SetStepComplete(Player,SC_Q,2)
+ SetStepComplete(Player,SC_Q,3)
+ SetStepComplete(Player,SC_Q,4)
+ SetStepComplete(Player,SC_Q,5)
+ SetStepComplete(Player,SC_Q,6)
+ SetStepComplete(Player,SC_Q,7)
+ SetStepComplete(Player,SC_Q,8)
+ SetStepComplete(Player,SC_Q,9)
+ SetStepComplete(Player,SC_Q,10)
+ SetStepComplete(Player,SC_Q,11)
+ SetStepComplete(Player,SC_Q,12)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,1)
+ SetStepComplete(Player,NV_Q,2)
+ SetStepComplete(Player,NV_Q,3)
+ SetStepComplete(Player,NV_Q,4)
+ SetStepComplete(Player,NV_Q,5)
+ SetStepComplete(Player,NV_Q,6)
+ SetStepComplete(Player,NV_Q,7)
+ SetStepComplete(Player,NV_Q,8)
+ SetStepComplete(Player,NV_Q,9)
+ SetStepComplete(Player,NV_Q,10)
+ SetStepComplete(Player,NV_Q,11)
+ SetStepComplete(Player,NV_Q,12)
+ elseif HasQuest(Player,SC_Q) then
+ SetStepComplete(Player,SC_Q,1)
+ SetStepComplete(Player,SC_Q,2)
+ SetStepComplete(Player,SC_Q,3)
+ SetStepComplete(Player,SC_Q,4)
+ SetStepComplete(Player,SC_Q,5)
+ SetStepComplete(Player,SC_Q,6)
+ SetStepComplete(Player,SC_Q,7)
+ SetStepComplete(Player,SC_Q,8)
+ SetStepComplete(Player,SC_Q,9)
+ SetStepComplete(Player,SC_Q,10)
+ SetStepComplete(Player,SC_Q,11)
+ SetStepComplete(Player,SC_Q,12)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if HasQuest(Player,GS_Q) then
+ SetStepComplete(Player,GS_Q,1)
+ SetStepComplete(Player,GS_Q,2)
+ SetStepComplete(Player,GS_Q,3)
+ SetStepComplete(Player,GS_Q,4)
+ SetStepComplete(Player,GS_Q,5)
+ SetStepComplete(Player,GS_Q,6)
+ SetStepComplete(Player,GS_Q,7)
+ SetStepComplete(Player,GS_Q,8)
+ SetStepComplete(Player,GS_Q,9)
+ SetStepComplete(Player,GS_Q,10)
+ SetStepComplete(Player,GS_Q,11)
+ SetStepComplete(Player,GS_Q,12)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if HasQuest(Player,CV_Q) then
+ SetStepComplete(Player,CV_Q,1)
+ SetStepComplete(Player,CV_Q,2)
+ SetStepComplete(Player,CV_Q,3)
+ SetStepComplete(Player,CV_Q,4)
+ SetStepComplete(Player,CV_Q,5)
+ SetStepComplete(Player,CV_Q,6)
+ SetStepComplete(Player,CV_Q,7)
+ SetStepComplete(Player,CV_Q,8)
+ SetStepComplete(Player,CV_Q,9)
+ SetStepComplete(Player,CV_Q,10)
+ SetStepComplete(Player,CV_Q,11)
+ SetStepComplete(Player,CV_Q,12)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if HasQuest(Player,WW_Q) then
+ SetStepComplete(Player,WW_Q,1)
+ SetStepComplete(Player,WW_Q,2)
+ SetStepComplete(Player,WW_Q,3)
+ SetStepComplete(Player,WW_Q,4)
+ SetStepComplete(Player,WW_Q,5)
+ SetStepComplete(Player,WW_Q,6)
+ SetStepComplete(Player,WW_Q,7)
+ SetStepComplete(Player,WW_Q,8)
+ SetStepComplete(Player,WW_Q,9)
+ SetStepComplete(Player,WW_Q,10)
+ SetStepComplete(Player,WW_Q,11)
+ SetStepComplete(Player,WW_Q,12)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if HasQuest(Player,BB_Q) then
+ SetStepComplete(Player,BB_Q,1)
+ SetStepComplete(Player,BB_Q,2)
+ SetStepComplete(Player,BB_Q,3)
+ SetStepComplete(Player,BB_Q,4)
+ SetStepComplete(Player,BB_Q,5)
+ SetStepComplete(Player,BB_Q,6)
+ SetStepComplete(Player,BB_Q,7)
+ SetStepComplete(Player,BB_Q,8)
+ SetStepComplete(Player,BB_Q,9)
+ SetStepComplete(Player,BB_Q,10)
+ SetStepComplete(Player,BB_Q,11)
+ SetStepComplete(Player,BB_Q,12)
+ end
+ else
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,1)
+ SetStepComplete(Player,NV_Q,2)
+ SetStepComplete(Player,NV_Q,3)
+ SetStepComplete(Player,NV_Q,4)
+ SetStepComplete(Player,NV_Q,5)
+ SetStepComplete(Player,NV_Q,6)
+ SetStepComplete(Player,NV_Q,7)
+ SetStepComplete(Player,NV_Q,8)
+ SetStepComplete(Player,NV_Q,9)
+ SetStepComplete(Player,NV_Q,10)
+ SetStepComplete(Player,NV_Q,11)
+ SetStepComplete(Player,NV_Q,12)
+ end
+ end
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "There is another form meant to accompany the first. This second mentions a citizenship task. It states something about tokens and needing to prove yourself....\n\nWho has time for that?")
+end
+
+function Task1(Item,Player)
+ local Race = GetRace(Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Check all the boxes and sign]","Task2")
+ if Race == 11 then --Kerra
+ if CanReceiveQuest(Player,NV) then
+ OfferQuest(nil,Player,NV)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if CanReceiveQuest(Player,SC) then
+ OfferQuest(nil,Player,SC)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if CanReceiveQuest(Player,NV) then
+ OfferQuest(nil,Player,NV)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if CanReceiveQuest(Player,GS) then
+ OfferQuest(nil,Player,GS)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if CanReceiveQuest(Player,CV) then
+ OfferQuest(nil,Player,CV)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if CanReceiveQuest(Player,WW) then
+ OfferQuest(nil,Player,WW)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if CanReceiveQuest(Player,BB) then
+ OfferQuest(nil,Player,BB)
+ end
+ else
+ if CanReceiveQuest(Player,NV) then
+ OfferQuest(nil,Player,NV)
+ end
+ end
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The second form lists...yadda yadda yadda.\n\nA few marks here and there should finish up everything.\n\n[ ACCEPT THE QUEST ]")
+end
+
+function Task2(Item,Player)
+local Race = GetRace(Player)
+ if Race == 11 then --Kerra
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,13)
+ end
+ if HasQuest(Player,NV) then
+ SetStepComplete(Player,NV,1)
+ SetStepComplete(Player,NV,2)
+ SetStepComplete(Player,NV,3)
+ SetStepComplete(Player,NV,4)
+ SetStepComplete(Player,NV,5)
+ SetStepComplete(Player,NV,6)
+ SetStepComplete(Player,NV,7)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if HasQuest(Player,SC_Q) then
+ SetStepComplete(Player,SC_Q,13)
+ end
+ if HasQuest(Player,SC) then
+ SetStepComplete(Player,SC,1)
+ SetStepComplete(Player,SC,2)
+ SetStepComplete(Player,SC,3)
+ SetStepComplete(Player,SC,4)
+ SetStepComplete(Player,SC,5)
+ SetStepComplete(Player,SC,6)
+ SetStepComplete(Player,SC,7)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,13)
+ end
+ if HasQuest(Player,NV) then
+ SetStepComplete(Player,NV,1)
+ SetStepComplete(Player,NV,2)
+ SetStepComplete(Player,NV,3)
+ SetStepComplete(Player,NV,4)
+ SetStepComplete(Player,NV,5)
+ SetStepComplete(Player,NV,6)
+ SetStepComplete(Player,NV,7)
+ end
+ if HasQuest(Player,SC_Q) then
+ SetStepComplete(Player,SC_Q,13)
+ end
+ if HasQuest(Player,SC) then
+ SetStepComplete(Player,SC,1)
+ SetStepComplete(Player,SC,2)
+ SetStepComplete(Player,SC,3)
+ SetStepComplete(Player,SC,4)
+ SetStepComplete(Player,SC,5)
+ SetStepComplete(Player,SC,6)
+ SetStepComplete(Player,SC,7)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if HasQuest(Player,GS_Q) then
+ SetStepComplete(Player,GS_Q,13)
+ end
+ if HasQuest(Player,GS) then
+ SetStepComplete(Player,GS,1)
+ SetStepComplete(Player,GS,2)
+ SetStepComplete(Player,GS,3)
+ SetStepComplete(Player,GS,4)
+ SetStepComplete(Player,GS,5)
+ SetStepComplete(Player,GS,6)
+ SetStepComplete(Player,GS,7)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if HasQuest(Player,CV_Q) then
+ SetStepComplete(Player,CV_Q,13)
+ end
+ if HasQuest(Player,CV) then
+ SetStepComplete(Player,CV,1)
+ SetStepComplete(Player,CV,2)
+ SetStepComplete(Player,CV,3)
+ SetStepComplete(Player,CV,4)
+ SetStepComplete(Player,CV,5)
+ SetStepComplete(Player,CV,6)
+ SetStepComplete(Player,CV,7)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if HasQuest(Player,WW_Q) then
+ SetStepComplete(Player,WW_Q,13)
+ end
+ if HasQuest(Player,WW) then
+ SetStepComplete(Player,WW,1)
+ SetStepComplete(Player,WW,2)
+ SetStepComplete(Player,WW,3)
+ SetStepComplete(Player,WW,4)
+ SetStepComplete(Player,WW,5)
+ SetStepComplete(Player,WW,6)
+ SetStepComplete(Player,WW,7)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if HasQuest(Player,BB_Q) then
+ SetStepComplete(Player,BB_Q,13)
+ end
+ if HasQuest(Player,BB) then
+ SetStepComplete(Player,BB,1)
+ SetStepComplete(Player,BB,2)
+ SetStepComplete(Player,BB,3)
+ SetStepComplete(Player,BB,4)
+ SetStepComplete(Player,BB,5)
+ SetStepComplete(Player,BB,6)
+ SetStepComplete(Player,BB,7)
+ end
+ else
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,13)
+ end
+ if HasQuest(Player,NV) then
+ SetStepComplete(Player,NV,1)
+ SetStepComplete(Player,NV,2)
+ SetStepComplete(Player,NV,3)
+ SetStepComplete(Player,NV,4)
+ SetStepComplete(Player,NV,5)
+ SetStepComplete(Player,NV,6)
+ SetStepComplete(Player,NV,7)
+ end
+end
+ conversation = CreateConversation()
+
+ if GetClass(Player)==1 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Fighter", "Task3")
+ elseif GetClass(Player)==11 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Priest", "Task3")
+ elseif GetClass(Player)==21 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Mage", "Task3")
+ elseif GetClass(Player)==31 then
+ AddConversationOption(conversation, ""..GetName(Player).." the Scout", "Task3")
+ else
+ AddConversationOption(conversation, ""..GetName(Player).."", "Task3")
+ end
+
+ AddConversationOption(conversation, "[Put the pages away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "All that is left to do is sign your name...\n\nAre you ready to be a citizen of Qeynos?")
+end
+
+function Task3(Item,Player)
+local Race = GetRace(Player)
+ if Race == 11 then --Kerra
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,14)
+ end
+ if HasQuest(Player,NV) then
+ SetStepComplete(Player,NV,8)
+ end
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ if HasQuest(Player,SC_Q) then
+ SetStepComplete(Player,SC_Q,14)
+ end
+ if HasQuest(Player,SC) then
+ SetStepComplete(Player,SC,8)
+ end
+ elseif Race == 9 then --Human
+ local con = CreateConversation()
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,14)
+ end
+ if HasQuest(Player,NV) then
+ SetStepComplete(Player,NV,8)
+ end
+ if HasQuest(Player,SC_Q) then
+ SetStepComplete(Player,SC_Q,14)
+ end
+ if HasQuest(Player,SC) then
+ SetStepComplete(Player,SC,8)
+ end
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ if HasQuest(Player,GS_Q) then
+ SetStepComplete(Player,GS_Q,14)
+ end
+ if HasQuest(Player,GS) then
+ SetStepComplete(Player,GS,8)
+ end
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ if HasQuest(Player,CV_Q) then
+ SetStepComplete(Player,CV_Q,14)
+ end
+ if HasQuest(Player,CV) then
+ SetStepComplete(Player,CV,8)
+ end
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ if HasQuest(Player,WW_Q) then
+ SetStepComplete(Player,WW_Q,14)
+ end
+ if HasQuest(Player,WW) then
+ SetStepComplete(Player,WW,8)
+ end
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ if HasQuest(Player,BB_Q) then
+ SetStepComplete(Player,BB_Q,14)
+ end
+ if HasQuest(Player,BB) then
+ SetStepComplete(Player,BB,8)
+ end
+ else
+ if HasQuest(Player,NV_Q) then
+ SetStepComplete(Player,NV_Q,14)
+ end
+ if HasQuest(Player,NV) then
+ SetStepComplete(Player,NV,8)
+ end
+end
+ AddSpellBookEntry(Player, 8057, 1) --CALL TO QEYNOS
+ SendMessage(Player, "You are now a Citizen of Qeynos!","yellow")
+ SendPopUpMessage(Player, "You are now a Citizen of Qeynos!",250,250,250)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Spawn), GetY(Spawn), GetZ(Spawn), Spawn)
+ ApplySpellVisual(Player, 324)
+ AddTimer(Player,1000,"TaskDone",1)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Stuff the completed forms away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "Well done, you've faked becoming a citizen of Qeynos!")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001095) then
+ RemoveItem(Player,1001095,1)
+ end
+end
+
diff --git a/server/ItemScripts/FroglokPondstoneEvil.lua b/server/ItemScripts/FroglokPondstoneEvil.lua
new file mode 100755
index 000000000..005648afb
--- /dev/null
+++ b/server/ItemScripts/FroglokPondstoneEvil.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : ItemScripts/FroglokPondstoneEvil.lua
+ Script Author : neatz09
+ Script Date : 2023.04.22 09:04:22
+ Script Purpose : handles item id#46435
+ :
+--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+ local Cube = 331142
+ local Spawn2 = GetSpawn(Player, Cube)
+ if Spawn2 == nil then SendMessage(Player, "You must seek an ancient pond to use this item.", "Yellow") else
+ local Distance = GetDistance(Player, Spawn2)
+ if Distance > 50 then SendMessage(Player, "You must seek an ancient pond to use this item.", "Yellow")
+ else CastSpell(Player, 2550399, 1)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/FroglokPondstoneGood.lua b/server/ItemScripts/FroglokPondstoneGood.lua
new file mode 100755
index 000000000..10c90df6c
--- /dev/null
+++ b/server/ItemScripts/FroglokPondstoneGood.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : ItemScripts/FroglokPondstoneEvil.lua
+ Script Author : neatz09
+ Script Date : 2023.04.22 09:04:22
+ Script Purpose : handles item id#46436
+ :
+--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+ local Cube = 121856
+ local Spawn2 = GetSpawn(Player, Cube)
+ if Spawn2 == nil then SendMessage(Player, "You must seek an ancient pond to use this item.", "Yellow") else
+ local Distance = GetDistance(Player, Spawn2)
+ if Distance > 78 then SendMessage(Player, "You must seek an ancient pond to use this item.", "Yellow")
+ else CastSpell(Player, 2550399, 1)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/GraystoneYardcitizenshiptask.lua b/server/ItemScripts/GraystoneYardcitizenshiptask.lua
index 63a323b77..71642aace 100755
--- a/server/ItemScripts/GraystoneYardcitizenshiptask.lua
+++ b/server/ItemScripts/GraystoneYardcitizenshiptask.lua
@@ -46,6 +46,6 @@ if not HasQuest(Player,5720) and not HasCompletedQuest(Player,5720)then
OfferQuest(nil,Player,5720)
end
conversation = CreateConversation()
-AddConversationOption(conversation, "[put the note]","CloseItemConversation")
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
StartDialogConversation(conversation, 2, Item, Player, "After you complete your task, report to Marshal Glorfel using the citizenship sign.")
end
\ No newline at end of file
diff --git a/server/ItemScripts/IgnatiaCellusFamilyHistoryBook.lua b/server/ItemScripts/IgnatiaCellusFamilyHistoryBook.lua
new file mode 100755
index 000000000..e210e6be2
--- /dev/null
+++ b/server/ItemScripts/IgnatiaCellusFamilyHistoryBook.lua
@@ -0,0 +1,158 @@
+--[[
+ Script Name : ItemScripts/IgnatiaCellusFamilyHistoryBook.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.30 03:05:08
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5844
+
+function examined(Item, Player)
+conversation = CreateConversation()
+if not HasQuest(Player,Quest) and not HasCompletedQuest(Player,Quest) then
+ AddConversationOption(conversation, "Read the intro","Intro")
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I am trying to compile the Cellus' family stories into remembrances of what was and how it has changed over time. If you bought this volume and its covers were removed, know that the seller is probably keeping out the good bits for him or herself!")
+else
+ Intro(Item,Player)
+end
+end
+
+function Intro(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry One","Page1")
+ if HasQuest(Player,Quest) then
+ AddConversationOption(conversation, "Turn to last page","PageCheck")
+ end
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I am sure that some of my family's writings still exist elsewhere in Norrath. Unless they were destroyed in the Shattering or as mentioned before, held back by unscrupulous vendors. Whatever portion of this tome you have, cherish it and remember the Cellus family of Qeynos.")
+end
+
+function PageCheck(Item,Player)
+ if GetQuestStep(Player,Quest) ==1 or GetQuestStep(Player,Quest) ==2 then
+ Page1(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==3 or GetQuestStep(Player,Quest) == 4 then
+ Page2(Item, Player)
+ elseif GetQuestStep(Player,Quest) == 5 or GetQuestStep(Player,Quest) ==6 then
+ Page3(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==7 or GetQuestStep(Player,Quest) ==8 then
+ Page4(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==9 or GetQuestStep(Player,Quest) ==10 then
+ Page5(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==11 or GetQuestStep(Player,Quest) ==12 then
+ Page6(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==13 or GetQuestStep(Player,Quest) ==14 then
+ Page7(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==15 or GetQuestStep(Player,Quest) ==16 then
+ Page8(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==17 or GetQuestStep(Player,Quest) ==18 then
+ Page9(Item, Player)
+ end
+end
+
+function Page1(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest)then
+ QuestStart(Item,Player)
+ end
+if GetQuestStep(Player,Quest) >=2 then
+AddConversationOption(conversation, "Entry Two","Page2")
+end
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "My name is Ignatia Cellus and my story is nothing like my grandmother's Isabella Cellus' tale. She lived in a time of relative peace, while I am in a world besieged by terrors unimaginable. The undead rise up outside Qeynos and we all fear for our --")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+end
+if GetQuestStep(Player,Quest) >=4 then
+AddConversationOption(conversation, "Entry Three","Page3")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- lives. Thank the gods for Kane Bayle, commander of the Guard. His guidance will surely lead Qeynos through this dark time! He has ordered the Guard to watch every possible entry to Qeynos, which means longer shifts and journeys far from home. I am in the Guard and and fortunately, patrol --")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+end
+if GetQuestStep(Player,Quest) >=6 then
+AddConversationOption(conversation, "Entry Four","Page4")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- inside the catacombs near the Guild Halls. There is a strange odor in the air; it is the smell of death. The dead are piled high and cannot be buried, for there is no one to stand guard over the mourners and keep them safe. The undead appear --")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+end
+if GetQuestStep(Player,Quest) >=8 then
+AddConversationOption(conversation, "Entry Five","Page5")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- in waves that we cannot repel easily, as there are so many of them and so few of us. With the Guard trying to keep Qeynos' entrances safe, there are not enough to do other tasks. I do not remember the last time I slept at home. This is exhausting.")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==8 then
+ SetStepComplete(Player,Quest,8)
+end
+if GetQuestStep(Player,Quest) >=10 then
+AddConversationOption(conversation, "Entry Six","Page6")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Alas! Finally, I was able to return to my home in South Qeynos, only to find such sorrow. The block of homes on my street were filled with the dead. The patrol in that quadrant had not reported in a fortnight, so I was sent to check on them. My mother --")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==10 then
+ SetStepComplete(Player,Quest,10)
+end
+if GetQuestStep(Player,Quest) >=12 then
+AddConversationOption(conversation, "Entry Seven","Page7")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- is one who died of this horrible plague that seems to rise from beneath us. Captain Keldrane has been sent to investigate the deepest areas of the Catacombs. Commander Bayle asked me personally to escort the unarmed to safety in Qeynos Hills. Some have said this will --")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==12 then
+ SetStepComplete(Player,Quest,12)
+end
+if GetQuestStep(Player,Quest) >=14 then
+AddConversationOption(conversation, "Entry Eight","Page8")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- spread the Guard too thinly, but Commander Bayle doubtless knows more than the general populace. I trust his judgment. He would never betray Qeynos, never! Meanwhile, I am happy to leave the city; being here reminds me too much of --")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==14 then
+ SetStepComplete(Player,Quest,14)
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- the family and friends I have lost. I am accompanying a group of non-combatants out of the city to a secret place known only to my family until now. I hope we will be safe there. I did not tell the commander of this place, but I know our family's stronghold will not remain secret or hidden for long.")
+end
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Quest)
+end
diff --git a/server/ItemScripts/IgnatiaCellusFamilyHistoryBookHouseItem.lua b/server/ItemScripts/IgnatiaCellusFamilyHistoryBookHouseItem.lua
new file mode 100755
index 000000000..ccb06613b
--- /dev/null
+++ b/server/ItemScripts/IgnatiaCellusFamilyHistoryBookHouseItem.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : ItemScripts/IgnatiaCellusFamilyHistoryBookHouseItem.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.30 03:05:00
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5844
+
+function examined(Item, Player)
+conversation = CreateConversation()
+ Intro(Item,Player)
+end
+
+function Intro(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry One","Page1")
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I am sure that some of my family's writings still exist elsewhere in Norrath. Unless they were destroyed in the Shattering or as mentioned before, held back by unscrupulous vendors. Whatever portion of this tome you have, cherish it and remember the Cellus family of Qeynos.")
+end
+
+
+function Page1(Item, Player)
+ conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Two","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "My name is Ignatia Cellus and my story is nothing like my grandmother's Isabella Cellus' tale. She lived in a time of relative peace, while I am in a world besieged by terrors unimaginable. The undead rise up outside Qeynos and we all fear for our --")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Three","Page3")
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- lives. Thank the gods for Kane Bayle, commander of the Guard. His guidance will surely lead Qeynos through this dark time! He has ordered the Guard to watch every possible entry to Qeynos, which means longer shifts and journeys far from home. I am in the Guard and and fortunately, patrol --")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Four","Page4")
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- inside the catacombs near the Guild Halls. There is a strange odor in the air; it is the smell of death. The dead are piled high and cannot be buried, for there is no one to stand guard over the mourners and keep them safe. The undead appear --")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Five","Page5")
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- in waves that we cannot repel easily, as there are so many of them and so few of us. With the Guard trying to keep Qeynos' entrances safe, there are not enough to do other tasks. I do not remember the last time I slept at home. This is exhausting.")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Six","Page6")
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Alas! Finally, I was able to return to my home in South Qeynos, only to find such sorrow. The block of homes on my street were filled with the dead. The patrol in that quadrant had not reported in a fortnight, so I was sent to check on them. My mother --")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Seven","Page7")
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- is one who died of this horrible plague that seems to rise from beneath us. Captain Keldrane has been sent to investigate the deepest areas of the Catacombs. Commander Bayle asked me personally to escort the unarmed to safety in Qeynos Hills. Some have said this will --")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Eight","Page8")
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- spread the Guard too thinly, but Commander Bayle doubtless knows more than the general populace. I trust his judgment. He would never betray Qeynos, never! Meanwhile, I am happy to leave the city; being here reminds me too much of --")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- the family and friends I have lost. I am accompanying a group of non-combatants out of the city to a secret place known only to my family until now. I hope we will be safe there. I did not tell the commander of this place, but I know our family's stronghold will not remain secret or hidden for long.")
+end
+
diff --git a/server/ItemScripts/IsabellaCellusFamilyHistoryBook.lua b/server/ItemScripts/IsabellaCellusFamilyHistoryBook.lua
new file mode 100755
index 000000000..684e6efbc
--- /dev/null
+++ b/server/ItemScripts/IsabellaCellusFamilyHistoryBook.lua
@@ -0,0 +1,184 @@
+--[[
+ Script Name : ItemScripts/IsabellaCellusFamilyHistoryBook.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.20 02:05:33
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5843
+
+function examined(Item, Player)
+conversation = CreateConversation()
+if not HasQuest(Player,Quest) and not HasCompletedQuest(Player,Quest) then
+ AddConversationOption(conversation, "Read the intro","Intro")
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This is more of a portfolio than book as so many pages are missing. Reading through the pages that exist, I get the impression that the remaining pages are likely to be found in and around Antonica.")
+else
+ Intro(Item,Player)
+end
+end
+
+function Intro(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry One","Page1")
+ if HasQuest(Player,Quest) then
+ AddConversationOption(conversation, "Turn to last page","PageCheck")
+ end
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I am sure that some of my family’s writings still exist elsewhere in Norrath. Unless they were destroyed in the Shattering or as mentioned before, held back by unscrupulous vendors. Whatever portion of this tome you have, cherish it and remember the Cellus family of Qeynos.")
+end
+
+function PageCheck(Item,Player)
+ if GetQuestStep(Player,Quest) ==1 or GetQuestStep(Player,Quest) ==2 then
+ Page1(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==3 or GetQuestStep(Player,Quest) == 4 then
+ Page2(Item, Player)
+ elseif GetQuestStep(Player,Quest) == 5 or GetQuestStep(Player,Quest) ==6 then
+ Page3(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==7 or GetQuestStep(Player,Quest) ==8 then
+ Page4(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==9 or GetQuestStep(Player,Quest) ==10 then
+ Page5(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==11 or GetQuestStep(Player,Quest) ==12 then
+ Page6(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==13 or GetQuestStep(Player,Quest) ==14 then
+ Page7(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==15 or GetQuestStep(Player,Quest) ==16 then
+ Page8(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==17 or GetQuestStep(Player,Quest) ==18 then
+ Page9(Item, Player)
+ end
+end
+
+function Page1(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest)then
+ QuestStart(Item,Player)
+ end
+if GetQuestStep(Player,Quest) >=2 then
+AddConversationOption(conversation, "Entry Two","Page2")
+end
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "“Antonica,”\nby Isabella Cellus.\n\nI am travelling through an area known as Qeynos Hills. It’s filled with quite a population of animals and different sorts of folks. Someone is following me -")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+end
+if GetQuestStep(Player,Quest) >=4 then
+AddConversationOption(conversation, "Entry Three","Page3")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- so I am not enjoying this journey. Anyway, from these Hills, one can see North Qeynos, Western Karana and the frosted peaks of the northern mountains. The Sabertooth gnolls that came over from Blackburrow are especially annoying. They keep stealing my paper! Those little runts! During my --")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+end
+if GetQuestStep(Player,Quest) >=6 then
+AddConversationOption(conversation, "Entry Four","Page4")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- travels, I’ve met a lovely ranger named Holly Windstalker. She’s very friendly and outgoing, but a bit crazed about wolves and bears. We were having a picnic near the Surefall Glades, when someone walked by with --")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+end
+if GetQuestStep(Player,Quest) >=8 then
+AddConversationOption(conversation, "Entry Five","Page5")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- a wolf pelt over his shoulder. Holly went nuts! She up and gave this poor fellow a piece of her mind, then chased him all the way to Blackburrow! He shouted at her, “My lady --")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==8 then
+ SetStepComplete(Player,Quest,8)
+end
+if GetQuestStep(Player,Quest) >=10 then
+AddConversationOption(conversation, "Entry Six","Page6")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- the wolf attacked me first!” Holly didn’t seem to care. I think I’ll head over that way to interview him for my next bit on Blackburrow. Thanks to Holly, now I know someone who goes there!")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==10 then
+ SetStepComplete(Player,Quest,10)
+end
+if GetQuestStep(Player,Quest) >=12 then
+AddConversationOption(conversation, "Entry Seven","Page7")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The fellow Holly chased to Blackburrow is related to a handsome scout named Malityn. He’s very noble and good-hearted, and I’ve been spending a lot of time with him. Blackburrow is a classic dungeon, very dark and gloomier the further down into it one gets. Groups of Sabertooth gnolls are hard at work digging out tunnels. With Malityn at my side, however, I felt very safe. He must do something about --")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==12 then
+ SetStepComplete(Player,Quest,12)
+end
+if GetQuestStep(Player,Quest) >=14 then
+AddConversationOption(conversation, "Entry Eight","Page8")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- his hair. Anyway, Blackburrow is a pretty dismal place and dampness is not good for my complexion. Malityn was starting to be so possessive! If anyone so much as spoke to me, he’d whack off their head! So, it’s farewell to Malityn and back to Qeynos Hills. Hopefully, I’ll be able to shake this cold. I’m going to gather some willowbark to brew some tea, which will help tremendously with my headache. I saw some willows to the north, beyond the aqueduct.")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==14 then
+ SetStepComplete(Player,Quest,14)
+end
+if GetQuestStep(Player,Quest) >=16 then
+AddConversationOption(conversation, "Entry Nine","Page9")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "There is a lot of unrest these days in the Qeynos Hills, which makes me rethink my adventuring out in the wilds. Barbarians are moving southward from their home in Halas, although the reason isn’t clear to me. They sure are big, though! I might wander up that way. That would mean another trip through Blackburrow, though, and I am not sure I’m ready to face --")
+end
+
+function Page9(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==16 then
+ SetStepComplete(Player,Quest,16)
+end
+if GetQuestStep(Player,Quest) >=18 then
+AddConversationOption(conversation, "Entry Ten","Page10")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page8")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- Malityn. Unless he’s ready to move on with me, there is no point in continuing to see him. Holly says scouts can be that way, especially when he spends all that time underground, investigating those gnolls. Some days I wish I had --")
+end
+
+function Page10(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==18 then
+ SetStepComplete(Player,Quest,18)
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page9")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- never left the safety of South Qeynos. Malityn says he’s ready to leave Blackburrow and come with me, as he thinks the damp is ruining his hair. At last! The woods and hills are lovely but I will lay aside my pen for now and return to my home. Perhaps our daughter will carry on the tale.")
+end
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Quest)
+end
diff --git a/server/ItemScripts/IsabellaCellusFamilyHistoryBook_House.lua b/server/ItemScripts/IsabellaCellusFamilyHistoryBook_House.lua
new file mode 100755
index 000000000..8d0ec0ac5
--- /dev/null
+++ b/server/ItemScripts/IsabellaCellusFamilyHistoryBook_House.lua
@@ -0,0 +1,101 @@
+--[[
+ Script Name : ItemScripts/IsabellaCellusFamilyHistoryBook_House.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.20 03:05:50
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5582
+
+function examined(Item, Player)
+ Intro(Item,Player)
+end
+
+function Intro(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry One","Page1")
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I am sure that some of my family’s writings still exist elsewhere in Norrath. Unless they were destroyed in the Shattering or as mentioned before, held back by unscrupulous vendors. Whatever portion of this tome you have, cherish it and remember the Cellus family of Qeynos.")
+end
+
+
+function Page1(Item, Player)
+ conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Two","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "“Antonica,”\nby Isabella Cellus.\n\nI am travelling through an area known as Qeynos Hills. It’s filled with quite a population of animals and different sorts of folks. Someone is following me -")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Three","Page3")
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- so I am not enjoying this journey. Anyway, from these Hills, one can see North Qeynos, Western Karana and the frosted peaks of the northern mountains. The Sabertooth gnolls that came over from Blackburrow are especially annoying. They keep stealing my paper! Those little runts! During my --")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Four","Page4")
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- travels, I’ve met a lovely ranger named Holly Windstalker. She’s very friendly and outgoing, but a bit crazed about wolves and bears. We were having a picnic near the Surefall Glades, when someone walked by with --")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Five","Page5")
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- a wolf pelt over his shoulder. Holly went nuts! She up and gave this poor fellow a piece of her mind, then chased him all the way to Blackburrow! He shouted at her, “My lady --")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Six","Page6")
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- the wolf attacked me first!” Holly didn’t seem to care. I think I’ll head over that way to interview him for my next bit on Blackburrow. Thanks to Holly, now I know someone who goes there!")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Seven","Page7")
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "The fellow Holly chased to Blackburrow is related to a handsome scout named Malityn. He’s very noble and good-hearted, and I’ve been spending a lot of time with him. Blackburrow is a classic dungeon, very dark and gloomier the further down into it one gets. Groups of Sabertooth gnolls are hard at work digging out tunnels. With Malityn at my side, however, I felt very safe. He must do something about --")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Eight","Page8")
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- his hair. Anyway, Blackburrow is a pretty dismal place and dampness is not good for my complexion. Malityn was starting to be so possessive! If anyone so much as spoke to me, he’d whack off their head! So, it’s farewell to Malityn and back to Qeynos Hills. Hopefully, I’ll be able to shake this cold. I’m going to gather some willowbark to brew some tea, which will help tremendously with my headache. I saw some willows to the north, beyond the aqueduct.")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Nine","Page9")
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "There is a lot of unrest these days in the Qeynos Hills, which makes me rethink my adventuring out in the wilds. Barbarians are moving southward from their home in Halas, although the reason isn’t clear to me. They sure are big, though! I might wander up that way. That would mean another trip through Blackburrow, though, and I am not sure I’m ready to face --")
+end
+
+function Page9(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Ten","Page10")
+AddConversationOption(conversation, "Turn back to previous entry.","Page8")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- Malityn. Unless he’s ready to move on with me, there is no point in continuing to see him. Holly says scouts can be that way, especially when he spends all that time underground, investigating those gnolls. Some days I wish I had --")
+end
+
+function Page10(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn back to previous entry.","Page9")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "-- never left the safety of South Qeynos. Malityn says he’s ready to leave Blackburrow and come with me, as he thinks the damp is ruining his hair. At last! The woods and hills are lovely but I will lay aside my pen for now and return to my home. Perhaps our daughter will carry on the tale.")
+end
+
+
diff --git a/server/ItemScripts/LongshadowAlleycitizenshiptask.lua b/server/ItemScripts/LongshadowAlleycitizenshiptask.lua
new file mode 100755
index 000000000..9097a11b2
--- /dev/null
+++ b/server/ItemScripts/LongshadowAlleycitizenshiptask.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ItemScripts/LongshadowAlleycitizenshiptask.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 12:06:17
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog2")
+StartDialogConversation(conversation, 2, Item, Player, "By order of the Overlord, all residents wishing to become citizens of the city must complete a trial to prove themselves.")
+
+end
+
+
+function Dialog2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read about where tokens are found]","Dialog3")
+StartDialogConversation(conversation, 2, Item, Player, "Tokens are scattered throughout the surrounding area. You must find five of these tokens to earn the right to speak to a city official.")
+end
+
+
+function Dialog3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog4")
+
+StartDialogConversation(conversation, 2, Item, Player, "Each district has been assigned an area in which to hunt for their tokens. Only tokens from within that area will be accepted.")
+end
+
+function Dialog4(Item, Player)
+conversation = CreateConversation()
+if GetLevel(Player)<6 then
+ AddConversationOption(conversation, "[I need more experience to pursue Citizenship]","CloseItemConversation")
+elseif not HasQuest(Player,5868) and not HasCompletedQuest(Player,5868)then
+AddConversationOption(conversation, "[write this in your quest journal]","StartQuest")
+end
+if HasQuest(Player,5868) or HasCompletedQuest(Player,5868) then
+AddConversationOption(conversation, "[continue]","StartQuest")
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Longshadow Alley residents must gather five tokens from the Ruins.")
+end
+
+function StartQuest(Item,Player)
+conversation = CreateConversation()
+if not HasQuest(Player,5868) and not HasCompletedQuest(Player,5868)then
+ OfferQuest(nil,Player,5868)
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Use the citizenship sign to report to Abbetor T'avi once you complete your task.")
+end
diff --git a/server/ItemScripts/MeteorChunk.lua b/server/ItemScripts/MeteorChunk.lua
new file mode 100755
index 000000000..9024871cb
--- /dev/null
+++ b/server/ItemScripts/MeteorChunk.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : ItemScripts/MeteorChunk.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 08:05:43
+ Script Purpose :
+ :
+--]]
+local Quest = 5832
+
+function examined(Item, Player)
+if not HasQuest(Player, Quest) and not HasCompletedQuest(Player, Quest) then
+ Dialog1(Item,Player)
+elseif GetQuestStep(Player,Quest)==1 or GetQuestStep(Player,Quest)==2 then
+ Dialog2(Item,Player)
+elseif GetQuestStep(Player,Quest)==3 or GetQuestStep(Player,Quest)==4 then
+ Dialog3(Item,Player)
+elseif GetQuestStep(Player,Quest)==5 or GetQuestStep(Player,Quest)==6 then
+ Dialog4(Item,Player)
+elseif HasCompletedQuest(Player, Quest)then
+ Completed(Item,Player)
+end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Examine the rock more closely.]", "Dialog2")
+ AddConversationOption(conversation, "[Put the rock away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This chunk of rock looks much different than most of the rocks you've seen in the surrounding area. The stone itself reminds you of meteor fragments you've seen before.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ AddConversationOption(conversation, "[Use the ink to dye the burned spots.]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the rock away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The more you inspect it the more you're convinced it is a meteor. It's rather mottled due to it burning up on impact. Perhaps if you could find some way to dye the burned spots, such as a dark ink, you just might be able to turn this meteorite into a nice piece of jewelry.")
+end
+
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==4 then
+ AddConversationOption(conversation, "[Compare the harvested stone to this rock]", "Dialog4")
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+ end
+ AddConversationOption(conversation, "[Put the rock away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Taking the octopus ink and rubbing it into the stone doesn't do too much. Fortunately you acquired a large amount. After much work you're able to even out the discoloration. Now you're going to need to fashion a hoop to attach the chunk to. You should gather some rock from the surrounding lands of Antonica.")
+end
+
+function Dialog4(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==6 then
+ AddConversationOption(conversation, "[Carefully use the rock hammer to craft the jewelery]", "Dialog5")
+ end
+ if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+ end
+ AddConversationOption(conversation, "[Put the rock away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "You compare the rock to the meteor chunk and see that this will do just fine. You have enough to turn it into an impressive earring. You'll need a rock hammer to shape it to the form you want, however.")
+end
+
+function Dialog5(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Glorious!", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "After several hours of work, you're able to chip, carve, and shape the rocks in a perfect hoop. Using the meteor as the center ball, you've managed to make a pristine Meteoric Hoop.")
+ end
+--
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+ end
+ if HasItem(Player,1343) then
+ RemoveItem(Player,1343,1)
+ end
+end
+
+function Completed(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the rock. It is from beyond this realm, after all!]")
+ AddConversationOption(conversation, "[Toss the rock aside. You've got better things to carry.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This rock shimmers like the meteor chunk you used to make a piece of jewelery! You don't really have another use for it.")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/MinorAntiVenin.lua b/server/ItemScripts/MinorAntiVenin.lua
new file mode 100755
index 000000000..6c7ebaa7f
--- /dev/null
+++ b/server/ItemScripts/MinorAntiVenin.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : ItemScripts/MinorAntiVenin.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 02:10:24
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Minor Anti-Venin when Activated.
+ * Dispels 18 levels of noxious hostile effects on caster
+
+End Item Effects--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+ Spell = GetSpell(2550438)
+ SetSpellData(Spell, "name", "Minor Anti-Venin")
+ SetSpellDataIndex(Spell, 0, 18)
+ CastCustomSpell(Spell, Player, Player)
+end
+
+
diff --git a/server/ItemScripts/MinorElementalOintment.lua b/server/ItemScripts/MinorElementalOintment.lua
new file mode 100755
index 000000000..635cca1f7
--- /dev/null
+++ b/server/ItemScripts/MinorElementalOintment.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : ItemScripts/MinorElementalOintment.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 01:10:30
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Elemental Ointment when Activated.
+ * Dispels 18 levels of elemental hostile effects on caster
+
+End Item Effects--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+ Spell = GetSpell(2550436)
+ SetSpellData(Spell, "name", "Minor Elemental Ointment")
+ SetSpellDataIndex(Spell, 0, 18)
+ CastCustomSpell(Spell, Player, Player)
+end
+
diff --git a/server/ItemScripts/MinorEnigmaticFormula.lua b/server/ItemScripts/MinorEnigmaticFormula.lua
new file mode 100755
index 000000000..fc6e867e5
--- /dev/null
+++ b/server/ItemScripts/MinorEnigmaticFormula.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : ItemScripts/MinorEnigmaticFormula.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 02:10:07
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Minor Enigmatic Formula when Activated.
+ * Dispels 18 levels of arcane hostile effects on caster
+
+End Item Effects--]]
+
+function used(Item, Player)
+ Spell = GetSpell(2550439)
+ SetSpellData(Spell, "name", "Minor Enigmatic Formula")
+ SetSpellDataIndex(Spell, 0, 18)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/MinorSalve.lua b/server/ItemScripts/MinorSalve.lua
new file mode 100755
index 000000000..1bc9aca37
--- /dev/null
+++ b/server/ItemScripts/MinorSalve.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : ItemScripts/MinorSalve.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 01:10:07
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Minor Salve when Activated.
+ * Dispels 18 levels of physical hostile effects on caster
+
+End Item Effects--]]
+
+function used(Item, Player)
+ Spell = GetSpell(2550437)
+ SetSpellData(Spell, "name", "Minor Salve")
+ SetSpellDataIndex(Spell, 0, 18)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/MutatedRatDrawing.lua b/server/ItemScripts/MutatedRatDrawing.lua
new file mode 100755
index 000000000..92ee39fff
--- /dev/null
+++ b/server/ItemScripts/MutatedRatDrawing.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : ItemScripts/MutatedRatDrawing.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.17 01:05:51
+ Script Purpose :
+ :
+--]]
+local Quest = 5834
+
+function examined(Item, Player)
+ if not HasCompletedQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "These mutated creatures do not belong here!", "Offer")
+ end
+ AddConversationOption(conversation, "[Roll up the drawing and keep it.]")
+ AddConversationOption(conversation, "[Get rid of it. You have done all you can against the rats for now.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This is a similar child's drawing of mutated rats eating a family you've seen before. It still turns your stomach to see it.")
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Look closely at the drawing.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the drawing away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This appears to be a crude drawing consisting of greens, browns, and reds - similar to that of child's.")
+end
+
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "This poor child... I must avenge this child's family!", "Offer")
+ AddConversationOption(conversation, "These mutated creatures have no place here. I must kill them!", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the drawing away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The drawing depicts a gruesome scene with rats devouring a family on the ground while a child is crying near by. The rats look strange, with scorpion-like tails and glowing red eyes. This poor child must have witness this to draw it so accurately.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,11780) then
+ RemoveItem(Player,11780,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/OutlyingQeynosCreatureCatalog.lua b/server/ItemScripts/OutlyingQeynosCreatureCatalog.lua
new file mode 100755
index 000000000..7e053c536
--- /dev/null
+++ b/server/ItemScripts/OutlyingQeynosCreatureCatalog.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : ItemScripts/OutlyingQeynosCreatureCatalog.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.09 08:09:58
+ Script Purpose :
+ :
+--]]
+local Catalogue = 519
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Just beyond the city's walls one will find areas which are considered part of Qeynos and yet remain wild. Residents of Qeynos' villages are very familiar with these areas as they usually border on one or more of the residential neighborhoods. Though close to the city, they are by no means a walk in the park.")
+end
+
+
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page2")
+AddConversationOption(conversation, "Turn back to previous section.","examined")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "One reason these areas are still wild is that they exist within steep embankments that make opening them to settlement impractical. The Bog in particular is an area where seasons of growth have compacted upon dense, moist soil and the scent of decay in that section would make living there disagreeable to say the least.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page3")
+AddConversationOption(conversation, "Turn back to previous section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "As these areas are close to Qeynos, they are quite temperate, though perhaps a little cooler due to the thickness of the vegetation. The caves are quite cool and in the past were a welcome Harvest diversion where folks could slip off for a quick swim after their chores were done.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page4")
+AddConversationOption(conversation, "Turn back to previous section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Without a doubt, the loveliest area is the Oakmyst Woods. This woodland preserve is shaded by emerald green broad-leaf trees such as oak and maple. Beneath the trees, the undergrowth is scattered with trillium, bleeding hearts and red-tipped paintbrushes. On the opposite end of the spectrum is the bog, with its greenish brown earth and fallen logs.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+if not HasQuest(Player,Catalogue) and not HasCompletedQuest(Player,Catalogue)then
+AddConversationOption(conversation, "Record the depicted creatures in your journal.","QuestStart")
+end
+AddConversationOption(conversation, "Turn back to previous section.","Page3")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Perhaps it is the abundance of greenery that brings an increase in the number of fey beings to these areas near Qeynos. Amongst the usual scattering of insects and birds, one finds several fairies and sprites protecting their space, attacking all who venture too near. Additionally, the Ruins are home to some unfortunate folk who have not yet earned their eternal sleep.")
+end
+
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Catalogue)
+end
+
+
+
+
diff --git a/server/ItemScripts/OutlyingQeynosCreatureCataloging.lua b/server/ItemScripts/OutlyingQeynosCreatureCataloging.lua
new file mode 100755
index 000000000..8c608dc29
--- /dev/null
+++ b/server/ItemScripts/OutlyingQeynosCreatureCataloging.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : ItemScripts/OutlyingQeynosCreatureCataloging.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.09 08:09:17
+ Script Purpose :
+ :
+--]]
+local Catalogue = 519
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Just beyond the city's walls one will find areas which are considered part of Qeynos and yet remain wild. Residents of Qeynos' villages are very familiar with these areas as they usually border on one or more of the residential neighborhoods. Though close to the city, they are by no means a walk in the park.")
+end
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "One reason these areas are still wild is that they exist within steep embankments that make opening them to settlement impractical. The Bog in particular is an area where seasons of growth have compacted upon dense, moist soil and the scent of decay in that section would make living there disagreeable to say the least.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page3")
+AddConversationOption(conversation, "Turn back to previous section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "As these areas are close to Qeynos, they are quite temperate, though perhaps a little cooler due to the thickness of the vegetation. The caves are quite cool and in the past were a welcome Harvest diversion where folks could slip off for a quick swim after their chores were done.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page4")
+AddConversationOption(conversation, "Turn back to previous section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Without a doubt, the loveliest area is the Oakmyst Woods. This woodland preserve is shaded by emerald green broad-leaf trees such as oak and maple. Beneath the trees, the undergrowth is scattered with trillium, bleeding hearts and red-tipped paintbrushes. On the opposite end of the spectrum is the bog, with its greenish brown earth and fallen logs.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+if not HasQuest(Player,SunWolf) and not HasCompletedQuest(Player,Catalogue)then
+AddConversationOption(conversation, "Record the depicted creatures in your journal.","QuestStart")
+end
+AddConversationOption(conversation, "Turn back to previous section.","Page3")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Perhaps it is the abundance of greenery that brings an increase in the number of fey beings to these areas near Qeynos. Amongst the usual scattering of insects and birds, one finds several fairies and sprites protecting their space, attacking all who venture too near. Additionally, the Ruins are home to some unfortunate folk who have not yet earned their eternal sleep.")
+end
+
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Catalogue)
+end
diff --git a/server/ItemScripts/OutlyingQeynosCreatureCatalogingDone.lua b/server/ItemScripts/OutlyingQeynosCreatureCatalogingDone.lua
new file mode 100755
index 000000000..44b3bd088
--- /dev/null
+++ b/server/ItemScripts/OutlyingQeynosCreatureCatalogingDone.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ItemScripts/OutlyingQeynosCreatureCatalogingDone.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.09 08:09:48
+ Script Purpose :
+ :
+--]]
+local Catalogue = 519
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Just beyond the city's walls one will find areas which are considered part of Qeynos and yet remain wild. Residents of Qeynos' villages are very familiar with these areas as they usually border on one or more of the residential neighborhoods. Though close to the city, they are by no means a walk in the park.")
+end
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "One reason these areas are still wild is that they exist within steep embankments that make opening them to settlement impractical. The Bog in particular is an area where seasons of growth have compacted upon dense, moist soil and the scent of decay in that section would make living there disagreeable to say the least.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page3")
+AddConversationOption(conversation, "Turn back to previous section.","Page1")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "As these areas are close to Qeynos, they are quite temperate, though perhaps a little cooler due to the thickness of the vegetation. The caves are quite cool and in the past were a welcome Harvest diversion where folks could slip off for a quick swim after their chores were done.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn to the next section.","Page4")
+AddConversationOption(conversation, "Turn back to previous section.","Page2")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Without a doubt, the loveliest area is the Oakmyst Woods. This woodland preserve is shaded by emerald green broad-leaf trees such as oak and maple. Beneath the trees, the undergrowth is scattered with trillium, bleeding hearts and red-tipped paintbrushes. On the opposite end of the spectrum is the bog, with its greenish brown earth and fallen logs.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn back to previous section.","Page3")
+AddConversationOption(conversation, "Put the catalogue away.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Perhaps it is the abundance of greenery that brings an increase in the number of fey beings to these areas near Qeynos. Amongst the usual scattering of insects and birds, one finds several fairies and sprites protecting their space, attacking all who venture too near. Additionally, the Ruins are home to some unfortunate folk who have not yet earned their eternal sleep.")
+end
+
+
+
+
+
+
+
diff --git a/server/ItemScripts/OverflowManifest.lua b/server/ItemScripts/OverflowManifest.lua
index 89c96fdfb..61507ad77 100755
--- a/server/ItemScripts/OverflowManifest.lua
+++ b/server/ItemScripts/OverflowManifest.lua
@@ -15,5 +15,5 @@ function examined(Item, Player)
conversation = CreateConversation()
AddConversationOption(conversation, "Put the manifest away.", "CloseItemConversation")
- StartDialogConversation(conversation, 2, Item, Player, "Overflow Manifest: Graystone Yard\n#3CF0F: Under the small ramp east of the docks.\n#3CF1G: Leaning against the north-wall just east of the docks, near Tacklmaster Moyna.\n#2DF0F: Just north of the most north-eastern building in Graystone, off the lip of the raised platform. #4QGCG: Along the eastern wall, behind the Scribe's shop.\n#CC4QF: Just west of the harbor entrance, near the Mail Kiosk and Bowyer.\n#CQC4F: Outside the bank and its western corner, piled between the raised platform and the wall.")
+ StartDialogConversation(conversation, 2, Item, Player, "Overflow Manifest: Graystone Yard\n#3CF0F: Under the small ramp east of the docks.\n#3CF1G: Leaning against the north-wall just east of the docks, near Tacklmaster Moyna.\n#2DF0F: Just north of the most north-eastern building in Graystone, off the lip of the raised platform. #4QGCG: Along the eastern wall, behind the Scribe's shop.\n#CC4QF: Just west of the harbor entrance, near the Mail Kiosk and Bowyer.\n#QGC4F: Outside the bank and its western corner, piled between the raised platform and the wall.")
end
diff --git a/server/ItemScripts/PatchofDogFur.lua b/server/ItemScripts/PatchofDogFur.lua
new file mode 100755
index 000000000..c9436e2dc
--- /dev/null
+++ b/server/ItemScripts/PatchofDogFur.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : ItemScripts/PatchofDogFur.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.14 04:05:08
+ Script Purpose :
+ :
+--]]
+--
+local Quest = 5815
+
+function examined(Item, Player)
+if not HasQuest(Player, Quest) and not HasCompletedQuest(Player, Quest) then
+ Dialog1(Item,Player)
+elseif GetQuestStep(Player,Quest)==1 or GetQuestStep(Player,Quest)==2 then
+ Dialog2(Item,Player)
+elseif GetQuestStep(Player,Quest)==3 or GetQuestStep(Player,Quest)==4 then
+ Dialog3(Item,Player)
+elseif GetQuestStep(Player,Quest)==5 or GetQuestStep(Player,Quest)==6 then
+ Dialog4(Item,Player)
+elseif HasCompletedQuest(Player, Quest)then
+ Completed(Item,Player)
+end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Closely study the patch of fur...]", "Dialog2")
+ AddConversationOption(conversation, "[Put the fur away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This is nothing more than a simple patch of fur. Judging by the texture it is probably from a dog. Aside from that there's nothing special about it.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ AddConversationOption(conversation, "[Compare the patches of fur]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the fur away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The small patch of dog fur has given me an idea. If I can gather enough of the pieces together, I might actually be able to make a nice set of gloves that wrap around my fingers perfectly.")
+end
+
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==4 then
+ AddConversationOption(conversation, "[Stuff the gloves with down]", "Dialog4")
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+ end
+ AddConversationOption(conversation, "[Put the cut fur patch away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "You throw away the small patch of fur. The large patch will be enough to make a nice set of gloves from. Cutting and shaping the fur, you're now going to have to stuff the gloves with a filling to keep them warm. Maybe you can find something soft in Antonica.")
+end
+
+function Dialog4(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==6 then
+ AddConversationOption(conversation, "[Attempt to sew the lining]", "QuestFinish")
+ end
+ if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+ end
+ AddConversationOption(conversation, "[Put the stuffed glove pattern away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "You shove as much down as you can in between the lining of the gloves. You managed to grab just enough to do the job. All you need now is a strong way to close up the lining. Perhaps the zombies around the area have some extra tendons they don't need.")
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+ end
+ if HasItem(Player,10331) then
+ RemoveItem(Player,10331,1)
+ end
+end
+
+function Completed(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Pack the fur back in your bags.]", "QuestFinish")
+ AddConversationOption(conversation, "[Get rid of the fur.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This patch of dog fur reminds you of some Fur Lined Gloves you've made in the past. They sure were comfortable!")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/PickledGuktaJuice.lua b/server/ItemScripts/PickledGuktaJuice.lua
new file mode 100755
index 000000000..0eff997d3
--- /dev/null
+++ b/server/ItemScripts/PickledGuktaJuice.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : ItemScripts/PickledGuktaJuice.lua
+ Script Author : neatz09
+ Script Date : 2023.12.12 03:12:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5463)
+ Regenz = 24.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
\ No newline at end of file
diff --git a/server/ItemScripts/PredatorCertificationPapers.lua b/server/ItemScripts/PredatorCertificationPapers.lua
new file mode 100755
index 000000000..fb157eda9
--- /dev/null
+++ b/server/ItemScripts/PredatorCertificationPapers.lua
@@ -0,0 +1,323 @@
+--[[
+ Script Name : ItemScripts/PredatorCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 11:06:02
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5856
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==31 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Predator\" if you signed it and are a Commoner or Scout.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Predator.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Predator","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Predator as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Predator.")
+ if GetClass(Player)== 31 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,38)
+ local level = GetLevel(Player)*5
+
+if not HasSkill(Player, 1921433074) then -- Reconnaissance
+ AddSkill(Player, 1921433074,1,level)
+ SendMessage(Player, "You have learned the Reconnaissance skill")
+end
+if not HasSkill(Player, 3167106577) then -- Stalking/Predator
+ AddSkill(Player, 3167106577,1,level)
+ SendMessage(Player, "You have learned the Stalking skill")
+end
+if not HasSkill(Player, 1468243427) then -- Tracking
+ AddSkill(Player, 1468243427,1,level)
+ SendMessage(Player, "You have learned the Tracking skill")
+end
+if not HasSkill(Player, 2200201799) then -- Disarm Trap
+ AddSkill(Player, 2200201799,1,level)
+ SendMessage(Player, "You have learned the Disarm Trap skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,31,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+--REMOVE SKILLS
+-- Remove Fighter for Scout
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+
+if HasSkill(Spawn, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Spawn, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Scout
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Scout
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+ SendMessage(Player, "Congratulations! You are a Predator.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Predator.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001100) then
+ RemoveItem(Player,1001100,1)
+ end
+end
diff --git a/server/ItemScripts/QeynosWarriorCertificationPapers.lua b/server/ItemScripts/QeynosWarriorCertificationPapers.lua
new file mode 100755
index 000000000..b7a190338
--- /dev/null
+++ b/server/ItemScripts/QeynosWarriorCertificationPapers.lua
@@ -0,0 +1,311 @@
+--[[
+ Script Name : ItemScripts/QeynosWarriorCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.11 06:06:43
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==1 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Warrior\" if you signed it and are a Commoner or Fighter.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Warrior.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Warrior","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Warrior as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Warrior.")
+ if GetClass(Player)== 1 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,2)
+ local level = GetLevel(Player)*5
+
+if not HasSkill(Player, 1408356869) then -- Martial
+ AddSkill(Player, 1408356869,1,level)
+ SendMessage(Player, "You have learned the Martial skill")
+end
+if not HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ AddSkill(Player, 1124719197,1,level)
+ SendMessage(Player, "You have learned the Tactics skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ AddSkill(Player, 2246237129,1,level)
+ SendMessage(Player, "You are now more proficient with Medium Armor")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 2954459351) then -- Great Axe
+ AddSkill(Player, 2954459351,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Axe")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Player, 2292577688) then -- Great Sword
+ AddSkill(Player, 2292577688,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Sword")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 570458645) then -- Tower Shield
+ AddSkill(Player, 570458645,1,level)
+ SendMessage(Player, "You are now more proficient with a Tower Shield")
+end
+if not HasSkill(Player, 2608320658) then -- Kite Shield
+ AddSkill(Player, 2608320658,1,level)
+ SendMessage(Player, "You are now more proficient with a Kite Shield")
+end
+
+--REMOVED SKILLS
+--Removed Advance Fighter
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout for Fighter
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Fighter
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Fighter
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVED WEAPON
+if not HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 2200201799) then -- Disarm Trap
+ RemoveSkill(Player, 2200201799)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+ SendMessage(Player, "Congratulations! You are a Warrior.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Warrior.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001096) then
+ RemoveItem(Player,1001096,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/RemedyoftheGarden.lua b/server/ItemScripts/RemedyoftheGarden.lua
new file mode 100755
index 000000000..2d9b99c75
--- /dev/null
+++ b/server/ItemScripts/RemedyoftheGarden.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : ItemScripts/RemedyoftheGarden.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.03 05:10:15
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Remedy of the Garden when Activated.
+ * Heals caster for 8
+
+End Item Effects--]]
+
+function examined(Item, Player)
+
+end
+
+function used (Item, Player)
+ Spell = GetSpell(2550435)
+ SetSpellData(Spell, "name", "Remedy of the Garden")
+ SetSpellDataIndex(Spell, 0, 8)
+ SetSpellDataIndex(Spell, 1, 8)
+ CastCustomSpell(Spell, Player, Player)
+
+end
\ No newline at end of file
diff --git a/server/ItemScripts/RogueCertificationPapers.lua b/server/ItemScripts/RogueCertificationPapers.lua
new file mode 100755
index 000000000..ca4fcb687
--- /dev/null
+++ b/server/ItemScripts/RogueCertificationPapers.lua
@@ -0,0 +1,322 @@
+--[[
+ Script Name : ItemScripts/RogueCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 11:06:10
+ Script Purpose :
+ :
+--]]
+local Quest = 5857
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==31 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Rogue\" if you signed it and are a Commoner or Scout.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Rogue.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Rogue","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Rogue as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Rogue.")
+ if GetClass(Player)== 31 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,32)
+ local level = GetLevel(Player)*5
+
+if not HasSkill(Player, 1921433074) then -- Reconnaissance
+ AddSkill(Player, 1921433074,1,level)
+ SendMessage(Player, "You have learned the Reconnaissance skill")
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ AddSkill(Player, 1514256692,1,level)
+ SendMessage(Player, "You have learned the Skulldugery skill")
+end
+if not HasSkill(Player, 1468243427) then -- Tracking
+ AddSkill(Player, 1468243427,1,level)
+ SendMessage(Player, "You have learned the Tracking skill")
+end
+if not HasSkill(Player, 2200201799) then -- Disarm Trap
+ AddSkill(Player, 2200201799,1,level)
+ SendMessage(Player, "You have learned the Disarm Trap skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,31,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 418532101,1,level) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+--REMOVE SKILLS
+-- Remove Fighter for Scout
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+
+if HasSkill(Spawn, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Spawn, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Scout
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Scout
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+ SendMessage(Player, "Congratulations! You are a Rogue.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Rogue.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001101) then
+ RemoveItem(Player,1001101,1)
+ end
+end
diff --git a/server/ItemScripts/SacredSustenanceFood.lua b/server/ItemScripts/SacredSustenanceFood.lua
new file mode 100644
index 000000000..e0ba35ac3
--- /dev/null
+++ b/server/ItemScripts/SacredSustenanceFood.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : ItemScripts/SacredSustenanceFood.lua
+ Script Author : dorbin
+ Script Date : 2024.03.22 11:03:12
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Increases Out-of-Combat Health Regeneration of target by 2.0
+* This effect suspends during combat
+
+End Item Effects--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5462)
+ Regenz = 3.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Health Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/SacredSustenanceWater.lua b/server/ItemScripts/SacredSustenanceWater.lua
new file mode 100644
index 000000000..1f3a81c48
--- /dev/null
+++ b/server/ItemScripts/SacredSustenanceWater.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : ItemScripts/SacredSustenanceWater.lua
+ Script Author : dorbin
+ Script Date : 2024.03.22 11:03:54
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Increases Out-of-Combat Power Regeneration of target by 3.0
+
+End Item Effects--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5463)
+ Regenz = 3.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/ShamanCertificationPapers.lua b/server/ItemScripts/ShamanCertificationPapers.lua
new file mode 100755
index 000000000..8c4ccfde7
--- /dev/null
+++ b/server/ItemScripts/ShamanCertificationPapers.lua
@@ -0,0 +1,284 @@
+--[[
+ Script Name : ItemScripts/ShamanCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 03:06:11
+ Script Purpose :
+ :
+--]]
+local Quest = 5850
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==11 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Shaman\" if you signed it and are a Commoner or Priest.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Shaman.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Shaman","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Shaman as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Shaman.")
+ if GetClass(Player)== 11 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,18)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 2463145248) then -- Inspirations
+ AddSkill(Player, 2463145248,1,level)
+ SendMessage(Player, "You have learned the Inspirations skill")
+end
+if not HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ AddSkill(Player, 3343700951,1,level)
+ SendMessage(Player, "You have learned the Talismans skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Remove Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Remove Mage
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 545043066) then -- Symbol
+ RemoveSkill(Player, 545043066)
+end
+
+
+ SendMessage(Player, "Congratulations! You are a Shaman.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Shaman.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001103) then
+ RemoveItem(Player,1001103,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/SharkFinSouffle.lua b/server/ItemScripts/SharkFinSouffle.lua
new file mode 100755
index 000000000..f291a324c
--- /dev/null
+++ b/server/ItemScripts/SharkFinSouffle.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : ItemScripts/SharkFinSouffle.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.27 03:10:44
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Increases Out-of-Combat Health Regeneration of target by 10.0
+* This effect suspends during combat
+
+End Item Effects--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5462)
+ Regenz = 10.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Health Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/SorcererCertificationPapers.lua b/server/ItemScripts/SorcererCertificationPapers.lua
new file mode 100755
index 000000000..ec936667f
--- /dev/null
+++ b/server/ItemScripts/SorcererCertificationPapers.lua
@@ -0,0 +1,280 @@
+--[[
+ Script Name : ItemScripts/SorcererCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 04:06:58
+ Script Purpose :
+ :
+--]]
+local Quest = 5853
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==21 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Sorcerer\" if you signed it and are a Commoner or Priest.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Sorcerer.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Sorcerer","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Sorcerer as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Sorcerer.")
+ if GetClass(Player)== 21 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,22)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 3820670534) then -- Evocations/Mage
+ AddSkill(Player, 3820670534,1,level)
+ SendMessage(Player, "You have learned the Evocations skill")
+end
+if not HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ AddSkill(Player, 2533124061,1,level)
+ SendMessage(Player, "You have learned the Sorcery skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Spawn, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Spawn, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 770311065) then -- Mace
+ RemoveSkill(Player, 770311065)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 4037812502) then -- Buckler
+ RemoveSkill(Player, 4037812502)
+end
+
+ SendMessage(Player, "Congratulations! You are a Sorcerer.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Sorcerer.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001106) then
+ RemoveItem(Player,1001106,1)
+ end
+end
+
diff --git a/server/ItemScripts/StarcrestCommunecitizenshiptask.lua b/server/ItemScripts/StarcrestCommunecitizenshiptask.lua
index d0e2c435c..c9c50dc69 100755
--- a/server/ItemScripts/StarcrestCommunecitizenshiptask.lua
+++ b/server/ItemScripts/StarcrestCommunecitizenshiptask.lua
@@ -47,6 +47,6 @@ if not HasQuest(Player,5722) and not HasCompletedQuest(Player,5722)then
OfferQuest(nil,Player,5722)
end
conversation = CreateConversation()
-AddConversationOption(conversation, "[put the note]","CloseItemConversation")
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
StartDialogConversation(conversation, 2, Item, Player, "After you complete your task, report to Marshal Glorfel using the citizenship sign.")
end
\ No newline at end of file
diff --git a/server/ItemScripts/StonestairBywaycitizenshiptask.lua b/server/ItemScripts/StonestairBywaycitizenshiptask.lua
new file mode 100755
index 000000000..9e56dd28b
--- /dev/null
+++ b/server/ItemScripts/StonestairBywaycitizenshiptask.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ItemScripts/StonestairBywaycitizenshiptask.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 03:06:36
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog2")
+StartDialogConversation(conversation, 2, Item, Player, "By order of the Overlord, all residents wishing to become citizens of the city must complete a trial to prove themselves.")
+
+end
+
+
+function Dialog2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read about where tokens are found]","Dialog3")
+StartDialogConversation(conversation, 2, Item, Player, "Tokens are scattered throughout the surrounding area. You must find five of these tokens to earn the right to speak to a city official.")
+end
+
+
+function Dialog3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog4")
+
+StartDialogConversation(conversation, 2, Item, Player, "Each district has been assigned an area in which to hunt for their tokens. Only tokens from within that area will be accepted.")
+end
+
+function Dialog4(Item, Player)
+conversation = CreateConversation()
+if GetLevel(Player)<6 then
+ AddConversationOption(conversation, "[I need more experience to pursue Citizenship]","CloseItemConversation")
+elseif not HasQuest(Player,5870) and not HasCompletedQuest(Player,5870)then
+AddConversationOption(conversation, "[write this in your quest journal]","StartQuest")
+end
+if HasQuest(Player,5870) or HasCompletedQuest(Player,5870) then
+AddConversationOption(conversation, "[continue]","StartQuest")
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Stonestair Byway residents must gather five tokens from the Graveyard.")
+end
+
+function StartQuest(Item,Player)
+conversation = CreateConversation()
+if not HasQuest(Player,5870) and not HasCompletedQuest(Player,5870)then
+ OfferQuest(nil,Player,5870)
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Use the citizenship sign to report to Abbetor T'avi once you complete your task.")
+end
diff --git a/server/ItemScripts/SummonerCertificationPapers.lua b/server/ItemScripts/SummonerCertificationPapers.lua
new file mode 100755
index 000000000..46fd4a248
--- /dev/null
+++ b/server/ItemScripts/SummonerCertificationPapers.lua
@@ -0,0 +1,279 @@
+--[[
+ Script Name : ItemScripts/SummonerCertificationPapers.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 04:06:09
+ Script Purpose :
+ :
+--]]
+local Quest = 5854
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+
+ if GetClass(Player)==0 or GetClass(Player)==21 then
+ AddConversationOption(conversation, "[Glance over the forms]","Intro")
+ end
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This certificate would make you a \"Summoner\" if you signed it and are a Commoner or Priest.\n\nTHIS ACTION IS FINAL!\n\nRead further if you wish to become a Summoner.")
+end
+
+function Intro(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, ""..GetName(Player).." the Summoner","Class")
+ AddConversationOption(conversation, "[Put the certificate away]","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "-- OFFICIAL DOCUMENT --\n\n I, "..GetName(Player)..", am a Summoner as proof by trainer [illegible scribbles].\n\nSigned,")
+end
+
+
+function Class(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Turn in these papers for gear]","QuestStart")
+ end
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "You are now known as \n\n"..GetName(Player).." the Summoner.")
+ if GetClass(Player)== 21 or GetClass(Player)== 0 then
+ SetAdventureClass(Player,28)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 3820670534) then -- Evocations/Mage
+ AddSkill(Player, 3820670534,1,level)
+ SendMessage(Player, "You have learned the Evocations skill")
+end
+if not HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ AddSkill(Player, 2120065377,1,level)
+ SendMessage(Player, "You have learned the Legerdemain skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Spawn, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Spawn, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 770311065) then -- Mace
+ RemoveSkill(Player, 770311065)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 4037812502) then -- Buckler
+ RemoveSkill(Player, 4037812502)
+end
+
+ SendMessage(Player, "Congratulations! You are a Summoner.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Summoner.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ SetPlayerLevel(Player,10)
+end
+end
+
+function QuestStart(Item,Player)
+ OfferQuest(nil,Player,Quest)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the signed certificate away]","TaskDone")
+ StartDialogConversation(conversation, 2, Item, Player, "The Shady Swashbuckler might have some gear I can use...")
+end
+
+function TaskDone(Item,Player)
+CloseItemConversation(Item,Player)
+if HasItem(Player,1001107) then
+ RemoveItem(Player,1001107,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/TempleStreetcitizenshiptask.lua b/server/ItemScripts/TempleStreetcitizenshiptask.lua
new file mode 100755
index 000000000..f625da76e
--- /dev/null
+++ b/server/ItemScripts/TempleStreetcitizenshiptask.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ItemScripts/TempleStreetcitizenshiptask.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 03:06:01
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog2")
+StartDialogConversation(conversation, 2, Item, Player, "By order of the Overlord, all residents wishing to become citizens of the city must complete a trial to prove themselves.")
+
+end
+
+
+function Dialog2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read about where tokens are found]","Dialog3")
+StartDialogConversation(conversation, 2, Item, Player, "Tokens are scattered throughout the surrounding area. You must find five of these tokens to earn the right to speak to a city official.")
+end
+
+
+function Dialog3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog4")
+
+StartDialogConversation(conversation, 2, Item, Player, "Each district has been assigned an area in which to hunt for their tokens. Only tokens from within that area will be accepted.")
+end
+
+function Dialog4(Item, Player)
+conversation = CreateConversation()
+if GetLevel(Player)<6 then
+ AddConversationOption(conversation, "[I need more experience to pursue Citizenship]","CloseItemConversation")
+elseif not HasQuest(Player,5871) and not HasCompletedQuest(Player,5871)then
+AddConversationOption(conversation, "[write this in your quest journal]","StartQuest")
+end
+if HasQuest(Player,5871) or HasCompletedQuest(Player,5871) then
+AddConversationOption(conversation, "[continue]","StartQuest")
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Temple Street residents must gather five tokens from the Thieves' Way.")
+end
+
+function StartQuest(Item,Player)
+conversation = CreateConversation()
+if not HasQuest(Player,5871) and not HasCompletedQuest(Player,5871)then
+ OfferQuest(nil,Player,5871)
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Use the citizenship sign to report to Abbetor T'avi once you complete your task.")
+end
diff --git a/server/ItemScripts/The5YearFirework.lua b/server/ItemScripts/The5YearFirework.lua
new file mode 100755
index 000000000..8878213ae
--- /dev/null
+++ b/server/ItemScripts/The5YearFirework.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : ItemScripts/The5YearFirework.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.09 10:12:59
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies 5-Year Firework when Activated. Lasts for 3.0 seconds.
+ * Launches a firework when used.
+
+End Item Effects--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+CastSpell(Player, 5289, 1)
+end
diff --git a/server/ItemScripts/TheBaubbleshirecitizenshiptask.lua b/server/ItemScripts/TheBaubbleshirecitizenshiptask.lua
index 048083515..3d74923e3 100755
--- a/server/ItemScripts/TheBaubbleshirecitizenshiptask.lua
+++ b/server/ItemScripts/TheBaubbleshirecitizenshiptask.lua
@@ -43,7 +43,7 @@ end
function StartQuest(Item,Player)
conversation = CreateConversation()
-AddConversationOption(conversation, "[put the note]","CloseItemConversation")
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
if not HasQuest(Player,5718) and not HasCompletedQuest(Player,5718)then
OfferQuest(nil,Player,5718)
end
diff --git a/server/ItemScripts/TheFreeportCitizensGuidetoOpportunity.lua b/server/ItemScripts/TheFreeportCitizensGuidetoOpportunity.lua
new file mode 100755
index 000000000..35fc7e5d0
--- /dev/null
+++ b/server/ItemScripts/TheFreeportCitizensGuidetoOpportunity.lua
@@ -0,0 +1,121 @@
+--[[
+ Script Name : ItemScripts/TheFreeportCitizensGuidetoOpportunity.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 02:06:12
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Now that you are a citizen of Freeport, you will want to do your part to bring glory to the Overlord. There are many ways to gain prestige and earn coin. As you grow and learn, your efforts will reflect on our city. Journey through Norrath and know that your efforts will inspire our foes to reconsider their allegiance. Might is not only demonstrated by the sword, but by knowing what can be used to our benefit.")
+end
+
+function Page1(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Collections\n\nOn your journeys you may encounter items which are part of a larger series. You can collect these items as you travel, inspecting them to determine whether they are worthy of retention. You will find this hobby quite rewarding as you learn to identify different animals and their parts.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page3")
+AddConversationOption(conversation, "Previous Page","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Once you have completed a collection, you should present them to Renny Parvat in East Freeport. He will offer rewards for your completed collections. And should you complete an entire series of collectable items, you may receive something special for your home as well. Go, then, and investigate the wilds to find the rewards beneath your feet.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page4")
+AddConversationOption(conversation, "Previous Page","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Exploration\n\nFreeport's history is filled with the greatest explorers of all times. Now that you belong to the Overlord, your finds will add to his glory throughout Norrath. You may have already identified key features throughout the city, such as the Fountain of the Fallen Soldier in the Scale Yard. You are strongly urged to take this moment to look upon the ExecutionPlaza in West Freeport. Go, now.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page5")
+AddConversationOption(conversation, "Previous Page","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "As you explore lands new to you, remember that you represent Freeport and the Overlord. He will not be well-served if you are unable to put the glory of our city before your own insignificant life. Therefore, go without fear through the lands. Should you see something interesting, investigate it more closely that you may learn more about it for your sake.")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page6")
+AddConversationOption(conversation, "Previous Page","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Literature\n\nThe Overlord is proud of the high literacy rate among Freeport's citizens and he strongly encourages those who do not read to learn immediately. To this end, he has graciously allowed Sage Navarius Orvalis to set up shop in North Freeport, even though many of the tomes he sells are incomplete. Despite their lack of pages, Sage Orvalis's tomes are fascinating.")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page7")
+AddConversationOption(conversation, "Previous Page","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "By purchasing a tome such as \"Bird Watching: The Do's and Don'ts of Nektulos Forest,\" you will explore Norrath and gain new insight into its creatures, history and the folk who inhabit our world.\n\nYou can also gain new skills by completing any of the Mastery tomes available.\n\nIndeed, you are very strongly urged by the Overlord to take advantage of the Sage's stock and to also read any tomes you find while in the wilds.")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page8")
+AddConversationOption(conversation, "Previous Page","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Lost and Found\n\nAn active mind is an active soldier for Freeport. While you are going about your work for the glory of the Overlord, you must always carefully observe your surroundings. Is anything out of place? Is there an unusual object jutting up through the ground? Investigate these things, for they may provide clues to activities with which you will want to concern yourself.")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page9")
+AddConversationOption(conversation, "Previous Page","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Many unusual items you will find in your travels hold the keys to mysteries in which the Overlord is interested. It would behoove you to find these items and complete any task necessary to determine their exact nature. This way, if the Overlord should summon you into his Presence Chamber, you will be able to explain exactly what you know and how you came to learn these things.")
+end
+
+function Page9(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page10")
+AddConversationOption(conversation, "Previous Page","Page8")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Adventure\n\nOne of the hallmarks of a citizen of Freeport is his willingness to take on tasks to further the reputation of the Overlord. Freeport has long been a center of commerce throughout Norrath. Look to assist the Far Seas Trading Company's taskmasters where you find them. Strengthening our ties to commerce strengthens our economy as a whole.")
+end
+
+function Page10(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Next Page","Page11")
+AddConversationOption(conversation, "Previous Page","Page9")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Now that you are a citizen of Freeport, you will want to do your part to bring glory to the Overlord. There are many ways to gain prestige and earn coin. As you grow and learn, your efforts will reflect on our city. Journey through Norrath and know that your efforts will inspire our foes to reconsider their allegiance.\n\nMight is not only demonstrated by the sword, but by knowing what can be used to our benefit.")
+end
+
+function Page11(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Final Page","Page12")
+AddConversationOption(conversation, "Previous Page","Page10")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Heritage\n\nThroughout Norrath's history, there are certain items which seem to offer their owners greater protections or abilities. The Overlord is interested in these items and therefore, so must you be. Use your keen observation skills to identify those items, such as the greater lightstones.\n\nLearn how to obtain these things and you will please the Overlord.")
+end
+
+function Page12(Item, Player)
+if CanReceiveQuest(Player,5865) then
+ OfferQuest(Item,Player,5865)
+elseif GetQuestStep(Player,5865) ==8 then
+AddConversationOption(conversation, "Final Page","Page13")
+end
+endconversation = CreateConversation()
+AddConversationOption(conversation, "Previous Page","Page10")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Making Yourself Useful\n\nThe Overlord requires that all citizens be of some use to the city by advancing their training in their current adventuring profession. We will not have deadbeats and mendicants within the walls of Freeport.\n\nFighters report to Commandant Tychus in the Temple of War.\n\nPriests report to Priest Kelian, also within the Temple of War.\n\nMages are to speak with Arcanist Sonius within the Academy of Arcane Sciences.\n\nScouts are to seek out Emissary Millia, she can be found operating out of the Jade Tiger Inn.\n\nThese locations are all found within the North Freeport section of the city. The prosperity of Freeport will be achieved through blood and sweat! -- Grand Duke Hazran")
+end
+
+function Page13(Item, Player)
+SetStepComplete(Player,5865,8)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Previous Page","Page10")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "This book is only a guide to what you will be expected to look for and achieve on the Overlord's behalf. Do not waste your time by lazing about. The Age of Destiny is upon us and only those who act quickly will reap the benefits that the world offers.")
+end
diff --git a/server/ItemScripts/TheHistoryofFrogloks.lua b/server/ItemScripts/TheHistoryofFrogloks.lua
new file mode 100755
index 000000000..3fc3d07e1
--- /dev/null
+++ b/server/ItemScripts/TheHistoryofFrogloks.lua
@@ -0,0 +1,111 @@
+--[[
+ Script Name : ItemScripts/TheHistoryofFrogloks.lua
+ Script Author : neatz09
+ Script Date : 2023.11.23 04:11:44
+ Script Purpose : Handles the study guide for the froglok quiz with euurp
+ :
+--]]
+
+function examined(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page2")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "We are the children of Mithaniel Marr, god of valor. He has given unto us a greater share of honor than was given to any other creature. We would rather die with honor than extend our lives through deception of any kind.")
+ end
+
+function Page2(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page3")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This can be challenging for others--the concept that laws are not meant for the breaking. While we try to be understanding that not everyone shares our belief, it is still distressing to see rules bent and broken. The laws of the land are not simply suggestions, as some seem to think.")
+end
+
+function Page3(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page4")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Such is the way of the troll. After many attempts to peacefully coexist with them in the Innothule Swamp, their utter disregard for protocol finally provoked us to battle. The blessing of Mithaniel Marr was with us as we drove them from their filthy city of Grobb. In His honor, we renamed it Gukta, Outpost of Marr.")
+end
+
+function Page4(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page5")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Some may wonder why we contented ourselves with a simple home like Gukta, when our obvious intelligence indicates we might prefer plush surroundings. That is not our way, you see. It seems those whose skin is laced with hair need warmth and softness in their surroundings. We are comforted in other ways.")
+end
+
+function Page5(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page6")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Others have said that we frogloks are too proud and that we deserve the challenges that have been our lot through the Ages. We do not deny the pride we feel in our heritage. We were created by Mithaniel Marr, after all. Through his grace, we have overcome many adversities that would have brought others to the brink of despair.")
+end
+
+function Page6(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page7")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "When the ogres of Rallos Zek began their reign of terror, they tried to start with Gukta. They thought they knew all the deepest reaches of our territory, thinking that we had not changed or developed it after wresting the city from the trolls. The ogres fought without honor, to their own detriment.")
+end
+
+function Page7(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page8")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "We are not taken unawares with ease. The foul ogres thought to destroy us, but we were guided by the Hand of Marr. Our eggs were carried deep into the tunnels, followed by elite forces to guard them. Deep beneath the marshes we went. We sent emissaries to Freeport to advise the Overlord of the rise of the Rallosians.")
+end
+
+function Page8(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page9")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The Overlord brushed our concerns aside and so, with barely three days' rest, our emissaries headed to Qeynos to warn the Bayles. Though sympathetic, they chose only to increase their watches rather than advancing to attack before the Rallosians expanded their reach. How we wished they had listened! The Rallosian Army grew in strength and power until the cities of Freeport and Qeynos were besieged.")
+end
+
+function Page9(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page10")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The blessings of Mithaniel Marr still protected the faithful. The honorless ogres broke faith with their own allies, defiling the Temple of Cazic-Thule. And so, in the darkest hours when it appeared that the Rallosians would conquer all, the Green Mist covered the battlefields, slaying our enemies. However, not all our enemies were destroyed.")
+end
+
+function Page10(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page11")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Though many of our adversaries perished in the time of the Green Mist, some escaped by continuing to pursue us. Deeper into the marshes we fled, and still they followed. It was then that we felt the rage of the gods.")
+end
+
+function Page11(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page12")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "By failing to stand our ground and hold back the tide of the enemy, we disappointed the gods who had held us high in their trust and esteem. Punishment was both swift and severe.")
+end
+
+function Page12(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page13")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Though we had escaped the Rallosians, we could not escape the torments to follow. The Rending kept those of us who had scattered apart. Separated from any other honorable race, we drifted into oblivion.")
+end
+
+function Page13(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page14")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "And yet, oblivion would have been more kind than that which we endured. For those of us who found our way to the Feerrott were taken prisoner by the Tae'Ew, who fed us to their god.")
+end
+
+function Page14(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Read on", "Page15")
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Generation upon generation of froglok has been subjugated by the Alliz Tae'Ew. They demanded service and, weakened by the calamities that had befallen us, we were in no position to rebel. Until now.")
+end
+
+function Page15(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Close", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "In secret, several of our strongest broke free and are repeating the journey made so long ago when we first sent word to Freeport and Qeynos that the Rallosians were on the move. Surely we have atoned for our offenses against the gods and will be saved.")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/TheJournaloftheSunWolf.lua b/server/ItemScripts/TheJournaloftheSunWolf.lua
index 3003e2b2f..d935e5697 100755
--- a/server/ItemScripts/TheJournaloftheSunWolf.lua
+++ b/server/ItemScripts/TheJournaloftheSunWolf.lua
@@ -56,7 +56,7 @@ end
function Page6(Item, Player)
conversation = CreateConversation()
-if not HasQuest(Spawn,SunWolf) and not HasCompletedQuest(Spawn,Sunwolf)then
+if not HasQuest(Player,SunWolf) and not HasCompletedQuest(Player,Sunwolf)then
AddConversationOption(conversation, "Attempt to determine the path of the Sun Wolf.","QuestStart")
end
AddConversationOption(conversation, "Turn back to previous entry.","Page5")
diff --git a/server/ItemScripts/TheLegendaryDwarvenWorkBoots.lua b/server/ItemScripts/TheLegendaryDwarvenWorkBoots.lua
new file mode 100755
index 000000000..889dcf817
--- /dev/null
+++ b/server/ItemScripts/TheLegendaryDwarvenWorkBoots.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : ItemScripts/TheLegendaryDwarvenWorkBoots.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 07:04:52
+ Script Purpose :
+ :
+--]]
+
+
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Remove stone from the mounting)", "removemount")
+AddConversationOption(conversation, "Leave the stone alone", "CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Dwarven Work Boots. Given to me by Hwal Ruksif after performing many work tasts for him... including having a new pair of boots made for him!")
+end
+
+function removemount(Item, Player)
+if HasItem(Player, 66088) then
+RemoveItem(Player, 66088)
+SummonItem(Player , 146379)
+elseif HasItem(Player, 66089) then
+ RemoveItem(Player, 66089)
+ SummonItem(Player, 146378)
+elseif HasItem(Player, 66091) then
+ RemoveItem(Player, 66091)
+ SummonItem(Player, 146381)
+elseif HasItem(Player, 66090) then
+ RemoveItem(Player, 66090)
+ SummonItem(Player, 146380)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/TheRatQueenofVerminsSnye.lua b/server/ItemScripts/TheRatQueenofVerminsSnye.lua
new file mode 100755
index 000000000..dfe9809b6
--- /dev/null
+++ b/server/ItemScripts/TheRatQueenofVerminsSnye.lua
@@ -0,0 +1,176 @@
+--[[
+ Script Name : ItemScripts/TheRatQueenofVerminsSnye.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 03:09:18
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5886
+
+function examined(Item, Player)
+Intro(Item,Player)
+end
+
+function Intro(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry Two","Page2")
+ if HasQuest(Player,Quest) then
+ AddConversationOption(conversation, "Turn to last page","PageCheck")
+ end
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "\"My Life,\" by Ayamia the Unfortunate, together with \"An Examination of the Rat Queen,\" by the Scholars' Institute for Change, a non-profit organization. Quotations are liberally taken from Ayamia's own volume, interspersed with logical explanations where necessary.")
+end
+
+function PageCheck(Item,Player)
+ if GetQuestStep(Player,Quest) ==1 or GetQuestStep(Player,Quest) ==2 then
+ Page1(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==3 or GetQuestStep(Player,Quest) == 4 then
+ Page2(Item, Player)
+ elseif GetQuestStep(Player,Quest) == 5 or GetQuestStep(Player,Quest) ==6 then
+ Page3(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==7 or GetQuestStep(Player,Quest) ==8 then
+ Page4(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==9 or GetQuestStep(Player,Quest) ==10 then
+ Page5(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==11 or GetQuestStep(Player,Quest) ==12 then
+ Page6(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==13 or GetQuestStep(Player,Quest) ==14 then
+ Page7(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==15 or GetQuestStep(Player,Quest) ==16 then
+ Page8(Item, Player)
+ elseif GetQuestStep(Player,Quest) ==17 or GetQuestStep(Player,Quest) ==18 then
+ Page9(Item, Player)
+ end
+end
+
+function Page1(Item, Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "Start looking for the missing pages","QuestStart")
+ elseif GetQuestStep(Player,Quest) >=2 then
+ AddConversationOption(conversation, "Entry Two","Page2")
+end
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter One -- How I Came to Live in the Vermin's Snye.\" I've heard what some people say about me, and let me tell you straight away that it is not true. My husband abandoned me and I had no choice to but to find a place to live with my children. Our landlord, wretched human scum, turned us onto the streets! I am not as young as I once was, but I am resourceful. By living below, my children and I would be out of the elements. We could find a cozy place to call our own.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+end
+if GetQuestStep(Player,Quest) >=4 then
+AddConversationOption(conversation, "Entry Three","Page3")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter One.\" Clearly, the subject is in denial of her current status. Her husband is recorded as \"Lord Selien\" so obviously, the subject was a woman who lived in comfort. Her reference to being turned out of her home is correct, but only to the extent that her increasing madness led her to bring to her husband's home all manner of vile creatures, referring to them as her \"children.\" Upon her husband's death in battle, his family shunned the subject, which further isolated her, causing her to seek shelter elsewhere.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+end
+if GetQuestStep(Player,Quest) >=6 then
+AddConversationOption(conversation, "Entry Four","Page4")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Two -- My Children.\" I am blessed with seven sons, all in the peak of their strength and youth. The eldest is Varion. He looks remarkably like his dear, departed father. I wished to name all my sons in such a way that their names began with the same letter, but my husband forbade me. He relented when I became ill at the birth of our youngest, Voland. I am so blessed by Tunare! Seven sons! My only regret is that I have no daughters, but I am not complaining, for my sons will carry on the name of their father's house.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+end
+if GetQuestStep(Player,Quest) >=8 then
+AddConversationOption(conversation, "Entry Five","Page5")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Two.\" Again, the subject tells some of the truth. She did indeed bear seven sons, the first and last of which are named as indicated. And, she did fall ill upon the birth of her final son, rendering her unable to have other children. The subject lay ill for nearly a year, during which time her sons were raised by her sister. When she regained her health, the subject had her sister arrested and executed for treason before she resumed her motherly duties.")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==8 then
+ SetStepComplete(Player,Quest,8)
+end
+if GetQuestStep(Player,Quest) >=10 then
+AddConversationOption(conversation, "Entry Six","Page6")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Three -- A Time of Hardship.\" Our move to the catacombs was not without its troubles, of course. My children needed me more than ever, clinging to me in the seemingly perpetual darkness beneath the city streets. We found that the crews who maintained the drains kept piles of fuel to use in the sconces set into the walls. I learned to borrow a bit of their fire to start my own. My eldest found the place I now call home by turning down a little-used side passage. The way is patrolled by roving gangs of thugs, but they left me alone. After all, I am guarded by my seven strong sons!")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==10 then
+ SetStepComplete(Player,Quest,10)
+end
+if GetQuestStep(Player,Quest) >=12 then
+AddConversationOption(conversation, "Entry Seven","Page7")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Three.\" Again, the subject shows her inability to separate fact from fiction. Her eldest son would not have been able to find her living area as he, together with all his brothers, perished at sea. This occurred during the Shattering, when many travellers perished. In this case, the subject had sent her sons on an errand, the nature of which has never been determined. It is generally believed that the magnitude of the loss, both personally and throughout Norrath, coupled with the knowledge that she sent them on this journey, unhinged her mind.")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==12 then
+ SetStepComplete(Player,Quest,12)
+end
+if GetQuestStep(Player,Quest) >=14 then
+AddConversationOption(conversation, "Entry Eight","Page8")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Four -- The Days Grow Long.\" We are comfortable here, for the most part. I find that the days are sometimes long, but one of the boys will entertain me. Asrey, my middle boy, will recite tales of the distant past. I believe he will grow up to be a bard! His voice is clear and true. He loves to stand in the chambers where the ceilings are highest and sing, listening to his own voice echo. He is a good lad, as are all my sons, and I am grateful for their company.")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==14 then
+ SetStepComplete(Player,Quest,14)
+end
+if GetQuestStep(Player,Quest) >=16 then
+AddConversationOption(conversation, "Entry Nine","Page9")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Four.\" The subject's thrid son, Asrey, did have a legendary voice, even in his youth. He was often called upon to sing before the Bayle family. At the conclusion of one of these events, Lady Larinna Bayle presented him with an engraved flute. The flute was lost at sea with Asrey and his brothers. It is interesting to note that the subject retains excellent memories of the details of her children's lives, but has blocked out the single largest event that befell them -- their own deaths.")
+end
+
+function Page9(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==16 then
+ SetStepComplete(Player,Quest,16)
+end
+if GetQuestStep(Player,Quest) >=18 then
+AddConversationOption(conversation, "Entry Ten","Page8")
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page8")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Five -- A New Beginning.\" I've given up some of the fancy work I used to do before. Now that I must scrape by, I can no longer spend time weaving lace or painting miniatures. I have painted several portraits of my sons, however, that I am quite proud of. They are endlessly fascinating to me. I know it is sometimes difficult for them to live in this place, yet they do not complain. When they wander too far, I miss them terribly. Is that so wrong for a mother? After all, nothing is stronger than a mother\'s love.")
+end
+
+function Page10(Item, Player)
+conversation = CreateConversation()
+if GetQuestStep(Player,Quest)==18 then
+ SetStepComplete(Player,Quest,18)
+end
+AddConversationOption(conversation, "Turn back to previous entry.","Page9")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Five.\" We were unable to determine where the subject's portraits have gone, if indeed she painted any at all. There is no record of her having been interested in miniature painting prior to her exile to the Vermin's Snye. Some of the lace she created was, however, on display at the Museum of Fine Arts until it was stolen by vandals that tied the bits to some of the rats the subject called \"her children\" before setting them afire. The subject became agitated and defended the rats, thus earning her title of \"Rat Queen.\"")
+end
+
+
+function QuestStart(Item,Player)
+ CloseItemConversation(Item,Player)
+ OfferQuest(nil, Player, Quest)
+end
diff --git a/server/ItemScripts/TheRatQueenofVerminsSnye_Complete.lua b/server/ItemScripts/TheRatQueenofVerminsSnye_Complete.lua
new file mode 100755
index 000000000..54b3fb53f
--- /dev/null
+++ b/server/ItemScripts/TheRatQueenofVerminsSnye_Complete.lua
@@ -0,0 +1,96 @@
+--[[
+ Script Name : ItemScripts/TheRatQueenofVerminsSnye_Complete.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 03:09:31
+ Script Purpose :
+ :
+--]]
+function examined(Item, Player)
+Intro(Item,Player)
+end
+
+function Intro(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry Two","Page2")
+ AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "\"My Life,\" by Ayamia the Unfortunate, together with \"An Examination of the Rat Queen,\" by the Scholars' Institute for Change, a non-profit organization. Quotations are liberally taken from Ayamia's own volume, interspersed with logical explanations where necessary.")
+end
+
+function Page1(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Entry Two","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter One -- How I Came to Live in the Vermin's Snye.\" I've heard what some people say about me, and let me tell you straight away that it is not true. My husband abandoned me and I had no choice to but to find a place to live with my children. Our landlord, wretched human scum, turned us onto the streets! I am not as young as I once was, but I am resourceful. By living below, my children and I would be out of the elements. We could find a cozy place to call our own.")
+end
+
+function Page2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Three","Page3")
+AddConversationOption(conversation, "Turn back to previous entry.","Page1")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter One.\" Clearly, the subject is in denial of her current status. Her husband is recorded as \"Lord Selien\" so obviously, the subject was a woman who lived in comfort. Her reference to being turned out of her home is correct, but only to the extent that her increasing madness led her to bring to her husband's home all manner of vile creatures, referring to them as her \"children.\" Upon her husband's death in battle, his family shunned the subject, which further isolated her, causing her to seek shelter elsewhere.")
+end
+
+function Page3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Four","Page4")
+AddConversationOption(conversation, "Turn back to previous entry.","Page2")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Two -- My Children.\" I am blessed with seven sons, all in the peak of their strength and youth. The eldest is Varion. He looks remarkably like his dear, departed father. I wished to name all my sons in such a way that their names began with the same letter, but my husband forbade me. He relented when I became ill at the birth of our youngest, Voland. I am so blessed by Tunare! Seven sons! My only regret is that I have no daughters, but I am not complaining, for my sons will carry on the name of their father's house.")
+end
+
+function Page4(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Five","Page5")
+AddConversationOption(conversation, "Turn back to previous entry.","Page3")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Two.\" Again, the subject tells some of the truth. She did indeed bear seven sons, the first and last of which are named as indicated. And, she did fall ill upon the birth of her final son, rendering her unable to have other children. The subject lay ill for nearly a year, during which time her sons were raised by her sister. When she regained her health, the subject had her sister arrested and executed for treason before she resumed her motherly duties.")
+end
+
+function Page5(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Six","Page6")
+AddConversationOption(conversation, "Turn back to previous entry.","Page4")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Three -- A Time of Hardship.\" Our move to the catacombs was not without its troubles, of course. My children needed me more than ever, clinging to me in the seemingly perpetual darkness beneath the city streets. We found that the crews who maintained the drains kept piles of fuel to use in the sconces set into the walls. I learned to borrow a bit of their fire to start my own. My eldest found the place I now call home by turning down a little-used side passage. The way is patrolled by roving gangs of thugs, but they left me alone. After all, I am guarded by my seven strong sons!")
+end
+
+function Page6(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Seven","Page7")
+AddConversationOption(conversation, "Turn back to previous entry.","Page5")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Three.\" Again, the subject shows her inability to separate fact from fiction. Her eldest son would not have been able to find her living area as he, together with all his brothers, perished at sea. This occurred during the Shattering, when many travellers perished. In this case, the subject had sent her sons on an errand, the nature of which has never been determined. It is generally believed that the magnitude of the loss, both personally and throughout Norrath, coupled with the knowledge that she sent them on this journey, unhinged her mind.")
+end
+
+function Page7(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Eight","Page8")
+AddConversationOption(conversation, "Turn back to previous entry.","Page6")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Four -- The Days Grow Long.\" We are comfortable here, for the most part. I find that the days are sometimes long, but one of the boys will entertain me. Asrey, my middle boy, will recite tales of the distant past. I believe he will grow up to be a bard! His voice is clear and true. He loves to stand in the chambers where the ceilings are highest and sing, listening to his own voice echo. He is a good lad, as are all my sons, and I am grateful for their company.")
+end
+
+function Page8(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Nine","Page9")
+AddConversationOption(conversation, "Turn back to previous entry.","Page7")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Four.\" The subject's thrid son, Asrey, did have a legendary voice, even in his youth. He was often called upon to sing before the Bayle family. At the conclusion of one of these events, Lady Larinna Bayle presented him with an engraved flute. The flute was lost at sea with Asrey and his brothers. It is interesting to note that the subject retains excellent memories of the details of her children's lives, but has blocked out the single largest event that befell them -- their own deaths.")
+end
+
+function Page9(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Entry Ten","Page8")
+AddConversationOption(conversation, "Turn back to previous entry.","Page8")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Chapter Five -- A New Beginning.\" I've given up some of the fancy work I used to do before. Now that I must scrape by, I can no longer spend time weaving lace or painting miniatures. I have painted several portraits of my sons, however, that I am quite proud of. They are endlessly fascinating to me. I know it is sometimes difficult for them to live in this place, yet they do not complain. When they wander too far, I miss them terribly. Is that so wrong for a mother? After all, nothing is stronger than a mother\'s love.")
+end
+
+function Page10(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "Turn back to previous entry.","Page9")
+AddConversationOption(conversation, "Close the book.","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "\"Analysis of Chapter Five.\" We were unable to determine where the subject's portraits have gone, if indeed she painted any at all. There is no record of her having been interested in miniature painting prior to her exile to the Vermin's Snye. Some of the lace she created was, however, on display at the Museum of Fine Arts until it was stolen by vandals that tied the bits to some of the rats the subject called \"her children\" before setting them afire. The subject became agitated and defended the rats, thus earning her title of \"Rat Queen.\"")
+end
+
diff --git a/server/ItemScripts/TheScaleYardcitizenshiptask.lua b/server/ItemScripts/TheScaleYardcitizenshiptask.lua
new file mode 100755
index 000000000..8c92eb9b1
--- /dev/null
+++ b/server/ItemScripts/TheScaleYardcitizenshiptask.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ItemScripts/TheScaleYardcitizenshiptask.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 03:06:48
+ Script Purpose :
+ :
+--]]
+
+function examined(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog2")
+StartDialogConversation(conversation, 2, Item, Player, "By order of the Overlord, all residents wishing to become citizens of the city must complete a trial to prove themselves.")
+
+end
+
+
+function Dialog2(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read about where tokens are found]","Dialog3")
+StartDialogConversation(conversation, 2, Item, Player, "Tokens are scattered throughout the surrounding area. You must find five of these tokens to earn the right to speak to a city official.")
+end
+
+
+function Dialog3(Item, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "[read more]","Dialog4")
+
+StartDialogConversation(conversation, 2, Item, Player, "Each district has been assigned an area in which to hunt for their tokens. Only tokens from within that area will be accepted.")
+end
+
+function Dialog4(Item, Player)
+conversation = CreateConversation()
+if GetLevel(Player)<6 then
+ AddConversationOption(conversation, "[I need more experience to pursue Citizenship]","CloseItemConversation")
+elseif not HasQuest(Player,5869) and not HasCompletedQuest(Player,5869)then
+AddConversationOption(conversation, "[write this in your quest journal]","StartQuest")
+end
+if HasQuest(Player,5869) or HasCompletedQuest(Player,5869) then
+AddConversationOption(conversation, "[continue]","StartQuest")
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Scale Yard residents must gather five tokens from the Thieves' Way.")
+end
+
+function StartQuest(Item,Player)
+conversation = CreateConversation()
+if not HasQuest(Player,5869) and not HasCompletedQuest(Player,5869)then
+ OfferQuest(nil,Player,5869)
+end
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "Use the citizenship sign to report to Abbetor T'avi once you complete your task.")
+end
diff --git a/server/ItemScripts/VoleensSweetbread.lua b/server/ItemScripts/VoleensSweetbread.lua
new file mode 100755
index 000000000..f82fe7b9a
--- /dev/null
+++ b/server/ItemScripts/VoleensSweetbread.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : ItemScripts/VoleensSweetbread.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.28 03:12:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5010)
+ Regenz = 10.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Health Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/WelcometoQeynosCitizen.lua b/server/ItemScripts/WelcometoQeynosCitizen.lua
index eb660588a..3d438c9f4 100755
--- a/server/ItemScripts/WelcometoQeynosCitizen.lua
+++ b/server/ItemScripts/WelcometoQeynosCitizen.lua
@@ -10,14 +10,14 @@ function examined(Item, Player)
conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page1")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "Welcome to Qeynos! As a new citizen of our city, there are probably hundreds of questions you still wish to have answered. This book is meant to assist you in finding activities which will interest and inspire you. Naturally, such a small book cannot possibly explain all you will need to know. Let it serve as a brief guide to the richness that you will experience throughout Norrath. Your citizenship is not affected if you discard this book without accepting the tasks. If you work on these tasks, you must keep this book until you finish them all.")
+StartDialogConversation(conversation, 2, Item, Player, "Welcome to Qeynos!\n\nAs a new citizen of our city, there are probably hundreds of questions you still wish to have answered. This book is meant to assist you in finding activities which will interest and inspire you. Naturally, such a small book cannot possibly explain all you will need to know. Let it serve as a brief guide to the richness that you will experience throughout Norrath.\n\nYour citizenship is not affected if you discard this book without accepting the tasks.\n\nIf you work on these tasks, you must keep this book until you finish them all.")
end
function Page1(Item, Player)
conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page2")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "Collecting stones and shards can be a very rewarding hobby. You can collect items as you travel, examining them to determine whether they will be worthwhile examples to keep. Gathering little items can be addicting as well! Be sure to look up now and again to admire the beauty of Norrath.")
+StartDialogConversation(conversation, 2, Item, Player, "Collecting stones and shards can be a very rewarding hobby.\n\nYou can collect items as you travel, examining them to determine whether they will be worthwhile examples to keep. Gathering little items can be addicting as well! Be sure to look up now and again to admire the beauty of Norrath.")
end
function Page2(Item, Player)
@@ -33,7 +33,7 @@ conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page4")
AddConversationOption(conversation, "Previous Page","Page2")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "The lands have changed much since the ancient days, and yet there are so many things that remain to remind us of our heritage. No doubt you have seen some of these precious memorials preserved in some of the villages, such as the Spirit of Faydark park in the Willow Wood. Please take a moment to remember the fallen by visiting the Claymore Plaza in North Qeynos.")
+StartDialogConversation(conversation, 2, Item, Player, "The lands have changed much since the ancient days, and yet there are so many things that remain to remind us of our heritage.\n\nNo doubt you have seen some of these precious memorials preserved in some of the villages, such as the Spirit of Faydark park in the Willow Wood. Please take a moment to remember the fallen by visiting the Claymore Plaza in North Qeynos.")
end
function Page4(Item, Player)
@@ -49,7 +49,7 @@ conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page6")
AddConversationOption(conversation, "Previous Page","Page4")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "Reading is a great way to learn more about the heritage of the land, the history of its inhabitants and the beliefs of those who are a part of Norrath. Visit Sage Indis Surion in South Qeynos to purchase some of his fascinating tomes. Though some are missing a page or two, the Sage has made notations in each volume, indicating where additional pages might be located.")
+StartDialogConversation(conversation, 2, Item, Player, "Reading is a great way to learn more about the heritage of the land, the history of its inhabitants and the beliefs of those who are a part of Norrath.\n\nVisit Sage Indis Surion in South Qeynos to purchase some of his fascinating tomes. Though some are missing a page or two, the Sage has made notations in each volume, indicating where additional pages might be located.")
end
function Page6(Item, Player)
@@ -57,7 +57,7 @@ conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page7")
AddConversationOption(conversation, "Previous Page","Page5")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "The Sage sells \"The Story of the Rat Queen,\" which is part autobiographical and part analysis of the poor woman who lives in the Vermin's Snye. It is said to be among Antonia Bayle's favorites and is an interesting read. Additionally, one can find books scattered throughout the world that are excellent sources of information. You can also gain new skills by completing any of the Mastery tomes available.")
+StartDialogConversation(conversation, 2, Item, Player, "The Sage sells \"The Story of the Rat Queen,\" which is part autobiographical and part analysis of the poor woman who lives in the Vermin's Snye. It is said to be among Antonia Bayle's favorites and is an interesting read.\n\nAdditionally, one can find books scattered throughout the world that are excellent sources of information. You can also gain new skills by completing any of the Mastery tomes available.")
end
function Page7(Item, Player)
@@ -65,7 +65,7 @@ conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page8")
AddConversationOption(conversation, "Previous Page","Page6")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "As you explore Norrath, you will occasionally find unsual objects. Sometimes, they are on creatures in the wilds. Sometimes you will notice something odd in the landscape and pause to take a closer look. In either case, let curiosity be your guide as many great discoveries have been made serendipitously. ")
+StartDialogConversation(conversation, 2, Item, Player, "As you explore Norrath, you will occasionally find unsual objects.\n\nSometimes, they are on creatures in the wilds. Sometimes you will notice something odd in the landscape and pause to take a closer look. In either case, let curiosity be your guide as many great discoveries have been made serendipitously. ")
end
function Page8(Item, Player)
@@ -73,32 +73,34 @@ conversation = CreateConversation()
AddConversationOption(conversation, "Next Page","Page9")
AddConversationOption(conversation, "Previous Page","Page7")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "While Qeynos is now your home, you will likely travel beyond the city limits many times in your life. As you travel, you will doubtless encounter folks who are trying to rebuild their lives as well as those whose needs are more commercial. These goals are not mutually exclusive, as strong enterprise can mean work for the displaced. Please feel free to assist representatives of the Far Seas Trading Company as they are a large local employer.")
+StartDialogConversation(conversation, 2, Item, Player, "While Qeynos is now your home, you will likely travel beyond the city limits many times in your life.\n\nAs you travel, you will doubtless encounter folks who are trying to rebuild their lives as well as those whose needs are more commercial. These goals are not mutually exclusive, as strong enterprise can mean work for the displaced. Please feel free to assist representatives of the Far Seas Trading Company as they are a large local employer.")
end
function Page9(Item, Player)
conversation = CreateConversation()
-AddConversationOption(conversation, "Next Page [WORK IN PROGRESS]","")
+AddConversationOption(conversation, "Next Page","Page10")
AddConversationOption(conversation, "Previous Page","Page8")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "Qeynos is proud of its diversity. Our reasons to move here are varied, but we must never forget our heritage. Rumors surface that items important to the history of Norrath are found throughout the world. You could always check with Hwal Rucksif inside the Keep of the Ardent Needle in Antonica for updates as he seems to get a fair amount of foot traffic.")
+StartDialogConversation(conversation, 2, Item, Player, "Qeynos is proud of its diversity.\n\nOur reasons to move here are varied, but we must never forget our heritage. Rumors surface that items important to the history of Norrath are found throughout the world.\n\nYou could always check with Hwal Rucksif inside the Keep of the Ardent Needle in Antonica for updates as he seems to get a fair amount of foot traffic.")
end
function Page10(Item, Player)
-if not HasQuest(Player,5766) and not HasCompletedQuest(Player,5766)then
- OfferQuest(Item,Player,5766)
+if CanReceiveQuest(Player,5766) then
+ OfferQuest(nil,Player,5766)
elseif GetQuestStep(Player,5766) ==8 then
AddConversationOption(conversation, "Next Page","Page11")
end
+conversation = CreateConversation()
AddConversationOption(conversation, "Previous Page","Page9")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "Training in your chosen life's path enables you to help others to the best of your abilities by giving you a focus. Fighters should speak with Master-at-Arms Dagorel in South Qeynos. Mages, you will learn much with Magister Niksel, also in South Qeynos. Priests should seek the counsel of Hierophant Aldalad in North Qeynos. Scouts, seek Vemerik the Counselor in Qeynos North. Train hard, act wisely and help your neighbors.")
+StartDialogConversation(conversation, 2, Item, Player, "Training in your chosen life's path enables you to help others to the best of your abilities by giving you a focus.\n\nFighters should speak with Master-at-Arms Dagorel in South Qeynos.\n\nMages, you will learn much with Magister Niksel, also in South Qeynos.\n\nPriests should seek the counsel of Hierophant Aldalad in North Qeynos.\n\nScouts, seek Vemerik the Counselor in Qeynos North.\n\nTrain hard, act wisely and help your neighbors.")
end
function Page11(Item, Player)
SetStepComplete(Player,5766,8)
+conversation = CreateConversation()
AddConversationOption(conversation, "Previous Page","Page10")
AddConversationOption(conversation, "Close the book.","CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "Though we have come through some dark times, we cannot dwell upon the past. In the Age of Destiny, every day is a gift and how we use that gift determines our personal destiny. Compassion, honor and loyalty are ever the standard by which we should live our lives, no matter what challenges may come.")
+StartDialogConversation(conversation, 2, Item, Player, "Though we have come through some dark times, we cannot dwell upon the past.\n\nIn the Age of Destiny, every day is a gift and how we use that gift determines our personal destiny.\n\nCompassion, honor and loyalty are ever the standard by which we should live our lives, no matter what challenges may come.")
end
diff --git a/server/ItemScripts/WillowWoodcitizenshiptask.lua b/server/ItemScripts/WillowWoodcitizenshiptask.lua
index 4058d7a36..37d35f2f1 100755
--- a/server/ItemScripts/WillowWoodcitizenshiptask.lua
+++ b/server/ItemScripts/WillowWoodcitizenshiptask.lua
@@ -47,6 +47,6 @@ conversation = CreateConversation()
if not HasQuest(Player,5723) and not HasCompletedQuest(Player,5723)then
OfferQuest(nil,Player,5723)
end
-AddConversationOption(conversation, "[put the note]","CloseItemConversation")
+AddConversationOption(conversation, "[put the note away]","CloseItemConversation")
StartDialogConversation(conversation, 2, Item, Player, "After you complete your task, report to Marshal Glorfel using the citizenship sign.")
end
\ No newline at end of file
diff --git a/server/ItemScripts/aRustySword.lua b/server/ItemScripts/aRustySword.lua
new file mode 100755
index 000000000..82a24b7cc
--- /dev/null
+++ b/server/ItemScripts/aRustySword.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : ItemScripts/aRustySword.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 07:05:27
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5830
+
+function examined(Item, Player)
+if not HasQuest(Player, Quest) and not HasCompletedQuest(Player, Quest) then
+ Dialog1(Item,Player)
+elseif GetQuestStep(Player,Quest)==1 or GetQuestStep(Player,Quest)==2 then
+ Dialog2(Item,Player)
+elseif GetQuestStep(Player,Quest)==3 or GetQuestStep(Player,Quest)==4 then
+ Dialog3(Item,Player)
+elseif GetQuestStep(Player,Quest)==5 or GetQuestStep(Player,Quest)==6 then
+ Dialog4(Item,Player)
+elseif HasCompletedQuest(Player, Quest)then
+ Completed(Item,Player)
+end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Inspect the blade closely]", "Dialog2")
+ AddConversationOption(conversation, "[Put the rusty sword away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I've found a rusty blade that looks like it was once a very powerful sword. It may be possible to restore this sword back to its original condition.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ AddConversationOption(conversation, "[Mix the flour into a paste and apply it to the rust]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the rusty sword away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "As you continue to inspect the sword, you can see that it once had some carvings on both the hilt and the blade. Again, you detect some type of power coming from it. Maybe if you made a paste from some flour and water, you could try to scrub the rust off of the blade.")
+end
+
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==4 then
+ AddConversationOption(conversation, "[Repair the stars etched in the blade]", "Dialog4")
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+ end
+ AddConversationOption(conversation, "[Put the sword away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "You apply the paste to the blade, scouring it for quite a while. After a long time you manage to remove nearly all of the rust. This sword is actually rather elegant and you can now see that there were carvings of stars along the entirety of the sword. Perhaps if you had an etcher, you might be able to carve the stars back into the blade.")
+end
+
+function Dialog4(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==6 then
+ AddConversationOption(conversation, "I am victorious! Starwisp is renewed!", "QuestFinish")
+ end
+ if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+ end
+ AddConversationOption(conversation, "[Put Starwisp away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Looking at the sword, you can see each one of the stars you etched have a faint glow coming from them. It's as if each of the klicnicks you killed was transferred into the sword somehow. Another thought enters your head - Starwisp.")
+end
+--I've killed quite a number of klicniks in Antonica. I have a feeling my desire to do so came from the sword.
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+ end
+ if HasItem(Player,10331) then
+ RemoveItem(Player,10331,1)
+ end
+end
+
+function Completed(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Hold on to the blade as a keepsake]")
+ AddConversationOption(conversation, "[Get rid of the rusted junk.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "The rusted blade glows slightly in your hands. Your mind flashes a faint memory, a sword you've seen before.")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/aRustySymbolOfMarr.lua b/server/ItemScripts/aRustySymbolOfMarr.lua
index 84f43cd2a..abfe1ea8c 100755
--- a/server/ItemScripts/aRustySymbolOfMarr.lua
+++ b/server/ItemScripts/aRustySymbolOfMarr.lua
@@ -1,21 +1,36 @@
--[[
Script Name : ItemScripts/RustySymbolOfMarr.lua
Script Purpose : Offers quest "Rusty Symbol of Marr"
- Script Author : premierio015
- Script Date : 12.11.2020
+ Script Author : premierio015\\Dorbin
+ Script Date : 12.11.2020 \\ 11.14.2023
Script Notes :
--]]
-local quest = 584
function examined(Item, Player)
- if not HasQuest(Player, quest) and not HasCompletedQuest(Player, quest) then
- OfferQuest(nil, Player, quest)
-
- elseif HasItem(Player, 2555) and HasQuest(Player, quest) then
- RemoveItem(Player, 2555)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,RustySymbol) then
+ AddConversationOption(conversation, "Someone of faith might want this.","Offer")
+ end
+ AddConversationOption(conversation, "[Put the symbol away]")
+ StartDialogConversation(conversation, 2, Item, Player, "The metal medallion is very old and rusty but bears the symbol of Mithaniel Marr.")
end
- end
-
-
+
+
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,RustySymbol) then
+ OfferQuest(nil,Player,RustySymbol)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,2555) then
+ RemoveItem(Player,2555,1)
+ end
+end
diff --git a/server/ItemScripts/a_locked_chest.lua b/server/ItemScripts/a_locked_chest.lua
index f180f79c7..aa98b7325 100755
--- a/server/ItemScripts/a_locked_chest.lua
+++ b/server/ItemScripts/a_locked_chest.lua
@@ -1,21 +1,57 @@
--[[
Script Name : ItemScripts/a_locked_chest.lua
Script Purpose :
- Script Author : Ememjr
+ Script Author : Ememjr\\Dorbin
Script Date : 2019-10-07
Script Notes :
--]]
local quest = 480
+
+
function examined(Item, Player)
- if not HasQuest(Player, quest) and not HasCompletedQuest(Player, quest) then
- OfferQuest(nil, Player, quest)
+ if CanReceiveQuest(Player,quest) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the chest]")
+ AddConversationOption(conversation, "[Throw the chest away]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This locked chest has the same markings as one you've found before. It appears worthless to you.")
end
end
-function obtained(Item, Player)
-if HasItem(Player, 2115) then
-RemoveItem(Player, 2115)
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,quest) then
+ AddConversationOption(conversation, "[Read the parchment]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the chest away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The chest's lock appears broken beyond opening. A parchment is plastered to the side with the word \"BOUNTY\" in large letters at the top. Perhaps someone was trying to complete this bounty before returning the chest?")
end
- end
\ No newline at end of file
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,quest) then
+ AddConversationOption(conversation, "[Commit to the task]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the chest away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "\"A valuable chest was unlawfully taken by a band of Darkblade brigands. A generous reward will be provided to the one who returns this stolen property to Anrean Velvinna in the Beggar's Court.\"")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,quest) then
+ OfferQuest(nil,Player,quest)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,2115,1) then
+ RemoveItem(Player,2115)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/abixieeye.lua b/server/ItemScripts/abixieeye.lua
index c59d51fcb..1687b2ad4 100755
--- a/server/ItemScripts/abixieeye.lua
+++ b/server/ItemScripts/abixieeye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/abixieeye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:36
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendBixie = 5410
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
-OfferQuest(nil, Player, LoreAndLegendBixie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendBixie, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
+ OfferQuest(nil, Player, LoreAndLegendBixie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendBixie) and GetQuestStepProgress(Player, LoreAndLegendBixie, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendBixie, 4)
-RemoveItem(Player, 1219)
+if HasItem(Player,1219,1) then
+ SetStepComplete(Player, LoreAndLegendBixie, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1219)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/abixieleg.lua b/server/ItemScripts/abixieleg.lua
index 24d0ec49c..58241e5b8 100755
--- a/server/ItemScripts/abixieleg.lua
+++ b/server/ItemScripts/abixieleg.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/abixieleg.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:48
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendBixie = 5410
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
-OfferQuest(nil, Player, LoreAndLegendBixie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendBixie, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
+ OfferQuest(nil, Player, LoreAndLegendBixie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendBixie) and GetQuestStepProgress(Player, LoreAndLegendBixie, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendBixie, 5)
-RemoveItem(Player, 1220)
+if HasItem(Player,1220,1) then
+ SetStepComplete(Player, LoreAndLegendBixie, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1220)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/abixiestinger.lua b/server/ItemScripts/abixiestinger.lua
index 8f5be68bc..793fb74fb 100755
--- a/server/ItemScripts/abixiestinger.lua
+++ b/server/ItemScripts/abixiestinger.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/abixiestinger.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:22
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendBixie = 5410
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
-OfferQuest(nil, Player, LoreAndLegendBixie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendBixie, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
+ OfferQuest(nil, Player, LoreAndLegendBixie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendBixie) and GetQuestStepProgress(Player, LoreAndLegendBixie, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendBixie, 6)
-RemoveItem(Player, 1221)
+if HasItem(Player,1221,1) then
+ SetStepComplete(Player, LoreAndLegendBixie, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1221)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/abixiethorax.lua b/server/ItemScripts/abixiethorax.lua
index 19305020c..fe534ef47 100755
--- a/server/ItemScripts/abixiethorax.lua
+++ b/server/ItemScripts/abixiethorax.lua
@@ -9,21 +9,26 @@
local LoreAndLegendBixie = 5410
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
-OfferQuest(nil, Player, LoreAndLegendBixie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendBixie, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
+ OfferQuest(nil, Player, LoreAndLegendBixie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendBixie) and GetQuestStepProgress(Player, LoreAndLegendBixie, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendBixie, 7)
-RemoveItem(Player, 1222)
+if HasItem(Player,1222,1) then
+ SetStepComplete(Player, LoreAndLegendBixie, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1222)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/abixiewing.lua b/server/ItemScripts/abixiewing.lua
index 047c22dfa..37e517ff0 100755
--- a/server/ItemScripts/abixiewing.lua
+++ b/server/ItemScripts/abixiewing.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/abixiewing.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:49
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendBixie = 5410
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
-OfferQuest(nil, Player, LoreAndLegendBixie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendBixie, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendBixie) and not HasCompletedQuest(Player, LoreAndLegendBixie) then
+ OfferQuest(nil, Player, LoreAndLegendBixie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendBixie) and GetQuestStepProgress(Player, LoreAndLegendBixie, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the bixie. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendBixie, 8)
-RemoveItem(Player, 1223)
+if HasItem(Player,1223,1) then
+ SetStepComplete(Player, LoreAndLegendBixie, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1223)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/abrasskey.lua b/server/ItemScripts/abrasskey.lua
new file mode 100755
index 000000000..067ff5908
--- /dev/null
+++ b/server/ItemScripts/abrasskey.lua
@@ -0,0 +1,7 @@
+--[[
+ Script Name : ItemScripts/abrasskey.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.11 11:05:57
+ Script Purpose :
+ :
+--]]
diff --git a/server/ItemScripts/abrokenmusicbox.lua b/server/ItemScripts/abrokenmusicbox.lua
index 8388c30c5..556cf8179 100755
--- a/server/ItemScripts/abrokenmusicbox.lua
+++ b/server/ItemScripts/abrokenmusicbox.lua
@@ -8,8 +8,49 @@
local RewardForAMissingMusicBox = 5261
+
function examined(Item, Player)
-if not HasQuest(Player, RewardForAMissingMusicBox) and not HasCompletedQuest(Player, RewardForAMissingMusicBox) then
-OfferQuest(nil, Player, RewardForAMissingMusicBox)
+ if CanReceiveQuest(Player,RewardForAMissingMusicBox) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the musicbox]")
+ AddConversationOption(conversation, "[Destroy the musicbox]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This floral designed music box is broken like one you found before. Perhaps it is the same one? Oh well.")
+ end
end
- end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,RewardForAMissingMusicBox) then
+ AddConversationOption(conversation, "[Open the musicbox]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the box away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The music box is decorated with gold trim and a floral design is carved into the lid. The lid is unlocked.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,RewardForAMissingMusicBox) then
+ AddConversationOption(conversation, "[Write the name in your journal]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the music box away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Inside the music box is a small engraving of the name \"Lucilla Quietus\" on a little gold plate. You also discover that the music box no longer plays music.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,RewardForAMissingMusicBox) then
+ OfferQuest(nil,Player,RewardForAMissingMusicBox)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,1286,1) then
+ RemoveItem(Player,1286)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/acarvedorcaxe.lua b/server/ItemScripts/acarvedorcaxe.lua
index 3c8bc93c3..68a691c90 100755
--- a/server/ItemScripts/acarvedorcaxe.lua
+++ b/server/ItemScripts/acarvedorcaxe.lua
@@ -8,8 +8,53 @@
local AnAxesRevenge = 5262
+
function examined(Item, Player)
-if not HasQuest(Player, AnAxesRevenge) and not HasCompletedQuest(Player, AnAxesRevenge) then
-OfferQuest(nil, Player, AnAxesRevenge)
+ if CanReceiveQuest(Player,AnAxesRevenge) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the axe]")
+ AddConversationOption(conversation, "[Toss the axe to the ground]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This axe is familiar to you, but the orcish runes do not respond to your touch.")
+ end
end
- end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,AnAxesRevenge) then
+ AddConversationOption(conversation, "[Run your fingers over the markings]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the axe away]", "CloseItemConversation")
+if HasLanguage(Player, 17) then
+ StartDialogConversation(conversation, 2, Item, Player, "This axe has orcish written across its surface. The markings look recent. You read \n\"Betrayed!\nThier blood will be mine.\n Revenge. Cleave. Restore Honor.\"")
+else
+ StartDialogConversation(conversation, 2, Item, Player, "This orcish looking axe has scratch marks along its face. The markings look recent.")
+end
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,AnAxesRevenge) then
+ AddConversationOption(conversation, "My rage calls for orc blood!", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the axe away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Images flood your mind of an orc cast out of its clan, betrayed by those trusted for the sake of power. A sense of rage and injustice envelopes your thoughts.\n\nOne word drapes over all other thoughts,\"Revenge\".")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,AnAxesRevenge) then
+ OfferQuest(nil,Player,AnAxesRevenge)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,1335) then
+ RemoveItem(Player,1335,1)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/acentaurear.lua b/server/ItemScripts/acentaurear.lua
index f7c0d63ba..79d3d7140 100755
--- a/server/ItemScripts/acentaurear.lua
+++ b/server/ItemScripts/acentaurear.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/acentaurear.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 07:12:04
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendCentaur = 5399
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
-OfferQuest(nil, Player, LoreAndLegendCentaur)
-elseif not QuestStepIsComplete(Player, LoreAndLegendCentaur, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
+ OfferQuest(nil, Player, LoreAndLegendCentaur)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendCentaur) and GetQuestStepProgress(Player, LoreAndLegendCentaur, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendCentaur, 7)
-RemoveItem(Player, 1338)
+if HasItem(Player,1338,1) then
+ SetStepComplete(Player, LoreAndLegendCentaur, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1338)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/acentaureye.lua b/server/ItemScripts/acentaureye.lua
index 165330a35..0e232ec57 100755
--- a/server/ItemScripts/acentaureye.lua
+++ b/server/ItemScripts/acentaureye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/acentaureye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 07:12:53
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendCentaur = 5399
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
-OfferQuest(nil, Player, LoreAndLegendCentaur)
-elseif not QuestStepIsComplete(Player, LoreAndLegendCentaur, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
+ OfferQuest(nil, Player, LoreAndLegendCentaur)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendCentaur) and GetQuestStepProgress(Player, LoreAndLegendCentaur, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendCentaur, 5)
-RemoveItem(Player, 1339)
+if HasItem(Player,1339,1) then
+ SetStepComplete(Player, LoreAndLegendCentaur, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1339)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/acentaurhand.lua b/server/ItemScripts/acentaurhand.lua
index 0ef8dacd0..aebc34800 100755
--- a/server/ItemScripts/acentaurhand.lua
+++ b/server/ItemScripts/acentaurhand.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/acentaurhand.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 07:12:32
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendCentaur = 5399
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
-OfferQuest(nil, Player, LoreAndLegendCentaur)
-elseif not QuestStepIsComplete(Player, LoreAndLegendCentaur, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
+ OfferQuest(nil, Player, LoreAndLegendCentaur)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendCentaur) and GetQuestStepProgress(Player, LoreAndLegendCentaur, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendCentaur, 6)
-RemoveItem(Player, 1340)
+if HasItem(Player,1340,1) then
+ SetStepComplete(Player, LoreAndLegendCentaur, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1340)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/acentaurhoof.lua b/server/ItemScripts/acentaurhoof.lua
index 2e6059f1b..273df6e0b 100755
--- a/server/ItemScripts/acentaurhoof.lua
+++ b/server/ItemScripts/acentaurhoof.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/acentaurhoof.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 07:12:15
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendCentaur = 5399
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
-OfferQuest(nil, Player, LoreAndLegendCentaur)
-elseif not QuestStepIsComplete(Player, LoreAndLegendCentaur, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
+ OfferQuest(nil, Player, LoreAndLegendCentaur)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendCentaur) and GetQuestStepProgress(Player, LoreAndLegendCentaur, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendCentaur, 4)
-RemoveItem(Player, 1341)
+if HasItem(Player,1341,1) then
+ SetStepComplete(Player, LoreAndLegendCentaur, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1341)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/acentaurmane.lua b/server/ItemScripts/acentaurmane.lua
index e00073b75..fdfd16d1a 100755
--- a/server/ItemScripts/acentaurmane.lua
+++ b/server/ItemScripts/acentaurmane.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/acentaurmane.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 07:12:46
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendCentaur = 5399
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
-OfferQuest(nil, Player, LoreAndLegendCentaur)
-elseif not QuestStepIsComplete(Player, LoreAndLegendCentaur, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendCentaur) and not HasCompletedQuest(Player, LoreAndLegendCentaur) then
+ OfferQuest(nil, Player, LoreAndLegendCentaur)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendCentaur) and GetQuestStepProgress(Player, LoreAndLegendCentaur, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the centaur. Do you wish to study it?")
end
+end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendCentaur, 8)
-RemoveItem(Player, 1342)
+if HasItem(Player,1342,1) then
+ SetStepComplete(Player, LoreAndLegendCentaur, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1342)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/achainedbundle.lua b/server/ItemScripts/achainedbundle.lua
new file mode 100755
index 000000000..11de6c74e
--- /dev/null
+++ b/server/ItemScripts/achainedbundle.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : ItemScripts/achainedbundle.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 06:05:51
+ Script Purpose :
+ :
+--]]
+local Quest = 5837
+
+function examined(Item, Player)
+if not HasQuest(Player, Quest) and not HasCompletedQuest(Player, Quest) then
+ Dialog1(Item,Player)
+elseif GetQuestStep(Player,Quest)==1 or GetQuestStep(Player,Quest)==2 then
+ Dialog2(Item,Player)
+elseif GetQuestStep(Player,Quest)==3 or GetQuestStep(Player,Quest)==4 then
+ Dialog3(Item,Player)
+elseif GetQuestStep(Player,Quest)==5 or GetQuestStep(Player,Quest)==6 then
+ Dialog4(Item,Player)
+elseif HasCompletedQuest(Player, Quest)then
+ Completed(Item,Player)
+end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Examine the bundle more closely.]", "Dialog2")
+ AddConversationOption(conversation, "[Put the chained bundle away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "I've found a very odd bundle of chains and leather straps. I'm certain there's something in the center of this bundle, but I can't make out what it is.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ AddConversationOption(conversation, "[Inspect what caused the noise from the bundle.]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the chained bundle away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This chained bundle is exceptionally heavy and you're not sure what it really is. There seem to be hundreds of chained links that are wrapped around something. To make matters worse there are a bunch of straps that are bound so tight they can't be undone. Finally there is a huge lock binding all of it together.")
+end
+
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==4 then
+ AddConversationOption(conversation, "[Use the crab claws to cut the leather straps]", "Dialog4")
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+ end
+ AddConversationOption(conversation, "[Put the chained bundle away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "You look at bundle and can see that the lock has snapped open. Something about getting close to the crypt seems to have destroyed the lock. Unfortunately, the straps still old tight. If you're going to find out what's hidden inside this bundle, you're going to have to find a way to cut through these straps.")
+end
+
+function Dialog4(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==6 then
+ AddConversationOption(conversation, "[Use the arcane saw to cut the chains]", "Dialog5")
+ end
+ if GetQuestStep(Player,Quest)==4 then
+ SetStepComplete(Player,Quest,4)
+ end
+ AddConversationOption(conversation, "[Put the chained bundle away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "You take the sharp ends of the crab claws and start cutting though the leather straps. You wind up going through each of the claws you collected. Unfortunately, the chain links are wrapped so tight that the now loosened straps have done you no good. You're going to need to find a way to cut through all of the chains. Perhaps the witches of the hills might have something to help you.")
+end
+
+function Dialog5(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Liberated at last!", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "You used the arcane saw on the bundle of chain links and are surprised at how easy it cuts through the metal. As you approach the center, nearly all of the chains have been fully cut away. Once you have cut through all of the chains, the saw disappears from your hands. Finally, you see what all the effort has brought you - hidden beneath all those oppressing chains is the fabled maul, Freedom.")
+ end
+--
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if GetQuestStep(Player,Quest)==6 then
+ SetStepComplete(Player,Quest,6)
+ end
+ if HasItem(Player,1343) then
+ RemoveItem(Player,1343,1)
+ end
+end
+
+function Completed(Item,Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Hold on to the chained bundle.]")
+ AddConversationOption(conversation, "[Get rid of the budnle. You have no further use of it.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "The bound bundle feels familiar in your hands, but lighter. Whatever was inside it is gone.")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/acorruptedzombiebrain.lua b/server/ItemScripts/acorruptedzombiebrain.lua
index 91cb53b73..27c799f6a 100755
--- a/server/ItemScripts/acorruptedzombiebrain.lua
+++ b/server/ItemScripts/acorruptedzombiebrain.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/acorruptedzombiebrain.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 06:12:16
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendZombie = 5397
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
-OfferQuest(nil, Player, LoreAndLegendZombie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendZombie, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
+ OfferQuest(nil, Player, LoreAndLegendZombie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendZombie) and GetQuestStepProgress(Player, LoreAndLegendZombie, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendZombie, 8)
-RemoveItem(Player, 1434)
+if HasItem(Player,1434,1) then
+ SetStepComplete(Player, LoreAndLegendZombie, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1434)
+end
end
diff --git a/server/ItemScripts/adecomposingzombieorgan.lua b/server/ItemScripts/adecomposingzombieorgan.lua
index 0b49a3bf8..5202959b7 100755
--- a/server/ItemScripts/adecomposingzombieorgan.lua
+++ b/server/ItemScripts/adecomposingzombieorgan.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/adecomposingzombieorgan.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 06:12:28
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendZombie = 5397
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
-OfferQuest(nil, Player, LoreAndLegendZombie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendZombie, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
+ OfferQuest(nil, Player, LoreAndLegendZombie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendZombie) and GetQuestStepProgress(Player, LoreAndLegendZombie, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendZombie, 7)
-RemoveItem(Player, 1553)
+if HasItem(Player,1553,1) then
+ SetStepComplete(Player, LoreAndLegendZombie, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1553)
+end
end
diff --git a/server/ItemScripts/adirtygraverobbernote.lua b/server/ItemScripts/adirtygraverobbernote.lua
new file mode 100755
index 000000000..fe24da595
--- /dev/null
+++ b/server/ItemScripts/adirtygraverobbernote.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : ItemScripts/adirtygraverobbernote.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.14 01:11:25
+ Script Purpose :
+ :
+--]]
+
+local NatashaNote = 5927
+
+
+function examined(Item, Player)
+ if CanReceiveQuest(Player,NatashaNote) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the note]")
+ AddConversationOption(conversation, "[Toss the note to the away]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "You've seen this note before. It reads... \n\n\"We may have found a new burial site! Rumor is this may be the richest crypt yet! Gather at our usual spot tomorrow night. Do not let that rat Tarakh know about this or so help me I'll have your mangy tail dangling from my wall... Love, Natasha\"")
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,NatashaNote) then
+ AddConversationOption(conversation, "[Read the note]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the note away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This filthy bit of crumpled paper has the stench of death on it. The words are still legible.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,NatashaNote) then
+ AddConversationOption(conversation, "[Write \"Tarakh\" in your journal]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the note away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "\"We may have found a new burial site! Rumor is this may be the richest crypt yet! Gather at our usual spot tomorrow night. Do not let that rat Tarakh know about this or so help me I'll have your mangy tail dangling from my wall... Love, Natasha\"")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,NatashaNote) then
+ OfferQuest(nil,Player,NatashaNote)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,1568,1) then
+ RemoveItem(Player,1568)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/afairydustjar.lua b/server/ItemScripts/afairydustjar.lua
index 3e24c83b9..c89e4473b 100755
--- a/server/ItemScripts/afairydustjar.lua
+++ b/server/ItemScripts/afairydustjar.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/afairydustjar.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:00
Script Purpose :
:
@@ -9,19 +9,24 @@
local LoreAndLegendFairy = 5403
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
-OfferQuest(nil, Player, LoreAndLegendFairy)
-elseif not QuestStepIsComplete(Player, LoreAndLegendFairy, 8) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
+ OfferQuest(nil, Player, LoreAndLegendFairy)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+if HasQuest(Player, LoreAndLegendFairy) and GetQuestStepProgress(Player, LoreAndLegendFairy, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+ end
end
- end
-
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendFairy, 8)
-RemoveItem(Player, 1636)
+if HasItem(Player,1636,1) then
+ SetStepComplete(Player, LoreAndLegendFairy, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1636)
+end
end
diff --git a/server/ItemScripts/afairyear.lua b/server/ItemScripts/afairyear.lua
index 93b2baa5d..382d4907c 100755
--- a/server/ItemScripts/afairyear.lua
+++ b/server/ItemScripts/afairyear.lua
@@ -9,19 +9,25 @@
local LoreAndLegendFairy = 5403
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
-OfferQuest(nil, Player, LoreAndLegendFairy)
-elseif not QuestStepIsComplete(Player, LoreAndLegendFairy, 4) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
+ OfferQuest(nil, Player, LoreAndLegendFairy)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+if HasQuest(Player, LoreAndLegendFairy) and GetQuestStepProgress(Player, LoreAndLegendFairy, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendFairy, 4)
-RemoveItem(Player, 1637)
+if HasItem(Player,1638,1) then
+ SetStepComplete(Player, LoreAndLegendFairy, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1637)
+end
end
diff --git a/server/ItemScripts/afairyessence.lua b/server/ItemScripts/afairyessence.lua
index 4de7c2a74..8247b65d4 100755
--- a/server/ItemScripts/afairyessence.lua
+++ b/server/ItemScripts/afairyessence.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/afairyessence.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:24
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendFairy = 5403
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
-OfferQuest(nil, Player, LoreAndLegendFairy)
-elseif not QuestStepIsComplete(Player, LoreAndLegendFairy, 7) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
+ OfferQuest(nil, Player, LoreAndLegendFairy)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+if HasQuest(Player, LoreAndLegendFairy) and GetQuestStepProgress(Player, LoreAndLegendFairy, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendFairy, 7)
-RemoveItem(Player, 1638)
+if HasItem(Player,1638,1) then
+ SetStepComplete(Player, LoreAndLegendFairy, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1638)
+end
end
diff --git a/server/ItemScripts/afairyeye.lua b/server/ItemScripts/afairyeye.lua
index 01d6f8ae3..91290c3b3 100755
--- a/server/ItemScripts/afairyeye.lua
+++ b/server/ItemScripts/afairyeye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/afairyeye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:52
Script Purpose :
:
@@ -9,21 +9,25 @@
local LoreAndLegendFairy = 5403
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
-OfferQuest(nil, Player, LoreAndLegendFairy)
-elseif not QuestStepIsComplete(Player, LoreAndLegendFairy, 5) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
+ OfferQuest(nil, Player, LoreAndLegendFairy)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+if HasQuest(Player, LoreAndLegendFairy) and GetQuestStepProgress(Player, LoreAndLegendFairy, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+ end
end
- end
-
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendFairy, 5)
-RemoveItem(Player, 1639)
+if HasItem(Player,1639,1) then
+ SetStepComplete(Player, LoreAndLegendFairy, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1639)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/afairywing.lua b/server/ItemScripts/afairywing.lua
index 96cb4de2f..a3b027269 100755
--- a/server/ItemScripts/afairywing.lua
+++ b/server/ItemScripts/afairywing.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/afairywing.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:47
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendFairy = 5403
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
-OfferQuest(nil, Player, LoreAndLegendFairy)
-elseif not QuestStepIsComplete(Player, LoreAndLegendFairy, 6) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendFairy) and not HasCompletedQuest(Player, LoreAndLegendFairy) then
+ OfferQuest(nil, Player, LoreAndLegendFairy)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+if HasQuest(Player, LoreAndLegendFairy) and GetQuestStepProgress(Player, LoreAndLegendFairy, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the fairy. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendFairy, 6)
-RemoveItem(Player, 1640)
+if HasItem(Player,1640,1) then
+ SetStepComplete(Player, LoreAndLegendFairy, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1640)
+end
end
diff --git a/server/ItemScripts/afancyfirework.lua b/server/ItemScripts/afancyfirework.lua
new file mode 100755
index 000000000..581a9ced9
--- /dev/null
+++ b/server/ItemScripts/afancyfirework.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : ItemScripts/afancyfirework.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.09 10:12:51
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Applies Fancy Firework when Activated. Lasts for 3.0 seconds.
+ * Launches a firework when used.
+
+End Item Effects--]]
+
+function examined(Item, Player)
+
+end
+
+function used(Item, Player)
+CastSpell(Player, 2550447, 1)
+
+end
diff --git a/server/ItemScripts/afleshcoveredzombiebone.lua b/server/ItemScripts/afleshcoveredzombiebone.lua
index 6ae2bbbbe..94643c112 100755
--- a/server/ItemScripts/afleshcoveredzombiebone.lua
+++ b/server/ItemScripts/afleshcoveredzombiebone.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/afleshcoveredzombiebone.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 06:12:20
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendZombie = 5397
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
-OfferQuest(nil, Player, LoreAndLegendZombie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendZombie, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
+ OfferQuest(nil, Player, LoreAndLegendZombie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendZombie) and GetQuestStepProgress(Player, LoreAndLegendZombie, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendZombie, 5)
-RemoveItem(Player, 1707)
+if HasItem(Player,1707,1) then
+ SetStepComplete(Player, LoreAndLegendZombie, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1707)
+end
end
diff --git a/server/ItemScripts/aghostemotionresonance.lua b/server/ItemScripts/aghostemotionresonance.lua
index c22789c7d..8a1891206 100755
--- a/server/ItemScripts/aghostemotionresonance.lua
+++ b/server/ItemScripts/aghostemotionresonance.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/aghostemotionresonance.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:55
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGhost = 5404
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
-OfferQuest(nil, Player, LoreAndLegendGhost)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGhost, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
+ OfferQuest(nil, Player, LoreAndLegendGhost)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGhost) and GetQuestStepProgress(Player, LoreAndLegendGhost, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGhost, 8)
-RemoveItem(Player, 1763)
+if HasItem(Player,1763,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1763)
+end
end
diff --git a/server/ItemScripts/aghostetherealstrand.lua b/server/ItemScripts/aghostetherealstrand.lua
index 0ee4016e5..1e96127af 100755
--- a/server/ItemScripts/aghostetherealstrand.lua
+++ b/server/ItemScripts/aghostetherealstrand.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/aghostetherealstrand.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:46
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGhost = 5404
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
-OfferQuest(nil, Player, LoreAndLegendGhost)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGhost, 5) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
+ OfferQuest(nil, Player, LoreAndLegendGhost)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+if HasQuest(Player, LoreAndLegendGhost) and GetQuestStepProgress(Player, LoreAndLegendGhost, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGhost, 5)
-RemoveItem(Player, 1764)
+if HasItem(Player,1764,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1764)
+end
end
diff --git a/server/ItemScripts/aghostphantasmalecho.lua b/server/ItemScripts/aghostphantasmalecho.lua
index 6c7a020f1..5f075e9ab 100755
--- a/server/ItemScripts/aghostphantasmalecho.lua
+++ b/server/ItemScripts/aghostphantasmalecho.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/aghostphantasmalecho.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:31
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGhost = 5404
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
-OfferQuest(nil, Player, LoreAndLegendGhost)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGhost, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
+ OfferQuest(nil, Player, LoreAndLegendGhost)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGhost) and GetQuestStepProgress(Player, LoreAndLegendGhost, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGhost, 6)
-RemoveItem(Player, 1765)
+if HasItem(Player,1765,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1765)
+end
end
diff --git a/server/ItemScripts/aghostremnantmemory.lua b/server/ItemScripts/aghostremnantmemory.lua
index 324bb1a2d..9c6785ca7 100755
--- a/server/ItemScripts/aghostremnantmemory.lua
+++ b/server/ItemScripts/aghostremnantmemory.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/aghostremnantmemory.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:13
Script Purpose :
:
@@ -9,24 +9,30 @@
local LoreAndLegendGhost = 5404
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
-OfferQuest(nil, Player, LoreAndLegendGhost)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGhost, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
+ OfferQuest(nil, Player, LoreAndLegendGhost)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGhost) and GetQuestStepProgress(Player, LoreAndLegendGhost, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGhost, 7)
-RemoveItem(Player, 1766)
+if HasItem(Player,1766,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1766)
+end
end
function item_description(Item, Spawn)
return "You have already examined this item."
end
-nd
+
diff --git a/server/ItemScripts/aghostvileplasm.lua b/server/ItemScripts/aghostvileplasm.lua
index 600fceeb9..9abef249f 100755
--- a/server/ItemScripts/aghostvileplasm.lua
+++ b/server/ItemScripts/aghostvileplasm.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/aghostvileplasm.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:36
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGhost = 5404
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
-OfferQuest(nil, Player, LoreAndLegendGhost)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGhost, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGhost) and not HasCompletedQuest(Player, LoreAndLegendGhost) then
+ OfferQuest(nil, Player, LoreAndLegendGhost)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGhost) and GetQuestStepProgress(Player, LoreAndLegendGhost, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the ghost. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGhost, 4)
-RemoveItem(Player, 1767)
+if HasItem(Player,1767,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1767)
+end
end
diff --git a/server/ItemScripts/agiantear.lua b/server/ItemScripts/agiantear.lua
index f65274c78..bf5b49128 100755
--- a/server/ItemScripts/agiantear.lua
+++ b/server/ItemScripts/agiantear.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agiantear.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 08:12:53
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendGiant = 5400
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
-OfferQuest(nil, Player, LoreAndLegendGiant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGiant, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
+ OfferQuest(nil, Player, LoreAndLegendGiant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGiant) and GetQuestStepProgress(Player, LoreAndLegendGiant, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGiant, 8)
-RemoveItem(Player, 1770)
+if HasItem(Player,1770,1) then
+ SetStepComplete(Player, LoreAndLegendGiant, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1770)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agiantfinger.lua b/server/ItemScripts/agiantfinger.lua
index d38c4b66f..7896b4d80 100755
--- a/server/ItemScripts/agiantfinger.lua
+++ b/server/ItemScripts/agiantfinger.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agiantfinger.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 08:12:47
Script Purpose :
:
@@ -9,21 +9,27 @@
local LoreAndLegendGiant = 5400
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
-OfferQuest(nil, Player, LoreAndLegendGiant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGiant, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
+ OfferQuest(nil, Player, LoreAndLegendGiant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGiant) and GetQuestStepProgress(Player, LoreAndLegendGiant, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
- end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ end
+end
+
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGiant, 5)
-RemoveItem(Player, 1771)
+if HasItem(Player,1771,1) then
+ SetStepComplete(Player, LoreAndLegendGiant, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1771)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agianttoe.lua b/server/ItemScripts/agianttoe.lua
index 1f93976c0..26bf46dfa 100755
--- a/server/ItemScripts/agianttoe.lua
+++ b/server/ItemScripts/agianttoe.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agianttoe.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 08:12:28
Script Purpose :
:
@@ -9,21 +9,27 @@
local LoreAndLegendGiant = 5400
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
-OfferQuest(nil, Player, LoreAndLegendGiant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGiant, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
+ OfferQuest(nil, Player, LoreAndLegendGiant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGiant) and GetQuestStepProgress(Player, LoreAndLegendGiant, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
- end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ end
+end
+
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGiant, 4)
-RemoveItem(Player, 1773)
+if HasItem(Player,1773,1) then
+ SetStepComplete(Player, LoreAndLegendGiant, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1773)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agianttooth.lua b/server/ItemScripts/agianttooth.lua
index 514726fc8..0b6047121 100755
--- a/server/ItemScripts/agianttooth.lua
+++ b/server/ItemScripts/agianttooth.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agianttooth.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 08:12:20
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendGiant = 5400
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
-OfferQuest(nil, Player, LoreAndLegendGiant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGiant, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
+ OfferQuest(nil, Player, LoreAndLegendGiant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGiant) and GetQuestStepProgress(Player, LoreAndLegendGiant, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGiant, 6)
-RemoveItem(Player, 1774)
+if HasItem(Player,1774,1) then
+ SetStepComplete(Player, LoreAndLegendGiant, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1774)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agiantwhisker.lua b/server/ItemScripts/agiantwhisker.lua
index 7d840ea1b..338435c14 100755
--- a/server/ItemScripts/agiantwhisker.lua
+++ b/server/ItemScripts/agiantwhisker.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agiantwhisker.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 08:12:21
Script Purpose :
:
@@ -9,21 +9,27 @@
local LoreAndLegendGiant = 5400
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
-OfferQuest(nil, Player, LoreAndLegendGiant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGiant, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGiant) and not HasCompletedQuest(Player, LoreAndLegendGiant) then
+ OfferQuest(nil, Player, LoreAndLegendGiant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGiant) and GetQuestStepProgress(Player, LoreAndLegendGiant, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
- end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the giant. Do you wish to study it?")
+ end
+end
+
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGiant, 7)
-RemoveItem(Player, 1775)
+if HasItem(Player,1775,1) then
+ SetStepComplete(Player, LoreAndLegendGiant, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1775)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agnollear.lua b/server/ItemScripts/agnollear.lua
index 5a1153218..e1e588f0a 100755
--- a/server/ItemScripts/agnollear.lua
+++ b/server/ItemScripts/agnollear.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agnollear.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen\\Dorbin
Script Date : 2021.12.31 07:12:46
Script Purpose :
:
@@ -9,20 +9,25 @@
local LoreAndLegendGnoll = 5398
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
-OfferQuest(nil, Player, LoreAndLegendGnoll)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGnoll, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
+ OfferQuest(nil, Player, LoreAndLegendGnoll)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGnoll) and GetQuestStepProgress(Player, LoreAndLegendGnoll, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
end
end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGnoll, 8)
-RemoveItem(Player, 1817)
-CloseItemConversation()
+if HasItem(Player,1817,1) then
+ SetStepComplete(Player, LoreAndLegendGnoll, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1817)
+end
end
diff --git a/server/ItemScripts/agnolleye.lua b/server/ItemScripts/agnolleye.lua
index ce94f429c..579c43a2f 100755
--- a/server/ItemScripts/agnolleye.lua
+++ b/server/ItemScripts/agnolleye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agnolleye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen\\Dorbin
Script Date : 2021.12.31 07:12:42
Script Purpose :
:
@@ -9,20 +9,23 @@
local LoreAndLegendGnoll = 5398
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
-OfferQuest(nil, Player, LoreAndLegendGnoll)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGnoll, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
+ OfferQuest(nil, Player, LoreAndLegendGnoll)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGnoll) and GetQuestStepProgress(Player, LoreAndLegendGnoll, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGnoll, 7)
-RemoveItem(Player, 1818)
-CloseItemConversation()
+ SetStepComplete(Player, LoreAndLegendGnoll, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1818)
end
diff --git a/server/ItemScripts/agnollpaw.lua b/server/ItemScripts/agnollpaw.lua
index f4ba9c800..c173a763e 100755
--- a/server/ItemScripts/agnollpaw.lua
+++ b/server/ItemScripts/agnollpaw.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agnollpaw.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen\\Dorbin
Script Date : 2021.12.31 07:12:44
Script Purpose :
:
@@ -9,20 +9,25 @@
local LoreAndLegendGnoll = 5398
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
-OfferQuest(nil, Player, LoreAndLegendGnoll)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGnoll, 4) then
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
+ OfferQuest(nil, Player, LoreAndLegendGnoll)
+else
conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ if HasQuest(Player, LoreAndLegendGnoll) and GetQuestStepProgress(Player, LoreAndLegendGnoll, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
end
end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGnoll, 4)
-RemoveItem(Player, 1821)
-CloseItemConversation()
+if HasItem(Player,1821,1) then
+ SetStepComplete(Player, LoreAndLegendGnoll, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1821)
+end
end
diff --git a/server/ItemScripts/agnolltail.lua b/server/ItemScripts/agnolltail.lua
index 38b6328cc..7174ebbee 100755
--- a/server/ItemScripts/agnolltail.lua
+++ b/server/ItemScripts/agnolltail.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agnolltail.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen\\Dorbin
Script Date : 2021.12.31 07:12:58
Script Purpose :
:
@@ -9,20 +9,26 @@
local LoreAndLegendGnoll = 5398
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
-OfferQuest(nil, Player, LoreAndLegendGnoll)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGnoll, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
+ OfferQuest(nil, Player, LoreAndLegendGnoll)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGnoll) and GetQuestStepProgress(Player, LoreAndLegendGnoll, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
end
- end
+end
+
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGnoll, 6)
-RemoveItem(Player, 1822)
-CloseItemConversation()
+if HasItem(Player,1822,1) then
+ SetStepComplete(Player, LoreAndLegendGnoll, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1822)
+end
end
diff --git a/server/ItemScripts/agnolltooth.lua b/server/ItemScripts/agnolltooth.lua
index 3128db07d..424df0f50 100755
--- a/server/ItemScripts/agnolltooth.lua
+++ b/server/ItemScripts/agnolltooth.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agnolltooth.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen\\Dorbin
Script Date : 2021.12.31 07:12:06
Script Purpose :
:
@@ -9,24 +9,29 @@
local LoreAndLegendGnoll = 5398
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
-OfferQuest(nil, Player, LoreAndLegendGnoll)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGnoll, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGnoll) and not HasCompletedQuest(Player, LoreAndLegendGnoll) then
+ OfferQuest(nil, Player, LoreAndLegendGnoll)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGnoll) and GetQuestStepProgress(Player, LoreAndLegendGnoll, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the gnoll. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGnoll, 5)
-RemoveItem(Player, 1823)
-CloseItemConversation()
+if HasItem(Player,1823,1) then
+ SetStepComplete(Player, LoreAndLegendGnoll, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1823)
+end
end
-function item_description(Item, Spawn)
+--[[function item_description(Item, Spawn)
return "You have already examined this item."
-end
+end]]--
diff --git a/server/ItemScripts/agoblinclaw.lua b/server/ItemScripts/agoblinclaw.lua
index 811076219..ba889a538 100755
--- a/server/ItemScripts/agoblinclaw.lua
+++ b/server/ItemScripts/agoblinclaw.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agoblinclaw.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.27 05:12:30
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGoblin = 5394
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
-OfferQuest(nil, Player, LoreAndLegendGoblin)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGoblin, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
+ OfferQuest(nil, Player, LoreAndLegendGoblin)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGoblin) and GetQuestStepProgress(Player, LoreAndLegendGoblin, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
end
end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGoblin, 5)
-RemoveItem(Player, 1828)
+if HasItem(Player,1828,1) then
+ SetStepComplete(Player, LoreAndLegendGoblin, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1828)
+end
end
diff --git a/server/ItemScripts/agoblinear.lua b/server/ItemScripts/agoblinear.lua
index 81713125f..2f4b5ba84 100755
--- a/server/ItemScripts/agoblinear.lua
+++ b/server/ItemScripts/agoblinear.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agoblinear.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.27 05:12:11
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGoblin = 5394
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
-OfferQuest(nil, Player, LoreAndLegendGoblin)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGoblin, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
+ OfferQuest(nil, Player, LoreAndLegendGoblin)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGoblin) and GetQuestStepProgress(Player, LoreAndLegendGoblin, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGoblin, 8)
-RemoveItem(Player, 1828)
+if HasItem(Player,1828,1) then
+ SetStepComplete(Player, LoreAndLegendGoblin, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1828)
+end
end
diff --git a/server/ItemScripts/agoblineye.lua b/server/ItemScripts/agoblineye.lua
index 1261f701e..35dd89392 100755
--- a/server/ItemScripts/agoblineye.lua
+++ b/server/ItemScripts/agoblineye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agoblineye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.27 05:12:18
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGoblin = 5394
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
-OfferQuest(nil, Player, LoreAndLegendGoblin)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGoblin, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
+ OfferQuest(nil, Player, LoreAndLegendGoblin)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGoblin) and GetQuestStepProgress(Player, LoreAndLegendGoblin, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
end
end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGoblin, 4)
-RemoveItem(Player, 1830)
+if HasItem(Player,1830,1) then
+ SetStepComplete(Player, LoreAndLegendGoblin, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1830)
+end
end
diff --git a/server/ItemScripts/agoblinspine.lua b/server/ItemScripts/agoblinspine.lua
index 4cf084459..2bb43a33f 100755
--- a/server/ItemScripts/agoblinspine.lua
+++ b/server/ItemScripts/agoblinspine.lua
@@ -9,19 +9,25 @@
local LoreAndLegendGoblin = 5394
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
-OfferQuest(nil, Player, LoreAndLegendGoblin)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGoblin, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
+ OfferQuest(nil, Player, LoreAndLegendGoblin)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGoblin) and GetQuestStepProgress(Player, LoreAndLegendGoblin, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGoblin, 7)
-RemoveItem(Player, 1838)
+if HasItem(Player,1838,1) then
+ SetStepComplete(Player, LoreAndLegendGoblin, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1838)
+end
end
diff --git a/server/ItemScripts/agoblintooth.lua b/server/ItemScripts/agoblintooth.lua
index bee97c655..b2809fd99 100755
--- a/server/ItemScripts/agoblintooth.lua
+++ b/server/ItemScripts/agoblintooth.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agoblintooth.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.27 05:12:17
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendGoblin = 5394
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
-OfferQuest(nil, Player, LoreAndLegendGoblin)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGoblin, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGoblin) and not HasCompletedQuest(Player, LoreAndLegendGoblin) then
+ OfferQuest(nil, Player, LoreAndLegendGoblin)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendGoblin) and GetQuestStepProgress(Player, LoreAndLegendGoblin, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGoblin, 6)
-RemoveItem(Player, 1839)
+if HasItem(Player,1839,1) then
+ SetStepComplete(Player, LoreAndLegendGoblin, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1839)
+end
end
diff --git a/server/ItemScripts/agolemanimatingforce.lua b/server/ItemScripts/agolemanimatingforce.lua
index 9d5b7cb94..de99677a2 100755
--- a/server/ItemScripts/agolemanimatingforce.lua
+++ b/server/ItemScripts/agolemanimatingforce.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agolemanimatingforce.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:19
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendGolem = 5405
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
-OfferQuest(nil, Player, LoreAndLegendGolem)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGolem, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
+ OfferQuest(nil, Player, LoreAndLegendGolem)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGolem) and GetQuestStepProgress(Player, LoreAndLegendGolem, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGolem, 7)
-RemoveItem(Player, 1849)
+if HasItem(Player,1849,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1849)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agolemcorporealshell.lua b/server/ItemScripts/agolemcorporealshell.lua
index fb70c2edf..8d2feb18b 100755
--- a/server/ItemScripts/agolemcorporealshell.lua
+++ b/server/ItemScripts/agolemcorporealshell.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agolemcorporealshell.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:58
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendGolem = 5405
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
-OfferQuest(nil, Player, LoreAndLegendGolem)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGolem, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
+ OfferQuest(nil, Player, LoreAndLegendGolem)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGolem) and GetQuestStepProgress(Player, LoreAndLegendGolem, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGolem, 5)
-RemoveItem(Player, 1851)
+if HasItem(Player,1851,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1851)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agolemmotiveprism.lua b/server/ItemScripts/agolemmotiveprism.lua
index 635545cd2..7810da876 100755
--- a/server/ItemScripts/agolemmotiveprism.lua
+++ b/server/ItemScripts/agolemmotiveprism.lua
@@ -9,21 +9,27 @@
local LoreAndLegendGolem = 5405
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
-OfferQuest(nil, Player, LoreAndLegendGolem)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGolem, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
+ OfferQuest(nil, Player, LoreAndLegendGolem)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGolem) and GetQuestStepProgress(Player, LoreAndLegendGolem, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
- end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ end
+end
+
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGolem, 4)
-RemoveItem(Player, 1857)
+if HasItem(Player,1857,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1857)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agolemobediencechain.lua b/server/ItemScripts/agolemobediencechain.lua
index 8db3142c0..d8bbc6e49 100755
--- a/server/ItemScripts/agolemobediencechain.lua
+++ b/server/ItemScripts/agolemobediencechain.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agolemobediencechain.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:01
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendGolem = 5405
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
-OfferQuest(nil, Player, LoreAndLegendGolem)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGolem, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
+ OfferQuest(nil, Player, LoreAndLegendGolem)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGolem) and GetQuestStepProgress(Player, LoreAndLegendGolem, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGolem, 8)
-RemoveItem(Player, 1858)
+if HasItem(Player,1858,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1858)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/agolemsentienceleash.lua b/server/ItemScripts/agolemsentienceleash.lua
index 58e433b87..175288618 100755
--- a/server/ItemScripts/agolemsentienceleash.lua
+++ b/server/ItemScripts/agolemsentienceleash.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/agolemsentienceleash.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 11:12:32
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendGolem = 5405
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
-OfferQuest(nil, Player, LoreAndLegendGolem)
-elseif not QuestStepIsComplete(Player, LoreAndLegendGolem, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendGolem) and not HasCompletedQuest(Player, LoreAndLegendGolem) then
+ OfferQuest(nil, Player, LoreAndLegendGolem)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendGolem) and GetQuestStepProgress(Player, LoreAndLegendGolem, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the golem. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendGolem, 6)
-RemoveItem(Player, 1862)
+if HasItem(Player,1862,1) then
+ SetStepComplete(Player, LoreAndLegendGhost, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1862)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/alizardmanclaw.lua b/server/ItemScripts/alizardmanclaw.lua
index 1cf8ea344..9740481a5 100755
--- a/server/ItemScripts/alizardmanclaw.lua
+++ b/server/ItemScripts/alizardmanclaw.lua
@@ -9,21 +9,26 @@
local LoreAndLegendLizardman = 5412
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
-OfferQuest(nil, Player, LoreAndLegendLizardman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendLizardman, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
+ OfferQuest(nil, Player, LoreAndLegendLizardman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendLizardman) and GetQuestStepProgress(Player, LoreAndLegendLizardman, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendLizardman, 6)
-RemoveItem(Player, 2026)
+if HasItem(Player,2026,1) then
+ SetStepComplete(Player, LoreAndLegendLizardman, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2026)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/alizardmaneye.lua b/server/ItemScripts/alizardmaneye.lua
index db366c6e9..fd48e3219 100755
--- a/server/ItemScripts/alizardmaneye.lua
+++ b/server/ItemScripts/alizardmaneye.lua
@@ -9,21 +9,27 @@
local LoreAndLegendLizardman = 5412
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
-OfferQuest(nil, Player, LoreAndLegendLizardman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendLizardman, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
+ OfferQuest(nil, Player, LoreAndLegendLizardman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendLizardman) and GetQuestStepProgress(Player, LoreAndLegendLizardman, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
end
- end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ end
+end
+
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendLizardman, 8)
-RemoveItem(Player, 2027)
+if HasItem(Player,2027,1) then
+ SetStepComplete(Player, LoreAndLegendLizardman, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2027)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/alizardmanscale.lua b/server/ItemScripts/alizardmanscale.lua
index 918c4334e..7c8f28687 100755
--- a/server/ItemScripts/alizardmanscale.lua
+++ b/server/ItemScripts/alizardmanscale.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/alizardmanscale.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:23
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendLizardman = 5412
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
-OfferQuest(nil, Player, LoreAndLegendLizardman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendLizardman, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
+ OfferQuest(nil, Player, LoreAndLegendLizardman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendLizardman) and GetQuestStepProgress(Player, LoreAndLegendLizardman, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendLizardman, 5)
-RemoveItem(Player, 2028)
+if HasItem(Player,2028,1) then
+ SetStepComplete(Player, LoreAndLegendLizardman, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2028)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/alizardmantail.lua b/server/ItemScripts/alizardmantail.lua
index 2f952f5f1..fe3102d88 100755
--- a/server/ItemScripts/alizardmantail.lua
+++ b/server/ItemScripts/alizardmantail.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/alizardmantail.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:09
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendLizardman = 5412
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
-OfferQuest(nil, Player, LoreAndLegendLizardman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendLizardman, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
+ OfferQuest(nil, Player, LoreAndLegendLizardman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendLizardman) and GetQuestStepProgress(Player, LoreAndLegendLizardman, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendLizardman, 4)
-RemoveItem(Player, 2029)
+if HasItem(Player,2029,1) then
+ SetStepComplete(Player, LoreAndLegendLizardman, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2029)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/alizardmantooth.lua b/server/ItemScripts/alizardmantooth.lua
index fe0195142..8d0be771f 100755
--- a/server/ItemScripts/alizardmantooth.lua
+++ b/server/ItemScripts/alizardmantooth.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/alizardmantooth.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 04:01:23
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendLizardman = 5412
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
-OfferQuest(nil, Player, LoreAndLegendLizardman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendLizardman, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendLizardman) and not HasCompletedQuest(Player, LoreAndLegendLizardman) then
+ OfferQuest(nil, Player, LoreAndLegendLizardman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendLizardman) and GetQuestStepProgress(Player, LoreAndLegendLizardman, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the lizardman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendLizardman, 7)
-RemoveItem(Player, 2030)
+if HasItem(Player,2030,1) then
+ SetStepComplete(Player, LoreAndLegendLizardman, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2030)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/amisspelledGuttersnipenote.lua b/server/ItemScripts/amisspelledGuttersnipenote.lua
index 95c1e7c43..01e688146 100755
--- a/server/ItemScripts/amisspelledGuttersnipenote.lua
+++ b/server/ItemScripts/amisspelledGuttersnipenote.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/amisspelledGuttersnipenote.lua
- Script Author : Premierio015
+ Script Author : Premierio015\\Dorbin
Script Date : 2021.06.25 06:06:02
Script Purpose :
:
@@ -9,10 +9,50 @@
local BalancingTheGangs = 5260
+
+
function examined(Item, Player)
-if not HasQuest(Player, BalancingTheGangs) then
-OfferQuest(nil, Player, BalancingTheGangs)
+ if CanReceiveQuest(Player,BalancingTheGangs) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the note]")
+ AddConversationOption(conversation, "[Toss away the note]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This note is a copy of gibberish you made sense of earlier. It has no more use to you.")
+ end
end
- end
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,BalancingTheGangs) then
+ AddConversationOption(conversation, "[Attempt to read the note]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the note away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The letter seems to be just a bunch of gibberish and misspelled words upon first glance.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,BalancingTheGangs) then
+ AddConversationOption(conversation, "Perhaps I can even the odds...", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the note away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "From what you can tell, this letter was meant for a member of the Black Magi. Some sort of deal was being struck to band them with the Guttersnipes against the Giantslayers... or at least that is what it seems.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,BalancingTheGangs) then
+ OfferQuest(nil,Player,BalancingTheGangs)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,2262,1) then
+ RemoveItem(Player,2262)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/amysteriousarcanerod.lua b/server/ItemScripts/amysteriousarcanerod.lua
new file mode 100755
index 000000000..25adb8825
--- /dev/null
+++ b/server/ItemScripts/amysteriousarcanerod.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : ItemScripts/amysteriousarcanerod.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.15 03:11:11
+ Script Purpose :
+ :
+--]]
+
+local ShivosRod = 5928
+local ItemID = 2292
+
+
+function examined(Item, Player)
+ if CanReceiveQuest(Player,ShivosRod) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the arcane rod]")
+ AddConversationOption(conversation, "[Put the arcane rod away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "It appears to be a non descript rod of light metal. There are a few strange markings etched into it. You've seen this before, so you don't need it anymore.")
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,ShivosRod) then
+ AddConversationOption(conversation, "[Touch the markings with your fingertips]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the arcane rod away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "It appears to be a non descript rod of light metal. There are a few strange markings etched into it.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,ShivosRod) then
+ AddConversationOption(conversation, "[Consider where to ask about this.]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the arcane rod away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The rod seems to hum with magical energy, however, you can't seem to figure out its purpose or use at this time. It is very unlikely that the ratonga was the original owner of the rod.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,ShivosRod) then
+ OfferQuest(nil,Player,ShivosRod)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,ItemID,1) then
+ RemoveItem(Player,ItemID)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/an_old_darkblade_dagger.lua b/server/ItemScripts/an_old_darkblade_dagger.lua
index bfb1e8095..42bdb7eff 100755
--- a/server/ItemScripts/an_old_darkblade_dagger.lua
+++ b/server/ItemScripts/an_old_darkblade_dagger.lua
@@ -1,22 +1,66 @@
--[[
Script Name : ItemScripts/an_old_darkblade_dagger.lua
Script Purpose :Quest Stater for The Darkblade Dagger
- Script Author : Ememjr
+ Script Author : Ememjr\\Dorbin - Quest text
Script Date : 2019-10-07
Script Notes :
--]]
-local quest = 482
+local DarkbladeDagger = 482
+
function examined(Item, Player)
- if not HasQuest(Player, quest) and not HasCompletedQuest(Player, quest) then
- OfferQuest(nil, Player, quest)
+ if CanReceiveQuest(Player,DarkbladeDagger) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Put the dagger away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This strange dagger is like one you've used before. It does not seem to offer anything more to you upon inspection.")
end
end
-function obtained(Item, Player)
-local ItemCount = GetItemCount(Item)
-if ItemCount > 1 then
-RemoveItem(Player, 3767)
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,DarkbladeDagger) then
+ AddConversationOption(conversation, "[Pull on the hilt.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the dagger away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This strange dagger does not appear to be very functional. The hilt seems to be hollow.")
end
- end
\ No newline at end of file
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,DarkbladeDagger) then
+ AddConversationOption(conversation, "[Read the note.]", "Dialog3")
+ end
+ AddConversationOption(conversation, "[Put the dagger away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Without much effort you remove the blade. Examining the hilt reveals a small note tucked inside.")
+end
+
+function Dialog3(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,DarkbladeDagger) then
+ AddConversationOption(conversation, "I should kill these ratonga!", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the dagger away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "\"Each Darkblade is to exterminate no less than ten diseased ratonga. The daggers provided by the netherot chanters will bestow reward upon those sincere in their oath, or death to those who ignore this call to duty.\"")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,DarkbladeDagger) then
+ OfferQuest(nil,Player,DarkbladeDagger)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,3767,1) then
+ RemoveItem(Player,3767)
+ end
+end
+
+--
\ No newline at end of file
diff --git a/server/ItemScripts/anecroticzombieskin.lua b/server/ItemScripts/anecroticzombieskin.lua
index c142a7aa5..7dbaa2c53 100755
--- a/server/ItemScripts/anecroticzombieskin.lua
+++ b/server/ItemScripts/anecroticzombieskin.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anecroticzombieskin.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 06:12:22
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendZombie = 5397
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
-OfferQuest(nil, Player, LoreAndLegendZombie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendZombie, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
+ OfferQuest(nil, Player, LoreAndLegendZombie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendZombie) and GetQuestStepProgress(Player, LoreAndLegendZombie, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendZombie, 4)
-RemoveItem(Player, 2320)
+if HasItem(Player,2320,1) then
+ SetStepComplete(Player, LoreAndLegendZombie, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2320)
+end
end
diff --git a/server/ItemScripts/anefreetiancientpromise.lua b/server/ItemScripts/anefreetiancientpromise.lua
index 46041fe41..50d336cf2 100755
--- a/server/ItemScripts/anefreetiancientpromise.lua
+++ b/server/ItemScripts/anefreetiancientpromise.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anefreetiancientpromise.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 09:01:17
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEfreeti = 5416
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
-OfferQuest(nil, Player, LoreAndLegendEfreeti)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEfreeti, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEfreeti) and GetQuestStepProgress(Player, LoreAndLegendEfreeti, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEfreeti, 7)
-RemoveItem(Player, 3563)
+if HasItem(Player,3563,1) then
+ SetStepComplete(Player, LoreAndLegendEfreeti, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3563)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anefreetibrokenshackle.lua b/server/ItemScripts/anefreetibrokenshackle.lua
index 669754b36..3d6f3c8d6 100755
--- a/server/ItemScripts/anefreetibrokenshackle.lua
+++ b/server/ItemScripts/anefreetibrokenshackle.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anefreetibrokenshackle.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 09:01:42
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEfreeti = 5416
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
-OfferQuest(nil, Player, LoreAndLegendEfreeti)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEfreeti, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEfreeti) and GetQuestStepProgress(Player, LoreAndLegendEfreeti, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEfreeti, 6)
-RemoveItem(Player, 3564)
+if HasItem(Player,3564,1) then
+ SetStepComplete(Player, LoreAndLegendEfreeti, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3564)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anefreetioilyessence.lua b/server/ItemScripts/anefreetioilyessence.lua
index 4bd4000b0..9d013b880 100755
--- a/server/ItemScripts/anefreetioilyessence.lua
+++ b/server/ItemScripts/anefreetioilyessence.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anefreetioilyessence.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 09:01:48
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEfreeti = 5416
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
-OfferQuest(nil, Player, LoreAndLegendEfreeti)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEfreeti, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEfreeti) and GetQuestStepProgress(Player, LoreAndLegendEfreeti, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEfreeti, 8)
-RemoveItem(Player, 3565)
+if HasItem(Player,3565,1) then
+ SetStepComplete(Player, LoreAndLegendEfreeti, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3565)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anefreetishatteredlamp.lua b/server/ItemScripts/anefreetishatteredlamp.lua
index 874ce8813..35aded07f 100755
--- a/server/ItemScripts/anefreetishatteredlamp.lua
+++ b/server/ItemScripts/anefreetishatteredlamp.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anefreetishatteredlamp.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 09:01:57
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEfreeti = 5416
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
-OfferQuest(nil, Player, LoreAndLegendEfreeti)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEfreeti, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEfreeti) and GetQuestStepProgress(Player, LoreAndLegendEfreeti, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEfreeti, 5)
-RemoveItem(Player, 3566)
+if HasItem(Player,3566,1) then
+ SetStepComplete(Player, LoreAndLegendEfreeti, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3566)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anefreetisilkensash.lua b/server/ItemScripts/anefreetisilkensash.lua
index e517bbc91..7dccd2184 100755
--- a/server/ItemScripts/anefreetisilkensash.lua
+++ b/server/ItemScripts/anefreetisilkensash.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anefreetisilkensash.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 09:01:26
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEfreeti = 5416
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
-OfferQuest(nil, Player, LoreAndLegendEfreeti)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEfreeti, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEfreeti) and not HasCompletedQuest(Player, LoreAndLegendEfreeti) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEfreeti) and GetQuestStepProgress(Player, LoreAndLegendEfreeti, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the efreeti. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEfreeti, 4)
-RemoveItem(Player, 3567)
+if HasItem(Player,3567,1) then
+ SetStepComplete(Player, LoreAndLegendEfreeti, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3567)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anelementalbindingrune.lua b/server/ItemScripts/anelementalbindingrune.lua
new file mode 100644
index 000000000..20374e5f9
--- /dev/null
+++ b/server/ItemScripts/anelementalbindingrune.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : ItemScripts/anelementalbindingrune.lua
+ Script Author : dorbin
+ Script Date : 2023.12.27 06:12:25
+ Script Purpose :
+ :
+--]]
+local LoreAndLegendElemental = 5402
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendElemental) and not HasCompletedQuest(Player, LoreAndLegendElemental) then
+ OfferQuest(nil, Player, LoreAndLegendElemental)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendElemental) and GetQuestStepProgress(Player, LoreAndLegendElemental, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of elementals. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3572,1) then
+ SetStepComplete(Player, LoreAndLegendElemental,6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3572)
+end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/anelementalessencewell.lua b/server/ItemScripts/anelementalessencewell.lua
new file mode 100644
index 000000000..72715cf9f
--- /dev/null
+++ b/server/ItemScripts/anelementalessencewell.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : ItemScripts/anelementalessencewell.lua
+ Script Author : dorbin
+ Script Date : 2023.12.27 07:12:44
+ Script Purpose :
+ :
+--]]
+local LoreAndLegendElemental = 5402
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendElemental) and not HasCompletedQuest(Player, LoreAndLegendElemental) then
+ OfferQuest(nil, Player, LoreAndLegendElemental)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendElemental) and GetQuestStepProgress(Player, LoreAndLegendElemental, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of elementals. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3573,1) then
+ SetStepComplete(Player, LoreAndLegendElemental, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3573)
+end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/anelementalfascinationrune.lua b/server/ItemScripts/anelementalfascinationrune.lua
new file mode 100644
index 000000000..29c008880
--- /dev/null
+++ b/server/ItemScripts/anelementalfascinationrune.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : ItemScripts/anelementalfascinationrune.lua
+ Script Author : dorbin
+ Script Date : 2023.12.27 07:12:09
+ Script Purpose :
+ :
+--]]
+local LoreAndLegendElemental = 5402
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendElemental) and not HasCompletedQuest(Player, LoreAndLegendElemental) then
+ OfferQuest(nil, Player, LoreAndLegendElemental)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendElemental) and GetQuestStepProgress(Player, LoreAndLegendElemental, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of elementals. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3574,1) then
+ SetStepComplete(Player, LoreAndLegendElemental, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3574)
+end
+end
diff --git a/server/ItemScripts/anelementalplanarseed.lua b/server/ItemScripts/anelementalplanarseed.lua
new file mode 100644
index 000000000..2407d2ecd
--- /dev/null
+++ b/server/ItemScripts/anelementalplanarseed.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : ItemScripts/anelementalplanarseed.lua
+ Script Author : dorbin
+ Script Date : 2023.12.27 07:12:31
+ Script Purpose :
+ :
+--]]
+local LoreAndLegendElemental = 5402
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendElemental) and not HasCompletedQuest(Player, LoreAndLegendElemental) then
+ OfferQuest(nil, Player, LoreAndLegendElemental)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendElemental) and GetQuestStepProgress(Player, LoreAndLegendElemental, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of elementals. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3575,1) then
+ SetStepComplete(Player, LoreAndLegendElemental, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3575)
+end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/anelementalsummonedcore.lua b/server/ItemScripts/anelementalsummonedcore.lua
new file mode 100644
index 000000000..1bbdb72ef
--- /dev/null
+++ b/server/ItemScripts/anelementalsummonedcore.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : ItemScripts/anelementalsummonedcore.lua
+ Script Author : dorbin
+ Script Date : 2023.12.27 06:12:49
+ Script Purpose :
+ :
+--]]
+
+
+local LoreAndLegendElemental = 5402
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendElemental) and not HasCompletedQuest(Player, LoreAndLegendElemental) then
+ OfferQuest(nil, Player, LoreAndLegendElemental)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendElemental) and GetQuestStepProgress(Player, LoreAndLegendElemental, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of elementals. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3576,1) then
+ SetStepComplete(Player, LoreAndLegendElemental, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3576)
+end
+end
diff --git a/server/ItemScripts/anevileyebindingshackle.lua b/server/ItemScripts/anevileyebindingshackle.lua
new file mode 100644
index 000000000..05cf7b97f
--- /dev/null
+++ b/server/ItemScripts/anevileyebindingshackle.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : ItemScripts/anevileyebindingshackle.lua
+ Script Author : dorbin
+ Script Date : 2023.12.28 05:12:28
+ Script Purpose :
+ :
+--]]
+
+local LoreAndLegendEvileye = 5408
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEvileye) and GetQuestStepProgress(Player, LoreAndLegendEvileye, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3615,1) then
+ SetStepComplete(Player, LoreAndLegendEvileye, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3615)
+end
+end
+
+function item_description(Item, Spawn)
+ return "You have already examined this item."
+end
diff --git a/server/ItemScripts/anevileyecornea.lua b/server/ItemScripts/anevileyecornea.lua
new file mode 100644
index 000000000..b7c8c44f1
--- /dev/null
+++ b/server/ItemScripts/anevileyecornea.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : ItemScripts/anevileyecornea.lua
+ Script Author : dorbin
+ Script Date : 2023.12.28 05:12:11
+ Script Purpose :
+ :
+--]]
+
+local LoreAndLegendEvileye = 5408
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEvileye) and GetQuestStepProgress(Player, LoreAndLegendEvileye, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3616,1) then
+ SetStepComplete(Player, LoreAndLegendEvileye, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3616)
+end
+end
diff --git a/server/ItemScripts/anevileyeenchantment.lua b/server/ItemScripts/anevileyeenchantment.lua
index f1602ff2e..d603dfc81 100755
--- a/server/ItemScripts/anevileyeenchantment.lua
+++ b/server/ItemScripts/anevileyeenchantment.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anevileyeenchantment.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 01:01:01
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEvileye = 5408
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
-OfferQuest(nil, Player, LoreAndLegendEvileye)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEvileye, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEvileye) and GetQuestStepProgress(Player, LoreAndLegendEvileye, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEvileye, 5)
-RemoveItem(Player, 3617)
+if HasItem(Player,3617,1) then
+ SetStepComplete(Player, LoreAndLegendEvileye, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3617)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anevileyemaliciousgaze.lua b/server/ItemScripts/anevileyemaliciousgaze.lua
new file mode 100644
index 000000000..b543efbba
--- /dev/null
+++ b/server/ItemScripts/anevileyemaliciousgaze.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : ItemScripts/anevileyemaliciousgaze.lua
+ Script Author : dorbin
+ Script Date : 2023.12.28 05:12:52
+ Script Purpose :
+ :
+--]]
+
+local LoreAndLegendEvileye = 5408
+
+function examined(Item, Player)
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEvileye) and GetQuestStepProgress(Player, LoreAndLegendEvileye, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ end
+end
+
+function Step_Complete(Item, Player)
+if HasItem(Player,3618,1) then
+ SetStepComplete(Player, LoreAndLegendEvileye, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3618)
+end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/anevileyepupil.lua b/server/ItemScripts/anevileyepupil.lua
index 6e33d3007..f8fcb32ac 100755
--- a/server/ItemScripts/anevileyepupil.lua
+++ b/server/ItemScripts/anevileyepupil.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anevileyepupil.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 01:01:40
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendEvileye = 5408
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
-OfferQuest(nil, Player, LoreAndLegendEvileye)
-elseif not QuestStepIsComplete(Player, LoreAndLegendEvileye, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendEvileye) and not HasCompletedQuest(Player, LoreAndLegendEvileye) then
+ OfferQuest(nil, Player, LoreAndLegendEvileye)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendEvileye) and GetQuestStepProgress(Player, LoreAndLegendEvileye, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the evil eye. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendEvileye, 4)
-RemoveItem(Player, 3619)
+if HasItem(Player,3619,1) then
+ SetStepComplete(Player, LoreAndLegendEvileye, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3619)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anightblooddarkenedblood.lua b/server/ItemScripts/anightblooddarkenedblood.lua
index 706a1359e..7518ff323 100755
--- a/server/ItemScripts/anightblooddarkenedblood.lua
+++ b/server/ItemScripts/anightblooddarkenedblood.lua
@@ -9,21 +9,26 @@
local LoreAndLegendNightblood = 5406
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
-OfferQuest(nil, Player, LoreAndLegendNightblood)
-elseif not QuestStepIsComplete(Player, LoreAndLegendNightblood, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
+ OfferQuest(nil, Player, LoreAndLegendNightblood)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendNightblood) and GetQuestStepProgress(Player, LoreAndLegendNightblood, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendNightblood, 8)
-RemoveItem(Player, 2335)
+if HasItem(Player,2335,1) then
+ SetStepComplete(Player, LoreAndLegendNightblood, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2335)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anightbloodhoof.lua b/server/ItemScripts/anightbloodhoof.lua
index 7dea5479b..a72260c6d 100755
--- a/server/ItemScripts/anightbloodhoof.lua
+++ b/server/ItemScripts/anightbloodhoof.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anightbloodhoof.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:19
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendNightblood = 5406
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
-OfferQuest(nil, Player, LoreAndLegendNightblood)
-elseif not QuestStepIsComplete(Player, LoreAndLegendNightblood, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
+ OfferQuest(nil, Player, LoreAndLegendNightblood)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendNightblood) and GetQuestStepProgress(Player, LoreAndLegendNightblood, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendNightblood, 4)
-RemoveItem(Player, 2336)
+if HasItem(Player,2336,1) then
+ SetStepComplete(Player, LoreAndLegendNightblood, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2336)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anightbloodinfernoeye.lua b/server/ItemScripts/anightbloodinfernoeye.lua
index 8e3ae8cec..75786a3de 100755
--- a/server/ItemScripts/anightbloodinfernoeye.lua
+++ b/server/ItemScripts/anightbloodinfernoeye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anightbloodinfernoeye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:22
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendNightblood = 5406
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
-OfferQuest(nil, Player, LoreAndLegendNightblood)
-elseif not QuestStepIsComplete(Player, LoreAndLegendNightblood, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
+ OfferQuest(nil, Player, LoreAndLegendNightblood)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendNightblood) and GetQuestStepProgress(Player, LoreAndLegendNightblood, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendNightblood, 5)
-RemoveItem(Player, 1002)
+if HasItem(Player,1002,1) then
+ SetStepComplete(Player, LoreAndLegendNightblood, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 1002)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anightbloodshackle.lua b/server/ItemScripts/anightbloodshackle.lua
index a7b969c81..51e333887 100755
--- a/server/ItemScripts/anightbloodshackle.lua
+++ b/server/ItemScripts/anightbloodshackle.lua
@@ -9,21 +9,26 @@
local LoreAndLegendNightblood = 5406
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
-OfferQuest(nil, Player, LoreAndLegendNightblood)
-elseif not QuestStepIsComplete(Player, LoreAndLegendNightblood, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
+ OfferQuest(nil, Player, LoreAndLegendNightblood)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendNightblood) and GetQuestStepProgress(Player, LoreAndLegendNightblood, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendNightblood, 7)
-RemoveItem(Player, 2337)
+if HasItem(Player,2337,1) then
+ SetStepComplete(Player, LoreAndLegendNightblood, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2337)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anightbloodtooth.lua b/server/ItemScripts/anightbloodtooth.lua
index a7594d5f4..0e45c4451 100755
--- a/server/ItemScripts/anightbloodtooth.lua
+++ b/server/ItemScripts/anightbloodtooth.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anightbloodtooth.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:22
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendNightblood = 5406
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
-OfferQuest(nil, Player, LoreAndLegendNightblood)
-elseif not QuestStepIsComplete(Player, LoreAndLegendNightblood, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendNightblood) and not HasCompletedQuest(Player, LoreAndLegendNightblood) then
+ OfferQuest(nil, Player, LoreAndLegendNightblood)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendNightblood) and GetQuestStepProgress(Player, LoreAndLegendNightblood, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the nightblood. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendNightblood, 6)
-RemoveItem(Player, 2338)
+if HasItem(Player,2338,1) then
+ SetStepComplete(Player, LoreAndLegendNightblood, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2338)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/anincriminatingletter.lua b/server/ItemScripts/anincriminatingletter.lua
new file mode 100755
index 000000000..59e3e7a0a
--- /dev/null
+++ b/server/ItemScripts/anincriminatingletter.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : ItemScripts/anincriminatingletter.lua
+ Script Author : cynnar
+ Script Date : 2023.11.21 03:11:06
+ Script Purpose :
+ :
+--]]
+
+local EliminateGeraufl = 5929
+
+function examined(Item, Player)
+ conversation = CreateConversation()
+
+ if not HasQuest(Player, EliminateGeraufl) then
+ OfferQuest(nil, Player, EliminateGeraufl)
+ AddConversationOption(conversation, "continue reading", "nextpage")
+ StartDialogConversation(conversation, 2, Item, Player, "Kath -\nWe'er on our way. The frogloks here in Qeynos are pleased with our attempts to rescue their brethren over on your side of the world. We cannot allow Lucan's tyranny to encompass an entire race, and dominate their destiny.")
+ end
+
+end
+
+function nextpage(Item, Player)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "put the note away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Your efforts on that front will soon be bolstered by another group of our best. Once they break out Geraufl we will be able to concentrate on the larger task at hand: freeing their kind form their pens in Cazic-Thule, a task which will no doubt be much harder than the one we currently face. - M.")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/anoldnote.lua b/server/ItemScripts/anoldnote.lua
index 5c3dcb7a2..002451134 100755
--- a/server/ItemScripts/anoldnote.lua
+++ b/server/ItemScripts/anoldnote.lua
@@ -1,17 +1,50 @@
--[[
Script Name : ItemScripts/anoldnote.lua
Script Purpose :
- Script Author : Ememjr
- Script Date : 2017.05.09
+ Script Author : Dorbin
+ Script Date : 05/17/2023
Script Notes :
--]]
-local quest = 235
+
+local Quest = 235
+
+
function examined(Item, Player)
- if not HasQuest(Player, quest) and not HasCompletedQuest(Player, quest) then
- OfferQuest(nil, Player, quest)
- else
- --remove quest starter
+ if CanReceiveQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ else
+ AddConversationOption(conversation, "[Keep the old note as a keepsake.]")
+ AddConversationOption(conversation, "[Toss the note in the wind. You no longer need it.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "You've read this note already. \n\n \"May Tunare bless your life, as she has blessed mine. My name is Phyndin Silverystream. I've since left this forest,...\"")
end
+end
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ if GetQuestStep(Player,Quest)==2 then
+ AddConversationOption(conversation, "[Read the note.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the note away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "To whomever finds this note: May Tunare bless your life, as she has blessed mine. My name is Phyndin Silverystream. I've since left this forest, but I left behind a token of my life here. If you found this note on my furry friend, then I believe you worthy enough to carry it--should you find it. Check the tree in the stream...")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if GetQuestStep(Player,Quest)==2 then
+ SetStepComplete(Player,Quest,2)
+ end
+ AddConversationOption(conversation, "[Put the note and map away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Though penned crudely, the map seems fairly easy to follow. By tracing the river through the map, you manage to make out that the spot marked on it is a fairly large tree overlooking the waterfall. A small fern is shown growing next to the tree, though depending on how long ago this map was made, the fern could be gone by now.")
+end
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,3776) then
+ RemoveItem(Player,3776,1)
+ end
end
\ No newline at end of file
diff --git a/server/ItemScripts/anorcspine.lua b/server/ItemScripts/anorcspine.lua
index daec2fe54..77bd736c4 100755
--- a/server/ItemScripts/anorcspine.lua
+++ b/server/ItemScripts/anorcspine.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/anorcspine.lua
- Script Author : Premierio015
+ Script Author : Premierio015/Dorbin
Script Date : 2021.06.20 09:06:24
Script Purpose : Item Script for Lore and Legend:Orc Quest
:
@@ -9,19 +9,25 @@
local LoreAndLegendOrc = 5257
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
-OfferQuest(nil, Player, LoreAndLegendOrc)
-elseif not QuestStepIsComplete(Player, LoreAndLegendOrc, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendOrc) and not HasCompletedQuest(Player, LoreAndLegendOrc) then
+ OfferQuest(nil, Player, LoreAndLegendOrc)
+else
+ conversation = CreateConversation()
+ if HasQuest(Player, LoreAndLegendOrc) and GetQuestStepProgress(Player, LoreAndLegendOrc, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+ end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the orc. Do you wish to study it?")
end
end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendOrc, 7)
-RemoveItem(Player, 3801)
+if HasItem(Player,3801,1) then
+ SetStepComplete(Player, LoreAndLegendOrc, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3801)
+end
end
diff --git a/server/ItemScripts/apieceofrottedzombieflesh.lua b/server/ItemScripts/apieceofrottedzombieflesh.lua
index 4bb514cb2..d6b2c6794 100755
--- a/server/ItemScripts/apieceofrottedzombieflesh.lua
+++ b/server/ItemScripts/apieceofrottedzombieflesh.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/apieceofrottedzombieflesh.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 06:12:19
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendZombie = 5397
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
-OfferQuest(nil, Player, LoreAndLegendZombie)
-elseif not QuestStepIsComplete(Player, LoreAndLegendZombie, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendZombie) and not HasCompletedQuest(Player, LoreAndLegendZombie) then
+ OfferQuest(nil, Player, LoreAndLegendZombie)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendZombie) and GetQuestStepProgress(Player, LoreAndLegendZombie, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the zombie. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendZombie, 6)
-RemoveItem(Player, 2387)
+if HasItem(Player,2387,1) then
+ SetStepComplete(Player, LoreAndLegendZombie, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2387)
+end
end
diff --git a/server/ItemScripts/asealednote.lua b/server/ItemScripts/asealednote.lua
new file mode 100755
index 000000000..c03431f98
--- /dev/null
+++ b/server/ItemScripts/asealednote.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : ItemScripts/asealednote.lua
+ Script Author : cynnar
+ Script Date : 2023.04.29 06:04:23
+ Script Purpose :
+ :
+--]]
+
+local QuellingTheRebellion = 5807
+
+function examined(Item, Player)
+ conversation = CreateConversation()
+
+ if not HasQuest(Player, QuellingTheRebellion) then
+ OfferQuest(nil, Player, QuellingTheRebellion)
+ AddConversationOption(conversation, "continue reading", "nextpage")
+ StartDialogConversation(conversation, 2, Item, Player, "Geroaufl -\nI hope this letter finds you yet alive. I have been rescued by a kind group of travelers after being left for dead by a fearsome brute. The ones who have saved me claim to be from a peaceful kingdom on one of the western isles.")
+ end
+
+end
+
+function nextpage(Item, Player)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "put the letter back in your pocket", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "They wish to release you from your prison as well. They have begun infiltrating the city in which you are being held. I'm told their agents are already in place. J.T.S. (for he wishes his full name be kept anonymous) has begun gathering the supplies he'll need to break you free. My love, I pray to Marr that all will go as they plan and we can retire in safety to this Qeynos. - Love, Kraofla")
+end
\ No newline at end of file
diff --git a/server/ItemScripts/ashadowmanaspectofshadow.lua b/server/ItemScripts/ashadowmanaspectofshadow.lua
index fb9197ed3..a5bed9d0c 100755
--- a/server/ItemScripts/ashadowmanaspectofshadow.lua
+++ b/server/ItemScripts/ashadowmanaspectofshadow.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/ashadowmanaspectofshadow.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 02:01:07
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendShadowman = 5409
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
-OfferQuest(nil, Player, LoreAndLegendShadowman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendShadowman, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
+ OfferQuest(nil, Player, LoreAndLegendShadowman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendShadowman) and GetQuestStepProgress(Player, LoreAndLegendShadowman, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendShadowman, 4)
-RemoveItem(Player, 2632)
+if HasItem(Player,2632,1) then
+ SetStepComplete(Player, LoreAndLegendShadowman, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2632)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/ashadowmanplanarfiber.lua b/server/ItemScripts/ashadowmanplanarfiber.lua
index fc1e5ebb3..ae2c97f6a 100755
--- a/server/ItemScripts/ashadowmanplanarfiber.lua
+++ b/server/ItemScripts/ashadowmanplanarfiber.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/ashadowmanplanarfiber.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 02:01:10
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendShadowman = 5409
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
-OfferQuest(nil, Player, LoreAndLegendShadowman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendShadowman, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
+ OfferQuest(nil, Player, LoreAndLegendShadowman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendShadowman) and GetQuestStepProgress(Player, LoreAndLegendShadowman, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendShadowman, 8)
-RemoveItem(Player, 2633)
+if HasItem(Player,2633,1) then
+ SetStepComplete(Player, LoreAndLegendShadowman, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2633)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/ashadowmanswirlingshadow.lua b/server/ItemScripts/ashadowmanswirlingshadow.lua
index b2b88ad08..68845ec4a 100755
--- a/server/ItemScripts/ashadowmanswirlingshadow.lua
+++ b/server/ItemScripts/ashadowmanswirlingshadow.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/ashadowmanswirlingshadow.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 02:01:37
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendShadowman = 5409
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
-OfferQuest(nil, Player, LoreAndLegendShadowman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendShadowman, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
+ OfferQuest(nil, Player, LoreAndLegendShadowman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendShadowman) and GetQuestStepProgress(Player, LoreAndLegendShadowman, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendShadowman, 7)
-RemoveItem(Player, 2634)
+if HasItem(Player,2634,1) then
+ SetStepComplete(Player, LoreAndLegendShadowman, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2634)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/ashadowmanvoidkernel.lua b/server/ItemScripts/ashadowmanvoidkernel.lua
index c154af4e5..3df5e5584 100755
--- a/server/ItemScripts/ashadowmanvoidkernel.lua
+++ b/server/ItemScripts/ashadowmanvoidkernel.lua
@@ -9,21 +9,26 @@
local LoreAndLegendShadowman = 5409
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
-OfferQuest(nil, Player, LoreAndLegendShadowman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendShadowman, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
+ OfferQuest(nil, Player, LoreAndLegendShadowman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendShadowman) and GetQuestStepProgress(Player, LoreAndLegendShadowman, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendShadowman, 6)
-RemoveItem(Player, 2635)
+if HasItem(Player,2635,1) then
+ SetStepComplete(Player, LoreAndLegendShadowman, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2635)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/ashadowmanvortexripple.lua b/server/ItemScripts/ashadowmanvortexripple.lua
index 74f2bfc02..cf56142ef 100755
--- a/server/ItemScripts/ashadowmanvortexripple.lua
+++ b/server/ItemScripts/ashadowmanvortexripple.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/ashadowmanvortexripple.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 02:01:18
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendShadowman = 5409
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
-OfferQuest(nil, Player, LoreAndLegendShadowman)
-elseif not QuestStepIsComplete(Player, LoreAndLegendShadowman, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendShadowman) and not HasCompletedQuest(Player, LoreAndLegendShadowman) then
+ OfferQuest(nil, Player, LoreAndLegendShadowman)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendShadowman) and GetQuestStepProgress(Player, LoreAndLegendShadowman, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the shadowman. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendShadowman, 5)
-RemoveItem(Player, 2636)
+if HasItem(Player,2636,1) then
+ SetStepComplete(Player, LoreAndLegendShadowman, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2636)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/asireneye.lua b/server/ItemScripts/asireneye.lua
index 7623f1179..3f3a831ce 100755
--- a/server/ItemScripts/asireneye.lua
+++ b/server/ItemScripts/asireneye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/asireneye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:08
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendSiren = 5407
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
-OfferQuest(nil, Player, LoreAndLegendSiren)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSiren, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
+ OfferQuest(nil, Player, LoreAndLegendSiren)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSiren) and GetQuestStepProgress(Player, LoreAndLegendSiren, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSiren, 7)
-RemoveItem(Player, 2715)
+if HasItem(Player,2715,1) then
+ SetStepComplete(Player, LoreAndLegendSiren, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2715)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/asirenfin.lua b/server/ItemScripts/asirenfin.lua
index cd70f6c89..ce79657a4 100755
--- a/server/ItemScripts/asirenfin.lua
+++ b/server/ItemScripts/asirenfin.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/asirenfin.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:37
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendSiren = 5407
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
-OfferQuest(nil, Player, LoreAndLegendSiren)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSiren, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
+ OfferQuest(nil, Player, LoreAndLegendSiren)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSiren) and GetQuestStepProgress(Player, LoreAndLegendSiren, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSiren, 8)
-RemoveItem(Player, 2716)
+if HasItem(Player,2716,1) then
+ SetStepComplete(Player, LoreAndLegendSiren, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2716)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/asirenscale.lua b/server/ItemScripts/asirenscale.lua
index f55b6f187..520569750 100755
--- a/server/ItemScripts/asirenscale.lua
+++ b/server/ItemScripts/asirenscale.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/asirenscale.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:33
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendSiren = 5407
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
-OfferQuest(nil, Player, LoreAndLegendSiren)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSiren, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
+ OfferQuest(nil, Player, LoreAndLegendSiren)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSiren) and GetQuestStepProgress(Player, LoreAndLegendSiren, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSiren, 6)
-RemoveItem(Player, 2717)
+if HasItem(Player,2717,1) then
+ SetStepComplete(Player, LoreAndLegendSiren, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2717)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/asirensong.lua b/server/ItemScripts/asirensong.lua
index c14cade1d..1b8e92f5b 100755
--- a/server/ItemScripts/asirensong.lua
+++ b/server/ItemScripts/asirensong.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/asirensong.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2022.01.01 12:01:54
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendSiren = 5407
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
-OfferQuest(nil, Player, LoreAndLegendSiren)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSiren, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
+ OfferQuest(nil, Player, LoreAndLegendSiren)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSiren) and GetQuestStepProgress(Player, LoreAndLegendSiren, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSiren, 5)
-RemoveItem(Player, 2718)
+if HasItem(Player,2718,1) then
+ SetStepComplete(Player, LoreAndLegendSiren, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2718)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/asirenwail.lua b/server/ItemScripts/asirenwail.lua
index 1c107d3b0..7dbb7d712 100755
--- a/server/ItemScripts/asirenwail.lua
+++ b/server/ItemScripts/asirenwail.lua
@@ -9,21 +9,26 @@
local LoreAndLegendSiren = 5407
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
-OfferQuest(nil, Player, LoreAndLegendSiren)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSiren, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSiren) and not HasCompletedQuest(Player, LoreAndLegendSiren) then
+ OfferQuest(nil, Player, LoreAndLegendSiren)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSiren) and GetQuestStepProgress(Player, LoreAndLegendSiren, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the siren. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSiren, 4)
-RemoveItem(Player, 2719)
+if HasItem(Player,2719,1) then
+ SetStepComplete(Player, LoreAndLegendSiren, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2719)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/askeletonarm.lua b/server/ItemScripts/askeletonarm.lua
index 65bcbe86c..fa026ad1e 100755
--- a/server/ItemScripts/askeletonarm.lua
+++ b/server/ItemScripts/askeletonarm.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/askeletonarm.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.29 08:12:01
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendSkeleton = 5396
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
-OfferQuest(nil, Player, LoreAndLegendSkeleton)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSkeleton, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
+ OfferQuest(nil, Player, LoreAndLegendSkeleton)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSkeleton) and GetQuestStepProgress(Player, LoreAndLegendSkeleton, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put it away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSkeleton, 4)
-RemoveItem(Player, 2734)
+if HasItem(Player,2734,1) then
+ SetStepComplete(Player, LoreAndLegendSkeleton, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2734)
+end
end
diff --git a/server/ItemScripts/askeletonleg.lua b/server/ItemScripts/askeletonleg.lua
index 939380bd0..1fe93d293 100755
--- a/server/ItemScripts/askeletonleg.lua
+++ b/server/ItemScripts/askeletonleg.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/askeletonleg.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.29 08:12:31
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendSkeleton = 5396
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
-OfferQuest(nil, Player, LoreAndLegendSkeleton)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSkeleton, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
+ OfferQuest(nil, Player, LoreAndLegendSkeleton)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSkeleton) and GetQuestStepProgress(Player, LoreAndLegendSkeleton, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSkeleton, 5)
-RemoveItem(Player, 2735)
+if HasItem(Player,2735,1) then
+ SetStepComplete(Player, LoreAndLegendSkeleton, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2735)
+end
end
diff --git a/server/ItemScripts/askeletonobjurgatoryhunger.lua b/server/ItemScripts/askeletonobjurgatoryhunger.lua
index f8166d4a6..f0f669d22 100755
--- a/server/ItemScripts/askeletonobjurgatoryhunger.lua
+++ b/server/ItemScripts/askeletonobjurgatoryhunger.lua
@@ -9,19 +9,25 @@
local LoreAndLegendSkeleton = 5396
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
-OfferQuest(nil, Player, LoreAndLegendSkeleton)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSkeleton, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
+ OfferQuest(nil, Player, LoreAndLegendSkeleton)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSkeleton) and GetQuestStepProgress(Player, LoreAndLegendSkeleton, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSkeleton, 6)
-RemoveItem(Player, 2736)
+if HasItem(Player,2736,1) then
+ SetStepComplete(Player, LoreAndLegendSkeleton, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2736)
+end
end
diff --git a/server/ItemScripts/askeletonreanimationrune.lua b/server/ItemScripts/askeletonreanimationrune.lua
index 60a9c8039..56b58abb2 100755
--- a/server/ItemScripts/askeletonreanimationrune.lua
+++ b/server/ItemScripts/askeletonreanimationrune.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/askeletonreanimationrune.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.29 08:12:07
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendSkeleton = 5396
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
-OfferQuest(nil, Player, LoreAndLegendSkeleton)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSkeleton, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
+ OfferQuest(nil, Player, LoreAndLegendSkeleton)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSkeleton) and GetQuestStepProgress(Player, LoreAndLegendSkeleton, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSkeleton, 7)
-RemoveItem(Player, 2737)
+if HasItem(Player,2737,1) then
+ SetStepComplete(Player, LoreAndLegendSkeleton, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2737)
+end
end
diff --git a/server/ItemScripts/askeletonsorrowcore.lua b/server/ItemScripts/askeletonsorrowcore.lua
index f9b12a893..3b243ceac 100755
--- a/server/ItemScripts/askeletonsorrowcore.lua
+++ b/server/ItemScripts/askeletonsorrowcore.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/askeletonsorrowcore.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen//Dorbin
Script Date : 2021.12.29 08:12:45
Script Purpose :
:
@@ -9,19 +9,25 @@
local LoreAndLegendSkeleton = 5396
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
-OfferQuest(nil, Player, LoreAndLegendSkeleton)
-elseif not QuestStepIsComplete(Player, LoreAndLegendSkeleton, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendSkeleton) and not HasCompletedQuest(Player, LoreAndLegendSkeleton) then
+ OfferQuest(nil, Player, LoreAndLegendSkeleton)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendSkeleton) and GetQuestStepProgress(Player, LoreAndLegendSkeleton, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the skeleton. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendSkeleton, 8)
-RemoveItem(Player, 2738)
+if HasItem(Player,2738,1) then
+ SetStepComplete(Player, LoreAndLegendSkeleton, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 2738)
+end
end
diff --git a/server/ItemScripts/asmallbronzekeywithastrangehandle.lua b/server/ItemScripts/asmallbronzekeywithastrangehandle.lua
new file mode 100755
index 000000000..ab5137f3d
--- /dev/null
+++ b/server/ItemScripts/asmallbronzekeywithastrangehandle.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : ItemScripts/asmallbronzekeywithastrangehandle.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.14 11:05:29
+ Script Purpose : for Buccaneer's Rest access in Antonica
+ :
+--]]
+
+
+function examined(Item, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Perhaps I can locate where this key goes.","offer")
+ AddConversationOption(conversation, "Stop inspecting the key.")
+ StartDialogConversation(conversation, 2, Item, Player, "This key appears rusted and covered in salt with a tag bearing the symbol of a lighthouse. On the handle end of the key, a faintly visible skull and crossed bladed symbol can be seen etched into the metal, nearly erroded by the elements.")
+end
+
+
+function offer(Item,Player)
+ if CanReceiveQuest(Player,5813) then
+ OfferQuest(Item,Player,5813)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/asmallpieceofparchment.lua b/server/ItemScripts/asmallpieceofparchment.lua
index 599c2c364..6bceb1af8 100755
--- a/server/ItemScripts/asmallpieceofparchment.lua
+++ b/server/ItemScripts/asmallpieceofparchment.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/asmallpieceofparchment.lua
- Script Author : Premierio015
+ Script Author : Premierio015\\Dorbin - Item text
Script Date : 2021.07.04 10:07:23
Script Purpose :
:
@@ -9,14 +9,49 @@
local TheFallenAssassin = 5283
local ItemID = 2804
-function examined(Item, Player)
-if not HasQuest(Player, TheFallenAssassin) and not HasCompletedQuest(Player, TheFallenAssassin) then
-OfferQuest(nil, Player, TheFallenAssassin)
-end
- end
-function obtained(Item, Player)
-if HasQuest(Player, TheFallenAssassin) or HasCompletedQuest(Player, TheFallenAssassin) then
-RemoveItem(Player, ItemID)
+function examined(Item, Player)
+ if CanReceiveQuest(Player,TheFallenAssassin) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the parchment.]")
+ AddConversationOption(conversation, "[Destroy the parchment.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This piece of parchment is a copy of orders you've already read. You don't need it anymore, but someone else might.")
+ end
end
- end
\ No newline at end of file
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,TheFallenAssassin) then
+ AddConversationOption(conversation, "[Inspect the parchment.]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the parchment away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This parchment appears offical. You can make out the Freeport Militia emblem embossed on the edge of the material.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,TheFallenAssassin) then
+ AddConversationOption(conversation, "[Write the task in your journal.]", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the parchment away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "\"Your orders are to be carried out by the morrow's dawn. Nothing less than the Lord's head will prove your success in this mission. Fail and your life will be forfeit.\" The statement is signed, Captain Molacus.")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,TheFallenAssassin) then
+ OfferQuest(nil,Player,TheFallenAssassin)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,ItemID,1) then
+ RemoveItem(Player,ItemID)
+ end
+end
\ No newline at end of file
diff --git a/server/ItemScripts/asmoothlockofhair.lua b/server/ItemScripts/asmoothlockofhair.lua
new file mode 100755
index 000000000..a3da3fd56
--- /dev/null
+++ b/server/ItemScripts/asmoothlockofhair.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : ItemScripts/asmoothlockofhair.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.13 07:12:58
+ Script Purpose :
+ :
+--]]
+
+local Quest = 5937
+
+
+function examined(Item, Player)
+ if CanReceiveQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,RewardForAMissingMusicBox) then
+ AddConversationOption(conversation, "[Inspect the hair]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the lock of hair away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The hair feels silky smooth in your fingers. An odd sight considering the Giantslayers were holding on to it.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "Oh, this is going to be fun!", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the hair away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The smooth and silky hair has the faint smell of... fruit? No one around the Sprawl would have hair smelling THIS good. This must be from ... Qeynosians. They are up to something, and perhaps I can put them in their place!")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ CloseItemConversation(Item,Player)
+end
diff --git a/server/ItemScripts/atreantbark.lua b/server/ItemScripts/atreantbark.lua
index 19f3c3531..700f21c6c 100755
--- a/server/ItemScripts/atreantbark.lua
+++ b/server/ItemScripts/atreantbark.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/atreantbark.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:11
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendTreant = 5401
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
-OfferQuest(nil, Player, LoreAndLegendTreant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendTreant, 4) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
+ OfferQuest(nil, Player, LoreAndLegendTreant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendTreant) and GetQuestStepProgress(Player, LoreAndLegendTreant, 4)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendTreant, 4)
-RemoveItem(Player, 3014)
+if HasItem(Player,3014,1) then
+ SetStepComplete(Player, LoreAndLegendTreant, 4)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3014)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/atreantbranch.lua b/server/ItemScripts/atreantbranch.lua
index ee39be442..51174dd82 100755
--- a/server/ItemScripts/atreantbranch.lua
+++ b/server/ItemScripts/atreantbranch.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/atreantbranch.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:07
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendTreant = 5401
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
-OfferQuest(nil, Player, LoreAndLegendTreant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendTreant, 8) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
+ OfferQuest(nil, Player, LoreAndLegendTreant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendTreant) and GetQuestStepProgress(Player, LoreAndLegendTreant, 8)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendTreant, 8)
-RemoveItem(Player, 3015)
+if HasItem(Player,3015,1) then
+ SetStepComplete(Player, LoreAndLegendTreant, 8)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3015)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/atreanteye.lua b/server/ItemScripts/atreanteye.lua
index 10a9009e5..e1358ef74 100755
--- a/server/ItemScripts/atreanteye.lua
+++ b/server/ItemScripts/atreanteye.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/atreanteye.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:03
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendTreant = 5401
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
-OfferQuest(nil, Player, LoreAndLegendTreant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendTreant, 5) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
+ OfferQuest(nil, Player, LoreAndLegendTreant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendTreant) and GetQuestStepProgress(Player, LoreAndLegendTreant, 5)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendTreant, 5)
-RemoveItem(Player, 3016)
+if HasItem(Player,3016,1) then
+ SetStepComplete(Player, LoreAndLegendTreant, 5)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3016)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/atreantleaf.lua b/server/ItemScripts/atreantleaf.lua
index 408235be4..85fbaef0c 100755
--- a/server/ItemScripts/atreantleaf.lua
+++ b/server/ItemScripts/atreantleaf.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/atreantleaf.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:45
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendTreant = 5401
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
-OfferQuest(nil, Player, LoreAndLegendTreant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendTreant, 6) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
+ OfferQuest(nil, Player, LoreAndLegendTreant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendTreant) and GetQuestStepProgress(Player, LoreAndLegendTreant, 6)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendTreant, 6)
-RemoveItem(Player, 3017)
+if HasItem(Player,3017,1) then
+ SetStepComplete(Player, LoreAndLegendTreant, 6)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3017)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/atreantroot.lua b/server/ItemScripts/atreantroot.lua
index ba74cf983..c29168a93 100755
--- a/server/ItemScripts/atreantroot.lua
+++ b/server/ItemScripts/atreantroot.lua
@@ -1,6 +1,6 @@
--[[
Script Name : ItemScripts/atreantroot.lua
- Script Author : AussieGlen
+ Script Author : AussieGlen/Dorbin
Script Date : 2021.12.31 09:12:28
Script Purpose :
:
@@ -9,21 +9,26 @@
local LoreAndLegendTreant = 5401
function examined(Item, Player)
-if not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
-OfferQuest(nil, Player, LoreAndLegendTreant)
-elseif not QuestStepIsComplete(Player, LoreAndLegendTreant, 7) then
-conversation = CreateConversation()
-AddConversationOption(conversation, "Begin to study...", "Step_Complete")
-AddConversationOption(conversation, "No, put away", "CloseItemConversation")
-StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ local LnLAccept = GetRuleFlagFloat("R_World", "LoreAndLegendAccept")
+if LnLAccept > 0 and not HasQuest(Player, LoreAndLegendTreant) and not HasCompletedQuest(Player, LoreAndLegendTreant) then
+ OfferQuest(nil, Player, LoreAndLegendTreant)
+else
+ conversation = CreateConversation()
+if HasQuest(Player, LoreAndLegendTreant) and GetQuestStepProgress(Player, LoreAndLegendTreant, 7)==0 then
+ AddConversationOption(conversation, "Begin to study...", "Step_Complete")
+end
+ AddConversationOption(conversation, "No, put away", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This item can be used to learn the secrets of the goblin. Do you wish to study it?")
+ end
end
- end
function Step_Complete(Item, Player)
-SetStepComplete(Player, LoreAndLegendTreant, 7)
-RemoveItem(Player, 3018)
+if HasItem(Player,3018,1) then
+ SetStepComplete(Player, LoreAndLegendTreant, 7)
+ CloseItemConversation(Item, Player)
+ RemoveItem(Player, 3018)
+end
end
-
function item_description(Item, Spawn)
return "You have already examined this item."
diff --git a/server/ItemScripts/burnedoutlightstone.lua b/server/ItemScripts/burnedoutlightstone.lua
index a50ce76f5..c7ce55e6b 100755
--- a/server/ItemScripts/burnedoutlightstone.lua
+++ b/server/ItemScripts/burnedoutlightstone.lua
@@ -7,9 +7,21 @@
--]]
local TheReturnOfTheLight = 485
-
+--
function examined(Item, Player)
if not HasQuest(Player, TheReturnOfTheLight) and not HasCompletedQuest(Player, TheReturnOfTheLight) then
-OfferQuest(nil, Player, TheReturnOfTheLight)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,TheReturnOfTheLight) then
+ AddConversationOption(conversation, "I should look into this...", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the stope away]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "The lightstone seems very different from the ones typically found in the Commonlands. This one is of much higher quality and density compared to your typical lightstone. Maybe someone would find this particular stone to be worth something.")
+ end
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,TheReturnOfTheLight) then
+ OfferQuest(nil, Player, TheReturnOfTheLight)
+ end
+ CloseItemConversation(Item,Player)
end
- end
diff --git a/server/ItemScripts/canteenofpondwater.lua b/server/ItemScripts/canteenofpondwater.lua
new file mode 100755
index 000000000..08fe357ff
--- /dev/null
+++ b/server/ItemScripts/canteenofpondwater.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : ItemScripts/canteenofpondwater.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.27 07:12:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5463)
+ Regenz = 11.4
+ newDuration = 1800
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
+
+
diff --git a/server/ItemScripts/cure_test.lua b/server/ItemScripts/cure_test.lua
old mode 100644
new mode 100755
diff --git a/server/ItemScripts/flaskoffilteredwater.lua b/server/ItemScripts/flaskoffilteredwater.lua
new file mode 100755
index 000000000..a09a03f31
--- /dev/null
+++ b/server/ItemScripts/flaskoffilteredwater.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : ItemScripts/flaskoffilteredwater.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.16 04:06:26
+ Script Purpose :
+ :
+--]]
+
+--[[ Begin Item Effects
+
+* Increases Out-of-Combat Power Regeneration of target by 6.0
+
+End Item Effects--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5009)
+ Regenz = 12.0
+ newDuration = 1800
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/flaskofpondwater.lua b/server/ItemScripts/flaskofpondwater.lua
new file mode 100755
index 000000000..9b9b3096b
--- /dev/null
+++ b/server/ItemScripts/flaskofpondwater.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : ItemScripts/flaskofpondwater.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.16 04:06:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5009)
+ Regenz = 11.4
+ newDuration = 900
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
+
+
diff --git a/server/ItemScripts/mintjulep.lua b/server/ItemScripts/mintjulep.lua
new file mode 100755
index 000000000..b20daa28f
--- /dev/null
+++ b/server/ItemScripts/mintjulep.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : ItemScripts/mintjulep.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.27 08:12:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5463)
+ Regenz = 15.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
diff --git a/server/ItemScripts/orobrew.lua b/server/ItemScripts/orobrew.lua
new file mode 100755
index 000000000..b2984e866
--- /dev/null
+++ b/server/ItemScripts/orobrew.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : ItemScripts/orobrew.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.27 08:12:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Item, Player)
+ Spell = GetSpell(5463)
+ Regenz = 15.0
+ newDuration = 18000
+ SetSpellData(Spell, "duration1", newDuration)
+ SetSpellData(Spell, "duration2", newDuration)
+ SetSpellDataIndex(Spell, 0, Regenz)
+ SetSpellDisplayEffect(Spell, 0, "description", "Increases Out-of-Combat Power Regeneration of target by " .. Regenz)
+ CastCustomSpell(Spell, Player, Player)
+end
\ No newline at end of file
diff --git a/server/ItemScripts/runedacorn.lua b/server/ItemScripts/runedacorn.lua
index 68f9dd86a..21704c570 100755
--- a/server/ItemScripts/runedacorn.lua
+++ b/server/ItemScripts/runedacorn.lua
@@ -1,20 +1,56 @@
--[[
Script Name : ItemScripts/runedacorn.lua
Script Purpose :
- Script Author : Ememjr
- Script Date : 2017.05.09
+ Script Author : Dorbin
+ Script Date : 05/17/2023
Script Notes :
--]]
-local quest = 233
+local Quest = 233
+
function examined(Item, Player)
- if not HasQuest(Player, quest) and not HasCompletedQuest(Player, quest) then
- OfferQuest(nil, Player, quest)
-
- --remove quest starter
- if HasItem(Player, 11780) then
- RemoveItem(Player, 11780)
- end
+ if CanReceiveQuest(Player,Quest) then
+ Dialog1(Item,Player)
+ else
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "[Keep the acorn.]")
+ AddConversationOption(conversation, "[Toss the acorn to the ground.]", "QuestFinish")
+ StartDialogConversation(conversation, 2, Item, Player, "This acorn is familiar to you. You helped cleanse some of the corruption from the Oakmyst Forest as the runes requested.")
end
+end
+
+
+function Dialog1(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "[Clean away the grime]", "Dialog2")
+ end
+ AddConversationOption(conversation, "[Put the acorn away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "This large acorn is covered in a foul grime.")
+end
+
+function Dialog2(Item,Player)
+ conversation = CreateConversation()
+ if CanReceiveQuest(Player,Quest) then
+ AddConversationOption(conversation, "I must free the souls of corrupted dryads!", "Offer")
+ end
+ AddConversationOption(conversation, "[Put the acorn away.]", "CloseItemConversation")
+ StartDialogConversation(conversation, 2, Item, Player, "Deep runes on the acorn's surface read: \n\n\"Wounds of chaos encircle me. Invisible mouths murmur my curse. I curl to seed, fleeing the festering soil. Child of Elddar, free my corrupted shell... cleanse this thicket of the corruption.\"")
+end
+
+function Offer(Item,Player)
+ if CanReceiveQuest(Player,Quest) then
+ OfferQuest(nil,Player,Quest)
+ end
+ CloseItemConversation(Item,Player)
+end
+
+
+
+function QuestFinish(Item,Player)
+ CloseItemConversation(Item,Player)
+ if HasItem(Player,1001093) then
+ RemoveItem(Player,1001093,1)
+ end
end
\ No newline at end of file
diff --git a/server/Quests/AlphaTest/stowaway_antonica.lua b/server/Quests/AlphaTest/stowaway_antonica.lua
new file mode 100755
index 000000000..1564a06b1
--- /dev/null
+++ b/server/Quests/AlphaTest/stowaway_antonica.lua
@@ -0,0 +1,101 @@
+--[[
+ Script Name : Quests/AlphaTest/stowaway_antonica.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.15 07:06:35
+ Script Purpose :
+
+ Zone : AlphaTest
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "I must ride to Antonica...", 12, "The Shady Swashbuckler provided me passage to Antonica. He will have the paperwork I need when I get there.", 2285, 395.79, -38.56, 809.38,12)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ PlayFlavor(QuestGiver, "", "", "wink", 0, 0, Player)
+
+
+Qeynos = GetFactionAmount(Player, 11)
+Freeport = GetFactionAmount(Player, 12)
+Neriak = GetFactionAmount(Player, 13)
+Kelethin = GetFactionAmount(Player, 14)
+Halas = GetFactionAmount(Player, 16)
+Gorowyn = GetFactionAmount(Player, 17)
+alignment = GetAlignment(Player)
+
+if GetRace(Player) == 0 or GetRace(Player) == 3 or GetRace(Player) == 5 or GetRace(Player) == 6 or GetRace(Player) == 9 or GetRace(Player) == 11 or GetRace(Player) == 20 then
+SetAlignment(Player, 1)
+end
+
+if Qeynos ==0 then ChangeFaction(Player, 11, 20000)
+end
+if Freeport ==0 then ChangeFaction(Player, 12, -40000)
+end
+--[[if Neriak ==0 then ChangeFaction(Player, 13, Neriak)
+end
+if Kelethin ==0 then ChangeFaction(Player, 14, Kelethin)
+end
+if Halas ==0 then ChangeFaction(Player, 16, Halas)
+end
+if Gorowyn ==0 then ChangeFaction(Player, 17, -Gorowyn)
+end--]]
+ Antonica = GetZone("Antonica")
+ Zone(Antonica,Player,396.44,-38.47, 812.79, 13.82)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ PlayFlavor(QuestGiver, "voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_multhail1_a72f47c8.mp3", "I'm sorry. I cannot help you.", "shrug", 1448300901, 17119076, Player)
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest)
+ UpdateQuestStepDescription(Quest, 1, "I have arrived in Antonica mostly intact.")
+ AddQuestStepChat(Quest, 2, "I need to meet up with the Shady Swashbuckler near the lighthouse in Antonica.", 1, "The Shady Swashbuckler provided me passage to Antonica. He will have the paperwork I need when I get there.", 11, 121874)
+ AddQuestStepObtainItem(Quest, 3, "I must fill out Qeynos Citizenship papers.", 1,100, "The Shady Swashbuckler provided me passage to Antonica. He will have the paperwork I need when I get there.", 75, 1001095)
+ AddQuestStepObtainItem(Quest, 4, "I must fill out Class Certification paperwork.", 1,100, "The Shady Swashbuckler provided me passage to Antonica. He will have the paperwork I need when I get there.", 2183, 1001096,1001097,1001098,1001099,1001100,1001101,1001102,1001103,1001104,1001105,1001106,1001107)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have found the Shady Swashbuckler in Antonica.")
+ QuestCheck1(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have Forged Qeynos Citizenship Papers.")
+ QuestCheck1(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have Class Certification Papers.")
+ QuestCheck1(Quest, QuestGiver, Player)
+end
+
+function QuestCheck1(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5858,2) and QuestStepIsComplete(Player,5858,3)and QuestStepIsComplete(Player,5858,4) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found all I need to Fast-Track to Qeynos.")
+ UpdateQuestDescription(Quest, "I have all the necessary parts for the Fast-Track passage to Qeynos. The ride was a bit cramped...")
+ GiveQuestReward(Quest, Player)
+end
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Antonica/GnollReport.lua b/server/Quests/Antonica/GnollReport.lua
index 0ee4794bd..c15f0f989 100755
--- a/server/Quests/Antonica/GnollReport.lua
+++ b/server/Quests/Antonica/GnollReport.lua
@@ -10,6 +10,7 @@
Preceded by : The Keep of the Ardent Needle
Followed by : A Captain's Communique: Eitoa to Sturman
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -63,7 +64,12 @@ function Reload(Quest, QuestGiver, Player, Step)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("It's a fair distance, but not hard to find. Take the south path around the mountain range that splits Antonica. Once you cross the bridge at the far side of the valley, follow the river a hundred cogs or so, then turn east until you see a small keep with a moat. Captain Beltho should be there. If he's not, I'll want to know why he's not at his post.")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa005.mp3", 1672181328, 1405369900)
+ Dialog.AddOption("I'll return when I'm finished.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/LuckyLure.lua b/server/Quests/Antonica/LuckyLure.lua
index d3de0eb0a..c42d06cc8 100755
--- a/server/Quests/Antonica/LuckyLure.lua
+++ b/server/Quests/Antonica/LuckyLure.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStep(Quest, 1, "Find Blarton's fishing lure.", 1, 100, "I should search for Blarton's lost lure along the beach north of Windstalker Village in Antonica.", 1037)
+ AddQuestStepZoneLoc(Quest, 1, "Find Blarton's fishing lure.", 1, 12, "I should search for Blarton's lost lure along the beach north of Windstalker Village in Antonica.", 1037, -1970.96, -28.74,12)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
diff --git a/server/Quests/Antonica/TheKeepOfTheArdentNeedle.lua b/server/Quests/Antonica/TheKeepOfTheArdentNeedle.lua
index e1cbde685..b721523bc 100755
--- a/server/Quests/Antonica/TheKeepOfTheArdentNeedle.lua
+++ b/server/Quests/Antonica/TheKeepOfTheArdentNeedle.lua
@@ -3,7 +3,7 @@
Script Purpose : Handles the quest, "The Keep of the Ardent Needle"
Script Author : geordie0511
Script Date : 19.03.2019
- Script Notes :
+ Script Notes : Updated Dialog (Dorbin 5/10/2023)
Zone : Antonica
Quest Giver : Captain Eitoa
@@ -11,6 +11,7 @@
Followed by : Gnoll Report
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepLocation(Quest, 1, "Search the Keep of the Ardent Needle.", 30, "I must check the Keep of the Ardent Needle thoroughly.", 11, -555, -12, -327)
@@ -43,7 +44,13 @@ function Reload(Quest, QuestGiver, Player, Step)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Go then. You'll find the Keep on the north side of the ridge, just this side of the Tower of the Oracles. It's one of the few keeps in pristine condition.")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa002.mp3", 2766073172, 817198256)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("I'll return after I've performed the inspection.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/a_bow_for_a_beauty.lua b/server/Quests/Antonica/a_bow_for_a_beauty.lua
index 8fe6503a7..8e850dd52 100755
--- a/server/Quests/Antonica/a_bow_for_a_beauty.lua
+++ b/server/Quests/Antonica/a_bow_for_a_beauty.lua
@@ -11,7 +11,7 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Landwyn has asked me to collect earthcrawler leg joints.", 5, 30, "I need to gather perfectly polished earthcrawler leg joints for Landwyn.", 1908, 120121, 121267)
+ AddQuestStepKill(Quest, 1, "Landwyn has asked me to collect earthcrawler leg joints.", 5, 40, "I need to gather perfectly polished earthcrawler leg joints for Landwyn.", 1908, 120121, 121267)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
diff --git a/server/Quests/Antonica/a_brass_key.lua b/server/Quests/Antonica/a_brass_key.lua
new file mode 100755
index 000000000..56408cac7
--- /dev/null
+++ b/server/Quests/Antonica/a_brass_key.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : Quests/Antonica/a_brass_key.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.11 11:05:34
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStep(Quest, 1, "From the looks of the key and the tag, it would be safe to assume that this key can be used at a lighthouse of sorts.", 1, 100, "I need to find out what lighthouse this key goes to. The trek maybe dangerous, so I should take other hearty adventurers with me. From the looks of the key and the tag, it would be safe to assume that this key can be used at a lighthouse of sorts.", 2176)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "I must find the location for this key!")
+ StartDialogConversation(conversation, 1, QuestGiver, Player, "I need to find out what lighthouse this key goes to. The trek maybe dangerous, so I should take other hearty adventurers with me. From the looks of the key and the tag, it would be safe to assume that this key can be used at a lighthouse of sorts.")
+ SendMessage(Player,"You slip the key into your questing satchle for later.")
+ if HasItem(Player, 1271) then
+ RemoveItem(Player,1271,1)
+ end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "The key fit into a lock to the cellar behind the lighthouse.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "The key fit into the lock of the lighthouse cellar, I used it and entered.")
+
+ UpdateQuestDescription(Quest, "I used the key to open the cellar behind the lighthouse in Antonica and enter it.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/a_crude_gnoll_map.lua b/server/Quests/Antonica/a_crude_gnoll_map.lua
index b7df88f11..ce8ed33bd 100755
--- a/server/Quests/Antonica/a_crude_gnoll_map.lua
+++ b/server/Quests/Antonica/a_crude_gnoll_map.lua
@@ -16,7 +16,10 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+if HasItem(Player,1468) then
+ RemoveItem(Player,1468,1)
+ SendMessage(Player,"You roll up the map and stuff it in your quest satchle.")
+end
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/a_foul_wind.lua b/server/Quests/Antonica/a_foul_wind.lua
new file mode 100755
index 000000000..e33a59336
--- /dev/null
+++ b/server/Quests/Antonica/a_foul_wind.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Quests/Antonica/a_foul_wind.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 03:05:46
+ Script Purpose : Access to the Firemyst Gully Alternative instance
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ UpdateQuestZone(Quest,"Firemyst Gully: A Foul Wind")
+ AddQuestStepZoneLoc(Quest, 1, "I need to seek out Firemyst Gully in the center of Antonica.", 10, "I need to seek out Lord Nalin at Firemyst Gully in eastern Antonica.", 2183, -1188.04, -13.62, 706.57,14)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I found Lord Nalin, but it was too late.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found and entered Firemyst Gully.")
+
+ UpdateQuestDescription(Quest, "Unfortunately it was too late when I arrived at Firemyst Gully. Lord Nalin and his encampment had succumbed to the touch of the Blightwind witches. The whole area will need to be cleansed now.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/a_frontiersladys_task.lua b/server/Quests/Antonica/a_frontiersladys_task.lua
index 23ccd2084..50a7f2e0c 100755
--- a/server/Quests/Antonica/a_frontiersladys_task.lua
+++ b/server/Quests/Antonica/a_frontiersladys_task.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "Speak to Sighard Sayer.", 1, "I must run to Sayer's Outfitters in Antonica and speak to Sighard Sayer.", 11, 120283)
@@ -16,11 +17,12 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/verona/antonica/verona002.mp3", "", "", 4018838958, 826695955, Player)
- AddConversationOption(conversation, "I will find Sighard and see that he gets the note.")
- StartConversation(conversation, QuestGiver, Player, "I prefer the term frontierslady, but who am I to argue with a legendary adventurer. Please take this note to Sighard Sayer, proprietor of Sayer's Outfitters, the frontier trading post just to the north of here.")
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I prefer the term frontierslady, but who am I to argue with a legendary adventurer. Please take this note to Sighard Sayer, proprietor of Sayer's Outfitters, the frontier trading post just to the north of here.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona002.mp3", 4018838958, 826695955)
+ Dialog.AddOption("I will find Sighard and see that he gets the note.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/a_gnolls_doll.lua b/server/Quests/Antonica/a_gnolls_doll.lua
new file mode 100755
index 000000000..dcc6a9648
--- /dev/null
+++ b/server/Quests/Antonica/a_gnolls_doll.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Antonica/a_gnolls_doll.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.17 07:05:36
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "Slay the Darkpaw mystics", 14, 100, "I can't believe the gnolls are using dark magics. Antonica would be a safer place with fewer Darkpaw Mystics.", 611, 120015)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've slain enough Darkpaw Mystics.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have slain a Darkpaw mystic")
+
+ UpdateQuestDescription(Quest, "You feel much better now that there are fewer Darkpaw Mystics in the world.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/a_pain_in_the_backside.lua b/server/Quests/Antonica/a_pain_in_the_backside.lua
new file mode 100755
index 000000000..dfcf009ea
--- /dev/null
+++ b/server/Quests/Antonica/a_pain_in_the_backside.lua
@@ -0,0 +1,116 @@
+--[[
+ Script Name : Quests/Antonica/a_pain_in_the_backside.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.19 02:05:40
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I should find strong pieces of armor from the Darkpaw soldiers in Antonica.", 5, 100, "I must replace the back section of this armor. I suspect I can find a Gnoll that would have something suitable.", 228, 120212)
+ AddQuestStepZoneLoc(Quest, 2, "I should wash the blood from these new pieces of armor, Crater Pond would be a good location.", 27, "I must replace the back section of this armor. I suspect I can find a Gnoll that would have something suitable.", 228, 125.62, -28.07, 472.29,12)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have found some sturdy sections of gnoll armor.")
+ QuestCheck1(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have cleaned the fresh blood from the armor segments.")
+ QuestCheck1(Quest, QuestGiver, Player)
+end
+
+function QuestCheck1(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5841,1) and QuestStepIsComplete(Player,5841,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have acquired a suitable replacement for the missing armor section.")
+ AddQuestStep(Quest, 3, "I need to inspect the armor again. I can try to use the gnoll armor to repair the back of it.", 1, 100, "I must replace the back section of this armor. I suspect I can find a Gnoll that would have something suitable.", 11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest,3 , "The armor resisted the gnoll armor fragments!")
+ AddQuestStepKill(Quest, 4, "Take the eye from The Klicnik Queen..", 1, 100, "I have examined the armor. It rejected the gnoll armor segments I tried to attach. It seems arcane forces are at work here. The eye of a Klicnik queen is said to have the ability to enchant some metals, perhaps it can help disenchant this armor so that I can repair it.", 83, 120452)
+ AddQuestStep(Quest, 5, "I need to find the arcane devices belonging to the Darkpaw Gnolls in their cave hideout.", 1, 100, "I have examined the armor. It rejected the gnoll armor segments I tried to attach. It seems arcane forces are at work here. The eye of a Klicnik queen is said to have the ability to enchant some metals, perhaps it can help disenchant this armor so that I can repair it.", 887)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "This is much too Dangerous. The Darkpaw gnolls have a hideout in the hills near here, perhaps I can use their arcane devices.")
+ QuestCheck2(Quest, QuestGiver, Player)
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have found the Darkpaw Gnoll's arcane device.")
+ QuestCheck2(Quest, QuestGiver, Player)
+end
+
+function QuestCheck2(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5841,4) and QuestStepIsComplete(Player,5841,5) then
+ UpdateQuestTaskGroupDescription(Quest, 2, "Now that the armor will no longer reject any repairs, I should be able to fix it.")
+ AddQuestStep(Quest, 6, "I need to inspect the armor again. I can try disenchanting the armor using these items.", 1, 100, "I must replace the back section of this armor. I suspect I can find a Gnoll that would have something suitable.", 756)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I have disenchanted the armor.")
+ AddQuestStepKill(Quest, 7, "Kill young kodiak bears in antonica until suitable lining is found.", 1, 100, "It appears that the edges in this armor are much too jagged to attempt to wear. I should find something to make this a bit more comfortable.", 122, 120294)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I have found a suitable lining for the Bloodsaber Armor.")
+ AddQuestStep(Quest, 8, "I need to inspect the armor again. I can use these bear pelts to make a lining.", 1, 100, "It appears that the edges in this armor are much too jagged to attempt to wear. I should find something to make this a bit more comfortable.", 756)
+ AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 8, "I have made a suitable lining for the Bloodsaber Armor.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have made a suitable lining for the Bloodsaber armor.")
+
+ UpdateQuestDescription(Quest, "I have managed to restore to the Bloodsaber chestpiece to a usable condition. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/a_strange_gem.lua b/server/Quests/Antonica/a_strange_gem.lua
new file mode 100755
index 000000000..998caf0de
--- /dev/null
+++ b/server/Quests/Antonica/a_strange_gem.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Antonica/a_strange_gem.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 03:05:14
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStep(Quest, 1, "I need to find what this gem belongs in.", 1, 100, "I should find a use for this gem.", 1175)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I found a statue and placed the gem in its eye socket.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found a statue and placed the gem in its eye socket.")
+
+ UpdateQuestDescription(Quest, "I found a statue and placed the gem in its eye revealing a small crawl space under the statue.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/a_tour_of_antonica.lua b/server/Quests/Antonica/a_tour_of_antonica.lua
new file mode 100755
index 000000000..9b56b9fcc
--- /dev/null
+++ b/server/Quests/Antonica/a_tour_of_antonica.lua
@@ -0,0 +1,193 @@
+--[[
+ Script Name : Quests/Antonica/a_tour_of_antonica.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 07:04:54
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest,Player)
+ AddQuestStepZoneLoc(Quest, 1, "I must go to Crater Pond", 20, "I will seek out Crater Pond in Antonica.", 11, 85, -24, 502, 12)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I saw Crater Pond.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I visited Crater Pond.")
+
+ AddQuestStepZoneLoc(Quest, 2, "I must go to Coldwind Point", 16, "I must visit Coldwind Point in Antonica.", 11, 339, -16, 761, 12)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I saw Coldwind Point.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I visited Coldwind Point.")
+
+ AddQuestStepZoneLoc(Quest, 3, "I must go to Fippy's Hill", 20, "I must visit Fippy's Hill in Antonica. ", 11, -100, 7, -245, 12)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I visited Fippy's Hill.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I visited Fippy's Hill.")
+
+ AddQuestStepZoneLoc(Quest, 4, "I must go to the Forbidden Isle", 20, "I must visit the Forbidden Isle in Antonica. ", 11, 281, -28, -655, 12)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I saw the Forbidden Isle.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I visited the Forbidden Isle.")
+
+ AddQuestStepZoneLoc(Quest, 5, "I must go to the Keep of the Ardent Needle", 20, "I must visit the Keep of the Ardent Needle in Antonica.", 11, -554, -14, -346, 12)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I saw the Keep of the Ardent Needle.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I visited the Keep of the Ardent Needle.")
+
+ AddQuestStepZoneLoc(Quest, 6, "I must visit the Tower of the Oracles", 20, "I must visit the Tower of the Oracles in Antonica.", 11, -1033, 14, -629, 12)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I visited the Tower of the Oracles.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I visited the Tower of the Oracles.")
+
+ AddQuestStepZoneLoc(Quest, 7, "I must visit the Qeynos Hill Claymore", 20, "I must visit the Qeynos Hill Claymore in Antonica.", 11, -469, -1, 540, 12)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I visited the Qeynos Hill Claymore.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I visited the Qeynos Hill.")
+
+ AddQuestStepZoneLoc(Quest, 8, "I must visit Archer's Wood", 15, "I must visit the glade in Archer Woods located in Antonica.", 11, -593.42, -11.00, 664.09, 12)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I visited Archer's Wood.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I visited the glade in Archer Wood.")
+
+ AddQuestStepZoneLoc(Quest, 9, "I must visit the Bells of Vhalen", 16, "I must visit the Bells of Vhalen in Antonica.", 11, -1300, 38, 45, 12)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I visited the Bells of Vhalen.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I visited the Bells of Vhalen.")
+
+ AddQuestStepZoneLoc(Quest, 10, "I must visit the Keep of the Gnollslayers", 20, "I must visit the Keep of the Gnollslayers in Antonica.", 11, -2121, -46, 415, 12)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I visited the Keep of the Gnollslayers.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I visited the Keep of the Gnollslayers.")
+
+ AddQuestStepZoneLoc(Quest, 11, "I must visit Fangbreaker Keep", 20, "I must visit Fangbreaker Keep in Antonica.", 11, -2048.54, 15.74, -484, 12)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I visited Fangbreaker Keep.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I visited Fangbreaker Keep.")
+
+ AddQuestStepZoneLoc(Quest, 12, "I must visit the Ruins of Caltorsis", 20, "I must visit the Ruins of Caltorsis in Antonica.", 11, -1410.40, -13.88, -741.78, 12)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I visited the Ruins of Caltorsis.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I visited the Ruins of Caltorsis.")
+
+ AddQuestStepZoneLoc(Quest, 13, "I must visit the Grave of Windstalker", 16, "I must visit the Grave of Windstalker in Antonica.", 11, -1854, -3, -622, 12)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I visited the Grave of Windstalker.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I visited the Grave of Windstalker.")
+
+ AddQuestStepZoneLoc(Quest, 14, "I must visit the Hidden Vale", 16, "I must visit the Hidden Vale in Antonica.", 11, -2054, 47, 959, 12)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "I visited the Hidden Vale.")
+ UpdateQuestTaskGroupDescription(Quest, 14, "I visited the Hidden Vale.")
+
+ AddQuestStepZoneLoc(Quest, 15, "I must visit the main entrance of Stormhold", 16, "I must visit the grand entrance of Stormhold in Antonica.", 11, -2350, -20, 230, 12)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, "I visited the main entrance of Stormhold.")
+ UpdateQuestTaskGroupDescription(Quest, 15, "I visited the grand entrance of Stormhold.")
+
+ AddQuestStepChat(Quest, 16, "Find the librarian of Three Towers. ", 1, "I should take this field guide to a place in Qeynos known for housing volumes of knowledge, Three Towers.", 11, 2310086, 5890322)
+ AddQuestStepCompleteAction(Quest, 16, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 16, "Gave the book to Librarian Dalmas.")
+ UpdateQuestTaskGroupDescription(Quest, 16, "I gave the field guide to the Concordium in Qeynos.")
+
+ UpdateQuestDescription(Quest, "I visited all the locations listed in 'Bootstrutter's Field Guide to Antonica.' Having done so, I decided to return the book to my cities' local mage guild, keepers of all knowledge. They were delighted and rewarded me with a valuable piece of Bootstrutter gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step14Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step15Complete(Quest, QuestGiver, Player)
+ elseif Step == 16 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/ancient_kite_shield.lua b/server/Quests/Antonica/ancient_kite_shield.lua
new file mode 100755
index 000000000..bb24da96c
--- /dev/null
+++ b/server/Quests/Antonica/ancient_kite_shield.lua
@@ -0,0 +1,86 @@
+--[[
+ Script Name : Quests/Antonica/ancient_kite_shield.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 03:05:30
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "I need to go to Crater Pond and find the perfect spot to wash the dirt from the shield.", 12, "If I'm going to clean this shield and return to working condition, I'll need to put some effort into it.", 11, 85, -24, 502, 12)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've rinsed a lot of dirt from the shield.")
+ AddQuestStep(Quest,2,"I should inspect the shield again.",1, 100,"If I'm going to clean this shield and return to working condition, I'll need to put some effort into it.", 2268)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've inspected the shield after washing it.")
+
+ AddQuestStepKill(Quest, 3, "I need to kill lowland badgers in Antonica for their bristled fur.", 3, 75, "If I'm going to clean this shield and return to working condition, I'll need to put some effort into it.", 1095, 120213,120157 )
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've gathered a lot fur from the lowland badgers.")
+ AddQuestStep(Quest,4,"I should use the badger fur on the shield.",1, 100,"If I'm going to clean this shield and return to working condition, I'll need to put some effort into it.", 2268)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've nearly cleaned most of the shield.")
+
+ AddQuestStepKill(Quest, 5, "I need to gather the acidic poison from the earthcrawlers in Antonica.", 5, 100, "If I'm going to clean this shield and return to working condition, I'll need to put some effort into it.", 2510, 120121)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've gathered enough of the poison to clean the shield off.")
+ AddQuestStep(Quest,6,"I should use crawler acid to remove the last of the caked dirt on the shield.",1, 100,"If I'm going to clean this shield and return to working condition, I'll need to put some effort into it.", 2268)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I've cleaned all off the dirt from the Ancient Kite Shield.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've cleaned all off the dirt from the Ancient Kite Shield.")
+
+ UpdateQuestDescription(Quest, "I've cleaned the dirt off of the shield and now have a usable Ancient Kite Shield.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+end
+end
diff --git a/server/Quests/Antonica/antonica_creature_cataloging.lua b/server/Quests/Antonica/antonica_creature_cataloging.lua
new file mode 100755
index 000000000..6d6685227
--- /dev/null
+++ b/server/Quests/Antonica/antonica_creature_cataloging.lua
@@ -0,0 +1,205 @@
+--[[
+ Script Name : Quests/Antonica/antonica_creature_cataloging.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.14 11:09:09
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+
+ AddQuestStep (Quest, 1, "I must find a young kodiak.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+
+ AddQuestStep(Quest, 2, "I must find a grizzled badger.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+
+ AddQuestStep(Quest, 3, "I must find a lowland viper.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+
+ AddQuestStep(Quest, 4, "I must find a Coldwind octopus.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+
+ AddQuestStep(Quest, 5, "I must find a sonic shrieker.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+
+ AddQuestStep(Quest, 6, "I must find a klicnik warrior.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+
+ AddQuestStep(Quest, 7, "I must find a timberclaw gnoll.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+
+ AddQuestStep(Quest, 8, "I must find a dankfur gnoll.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+
+ AddQuestStep(Quest, 9, "I must find a pond beaver.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+
+ AddQuestStep(Quest, 10, "I must find a sogbone skeleton.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+
+ AddQuestStep(Quest, 11, "I must find a kodiak.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+
+ AddQuestStep(Quest, 12, "I must find a tidewalker behemoth.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+
+ AddQuestStep(Quest, 13, "I must find a root strangler.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+
+ AddQuestStep(Quest, 14, "I must find an earth burrower.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+
+ AddQuestStep(Quest, 15, "I must find a wandering bat.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, THIS_QUEST_ID, 1) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 2) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 3) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 4) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 5) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 6) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 7) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 8) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 9) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 10) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 11) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 12) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 13) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 14) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 15)then
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have located all of the creatures I was looking for.")
+
+ UpdateQuestDescription(Quest, "I've successfully catalogued all the creatures in the Antonica creature guide.")
+ GiveQuestReward(Quest, Player)
+ if HasItem(Player,1001110) then
+ RemoveItem(Player,1001110,1)
+ end
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have found a young kodiak.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have found a grizzled badger.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, " I have found a lowland viper.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, " I have found a Coldwind octopus.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, " I have found a sonic shrieker.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, " I have found a klicnik warrior.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, " I have found a timberclaw gnoll.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I have found a dankfur gnoll.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I have found a pond beaver.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, " I have found a sogbone skeleton.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I have found a kodiak.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, " I have found a tidewalker behemoth.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, " I have found a root strangler.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "I have found an earth burrower.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, " I have found a wandering bat.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step12Complete(Quest, QuestGiver, Player)
+ end
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ AddSpellBookEntry(Player, 2550196, 1) --CREATURE CATALOGUE
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
diff --git a/server/Quests/Antonica/battle_with_the_timberclaws.lua b/server/Quests/Antonica/battle_with_the_timberclaws.lua
index 5bfe9d151..91e159730 100755
--- a/server/Quests/Antonica/battle_with_the_timberclaws.lua
+++ b/server/Quests/Antonica/battle_with_the_timberclaws.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "Slay gnolls in and around Archer Woods.", 12, 100, "I must slay gnolls in and around the Archer Woods until Dancer whistles her song for me to return to her.", 611, 120295, 120296, 121404, 121405)
@@ -16,11 +17,12 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/verona/antonica/verona009.mp3", "", "", 2472618059, 207846586, Player)
- AddConversationOption(conversation, "I shall do my best.", "dlg_42_4")
- StartConversation(conversation, QuestGiver, Player, "You think you can clear all of Archer Woods? I doubt that, but I would be glad to see you try, as would Trusaris.")
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You think you can clear all of Archer Woods? I doubt that, but I would be glad to see you try, as would Trusaris.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona009.mp3", 2472618059, 207846586)
+ Dialog.AddOption("I shall do my best.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/bug_squashing.lua b/server/Quests/Antonica/bug_squashing.lua
new file mode 100755
index 000000000..203014aed
--- /dev/null
+++ b/server/Quests/Antonica/bug_squashing.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Quests/Antonica/bug_squashing.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.19 03:05:46
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill the klicnik warriors near the gates of North Qeynos.", 25, 100, "There are way too many klicnik warriors around here! I should destroy a bunch of them before they get any closer to Qeynos!", 162, 120253,120367)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have squashed a large amount of the klicnik warriors in Antonica.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have squashed the klicnik warriors.")
+
+ UpdateQuestDescription(Quest, "I have destroyed quite a few klicnik warriors, I hope this helps keep them away from Qeynos.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/corroborating_the_existence_of_the_stormhold_library.lua b/server/Quests/Antonica/corroborating_the_existence_of_the_stormhold_library.lua
new file mode 100755
index 000000000..8916cfa30
--- /dev/null
+++ b/server/Quests/Antonica/corroborating_the_existence_of_the_stormhold_library.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : Quests/Antonica/corroborating_the_existence_of_the_stormhold_library.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.01 10:04:40
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "I need to find the Stormhold library.", 1, "I need to find the library inside Stormhold to verify Timothus Yelrow's information.", 11, 3, -26, -129, 12)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone("Stormhold")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You? Hmm ... you do look sufficiently clever in a peasant-like way. Perhaps you could survive a minute or two inside Stormhold. I will gladly pay you if you can penetrate Stormhold and return to me with information that verifies the existence of the library.")
+ Dialog.AddVoiceover("voiceover/english/timothus_yerlow/antonica/timothusyelrow003.mp3", 911702811, 1037330518)
+ PlayFlavor(QuestGiver,"","","ponder",0,0,Player)
+ Dialog.AddOption("I'll find it. A library doesn't have too many places to hide.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found the library.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found the library inside Stormhold.")
+ UpdateQuestZone("Antonica")
+
+ AddQuestStepChat(Quest, 2, "I need to return to Timothus Yelrow.", 1, "I need to return to Timothus Yelrow to tell him of my findings.", 11, 120299)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I told Timothus Yelrow what I found.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I told Timothus Yelrow of my findings in the library.")
+
+ UpdateQuestDescription(Quest, "I was able to find the library in Stormhold and provided Timothus Yelrow with information to verify what he previous heard. It looks like Timothus has plans concerning the uncovered library.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Antonica/deadly_undead.lua b/server/Quests/Antonica/deadly_undead.lua
new file mode 100755
index 000000000..c5f83b5c8
--- /dev/null
+++ b/server/Quests/Antonica/deadly_undead.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Antonica/deadly_undead.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.17 11:05:15
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "Slay the Caltorsis Clerics", 20, 100, "This journal must have been lost several years ago.", 611,120131)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have slain enough Caltorsis Clerics")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have been able to rid antonica of several Caltorsis Clerics")
+
+ UpdateQuestDescription(Quest, "The undead Caltorsis in this area seem to be unaffected by my efforts. However, I have learned a great deal about the undead of Antonica. In the future, perhaps this experience will be of some use to me. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/deliveries_for_flores.lua b/server/Quests/Antonica/deliveries_for_flores.lua
index d53dfc9dd..a3bd51c57 100755
--- a/server/Quests/Antonica/deliveries_for_flores.lua
+++ b/server/Quests/Antonica/deliveries_for_flores.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to deliver a crate to Merchant Novak.", 1, "I must deliver a crate of Flores' merchandise to Merchant Novak by the lighthouse.", 654, 120099)
@@ -17,10 +18,12 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/merchant_flores/antonica/merchantflores002.mp3", "", "", 2413854703, 2789428713, Player)
- AddConversationOption(conversation, "Hey, wait that's my journal... err, all right I suppose it's too late.")
- StartConversation(conversation, QuestGiver, Player, "I'll pay you a cut of my earnings. You'll take the first crate of supplies to Novak over by the lighthouse. The second must go to Geddard at Gnollslayer Keep. I see you've a little book. Here, let me write down where you need to go. Make sure to bring back their delivery pouches when you're through.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'll pay you a cut of my earnings. You'll take the first crate of supplies to Novak over by the lighthouse. The second must go to Geddard at Gnollslayer Keep. I see you've a little book. Here, let me write down where you need to go. Make sure to bring back their delivery pouches when you're through.")
+ Dialog.AddVoiceover("voiceover/english/merchant_flores/antonica/merchantflores002.mp3", 2413854703, 2789428713)
+ PlayFlavor(QuestGiver, "", "", "point", 0, 0, Player)
+ Dialog.AddOption("Hey, wait that's my journal... err, all right I suppose it's too late.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/delivery_from_sayers_outfitters.lua b/server/Quests/Antonica/delivery_from_sayers_outfitters.lua
new file mode 100755
index 000000000..1a2dde543
--- /dev/null
+++ b/server/Quests/Antonica/delivery_from_sayers_outfitters.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : Quests/Antonica/delivery_from_sayers_outfitters.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.11 06:05:32
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: Battle with the Timberclaws
+ Followed by: Vengeance for Marlea Sayer
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "Speak to Merchant Duffy near the gates of Qeynos. ", 1, "I must go towards the gates of Qeynos in Antonica and deliver a shipment to a merchant called Duffy.", 11, 120086)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I have a list of customers that just can't make it to Sayer's. Could you deliver their goods to them, and save me the trouble of sending one of my merchants and losing business?")
+ Dialog.AddVoiceover("voiceover/english/sighard_sayer/antonica/sighardsayer003.mp3", 1632310512, 2700305313)
+ Dialog.AddOption("Consider it done, Mr. Sayer. ")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "Spoke to Duffy.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I delivered a shipment to a merchant called Duffy.")
+
+ AddQuestStepChat(Quest, 2, "Speak to Lord Quinn at the Keep of the Ardent Needle.", 1, "I must follow the great north road in Antonica to deliver a shipment to Lord Quinn at the Keep of the Ardent Needle.", 11, 120200)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "Spoke to Lord Quinn Clothspinner. ")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I made it to the keep of the Ardent Needle and found Lord Quinn.")
+
+ AddQuestStep(Quest, 3, "Inspect Caltorsis Keep for the needles.", 1, 100, "Lord Quinn wants me to find something called Nerissa's Needles in the ruins of Caltorsis east of the Keep of the Ardent Needle.", 2176)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I found Nerissa Clothpinner's sewing kit. ")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I found a sewing kit called Nerissa's Needles in the ruins of Caltorsis.")
+
+ AddQuestStepChat(Quest, 4, "Return to Lord Quinn Clothspinner.", 1, "I must take the sewing kit to Lord Quinn at the Keep of the Ardent Needle.", 648, 120200)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "Gave Nerissa's sewing kit to Lord Quinn Clothspinner.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I took the sewing kit to Lord Quinn at the Keep of the Ardent Needle.")
+
+ AddQuestStepChat(Quest, 5, "Speak to Sighard at Sayer's Outfitters.", 1, "I must return to Sighard Sayer at Sayer's Outfitters. I will give him the payments for goods delivered.", 11, 120283)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Spoke to Sighard")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I gave the payments to Sighard Sayer.")
+
+ UpdateQuestDescription(Quest, "After a long journey through the countryside of Antonica I finally delivered both shipments to their clients. Sayer paid me well for this deed. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Antonica/does_the_underforge_exist.lua b/server/Quests/Antonica/does_the_underforge_exist.lua
index 8b8cd0485..e2c0ad508 100755
--- a/server/Quests/Antonica/does_the_underforge_exist.lua
+++ b/server/Quests/Antonica/does_the_underforge_exist.lua
@@ -7,20 +7,24 @@
Zone : Antonica
Quest Giver:
Preceded by: None
- Followed by: Nightbow's Deposit
+ Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function Init(Quest)
AddQuestStepZoneLoc(Quest, 1, "I need to find the Underforge.", 10, "I should see if I could find the Underforge within Stormhold.", 11, -130, -1, -55, 15)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stormhold")
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/kinamer_galemaul/antonica/kinamergalemaul004.mp3", "", "", 2013410863, 3232485103, Player)
- AddConversationOption(conversation, "Yes, that seems to be my experience.")
- StartConversation(conversation, QuestGiver, Player, "Thank you much. A rumor's not worth a heap of slag ... but sometimes you can find a grain of truth in a rumor.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Thank you much. A rumor's not worth a heap of slag ... but sometimes you can find a grain of truth in a rumor.")
+ Dialog.AddVoiceover("voiceover/english/kinamer_galemaul/antonica/kinamergalemaul004.mp3", 2013410863, 3232485103)
+ Dialog.AddOption("Yes, that seems to be my experience.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -38,6 +42,7 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I found the Underforge.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found the location of the Underforge within Stormhold.")
+ UpdateQuestZone(Quest,"Antonica")
AddQuestStepChat(Quest, 2, "I need return to Kinamer Galemaul.", 1, "I should return to Kinamer Galemaul and tell him about the Underforge.", 11, 120278)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
diff --git a/server/Quests/Antonica/exploring_the_chessboard.lua b/server/Quests/Antonica/exploring_the_chessboard.lua
index ba138a96b..9ae2f58ea 100755
--- a/server/Quests/Antonica/exploring_the_chessboard.lua
+++ b/server/Quests/Antonica/exploring_the_chessboard.lua
@@ -9,25 +9,30 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepZoneLoc(Quest, 1, "I must find the chessboard floor in Stormhold.", 10, "I should venture into the Stormhold to see if this giant chessboard floor exists.", 0, 70, -5, -100, 15)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stormhold")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I found the chessboard floor in Stormhold.")
UpdateQuestTaskGroupDescription(Quest, 1, "I saw the remarkable chessboard in the Stormhold.")
+ UpdateQuestZone(Quest,"Antonica")
AddQuestStepChat(Quest, 2, "I must speak with Breeza Harmet.", 1, "I should return to Breeza Harmet at Windstalker Pond in Antonica and tell her of the giant chessboard.", 0, 120159)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/breeza_harmet/antonica/breezaharmet002.mp3", "", "", 3534908306, 1371562053, Player)
- AddConversationOption(conversation, "Most call it Stormhold. I have heard tales of it. If I see this giant chessboard, I will return to tell you.")
- StartConversation(conversation, QuestGiver, Player, "Oh no, not I. I'm not an adventurer like you. I'm a mere fletcher who enjoys a good game of chess. Unfortunately, the banquet hall is within Stormguard, the legendary home of the Knights of Thunder. If you come across the fortress in your travels, would you return to me and let me know if the chessboard hall truly exists?")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Oh no, not I. I'm not an adventurer like you. I'm a mere fletcher who enjoys a good game of chess. Unfortunately, the banquet hall is within Stormguard, the legendary home of the Knights of Thunder. If you come across the fortress in your travels, would you return to me and let me know if the chessboard hall truly exists?")
+ Dialog.AddVoiceover("voiceover/english/breeza_harmet/antonica/breezaharmet002.mp3", 3534908306, 1371562053)
+ PlayFlavor(QuestGiver, "", "", "no", 0, 0, Player)
+ Dialog.AddOption("Most call it Stormhold. I have heard tales of it. If I see this giant chessboard, I will return to tell you.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0221.lua b/server/Quests/Antonica/far_seas_requisition_ant0221.lua
new file mode 100755
index 000000000..0b10a1f54
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0221.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0221.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 03:05:44
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver: ant0221
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some young kodiaks", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 127, 120294,341009)
+ AddQuestStepKill(Quest, 2, "I must kill some thicket lizards", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 172, 120030)
+ AddQuestStepKill(Quest, 3, "I must kill some sonic shriekers", 2, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 140, 120297)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some young kodiaks.")
+
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some thicket lizards.")
+
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have killed some sonic shriekers")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5818,1) and QuestStepIsComplete(Player,5818,2) and QuestStepIsComplete(Player,5818,3) then
+
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 4, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0229.lua b/server/Quests/Antonica/far_seas_requisition_ant0229.lua
new file mode 100755
index 000000000..4e07b1e1e
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0229.lua
@@ -0,0 +1,69 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0229.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:01
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some rotstuffed scarecrows", 4, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 182, 121300)
+ AddQuestStepKill(Quest, 2, "I must kill some earth burrowers", 2, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 382, 120157)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some rotstuffed scarecrows")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some earth burrowers")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+ function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5819,1) and QuestStepIsComplete(Player,5819,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+ AddQuestStepChat(Quest, 3, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0235.lua b/server/Quests/Antonica/far_seas_requisition_ant0235.lua
new file mode 100755
index 000000000..9bd5d87f6
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0235.lua
@@ -0,0 +1,81 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0235.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:06
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some klicnik mites.", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 162, 120067)
+ AddQuestStepKill(Quest, 2, "I must kill some moat rats", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 99, 120066)
+ AddQuestStepKill(Quest, 3, "I must kill some lowland vipers", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 102, 120068)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some klicnik mites.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some moat rats.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have killed some lowland vipers.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5820,1) and QuestStepIsComplete(Player,5820,2) and QuestStepIsComplete(Player,5820,3) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 4, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0243.lua b/server/Quests/Antonica/far_seas_requisition_ant0243.lua
new file mode 100755
index 000000000..590394742
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0243.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0243.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:00
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some lowland badgers", 10, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 128,120213)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some lowland badgers.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 2, "I must find Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0244.lua b/server/Quests/Antonica/far_seas_requisition_ant0244.lua
new file mode 100755
index 000000000..f3f2eb01a
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0244.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0244.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:01
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some adult timber wolves", 10, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 126, 120008,3250109)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed adult some timber wolves.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 2, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0351.lua b/server/Quests/Antonica/far_seas_requisition_ant0351.lua
new file mode 100755
index 000000000..ac8bb4bb4
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0351.lua
@@ -0,0 +1,72 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0351.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:13
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some bear cubs", 5, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 93, 120257,120473)
+ AddQuestStepKill(Quest, 2, "I must kill some pond beavers", 5, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 94, 120415)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some bear cubs")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some pond beavers.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5823,1) and QuestStepIsComplete(Player,5823,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 3, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant037.lua b/server/Quests/Antonica/far_seas_requisition_ant037.lua
new file mode 100755
index 000000000..b12c241fe
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant037.lua
@@ -0,0 +1,72 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant037.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:52
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some thorn briars", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 197, 120142 )
+ AddQuestStepKill(Quest, 2, "I must kill some stonejaw lizards", 2, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 101, 120179)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some thorn briars")
+ QuestCheck(Quest, QuestGiver, Player)
+
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some stonejaw lizards")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5824,1) and QuestStepIsComplete(Player,5824,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 3, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0424.lua b/server/Quests/Antonica/far_seas_requisition_ant0424.lua
new file mode 100755
index 000000000..5cd109b3b
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0424.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0424.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:58
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some lowland geckos", 4, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 172, 120207)
+ AddQuestStepKill(Quest, 2, "I must kill some coldwind manta rays", 6, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 130, 120084)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some lowland geckos")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some coldwind manta rays.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5825,1) and QuestStepIsComplete(Player,5825,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 3, "I must speak with Taskmaster Lynette", 1, "I must find Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0437.lua b/server/Quests/Antonica/far_seas_requisition_ant0437.lua
new file mode 100755
index 000000000..34c50f5b4
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0437.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0437.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:51
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some adult haze kodiaks", 5, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 127, 120312)
+ AddQuestStepKill(Quest, 2, "I must kill some stonejaw lizards", 2, 100, "I must hunt down the creatures in Antonica to fill the requisition.", 101, 120179)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some haze kodiaks.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some stonejaw lizards")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5826,1) and QuestStepIsComplete(Player,5826,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 3, "I must speak with Taskmaster Lynette", 1, "I must find the Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/far_seas_requisition_ant0724.lua b/server/Quests/Antonica/far_seas_requisition_ant0724.lua
new file mode 100755
index 000000000..ec723bdbf
--- /dev/null
+++ b/server/Quests/Antonica/far_seas_requisition_ant0724.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Quests/Antonica/far_seas_requisition_ant0724.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 04:05:43
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill an ancient octopus for its ink sac", 1, 100, "I must hunt down ancient octopi in Antonica to fill the requisition.", 318,120032 ,120085,120193,120194)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have found an ancient octopus ink sac.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+
+ AddQuestStepChat(Quest, 2, "I must speak with Taskmaster Lynette", 1, "I must find the Taskmaster Lynette at Coldwind Point in Antonica and deliver this fulfilled contract.", 75, 121256)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I visited Taskmaster Lynette.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the requisition goods to the Taskmaster.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the Taskmaster out in Antonica. I have been paid in full for this work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/fishing_hole_hunt.lua b/server/Quests/Antonica/fishing_hole_hunt.lua
index 319360630..73c9b4261 100755
--- a/server/Quests/Antonica/fishing_hole_hunt.lua
+++ b/server/Quests/Antonica/fishing_hole_hunt.lua
@@ -12,15 +12,15 @@
function Init(Quest)
AddQuestStepZoneLoc(Quest, 1, "I must check the nearby Windstalker Village pond.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2540, -1900, 0, -660, 12)
- AddQuestStepZoneLoc(Quest, 2, "I should check Crater Pond near the gate to South Qeynos.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2541, 150, 0, 490, 12)
- AddQuestStepZoneLoc(Quest, 3, "Check the pond in Archer Woods, which is located in the southern area of Antonica.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2542, -750, 0, 450, 12)
- AddQuestStepZoneLoc(Quest, 4, "Visit the waterfall east of Blackburrow.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2544, -1800, 0, 800, 12)
- AddQuestStepZoneLoc(Quest, 5, "Check the moat at the Keep of the Gnollslayers to the south.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2547, -2100, 0, 430, 12)
+ AddQuestStepZoneLoc(Quest, 2, "I should check Crater Pond near the gate to South Qeynos.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2541, 150, 0, 490, 12)
+ AddQuestStepZoneLoc(Quest, 3, "Check the pond in Archer Woods, which is located in the southern area of Antonica.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2542, -750, 0, 450, 12)
+ AddQuestStepZoneLoc(Quest, 4, "Visit the waterfall east of Blackburrow.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2544, -1800, 0, 800, 12)
+ AddQuestStepZoneLoc(Quest, 5, "Check the moat at the Keep of the Gnollslayers to the south.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2547, -2100, 0, 430, 12)
AddQuestStepZoneLoc(Quest, 6, "Check the moat at the Keep of the Ardent Needle, southwest of the Oracle Tower Station.", 1, "Blarton wants me to check on all of his favorite fishing spots in Antonica.", 2548, -550, 0, -330, 12)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
- AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
diff --git a/server/Quests/Antonica/freedom.lua b/server/Quests/Antonica/freedom.lua
new file mode 100755
index 000000000..a943177b5
--- /dev/null
+++ b/server/Quests/Antonica/freedom.lua
@@ -0,0 +1,87 @@
+--[[
+ Script Name : Quests/Antonica/freedom.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 02:05:23
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "I should check the old Tomb of Varsoon to see if I can find a key to open this lock.", 6, "I may be able to find out what is hidden beneath all of the chains if I take the extra effort to break them open.", 11, 363.13, -19.49, -662.83, 12)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've found the Tomb, and when I did, I thought I heard a snapping sound coming from the chained bundle.")
+ AddQuestStep(Quest,2,"I should inspect the chained bundle again.",1, 100,"I may be able to find out what is hidden beneath all of the chains if I take the extra effort to break them open.", 1010)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "The lock disarmed near the old Tomb of Varsoon!")
+ AddQuestStepKill(Quest, 3, "I should now kill the crabs of Antonica and gather their claws to try to saw through the leather straps on the chained bundle.", 5, 100, "I may be able to find out what is hidden beneath all of the chains if I take the extra effort to break them open.", 76, 120687, 120118,120610,120417)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've found a number of different crab claws. Hopefully they might help to cut away the straps binding the chains.")
+ AddQuestStep(Quest,4,"Use the claws on the chained bundle.",1, 100,"I may be able to find out what is hidden beneath all of the chains if I take the extra effort to break them open.", 1010)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've managed to cut the leather straps on the chained bundle.")
+ AddQuestStepKill(Quest, 5, "I need to kill the Dark Coven conjurors to see if they have any kind of device that can cut through steel chains.", 1, 50, "I may be able to find out what is hidden beneath all of the chains if I take the extra effort to break them open.", 26, 120182)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've found something called an Arcane Saw. I hope this will do the trick.")
+ AddQuestStep(Quest,6,"Use the arcane saw on the chained bundle.",1, 100,"I may be able to find out what is hidden beneath all of the chains if I take the extra effort to break them open.", 1010)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I've found that hidden inside the chained bundle was the legendary maul, Freedom.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've found that hidden inside the chained bundle was the legendary maul, Freedom.")
+
+ UpdateQuestDescription(Quest, "I've destroyed all of the chains that were hiding away Freedom, the legendary maul.")
+ GiveQuestReward(Quest, Player)
+end
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+end
+end
+
diff --git a/server/Quests/Antonica/fur_lined_gloves.lua b/server/Quests/Antonica/fur_lined_gloves.lua
new file mode 100755
index 000000000..367119a6d
--- /dev/null
+++ b/server/Quests/Antonica/fur_lined_gloves.lua
@@ -0,0 +1,95 @@
+--[[
+ Script Name : Quests/Antonica/fur_lined_gloves.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 04:05:19
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver: Patch of Dog Fur
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I'm going to need a larger patch of fur. I should see if I can get some from the gnolls in Antonica.", 10, 80, "I need to work hard to create a nice pair of gloves.", 1094, 120013,120015,120123,120184, 120203 ,120212 ,120251 , 120252 ,120290 ,120291,120295 , 120296 ,120300 ,120304 ,120310,120340 ,120355, 120361 ,120362, 120363 , 120364 ,120376 ,120378 ,120379, 120380, 120395,120397 ,120407,120420, 120424, 120425, 120426, 120427, 120429,120430, 120437, 120441, 120804, 120416, 120419, 120858, 121488, 121833, 121845 )
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have found a larger patch of fur.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found a larger patch of fur.")
+
+ AddQuestStep(Quest,2," I should check both this patch of fur and the small one together.",1, 100,"I need to work hard to create a nice pair of gloves.", 127)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have compared the furs.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have compared the furs.")
+
+ AddQuestStep(Quest, 3, "I'm going to need some down feathers to stuff the gloves with. I should check the hay bales near the griffin towers.", 1, 100,"I need to work hard to create a nice pair of gloves.", 11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have found some down griffon feathers I need for the gloves.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have found some down griffon feathers I need for the gloves.")
+
+ AddQuestStep(Quest,4,"I should stuff the gloves with feathers.",1, 100,"I need to work hard to create a nice pair of gloves.", 127)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have stuffed the down filled gloves.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have stuffed the down filled gloves. I need something to close up the seams.")
+
+ AddQuestStepKill(Quest, 5, "I need to sew the lining shut. I should gather some tendons from a Caltorsis knight to use as string.", 2, 70, "I need to work hard to create a nice pair of gloves.", 382, 120126)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have collected the sinew to make these gloves.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I have collected the sinew needed to close the lining on these gloves.")
+
+ AddQuestStep(Quest,6," I should examine the fur again to sew them together.",1, 100,"I need to work hard to create a nice pair of gloves.", 127)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I have closed the seams in the gloves!")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've been able to create a nice set of fur lined gloves.")
+
+ UpdateQuestDescription(Quest, "I've been able to make a nice set of gloves for my hands. And they're fur lined, too!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+end
+end
diff --git a/server/Quests/Antonica/getting_the_axe.lua b/server/Quests/Antonica/getting_the_axe.lua
index 5c12551fa..d0e43a1a7 100755
--- a/server/Quests/Antonica/getting_the_axe.lua
+++ b/server/Quests/Antonica/getting_the_axe.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to hunt Sabertooth miners.", 10, 100, "I need to hunt Sabertooth miners inside of Blackburrow.", 1643, 170010)
@@ -17,10 +18,12 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/squire_kivan/antonica/squirekivan005.mp3", "", "", 1777480870, 844135854, Player)
- AddConversationOption(conversation, "Thank you, I will do my best.")
- StartConversation(conversation, QuestGiver, Player, "Yes. You can help us. The Sabertooth clan is getting ore from somewhere in the hills and I need you to find out where. Bring me some mining picks to prove that you found the mine.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Yes. You can help us. The Sabertooth clan is getting ore from somewhere in the hills and I need you to find out where. Bring me some mining picks to prove that you found the mine.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan005.mp3", 1777480870, 844135854)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("Thank you, I will do my best.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/how_did_their_garden_grow.lua b/server/Quests/Antonica/how_did_their_garden_grow.lua
index e116aba97..6d02a3233 100755
--- a/server/Quests/Antonica/how_did_their_garden_grow.lua
+++ b/server/Quests/Antonica/how_did_their_garden_grow.lua
@@ -9,19 +9,23 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepZoneLoc(Quest, 1, "I should go to Stormhold to find the atrium.", 10, "I should go to Stormhold and find out for Darmen how the Knights provided food for themselves.", 11, -55, -25, -100, 15)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stormhold")
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/darmen_sproutmore/antonica/darmensproutmore003.mp3", "", "", 1491369381, 2303497363, Player)
- AddConversationOption(conversation, "Thank you for the concern.")
- StartConversation(conversation, QuestGiver, Player, "That's very generous of you. I'm curious to a fault, you know. However ... if you do go into Stormhold, please use caution.")
-
+ PlayFlavor(QuestGiver, "", "", "", 0, 0, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("That's very generous of you. I'm curious to a fault, you know. However ... if you do go into Stormhold, please use caution.")
+ Dialog.AddVoiceover("voiceover/english/darmen_sproutmore/antonica/darmensproutmore003.mp3", 1491369381, 2303497363)
+ PlayFlavor(QuestGiver, "", "", "applaude", 0, 0, Player)
+ Dialog.AddOption("Thank you for the concern.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -35,7 +39,7 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I found the atrium.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found an atrium in Stormhold where it looks like they grew plants even underground.")
-
+ UpdateQuestZone(Quest,"Antonica")
AddQuestStepChat(Quest, 2, "I need to return to Darmen.", 1, "I need to return to Darmen to let her know about the atrium.", 11, 120366)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
diff --git a/server/Quests/Antonica/hunters_manifest.lua b/server/Quests/Antonica/hunters_manifest.lua
new file mode 100755
index 000000000..ff591f340
--- /dev/null
+++ b/server/Quests/Antonica/hunters_manifest.lua
@@ -0,0 +1,59 @@
+
+--[[
+ Script Name : Quests/Antonica/hunters_manifest.lua
+ Script Purpose : Handles the quest, "Hunter's Manifest"
+ Script Author : premierio015
+ Script Date : 06.04.2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : Antonica
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+ THIS QUEST IS NOT A DUPE DONT REMOVE
+--]]
+
+require "SpawnScripts/Generic/PlayerHistory"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to hunt various hawks in Antonica", MakeRandomInt(10, 15), 100, "I have decided to prove my worth as a hunter by bringing down game from all parts of Antonica.", 156, 120188, 120337, 120064, 120029)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+
+end
+
+
+
+
+
+function Accepted(Quest, QuestGiver, Player)
+SetPlayerHistory(Player, 8, 1)
+end
+
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+SetPlayerHistory(Player, 8, 0)
+end
+
+
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have hunted the various hawks in Antonica and have proven my abilities as a hunter! ")
+
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have proven my abilties as a hunter!")
+ UpdateQuestDescription(Quest, "I have hunted several different types of Antonican creatures, proving my skill in hunting to all those who cross my path.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+if Step == 1 then
+QuestComplete(Quest, QuestGiver, Player)
+end
+ end
+
+
+
diff --git a/server/Quests/Antonica/hunters_manifest2.lua b/server/Quests/Antonica/hunters_manifest2.lua
new file mode 100755
index 000000000..0c3a838a2
--- /dev/null
+++ b/server/Quests/Antonica/hunters_manifest2.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Quests/Antonica/hunters_manifest2.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.14 07:04:13
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+ THIS QUEST IS NOT A DUPE DONT REMOVE
+--]]
+
+require "SpawnScripts/Generic/PlayerHistory"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to hunt various wolves in Antonica", MakeRandomInt(10, 15), 100, "I have decided to prove my worth as a hunter by bringing down game from all parts of Antonica.", 102, 120008, 120266, 120106)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+SetPlayerHistory(Player, 8, 1)
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function Deleted(Quest, QuestGiver, Player)
+SetPlayerHistory(Player, 8, 0)
+end
+
+
+function QuestComplete (QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have hunted the various wolves in Antonica and have proven my abilities as a hunter! ")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have proven my abilties as a hunter!")
+ UpdateQuestDescription(Quest, "I have hunted several different types of Antonican creatures, proving my skill in hunting to all those who cross my path.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+if Step == 1 then
+QuestComplete(Quest, QuestGiver, Player)
+end
+end
+
diff --git a/server/Quests/Antonica/hunters_manifest3.lua b/server/Quests/Antonica/hunters_manifest3.lua
new file mode 100755
index 000000000..23720489a
--- /dev/null
+++ b/server/Quests/Antonica/hunters_manifest3.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Quests/Antonica/hunters_manifest3.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.14 08:04:46
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+ THIS QUEST IS NOT A DUPE DONT REMOVE
+--]]
+require "SpawnScripts/Generic/PlayerHistory"
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to hunt various bears in Antonica", MakeRandomInt(10, 15), 100, "I have decided to prove my worth as a hunter by bringing down game from all parts of Antonica.", 174, 120294, 120312, 120473, 120119, 120471, 120140)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+SetPlayerHistory(Player, 8, 1)
+end
+
+function Deleted(Quest, QuestGiver, Player)
+SetPlayerHistory(Player, 8, 0)
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+UpdateQuestStepDescription(Quest, 1, "I have hunted the various bears in Antonica and have proven my abilities as a hunter! ")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have proven my abilties as a hunter!")
+ UpdateQuestDescription(Quest, "I have hunted several different types of Antonican creatures, proving my skill in hunting to all those who cross my path.")
+ GiveQuestReward(Quest, Player)
+end
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+if Step == 1 then
+QuestComplete(Quest, QuestGiver, Player)
+end
+end
+
diff --git a/server/Quests/Antonica/ignatia_cellus_history_of_antonica.lua b/server/Quests/Antonica/ignatia_cellus_history_of_antonica.lua
new file mode 100755
index 000000000..fc10071e6
--- /dev/null
+++ b/server/Quests/Antonica/ignatia_cellus_history_of_antonica.lua
@@ -0,0 +1,161 @@
+--[[
+ Script Name : Quests/Antonica/ignatia_cellus_history_of_antonica.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.30 02:05:23
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to search Sabertooth battlers.", 6, 100, "I want to find the pages to the book.", 611, 120184)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have searched Sabertooth battlers and found the page!")
+
+ AddQuestStep(Quest, 2, "I want to read the page I found.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I believe the Sabertooth rune casters of Antonica will have more of these pages.")
+
+ AddQuestStepKill(Quest, 3, "I need to search for Sabertooth rune casters.", 4, 100, "I want to find the pages to the book.", 611, 120300)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have searched Sabertooth rune casters and found the page!")
+
+ AddQuestStep(Quest, 4, "I want to read the page I found.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I believe the Sabertooth battlers of Antonica will have more of these pages.")
+
+ AddQuestStepKill(Quest, 5, "I need to search more Sabertooth battlers.", 8, 100, "I want to find the pages to the book.", 611, 120184)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have searched more Sabertooth battlers and found the page!")
+
+ AddQuestStep(Quest, 6, "I want to read the page I found.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I believe the Sabertooth warlocks of Antonica will have more of these pages.")
+
+ AddQuestStepKill(Quest, 7, "I need to search more Sabertooth warlocks.", 3, 100, "I want to find the pages to the book.", 611, 120300)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I have searched more Sabertooth warlocks and found the page!")
+
+ AddQuestStep(Quest, 8, "I want to read the page I found.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I believe the Sabertooth battlers of Antonica will have more of these pages.")
+
+ AddQuestStepKill(Quest, 9, "I need to search the last of the Sabertooth battlers.", 8, 100, "I want to find the pages to the book.", 611, 120184)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I have found the final battler page!")
+
+ AddQuestStep(Quest, 10, "I want to read the page I found.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I believe the Sabertooth tormentors of Antonica will have more of these pages.")
+
+ AddQuestStepKill(Quest, 11, "I need to search Sabertooth tormentors.", 1, 100, "I want to find the pages to the book.", 611, 120380)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I have searched Sabertooth tormentors and found the page!")
+
+ AddQuestStep(Quest, 12, "I want to read the page I found.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I believe the Sabertooth battlers of Antonica will have more of these pages.")
+
+ AddQuestStepKill(Quest, 13, "I need to search Sabertooth battlers.", 1, 100, "I want to find the pages to the book.", 611, 120184)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I have searched the Sabertooth camp guards and found the final page!")
+
+ AddQuestStep(Quest, 14, "I want to read the last page of the book.", 1, 100, "I want to find the pages to the book.", 185)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I read the page I found.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've found all the missing pages.")
+
+ UpdateQuestDescription(Quest, "I've gathered many scattered pages of Ignatia Cellus' book. I wonder whether any of her descendants also wrote any histories? I shall keep my eyes open. Perhaps, someday, I'll find other tomes such as this throughout Norrath.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/isabella_cellus_history_of_antonica.lua b/server/Quests/Antonica/isabella_cellus_history_of_antonica.lua
new file mode 100755
index 000000000..f16c9e510
--- /dev/null
+++ b/server/Quests/Antonica/isabella_cellus_history_of_antonica.lua
@@ -0,0 +1,196 @@
+--[[
+ Script Name : Quests/Antonica/isabella_cellus_history_of_antonica.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.20 03:05:49
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill 5 Sabertooth runts.", 5, 100, "I must find all the missing pages of this tome.", 611, 120092)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed 5 Sabertooth runts.")
+
+ AddQuestStep(Quest, 2, "I need to read the page I found.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've read the next page and want to find more.")
+
+ AddQuestStepKill(Quest, 3, "I need to kill 8 Sabertooth runts.", 8, 100, "I must find all the missing pages of this tome.", 611, 120092)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have killed 8 Sabertooth runts.")
+
+ AddQuestStep(Quest, 4, "I need to read the page I just found.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've read the next page and should slay Sabertooth champions to find another page.")
+
+ AddQuestStepKill(Quest, 5, "I need to kill 4 Sabertooth champions.", 4, 100, "I must find all the missing pages of this tome.", 611, 120425,120430,170083)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have killed 4 Sabertooth champions.")
+
+ AddQuestStep(Quest, 6, "I need to read the latest page.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've read the next page and should slay Sabertooth champions to find another page.")
+
+ AddQuestStepKill(Quest, 7, "I need to kill 5 Sabertooth champions.", 5, 100, "I must find all the missing pages of this tome.", 611, 120425,120430,170083)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I have killed 5 Sabertooth champions.")
+
+ AddQuestStep(Quest, 8, "I need to read the latest page.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've read the next page and should slay scrawny Sabertooths in Blackburrow to find another page.")
+
+ AddQuestStepKill(Quest, 9, "I need to kill 5 scrawny Sabertooths in Blackburrow .", 5, 100, "I must find all the missing pages of this tome.", 611, 170004)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I have killed 5 scrawny Sabertooths.")
+
+ AddQuestStep(Quest, 10, "I need to read the latest page.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've read the next page and should slay scrawny Sabertooths in Blackburrow to find another page.")
+
+ AddQuestStepKill(Quest, 11, "I need to kill 8 scrawny Sabertooths in Blackburrow .", 8, 100, "I must find all the missing pages of this tome.", 611, 170004)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I have killed 8 scrawny Sabertooths.")
+
+ AddQuestStep(Quest, 12, "I need to read the latest page.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've read the next page and should slay ridge rats in Blackburrow to find another page.")
+
+ AddQuestStepKill(Quest, 13, "I need to kill 6 ridge rats in Blackburrow .", 6, 100, "I must find all the missing pages of this tome.", 611, 170001)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I have killed 6 ridge rats.")
+
+ AddQuestStep(Quest, 14, "I need to read the latest page.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "I've read the next page and should slay scrawny Sabertooths in Blackburrow to find another page.")
+
+ AddQuestStepKill(Quest, 15, "I need to kill 6 scrawny Sabertooths.", 6, 100, "I must find all the missing pages of this tome.", 611, 170004)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, "I have killed 6 scrawny Sabertooths.")
+
+ AddQuestStep(Quest, 16, "I need to read the latest page.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 16, "Step16Complete")
+end
+
+function Step16Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 16, "I've read the next page and should slay Sabertooth anglers to find another page.")
+
+ AddQuestStepKill(Quest, 17, "I need to kill 5 Sabertooth angler in Blackburrow.", 5, 100, "I must find all the missing pages of this tome.", 611, 170023 )
+ AddQuestStepCompleteAction(Quest, 17, "Step17Complete")
+end
+
+function Step17Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 17, "I have killed 5 Sabertooth anglers.")
+
+ AddQuestStep(Quest, 18, "I need to read the last page of the book.", 1, 100, "I must find all the missing pages of this tome.", 185)
+ AddQuestStepCompleteAction(Quest, 18, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 18, "I've read the latest page.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've found the missing pages.")
+
+ UpdateQuestDescription(Quest, "I've gathered many scattered pages of Isabella Cellus' book. I wonder whether any of her descendants also wrote any histories? I shall keep my eyes open. Perhaps, someday, I'll find other tomes such as this throughout Norrath.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step14Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step15Complete(Quest, QuestGiver, Player)
+ elseif Step == 16 then
+ Step16Complete(Quest, QuestGiver, Player)
+ elseif Step == 17 then
+ Step17Complete(Quest, QuestGiver, Player)
+ elseif Step == 18 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/jolina_fairfeathers_gravestone.lua b/server/Quests/Antonica/jolina_fairfeathers_gravestone.lua
new file mode 100755
index 000000000..b80f89c81
--- /dev/null
+++ b/server/Quests/Antonica/jolina_fairfeathers_gravestone.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Quests/Antonica/jolina_fairfeathers_gravestone.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 04:05:04
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver: Tombstone in Antoncia
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill twelve highwaymen in Antonica.", 15, 100, "Poor Jolina was killed by highwaymen for a mere loaf of bread and a bag full of seeds. I should seek out these highwaymen and exact justice upon them in her name!", 611, 120161,120162,120171,121858)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have exacted justice upon the highwaymen in the name of Jolina Fairfeather.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have brought the highwaymen to justice.")
+
+ UpdateQuestDescription(Quest, "I have sought out the highwaymen in Antonica and made them pay for what they did to poor Jolina Fairfeather.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/lord_grimrots_scythe.lua b/server/Quests/Antonica/lord_grimrots_scythe.lua
index 5bb6bd82e..f69b83a7a 100755
--- a/server/Quests/Antonica/lord_grimrots_scythe.lua
+++ b/server/Quests/Antonica/lord_grimrots_scythe.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "Grel Stoneshearer overlooks the Keep of the Ardent Needle from a nearby hilltop.", 1, "I need to speak with the dwarven knights in Antonica.", 11, 120204)
@@ -21,11 +22,13 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_006.mp3", "", "", 3647805338, 2173571937, Player)
- AddConversationOption(conversation, "I can do that.")
- StartConversation(conversation, QuestGiver, Player, "I need those darned dispatches brought back to me! You'd think that folks who get to run around looking for danger would realize how important it is to send word back to ... well, me. Since they haven't, I need someone to knock them upside their heads and get the information, then bring it back to me.")
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I need those darned dispatches brought back to me! You'd think that folks who get to run around looking for danger would realize how important it is to send word back to ... well, me. Since they haven't, I need someone to knock them upside their heads and get the information, then bring it back to me.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_006.mp3", 3647805338, 2173571937)
+ PlayFlavor(QuestGiver, "", "", "grumble", 0, 0, Player)
+ Dialog.AddOption("I can do that.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/meteoric_hoop.lua b/server/Quests/Antonica/meteoric_hoop.lua
new file mode 100755
index 000000000..c2b1cce2d
--- /dev/null
+++ b/server/Quests/Antonica/meteoric_hoop.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : Quests/Antonica/meteoric_hoop.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 03:05:09
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to gather a lot of ink from the octopi in Antonica.", 20, 100, "If I'm going to shape this meteor chunk, I'm going to have to put forth some extra effort.", 1207, 120032,120085 ,120193,120194)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been able to gather enough ink to use on the meteor chunk.")
+ AddQuestStep(Quest,2,"I should apply this ink to the meteor chunk now.",1, 100,"If I'm going to shape this meteor chunk, I'm going to have to put forth some extra effort.", 146)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've applied the ink and made the chunk a lot darker.")
+
+ AddQuestStepHarvest(Quest, 3, "I need to harvest some Sandwashed Rock to make a hoop.", 1, 100, "I need to harvest a lot of Sandwashed Rock to make a hoop.", 1186, 121172)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've been able to gather the rock I'll need.")
+ AddQuestStep(Quest,4,"Compare the harvested rock to the meteor chunk.",1, 100,"If I'm going to shape this meteor chunk, I'm going to have to put forth some extra effort.", 146)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+--
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've compared the meteor chunk to the harvested stones.")
+ AddQuestStepKill(Quest, 5, "I need to kill Cavemaw tunnelers.", 1, 100, "Now I need to find a small rock hammer from the Cavemaw tunnelers.", 2262, 120290)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+UpdateQuestStepDescription(Quest, 5, "I've found a small rock hammer.")
+ AddQuestStep(Quest,6,"I should use the small rock hammer on the meteor chunk to craft it into something useful.",1, 100,"Now I need to find a small rock hammer from the Cavemaw tunnelers.", 146)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I've been able to take the meteor chunk I found and turn it into a nice Meteoric Hoop.")
+ UpdateQuestDescription(Quest, "I've been able to take the meteor chunk I found and turn it into a nice Meteoric Hoop.")
+
+ UpdateQuestDescription(Quest, "I've been able to take the meteor chunk I found and turn it into a nice Meteoric Hoop.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+end
+end
diff --git a/server/Quests/Antonica/once_upon_an_isle_dreary.lua b/server/Quests/Antonica/once_upon_an_isle_dreary.lua
index 75fe69433..24bca530e 100755
--- a/server/Quests/Antonica/once_upon_an_isle_dreary.lua
+++ b/server/Quests/Antonica/once_upon_an_isle_dreary.lua
@@ -21,6 +21,7 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
Dialog.New(QuestGiver, Player)
+ PlayFlavor(QuestGiver,"","","boggle",0,0,Player)
Dialog.AddDialog("Will you?! Oh! Thank you! Search them well, yes, search them very well. I know my scrolls are being clutched by those furry paws!")
Dialog.AddVoiceover("voiceover/english/quallium/antonica/quallium002.mp3", 497416154, 1226676289)
diff --git a/server/Quests/Antonica/qeynosian_civil_service.lua b/server/Quests/Antonica/qeynosian_civil_service.lua
index 2cf90370a..336584de5 100755
--- a/server/Quests/Antonica/qeynosian_civil_service.lua
+++ b/server/Quests/Antonica/qeynosian_civil_service.lua
@@ -11,6 +11,7 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
SetQuestFeatherColor(Quest, 3)
@@ -70,10 +71,11 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/sir_alesso/qey_north/sir_alesso002.mp3", "", "", 2041064542, 2502837283, Player)
- AddConversationOption(conversation, "I'll do it for Qeynos.")
- StartConversation(conversation, QuestGiver, Player, "Rid Antonica of the rats, snakes and beetles that plague Qeynos. Dispatch of no less than ten of each and we shall reward your service.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Rid Antonica of the rats, snakes and beetles that plague Qeynos. Dispatch of no less than ten of each and we shall reward your service.")
+ Dialog.AddVoiceover("voiceover/english/sir_alesso/qey_north/sir_alesso002.mp3", 2041064542, 2502837283)
+ Dialog.AddOption("I'll do it for Qeynos.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/revenge_on_the_kodiaks.lua b/server/Quests/Antonica/revenge_on_the_kodiaks.lua
new file mode 100755
index 000000000..81a11f7c0
--- /dev/null
+++ b/server/Quests/Antonica/revenge_on_the_kodiaks.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Quests/Antonica/revenge_on_the_kodiaks.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 04:05:06
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill young kodiaks in Antonica near the Archer's Wood.", 12, 100, "The young kodiak bears are a menace in this area, I should thin out their population.", 174, 120294,341009)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have slain enough young kodiaks for now.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have slain the young kodiaks.")
+
+ UpdateQuestDescription(Quest, "I have slain some of the young kodiaks in the area, I hope that culls the population enough to make the area safer.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/sabertooth_battle_plans.lua b/server/Quests/Antonica/sabertooth_battle_plans.lua
index bcbc3ebd0..a3868a6f8 100755
--- a/server/Quests/Antonica/sabertooth_battle_plans.lua
+++ b/server/Quests/Antonica/sabertooth_battle_plans.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to hunt down a captain of the gnolls that may hold the battle plans. ", 1, 100, "I need to find the Sabertooth battle plans deep in the heart of Blackburrow where canine tacticians mingle.", 75, 170046)
@@ -16,19 +17,24 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/sir_jeager/antonica/sirjeager002.mp3", "", "", 48860008, 510466598, Player)
- AddConversationOption(conversation, "What does this mean?", "dlg2")
- StartConversation(conversation, QuestGiver, Player, "As of late, the gnolls have become more organized. They are marching in formations and scouting the surrounding areas for places to attack.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("As of late, the gnolls have become more organized. They are marching in formations and scouting the surrounding areas for places to attack.")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager002.mp3", 48860008, 510466598)
+ Dialog.AddOption("What does this mean?", "Accept2")
+ Dialog.Start()
+
end
-function dlg2(Quest, QuestGiver, Player)
+function Accept2(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/sir_jeager/antonica/sirjeager003.mp3", "", "", 3921562524, 1533728140, Player)
- AddConversationOption(conversation, "I will do this immediately.", "Option20")
- StartConversation(conversation, QuestGiver, Player, "It means that they have a lead tactician. Return to the cave you found and bring me back their battle plans.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("It means that they have a lead tactician. Return to the cave you found and bring me back their battle plans.")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager003.mp3", 3921562524, 1533728140)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("I will do this immediately.")
+ Dialog.Start()
+
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/scrawlings_in_the_dark.lua b/server/Quests/Antonica/scrawlings_in_the_dark.lua
index 3fd1191d2..71335de98 100755
--- a/server/Quests/Antonica/scrawlings_in_the_dark.lua
+++ b/server/Quests/Antonica/scrawlings_in_the_dark.lua
@@ -10,25 +10,20 @@
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function Init(Quest)
AddQuestStep(Quest, 1, "Search for the unholy tome 'Scrawlings of Chirannis.'", 1, 100, "I must venture into Blackburrow and search for the Ark of Chirannis. Inside will be the tome called Scrawlings of Chirannis.", 717)
- AddQuestStepKill(Quest, 2, "Hunt down Sabertooth diviners for the first missing page.", 1, 100, "I must obtain the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.", 2180, 170019)
- AddQuestStepKill(Quest, 3, "Hunt down Sabertooth chanters for the next missing page.", 1, 100, "I must obtain the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.", 2180, 170026)
- AddQuestStepKill(Quest, 4, "Hunt down Sabertooth oracles for the final missing pages.", 3, 100, "I must obtain the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.", 2180, 170042)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
- AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
- AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
-
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/optional1/rikantus/antonica/rikantus005.mp3", "", "", 1926201932, 488253869, Player)
- AddConversationOption(conversation, "I will return the tome to you.")
- StartConversation(conversation, QuestGiver, Player, "I desire a trinket for a trinket, a stolen vault of knowledge. Within the depths of the Sabertooth lair resides a tome bound of gnoll hide and scribed in the black blood of Norrath. Find and return this tome to me, and I shall grant you wonders of time long past. Find me the Scrawlings of Chirannis.")
-
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I desire a trinket for a trinket, a stolen vault of knowledge. Within the depths of the Sabertooth lair resides a tome bound of gnoll hide and scribed in the black blood of Norrath. Find and return this tome to me, and I shall grant you wonders of time long past. Find me the Scrawlings of Chirannis.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus005.mp3", 1926201932, 488253869)
+ Dialog.AddOption("I will return the tome to you.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -41,9 +36,13 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "Found the unholy tome 'Scrawlings of Chirannis.'")
- UpdateQuestTaskGroupDescription(Quest, 1, "I found the tome called 'Scrawlings of Chirannis,' but five pages have been removed.")
-
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found the tome called 'Scrawlings of Chirannis,' but five pages have been removed.")
+ AddQuestStepKill(Quest, 2, "Hunt down Sabertooth diviners for the first missing page.", 1, 100, "I must obtain the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.", 2180, 170019)
+ AddQuestStepKill(Quest, 3, "Hunt down Sabertooth chanters for the next missing page.", 1, 100, "I must obtain the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.", 2180, 170026)
+ AddQuestStepKill(Quest, 4, "Hunt down Sabertooth oracles for the final missing pages.", 3, 100, "I must obtain the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.", 2180, 170042)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
end
function Step2Complete(Quest, QuestGiver, Player)
@@ -65,8 +64,8 @@ end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, 5329, 1) and QuestStepIsComplete(Player, 5329, 2) and QuestStepIsComplete(Player, 5329, 3) and QuestStepIsComplete(Player, 5329, 4) then
- UpdateQuestTaskGroupDescription(Quest, 1, "I found the tome called 'Scrawlings of Chirannis,' but five pages have been removed.")
- UpdateQuestTaskGroupDescription(Quest, 2, "I obtained the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found the tome called 'Scrawlings of Chirannis,' but five pages have been removed.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I obtained the five missing pages of the 'Scrawlings of Chirannis' from the paws of the gnoll priests in Blackburrow.")
AddQuestStepChat(Quest, 5, "Return to Rikantus at Evernight Cemetery in Antonica.", 1, "I must return the 'Scrawlings of Chirannis' to Rikantus at Evernight Cemetery in Antonica.", 11, 120403)
AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
diff --git a/server/Quests/Antonica/strange_mutations.lua b/server/Quests/Antonica/strange_mutations.lua
new file mode 100755
index 000000000..dc61d4737
--- /dev/null
+++ b/server/Quests/Antonica/strange_mutations.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Quests/Antonica/strange_mutations.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 04:05:43
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "Kill the mutated rats", 13, 100, "Something has caused the rats in this region to change.", 611, 120176)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ if HasItem(Player,1001093) then
+ RemoveItem(Player,1001093,1)
+ end
+ SendMessage(Player,"You roll up the drawing and stuff it in your quest satchle.")
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've killed enough mutated rats")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have eliminated some of the mutated rats.")
+
+ UpdateQuestDescription(Quest, "I wonder what could have caused these strange mutations...")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/the_cavemaws_sinister_map.lua b/server/Quests/Antonica/the_cavemaws_sinister_map.lua
index 426428bf7..890fd0a4b 100755
--- a/server/Quests/Antonica/the_cavemaws_sinister_map.lua
+++ b/server/Quests/Antonica/the_cavemaws_sinister_map.lua
@@ -10,8 +10,9 @@
Followed by:
--]]
+
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to slay the Cavemaw tunnelers in the Antonican caves.", 5, 100, "The cavemaw gnolls are up to no good, planning to dig their way all the way to Qeynos for a staged attack. I cannot stop them all, but I can certainly slow them down.", 104, 120290)
+ AddQuestStepKill(Quest, 1, "I need to slay the Cavemaw tunnelers in the Antonican caves.", 30, 100, "The cavemaw gnolls are up to no good, planning to dig their way all the way to Qeynos for a staged attack. I cannot stop them all, but I can certainly slow them down.", 104, 120290)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
@@ -41,5 +42,3 @@ function Reload(Quest, QuestGiver, Player, Step)
QuestComplete(Quest, QuestGiver, Player)
end
end
-
-
diff --git a/server/Quests/Antonica/the_fallen_bell.lua b/server/Quests/Antonica/the_fallen_bell.lua
new file mode 100755
index 000000000..34610c9e4
--- /dev/null
+++ b/server/Quests/Antonica/the_fallen_bell.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : Quests/Antonica/the_fallen_bell.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.07 06:05:06
+ Script Purpose : From the bell in the Tower of Vhalen in Antonica
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to destroy gnolls in Antonica.", 40, 100, "The gnolls, always preying on the helpless and weak, should be eradicated! They constantly pose a threat to the safety of Qeynosians, and I should do my part to keep them in check.", 611, 120013,120015 ,120184, 120203 ,120212 ,120251 , 120252 ,120290 ,120291,120295 , 120296 ,120300 ,120304 ,120310,120340 ,120355, 120361 ,120362, 120363 , 120364 ,120376 ,120378 ,120379, 120380, 120395,120397 ,120407,120420, 120424, 120425, 120426, 120427, 120429,120430, 120437, 120441, 120804, 120416, 120419, 120858, 121488, 121833, 121845 )
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have destroyed quite a few gnolls in Antonica.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have destroyed a good portion of the gnoll population in Antonica, I hope this helps.")
+ SendMessage(Player,"You feel a slight shifting of weight in one of your pockets.")
+ if GetClass(Player)>=1 and GetClass(Player)<=10 then
+ SummonItem(Player,135400,1)
+ elseif GetClass(Player)>=11 and GetClass(Player)<=20 then
+ SummonItem(Player,155598,1)
+ elseif GetClass(Player)>=21 and GetClass(Player)<=30 then
+ SummonItem(Player,191961,1)
+ else
+ SummonItem(Player,155599,1)
+ end
+ UpdateQuestDescription(Quest, "I have slain quite a few gnolls, I hope my efforts do not go unnoticed. There are so many of them!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/the_hidden_riddle.lua b/server/Quests/Antonica/the_hidden_riddle.lua
index 5f0b52458..a2e8a48d5 100755
--- a/server/Quests/Antonica/the_hidden_riddle.lua
+++ b/server/Quests/Antonica/the_hidden_riddle.lua
@@ -10,13 +10,18 @@
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function Init(Quest)
AddQuestStep(Quest, 1, "Find the secret vault of knowledge in the Ruins of Varsoon.", 1, 100, "I must discover a secret library or vault of secrets inside the Ruins of Varsoon. There I should find the puzzle box.", 11)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Accepted(Quest, QuestGiver, Player)
-
+Dialog.New(QuestGiver, Player)
+Dialog.AddDialog("Return to me the Riddle of Saryrn, and you will have your fortune. I promise this or may my soul be cursed to walk this land for eternity.")
+Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus015.mp3", 89864911, 2778083584)
+Dialog.AddOption("I will return with the puzzle box. ")
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Antonica/the_hunt_for_the_windstalker_rumbler.lua b/server/Quests/Antonica/the_hunt_for_the_windstalker_rumbler.lua
new file mode 100755
index 000000000..682b8306c
--- /dev/null
+++ b/server/Quests/Antonica/the_hunt_for_the_windstalker_rumbler.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Antonica/the_hunt_for_the_windstalker_rumbler.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.15 09:04:21
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Watch for the Windstalker Rumbler of Antonica.", 1, 100, "I should keep an eye out for the Windstalker Rumbler in Antoncia. It could be anywhere... if it even exists!", 611, 120495)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "Slew the Windstalker Rumbler.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I killed the Windstalker Rumbler in Antonica.")
+
+ UpdateQuestDescription(Quest, "I killed the Windstalker Rumbler! I wonder if anyone would be interested, perhaps a family waiting to avenge one of theirs taken from them by this tunneling beast of Antonica.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Antonica/the_legend_of_motte.lua b/server/Quests/Antonica/the_legend_of_motte.lua
new file mode 100755
index 000000000..eba7d1d25
--- /dev/null
+++ b/server/Quests/Antonica/the_legend_of_motte.lua
@@ -0,0 +1,64 @@
+--[[
+ Script Name : Quests/Antonica/the_legend_of_motte.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.15 09:04:10
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Slay some highwaymen.", 8, 100, "I must slay some highwaymen in Antonica.", 611, 120161, 120162, 120171)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "Slew some highwaymen.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I slew some highwaymen in Antonica.")
+
+ AddQuestStep(Quest, 2, "Inspect the bookcase.", 1, 100, "I must return to the bookcase in Windstalker Village that holds the book called "The Legend of Motte."", 11)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "Inspected the bookcase.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I returned to the bookcase in Windstalker Village that holds the book called "The Legend of Motte."")
+
+ AddQuestStep(Quest, 3, "Inspect Motte's tombstone.", 1, 100, "I must find the lost tombstone of Motte in Antonica.", 1009)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "Inspected Motte's tombstone.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I found the lost tombstone of Motte in Antonica.")
+
+ UpdateQuestDescription(Quest, "I helped Sir Edwin Motte's spirit part from this world and its unrest. I earned a key that opened a secret compartment in Motte's tombstone filled with treasure.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Antonica/the_restless_runestone.lua b/server/Quests/Antonica/the_restless_runestone.lua
new file mode 100755
index 000000000..c644c52a1
--- /dev/null
+++ b/server/Quests/Antonica/the_restless_runestone.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Quests/Antonica/the_restless_runestone.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 06:05:35
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill twenty restless Caltorsites in Antonica.", 20, 100, "Undead threaten to attack the watermill. I must destroy the restless caltorsites before they make camp at that location.", 611, 120244,120131,120126,120127,120245,120246 )
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have dispatched many restless Caltorsites.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've destroyed quite a few of the undead, I hope that keeps them at bay.")
+
+ UpdateQuestDescription(Quest, "I found some restless Caltorsites nearby, so I dispatched them with hopes of staving off any attempt to attack the watermill.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/the_starwisp_sword.lua b/server/Quests/Antonica/the_starwisp_sword.lua
new file mode 100755
index 000000000..cb710e6ce
--- /dev/null
+++ b/server/Quests/Antonica/the_starwisp_sword.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : Quests/Antonica/the_starwisp_sword.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 07:05:31
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+--
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to find some freshly milled flour somewhere here in Antonica.", 1, 100, "If I'm going to restore this sword back to its original condition, I'm going to need to give a little extra effort.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've grabbed a handful of milled flour from the Millers' house.")
+ AddQuestStep(Quest, 2, "I should mix the flour into a paste and apply it to the sword.", 1, 100, "If I'm going to restore this sword back to its original condition, I'm going to need to give a little extra effort.", 2155)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+--Now I should use the etching tool on the newly cleaned sword.
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've managed to scrub away nearly all the rust on the blade.")
+ AddQuestStepKill(Quest, 3, "I now need to find an etching tool from the coldwind crewman that lurk about Antonica.", 1, 50, "If I'm going to restore this sword back to its original condition, I'm going to need to give a little extra effort.", 25, 120672)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've been able to find an etching tool.")
+ AddQuestStep(Quest, 4, "I need to use the etching tool on the blade to repair the star pattern.", 1, 100, "If I'm going to restore this sword back to its original condition, I'm going to need to give a little extra effort.",2155)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've etched the stars back into the blade.")
+ AddQuestStepKill(Quest, 5, "For some reason, all I can think about is killing klicniks in Antonica.", 15, 100, "If I'm going to restore this sword back to its original condition, I'm going to need to give a little extra effort.", 611, 120372,120211,120253,120367, 120371, 120453,120452)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've killed enough kliknics and can feel the power in the blade!")
+ AddQuestStep(Quest, 6, "I need to examine the blade one last time to see if it is satisfied.", 1, 100, "If I'm going to restore this sword back to its original condition, I'm going to need to give a little extra effort.", 2155)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I've killed quite a number of klicniks in Antonica. I have a feeling my desire to do so came from the sword.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been able to restore Starwisp to its original condition.")
+
+ UpdateQuestDescription(Quest, "I've been able to not only clean the sword but restore it back to its original condition. For some reason I believe the name of the sword is Starwisp.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+end
+end
diff --git a/server/Quests/Antonica/these_boots_were_made_for.lua b/server/Quests/Antonica/these_boots_were_made_for.lua
new file mode 100755
index 000000000..5a76a7e9b
--- /dev/null
+++ b/server/Quests/Antonica/these_boots_were_made_for.lua
@@ -0,0 +1,217 @@
+--[[
+ Script Name : Quests/Antonica/these_boots_were_made_for.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.20 06:04:34
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/PlayerHistory"
+
+function Init(Quest)
+ AddQuestStepHarvest(Quest, 1, "Harvest 100 iron clusters in Antonica for Hwal, making sure to save them to give to him.", 100, 100, "Hwal needs me to gather the raw materials for the weapons he's planning to make for the sentries.", 1085, 8395)
+ AddQuestStepHarvest(Quest, 2, "Harvest 100 severed maple in Antonica for Hwal, making sure to save the wood to give to him.", 100, 100, "Hwal needs me to gather the raw materials for the weapons he's planning to make for the sentries.", 824, 12101)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ SetQuestFeatherColor(Quest, 1) -- PURPLE FOR HERITAGE QUESTS
+ SetQuestRewardStatus(Quest, 29666)
+end
+
+
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Much thanks to ya, stranger! I'm not sure I could finish the job without your help! I need plenty of iron and wood for these weapons. It's a lot of work, but I'm sure that together we can get it done in half the time that it'd take me to do it alone!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif003.mp3", 584697893, 4066288386)
+ Dialog.AddEmote("nod")
+ Dialog.AddOption("It'd better be worth my time, dwarf.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "You've harvested 100 iron clusters in Antonica for Hwal.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "You've harvested 100 severed maple in Antonica for Hwal.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5805, 1) and QuestStepIsComplete(Player, 5805, 2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've gathered the raw materials Hwal needs.")
+ AddQuestStepChat(Quest, 3, "Return to Hwal with at least 10 iron clusters and 10 maple branches.", 1, "I need to bring back at least 10 iron clusters and 10 severed maple branches.", 11, 120197)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ elseif QuestStepIsComplete(Player, 5805, 12) and QuestStepIsComplete(Player, 5805, 13) then
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've gathered the steel and the leather Hwal's new boots will need.")
+ AddQuestStepChat(Quest, 14, "Speak with Minty in the Thundermist Village about making the boots.", 1, "Now that I've got the steel and leather for the boots, I should speak with Minty Frostbeard.", 11, 2490173)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+end
+ end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ if HasItem(Player, 8395) and GetItemCount(8395) >= 100 then
+ RemoveItem(Player, 8395, 100)
+ elseif HasItem(Player, 12101) and GetItemCount(12101) >= 100 then
+ RemoveItem(Player, 12101, 100)
+ end
+ UpdateQuestStepDescription(Quest, 3, "You've given Hwal the raw materials he needs.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given Hwal all the components he needs.")
+
+ AddQuestStepKill(Quest, 4, "Search Blackburrow for the ore Hwal needs for the blade.", 1, 50, "Hwal has instructed me to find some rarer components for the guard captain's sword he is smithing.", 1124, 170010, 170029)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "You've found the ore Hwal needs for the captain's sword.")
+
+ AddQuestStepKill(Quest, 5, "Deep in Stormhold is a rare wood Hwal must have for the hilt.", 1, 50, "Hwal has instructed me to find some rarer components for the guard captain's sword he is smithing.", 826, 150024, 150239)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "You've found the wood Hwal needs for the captain's sword.")
+
+ AddQuestStepKill(Quest, 6, "Hwal specified a rare and tough griffin hide from the Thundering Steppes for the bindings.", 1, 100, "Hwal has instructed me to find some rarer components for the guard captain's sword he is smithing.", 122, 2490072)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "You've found the leather Hwal needs for the captain's sword.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've found the rare components Hwal needs for the captain's sword.")
+
+ AddQuestStepChat(Quest, 7, "Return to Hwal with the components.", 1, "I need to return to Hwal with the components I've gathered.", 11, 120197)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "You've returned the components to Hwal.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've returned the components for the captain's sword to Hwal.")
+
+ AddQuestStep(Quest, 8, "Search Blackburrow for the stout they create in their brewery for Hwal.", 1, 100, "Hwal is thirsty, and for some reason has decided that he wants me to get him a stout.", 308)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "You've found the Blackburrow stout Hwal wants.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I managed to find the Blackburrow stout Hwal wanted to quench his thirst.")
+
+ AddQuestStepChat(Quest, 9, "Return to Hwal with the stout you took from Blackburrow.", 1, "Got the Blackburrow stout, now I just need to return with it to Hwal.", 11, 120197)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "You've given Hwal the stout he asked for.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've returned the stout to Hwal.")
+
+ AddQuestStepKill(Quest, 10, "Lay Hwal's grandfather's ghost to rest. He resides beneath Vhalen's tower.", 1, 100, "Hwal's grandfather needs to be laid to rest. His current incarnation; however, may be... unwilling...", 11, 8380000)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "You've laid the spirit of Garanel Rucksif to rest.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "Garanel Rucksif has been laid to rest, and will trouble people no longer.")
+
+ AddQuestStepChat(Quest, 11, "Speak with Hwal and let him know that his grandfather has been laid to rest.", 1, "I need to return to Hwal and let him know that I put Garanel.", 11, 120197)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "You've laid the spirit of Garanel Rucksif to rest.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've informed Hwal that his grandfather has been laid to rest.")
+
+ AddQuestStepKill(Quest, 12, "Harvest the antelopes in the Steppes for a special leather for Hwal's boots.", 1, 50, "Hwal has given me a list of things I will need for his new pair of boots.", 123, 2490052)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+ AddQuestStepKill(Quest, 13, "Search the Firerock giants in the Steppes for a special steel for Hwal's boots.", 1, 50, "Hwal has given me a list of things I will need for his new pair of boots.", 775, 2490071)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "You've found the leather for Hwal's boots.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "You've found the steel for Hwal's boots.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "You've spoken with Minty Frostbeard about making Hwal's boots.")
+
+ AddQuestStepChat(Quest, 15, "Speak with Minty again after she's had time to make the boots.", 1, "Now that I've got the steel and leather for the boots, I should speak with Minty Frostbeard.", 11, 2490173)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+ local time = os.time()
+ SetPlayerHistory(Player, HISTORY.ANTONICA_BOOTS_HERITAGE_QUEST_WAIT, time)
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, "You've picked up the boots Minty made for Hwal.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've spoken with Minty and had her make Hwal's boots.")
+
+ AddQuestStepChat(Quest, 16, "Return to Hwal with the boots Minty made for him.", 1, "I need to return to Hwal with the boots that Minty made for him.", 11, 120197)
+ AddQuestStepCompleteAction(Quest, 16, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 16, "You've returned with the boots Minty made for Hwal.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I returned the boots Minty made to Hwal.")
+
+ UpdateQuestDescription(Quest, "After a grueling series of tasks, Hwal Rucksif had the audacity to reward me with his... old work boots. Imagine that! All that work, and all he leaves me with is a pair of smelly old Dwarven Work Boots. At least they look broken in.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step14Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step15Complete(Quest, QuestGiver, Player)
+ elseif Step == 16 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/visions_of_coldwind_point.lua b/server/Quests/Antonica/visions_of_coldwind_point.lua
index 8dfcf7801..bc52c6582 100755
--- a/server/Quests/Antonica/visions_of_coldwind_point.lua
+++ b/server/Quests/Antonica/visions_of_coldwind_point.lua
@@ -34,10 +34,10 @@ function Step1Complete(Quest, QuestGiver, Player)
AddQuestStepZoneLoc(Quest, 3, "Visit the tree that peeks.", 10, "I must visit the four location in Antonica mentioned in \"Visions of Coldwind Point\".", 11, -25, -5, 671, 12)
AddQuestStepZoneLoc(Quest, 4, "Visit the sword like no other.", 10, "I must visit the four location in Antonica mentioned in \"Visions of Coldwind Point\".", 11, -435, 1, 553, 12)
AddQuestStepZoneLoc(Quest, 5, "Visit the King of the thicket.", 10, "I must visit the four location in Antonica mentioned in \"Visions of Coldwind Point\".", 11, -698, -3, 596, 12)
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
-
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
end
@@ -58,11 +58,13 @@ function Step4Complete(Quest, QuestGiver, Player)
CheckProgress(Quest, QuestGiver, Player)
end
-
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "Visited the Great Oak.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 5, "Visited the Great Oak.")
UpdateQuestTaskGroupDescription(Quest, 2, "I visited the four location in Antonica mentioned in \"Visions of Coldwind Point\".")
if HasItem(Player, 15265) then
RemoveItem(Player, 15265)
diff --git a/server/Quests/Antonica/wanted_by_order_of_the_city_of_qeynos.lua b/server/Quests/Antonica/wanted_by_order_of_the_city_of_qeynos.lua
new file mode 100755
index 000000000..f58406781
--- /dev/null
+++ b/server/Quests/Antonica/wanted_by_order_of_the_city_of_qeynos.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Quests/Antonica/wanted_by_order_of_the_city_of_qeynos.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.20 04:05:21
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function quest_complete(Quest, QuestGiver, Player)
+
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+
+end
+
diff --git a/server/Quests/Antonica/wanted_gnoll_bandit.lua b/server/Quests/Antonica/wanted_gnoll_bandit.lua
new file mode 100755
index 000000000..01069d210
--- /dev/null
+++ b/server/Quests/Antonica/wanted_gnoll_bandit.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Quests/Antonica/wanted_gnoll_bandit.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 04:05:32
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must find the gnoll raiders and stop their marauding.", 12, 100, "Gnolls have been terrorizing the travelers in Antonica for years. One group in particular has a price on their heads.", 1220, 120363,120437,120310 ,120361,120251,120015,120355,120362,121833,120203, 120212,120441,120252)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+if HasItem(Player,3213)then
+ DisplayText(Spawn, 34, "You roll up the wanted poster and stuff it in your quest satchle.")
+ RemoveItem(Player,3213,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have found the gnoll raiders and put a stop to the problem.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found the darkpaw gnoll raiders. They will no longer terrorize travelers in Antonica.")
+
+ UpdateQuestDescription(Quest, "You have slain the Gnoll bandit.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Antonica/whispers_of_fortune.lua b/server/Quests/Antonica/whispers_of_fortune.lua
new file mode 100755
index 000000000..dc21505ac
--- /dev/null
+++ b/server/Quests/Antonica/whispers_of_fortune.lua
@@ -0,0 +1,73 @@
+--[[
+ Script Name : Quests/Antonica/whispers_of_fortune.lua
+ Script Author : Premierio015
+ Script Date : 2023.05.05 08:05:00
+ Script Purpose :
+
+ Zone : Antonica
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepObtainItem(Quest, 1, "Visit a bridge in Nektulos Forest and follow the calling in the forest. ", 1, 100, "I must go to Nektulos Forest and inspect a bridge there for clues on how to follow the path of a former fortune hunter.", 11, 7339)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I was given the fleshbound tome.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I gained an awful looking fleshbound tome from a vagabond named Theeral. This tome details the path of a fortune hunter.")
+
+ AddQuestStepZoneLoc(Quest, 2, "Follow the path of the fortune hunter.", 1, "I must follow the path of the fortune hunter detailed in the fleshbound tome.", 11, 198, -16, 14, 178)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I followed the path of the fortune hunter.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "After a terrifying journey into the depths of Nektropos Castle I have finally come to the end of the fortune hunter's path, but can I survive to escape the castle walls?")
+
+ AddQuestStepChat(Quest, 3, "Return to Rikantus in Evernight Cemetery.", 1, "If I escape the evils of Nektropos Castle I must revisit Rikantus at Evernight Cemetery in Antonica.", 11, 120403)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I spoke to Rikantus.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I escaped the evil embrace of Nektropos Castle to revisit Rikantus at Evernight Cemetery in Antonica.")
+
+ AddQuestStep(Quest, 4, "Open the chest in Rikantus' tent.", 1, 100, "Rikantus has granted me permission to take whatever I find within the chest found in his tent.", 11)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I got my reward from the magic chest.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "Rikantus' magical chest opened up to allow me to take a reward.")
+
+ UpdateQuestDescription(Quest, "I do not understand who or what Rikantus truly is, but I have survived the journey into Nektropos Castle and upon visiting Rikantus for a final time he has finally rewarded me.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Baubbleshire/GatheringRockSamples.lua b/server/Quests/Baubbleshire/GatheringRockSamples.lua
index fcbc9c107..a270bb6e0 100755
--- a/server/Quests/Baubbleshire/GatheringRockSamples.lua
+++ b/server/Quests/Baubbleshire/GatheringRockSamples.lua
@@ -15,9 +15,9 @@ require "SpawnScripts/Generic/DialogModule"
local GEOLOGIST_QUARDIFLE_ID = 2380036
function Init(Quest)
- AddQuestStepZoneLoc(Quest, 1, "Find a mine in the Caves to obtain a windspirit crystal sample.", 20, "I need to visit three mines in the Caves to gather crystal samples.", 1159, 58.11, 2.93, -119.94,826)
- AddQuestStepZoneLoc(Quest, 2, "Find a mine in the Caves to obtain an elddar spark crystal sample.", 20, "I need to visit three mines in the Caves to gather crystal samples.", 1168, 66.73, 12.41, -70.69,826)
- AddQuestStepZoneLoc(Quest, 3, "Find a mine in the Caves to obtain a prexus tear crystal sample.", 20, "I need to visit three mines in the Caves to gather crystal samples.", 1177, -49.35, 16.59, -133.75,826)
+ AddQuestStepZoneLoc(Quest, 1, "Find a mine in the Caves to obtain a windspirit crystal sample.", 12, "I need to visit three mines in the Caves to gather crystal samples.", 1159, 58.11, 2.93, -119.94,826)
+ AddQuestStepZoneLoc(Quest, 2, "Find a mine in the Caves to obtain an elddar spark crystal sample.", 12, "I need to visit three mines in the Caves to gather crystal samples.", 1168, 66.73, 12.41, -70.69,826)
+ AddQuestStepZoneLoc(Quest, 3, "Find a mine in the Caves to obtain a prexus tear crystal sample.", 12, "I need to visit three mines in the Caves to gather crystal samples.", 1177, -49.35, 16.59, -133.75,826)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
diff --git a/server/Quests/Baubbleshire/in_search_of_the_shrine_of_estle.lua b/server/Quests/Baubbleshire/in_search_of_the_shrine_of_estle.lua
index 90e975e31..f02822d8e 100755
--- a/server/Quests/Baubbleshire/in_search_of_the_shrine_of_estle.lua
+++ b/server/Quests/Baubbleshire/in_search_of_the_shrine_of_estle.lua
@@ -12,7 +12,7 @@
function Init(Quest)
UpdateQuestZone(Quest, "Down Below")
- AddQuestStepLocation(Quest, 1, "I will find the shrine in the Down Below.", 5, "I need to locate the Shrine of Estle in the Down Below.", 0, 7.12, 0.3, -137.86, 199)
+ AddQuestStepLocation(Quest, 1, "I will find the shrine in the Down Below.", 5, "I need to locate the Shrine of Estle in the Down Below.", 0, 7.12, 0.3, -137.86, 834)
AddQuestStepCompleteAction(Quest, 1, "FoundTemple")
end
diff --git a/server/Quests/BeggarsCourt/99_bottles_of_beer_in_my_hand.lua b/server/Quests/BeggarsCourt/99_bottles_of_beer_in_my_hand.lua
index 8deb9c3a4..268024bd8 100755
--- a/server/Quests/BeggarsCourt/99_bottles_of_beer_in_my_hand.lua
+++ b/server/Quests/BeggarsCourt/99_bottles_of_beer_in_my_hand.lua
@@ -1,37 +1,48 @@
--[[
Script Name : 99_bottles_of_beer_in_my_hand.lua
Script Purpose : Handles the quest, "99 Bottles Of Beer In My Hand"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
- Zone : Big Bend
+ Zone : Beggar's Court
Quest Giver : Festus Septimius
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to find enough sand in the bulky brine sifters' glizzards.", 5, 100, "I need to kill enough bulky brine sifters in the Sunken City.", 11, 1240007, 1240045)
+ AddQuestStepKill(Quest, 1, "I must kill some brine sifters.", 5, 100, "I need to travel to the Sunken City and kill brine sifters until I have a big handful of sand from their gizzards. When they're dead, I'll collect the sand that's in their gizzards.", 77, 8410001, 8410001)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sunken City")
+
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I've found enough sand in the bulky brine sifters' glizzards.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I've found enough sand in the bulky brine sifters' glizzards.")
+ UpdateQuestStepDescription(Quest, 1, "I have killed the brine sifters.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the crabs and collected all the sand I could find in their gizzards.")
+ UpdateQuestZone(Quest,"Beggar's Court")
- AddQuestStepChat(Quest, 2, "I should return to Festus Septimius.", 1, "I should return to Festus Septimius to deliver the sand.", 11, 1370024)
+ AddQuestStepChat(Quest, 2, "I should return to Festus Septimius.", 1, "I should bring this sand back to Festus Septimus if I want to get paid.", 11, 1370024)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Festus Septimius was happy with the result.")
+ UpdateQuestStepDescription(Quest, 2, "I've given the sand to Festus Septimus.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given the sand to Festus Septimus and have been paid.")
+ UpdateQuestDescription(Quest, "I've been paid by Festus Septimus for the sand I've collected. It seems that he intended on using the sand to make weaker glass bottles. His market for glassware requires that his bottles break in a jagged fashion so that they can be used as weapons in a bar fight.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I need gritty sand to craft glass. Glass made from beach sand is too sturdy, so I must use my old standby - crab gizzard sand. Go to the Sunken City and find some bulky crabs. Kill them, open up their gizzards, and sift out the sand. Return with the gritty sand from several crabs and I'll pay you for your work.")
+ Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/quests/festusseptimus/festus_x1_accept.mp3", 395004029, 46881327)
+ Dialog.AddOption("I'll go get some for you.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/advanced_problem_solving.lua b/server/Quests/BeggarsCourt/advanced_problem_solving.lua
index 7f825100f..b652ca43b 100755
--- a/server/Quests/BeggarsCourt/advanced_problem_solving.lua
+++ b/server/Quests/BeggarsCourt/advanced_problem_solving.lua
@@ -1,7 +1,7 @@
--[[
Script Name : advanced_problem_solving.lua
Script Purpose : Handles the quest, "Advanced Problem Solving"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 17.07.2022
Script Notes :
@@ -10,15 +10,23 @@
Preceded by : Problem Solving
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Defeat Giantslayer thugs", 5, 100, "I've heard that Giantslayer thugs hang out in the Sprawl. I should pay them a little visit. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 1260013)
+ AddQuestStepKill(Quest, 1, "Defeat Giantslayer bashers", 5, 100, "I've heard that Giantslayer bashers hang out in the Sprawl. I should pay them a little visit. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400027)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Sprawl")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's what I like to hear! Remember that dirty vagrant you delivered the message to? Rumor has it he's hiding among rogues and scoundrels from the other districts -- a gang called the Giantslayers. And his ... brethren ... have gotten their feathers all ruffled and are planning to come here to ... pay court ... if you understand me. They want to send a message to their leader. Now, I enjoy a good tussle as much as anyone, of course, but, uh ... we don't want to rob you of an opportunity to prove your fighting skills. So, why don't you go to the Giantslayers and tan their mangy hides for us?")
+ Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/quests/crispinluvinius/crispin_x2_accept.mp3", 4053471999, 555717236)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn, 0)
+ Dialog.AddOption("Don't worry... I'll handle it.", "Dialog6")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -32,8 +40,9 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've beat down five Giantslayer thugs")
UpdateQuestTaskGroupDescription(Quest, 1, "I've sent the Giantslayers a message that they shouldn't listen to vagrants who tell tall tales.")
+ UpdateQuestZone(Quest,"Beggar's Court")
- AddQuestStepChat(Quest, 2, "Talk with Crispin", 1, "I should let Crispin in the Sprawl know that he and his gang have nothing to worry about. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 11, 1370126)
+ AddQuestStepChat(Quest, 2, "Talk with Crispin", 1, "I should let Crispin in the Beggar's Court know that he and his gang have nothing to worry about. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 11, 1370126)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
diff --git a/server/Quests/BeggarsCourt/an_errand_for_the_queen.lua b/server/Quests/BeggarsCourt/an_errand_for_the_queen.lua
index f435eb523..cfa4a8cef 100755
--- a/server/Quests/BeggarsCourt/an_errand_for_the_queen.lua
+++ b/server/Quests/BeggarsCourt/an_errand_for_the_queen.lua
@@ -1,7 +1,7 @@
--[[
Script Name : an_errand_for_the_queen.lua
Script Purpose : Handles the quest, "An Errand for the Queen"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
@@ -10,29 +10,41 @@
Preceded by : None
Followed by : None
--]]
-
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill five Giantslayer bashers", 5, 100, "I need to venture to the Sprawl and kill five Giantslayer Bashers.", 611, 1260022)
+ AddQuestStepKill(Quest, 1, "I must kill five Giantslayer bashers", 5, 100, "I need to venture to the Sprawl and kill five Giantslayer bashers.", 611, 8400027)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have killed the Giantslayer bashers")
- UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the Giantslayer Bashers as part of the trick I'm playing on the mad woman.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the Giantslayer bashers as part of the trick I'm playing on the mad woman.")
- AddQuestStepChat(Quest, 2, "I should return to Tullia Domna.", 1, "I should return to Tullia Domna.", 11, 1370000)
+ AddQuestStepChat(Quest, 2, "I should return to Tullia Domna.", 1, "I should return to Tullia Domna and let her know that... her guards are dead.", 11, 1370000)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Tullia Domna, the mad woman in Beggar's Court, was going to knight me for killing the Giantslayer Bashers. Even though I was playing along with her insanity, I don't think I should go as far as giving her a sharp instrument to knight me with. This woman really needs help.")
+ UpdateQuestStepDescription(Quest, 2, "I've let... the 'Queen' know that the Giantslayer Bashers are dead.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've let... the 'Queen' know that the Giantslayer Bashers are dead.")
+
+ UpdateQuestDescription(Quest, "Tullia Domna, the mad woman in Beggar's Court, was going to knight me for killing the Giantslayer bashers. Even though I was playing along with her insanity, I don't think I should go as far as giving her a sharp instrument to knight me with. This woman really needs help.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Well, you're late, good man. I've been puffing up my cheeks and snorting loudly, hoping you'd find me. My entourage deserted me, and now you must execute them. Go find these ogres and kill them; they hide in the Sprawl and call themselves Giantslayer Bashers. Now, go child. Queenly blessings to you!")
+ Dialog.AddVoiceover("voiceover/english/tullia_domna/fprt_hood04/quests/tulladomna/tulla_x1_accept.mp3", 2208976682, 3386849948)
+ PlayFlavor(QuestGiver, "", "", "scold", 0, 0, Player, 0)
+ Dialog.AddOption("At once, my 'Queen'.")
+ if GetGender(Player)== 2 then
+ Dialog.AddOption("I'm not a man, but ...err, Yes, my 'Queen'.")
+ end
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/antius_package.lua b/server/Quests/BeggarsCourt/antius_package.lua
index faa1e687f..970ca614f 100755
--- a/server/Quests/BeggarsCourt/antius_package.lua
+++ b/server/Quests/BeggarsCourt/antius_package.lua
@@ -10,28 +10,40 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to speak with Mirin.", 1, "I need to bring this package to an Iksar in Scale Yard, I think Antius said the Iksar was named Mirini, or Mirin, or something.", 11, 1390006)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Scale Yard")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken with Mirin.")
UpdateQuestTaskGroupDescription(Quest, 1, "I gave the package to Mirin, but now I have a message I need to give back to Antius.")
-
- AddQuestStepChat(Quest, 2, "I should return to Antius Vedrix.", 1, "I should return to Antius Vedrix.", 11, 1370008)
+ UpdateQuestZone(Quest,"Beggar's Court")
+ AddQuestStepChat(Quest, 2, "I need to tell Antius that \"it's getting bigger\" and the Iksar needs \"more hooks.\"", 1, "I gave the package to Mirin, but now I have a message I need to give back to Antius.", 11, 1370008)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
+
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Antius.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I told Antius that more hooks were needed for something that has become bigger.")
+
UpdateQuestDescription(Quest, "Antius Vedrix has been given his message. I have absolutely no idea what's going on, or what I might have gotten myself into. I think I'll just avoid these people for the time being.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Ahh ... got it! Don't worry. Your secret is safe with me. I'll make sure no one suspects anything. I heard you guys were modest, the true mark of a professional. Make sure Mirin knows I did my part, understand? I don't want to go down to the Scale Yard and apologize. Now I'll stop chatting and let you be on your way...")
+ Dialog.AddVoiceover("voiceover/english/antius_vedrix/fprt_hood04/quests/antiusvedrix/antius_x1_accept.mp3", 101860654, 1539510243)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player, 0)
+ Dialog.AddOption("Fine. Perhaps I'll find some answers there...")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/casing_the_joint.lua b/server/Quests/BeggarsCourt/casing_the_joint.lua
index 66e678d8d..ba1b3f6a2 100755
--- a/server/Quests/BeggarsCourt/casing_the_joint.lua
+++ b/server/Quests/BeggarsCourt/casing_the_joint.lua
@@ -1,7 +1,7 @@
--[[
Script Name : casing_the_joint.lua
Script Purpose : Handles the quest, "Casing the Joint"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
@@ -10,28 +10,39 @@
Preceded by : None
Followed by : Into The Sewers For Lucius
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "Talk to Banker Kaman, in the bank in Stonestair Byway.", 1, "Talk to Banker Kamen, in the bank in Stonestair Byway.", 11, 1350044)
+ AddQuestStepChat(Quest, 1, "I need to talk with the Banker in Stonestair Byway.", 1, "I need to speak with the banker in Stonestair Byway. I need to get him to like me before he'll talk.", 11, 1350044)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stonestair Byway")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken with Banker Kamen.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have spoken with Banker Kamen.")
-
- AddQuestStepChat(Quest, 2, "I should return to Lucius Vulso.", 1, "I should return to Lucius Vulso.", 11, 1370036)
+ UpdateQuestTaskGroupDescription(Quest, 1, "Banker Kaman has told me of a rumor about being able to tunnel into the vaults from the sewer.")
+ UpdateQuestZone(Quest,"Beggar's Court")
+ AddQuestStepChat(Quest, 2, "I should return to Lucius Vulso.", 1, "I should let Lucius know about this supposed rumor.", 11, 1370036)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
+
+
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "I don't know if Lucius was happy with the result, but he has another task for me.")
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Lucius.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Lucius has been given the information about the rumored lack of security in the Stonestair bank vault.")
+ UpdateQuestDescription(Quest, "I've told Lucius about the rumored security leak in the vaults. It seems Lucius was having me ask around so that he wouldn't be the one identified for being suspicious.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I have a brilliant idea to make a lot of money out of no money at all. But, before I try this scheme, I need you to get some information. Go to the bank in Stonestair Byway and talk with the banker. Gain his trust, then find out how secure the vault is. Got it?")
+ Dialog.AddVoiceover("voiceover/english/lucius_vulso/fprt_hood04/quests/luciusvulso/lucius_x1_accept.mp3", 200782149, 3355305222)
+ Dialog.AddOption("Got it.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/deliver_help_to_janus_fieri.lua b/server/Quests/BeggarsCourt/deliver_help_to_janus_fieri.lua
index 3e0148286..eb028b155 100755
--- a/server/Quests/BeggarsCourt/deliver_help_to_janus_fieri.lua
+++ b/server/Quests/BeggarsCourt/deliver_help_to_janus_fieri.lua
@@ -1,61 +1,71 @@
--[[
Script Name : deliver_help_to_janus_fieri.lua
Script Purpose : Handles the quest, "Deliver Help to Janus Fieri"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 16.07.2022
Script Notes :
Zone : Beggar's Court
Quest Giver : Marcus Cantarius
- Preceded by : Marcus Cantarius's Monumental Hatred
+ Preceded by : Marcus Cantarius's Monumental Hatred -- Not required
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "Deliver note to Janus Fieri.", 1, "I need to deliver this note to Janus Fieri at the Crossroads in the Commonlands.", 75, 330171)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Commonlands")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "Located Janus Fieri.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found Janus Fieri and delivered Marcus' note.")
- AddQuestStep(Quest, 2, "Investigate the nomad's camp and find the journal.", 1, "Investigate the nomad's camp in the Commonlands and find the journal.", 11)
+ AddQuestStep(Quest, 2, "Investigate the nomad's camp and look for evidence.", 1, "Janus Fieri asked me to investigate the nomad's camp to find any documents left behind by the victim.", 11)
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
end
function Step2Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 2, "I found the journal.")
- UpdateQuestTaskGroupDescription(Quest, 2, "I found the journal in a stack of books.")
+ UpdateQuestStepDescription(Quest, 2, "I found a tattered journal.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've found a tattered journal in the nomad's camp.")
- AddQuestStepChat(Quest, 3, "I should return to Janus.", 1, "I should return to Janus in the Crossroads to deliver the journal.", 75, 330171)
+ AddQuestStepChat(Quest, 3, "I need to take this journal to Janus Fieri.", 1, "I should return to Janus in the Crossroads to deliver the journal.", 75, 330171)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
function Step3Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 3, "I returned to Janus.")
- UpdateQuestTaskGroupDescription(Quest, 3, "I returned to Janus in the Crossroads and delivered the journal.")
+ UpdateQuestStepDescription(Quest, 3, "I gave Janus Fieri the tattered journal.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I gave Janus Fieri the tattered journal.")
- AddQuestStepKill(Quest, 4, "I need to kill ten Bloodskull lumberjacks.", 10, 100, "I need to kill ten Bloodskull lumberjacks in theCommonlands.", 611, 330125, 331138)
+ AddQuestStepKill(Quest, 4, "I need to kill ten Bloodskull lumberjacks.", 10, 100, "I must avenge Janus Fieri's brother by slaying his killers.", 611, 330125, 331138)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I killed the Bloodskull lumberjacks.")
- UpdateQuestTaskGroupDescription(Quest, 4, "I killed the Bloodskull lumberjacks in the Commonlands.")
+ UpdateQuestStepDescription(Quest, 4, "I have avenged Janus Fieri's brother.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have avenged Janus Fieri's brother.")
- AddQuestStepChat(Quest, 5, "I should return to Janus.", 1, "I should return to Janus in the Crossroads.", 75, 330171)
+ AddQuestStepChat(Quest, 5, "I should return to Janus.", 1, "I must tell Janus Fieri that his brother has been avenged.", 11, 330171)
AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've spoken with Janus Fieri.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I told Janus Fieri that his brother was avenged.")
+
UpdateQuestDescription(Quest, "I've delivered Marcus' note to Janus and helped Janus with his murder investigation. Turns out he was investigating his own brother's death. It was a pleasure to help him take vengeance.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Thanks, friend. I was waiting for someone like you to show up. No need to report back to me. Janus'll take care of you.")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcus_cantarius2_003.mp3", 2562832727, 2431599798)
+ Dialog.AddOption("Alright.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/free_wares_for_silentblade.lua b/server/Quests/BeggarsCourt/free_wares_for_silentblade.lua
index 842c44d29..661ff34ba 100755
--- a/server/Quests/BeggarsCourt/free_wares_for_silentblade.lua
+++ b/server/Quests/BeggarsCourt/free_wares_for_silentblade.lua
@@ -1,7 +1,7 @@
--[[
Script Name : free_wares_for_silentblade.lua
Script Purpose : Handles the quest, "Free Wares for Silentblade"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
@@ -11,27 +11,36 @@
Followed by : Get Rich Quick!
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must kill undead battlepriests and collect ten maces.", 10, 100, "I should head over to the Graveyard and collect ten maces from undead battlepriests.", 34, 1250008, 1250018)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Graveyard")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've collected the maces from the battlepriests.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the undead battlepriests and searched through their remains. I've managed to collect ten maces from their bones.")
-
- AddQuestStepChat(Quest, 2, "I should return to Silentblade.", 1, "I should return to Silentblade.", 11, 1370011)
+ UpdateQuestZone(Quest,"Beggar's Court")
+ AddQuestStepChat(Quest, 2, "I need to speak with Silentblade.", 1, "I should bring these maces back to Silentblade in Beggar's Court.", 34, 1370011)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I returned to Silentblade.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have given Arms Dealer Silentblade all of the maces I've collected.")
UpdateQuestDescription(Quest, "Silentblade showed me that one of his secrets was to collect up old rusty weapons from the undead. Soaking the weapons in acid and giving them a new coat of paint make them look brand new. I'm not sure I would ever buy anything from him if I wanted to live longer than my next battle.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Okay, kid, this is what I need. I'm running out of maces, so I need you to gather up more. Go out to the Graveyard and destroy all of the Undead Priests you find. Most of them carry a mace. Destroy the priests, then bring me their maces.")
+ Dialog.AddVoiceover("voiceover/english/armsdealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x1_accept.mp3", 3601742052, 613995562)
+ Dialog.AddOption("Maces. Got it.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/get_rich_quick.lua b/server/Quests/BeggarsCourt/get_rich_quick.lua
index ff3ec0fb2..322ce67e8 100755
--- a/server/Quests/BeggarsCourt/get_rich_quick.lua
+++ b/server/Quests/BeggarsCourt/get_rich_quick.lua
@@ -10,28 +10,38 @@
Preceded by : Free Wares for Silentblade
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "I need to speak with Blort.", 1, "I need to bring this shipment of maces to Arms Dealer Blort in Big Bend.", 11, 1340023)
+ AddQuestStepChat(Quest, 1, "I need to speak with Blort.", 1, "I need to bring this shipment of maces to Arms Dealer Blort in Big Bend.", 655, 1340023)
+ UpdateQuestZone(Quest,"Big Bend")
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've spoken with Blort.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have given Arms Dealer Blort the maces he's been waiting on.")
+ UpdateQuestZone(Quest,"Beggar's Court")
- AddQuestStepChat(Quest, 2, "I should return to Silentblade.", 1, "I should return to Silentblade.", 11, 1370011)
+ AddQuestStepChat(Quest, 2, "I should return to Silentblade.", 1, "I should return to Arms Dealer Silentblade and let him know Blort was given his maces.", 11, 1370011)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Silentblade.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Silentblade has taught me another trick of the trade in the arms dealer business.")
UpdateQuestDescription(Quest, "I've been shown by Arms Dealer Silentblade that one of the best ways to make money as an arms dealer is to let other people make it for you. It seems the trick is to get a bunch of people to buy from you, and when they have enough recruits, they can sell those weapons to other Arms Dealers. I may look into this someday. It seems I could get rich quick this way!")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I need this heavy supply of maces taken to my biggest customer, Blort. He lives out in Big Bend and sells weapons. Bring him these containers of maces. Do it fast. When you return, I'll tell you my secret.")
+ Dialog.AddVoiceover("voiceover/english/armsdealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x2_accept.mp3", 0, 0) --NO KEYS
+ Dialog.AddOption("Fair enough. I'll be back.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/into_the_sewers_for_lucius.lua b/server/Quests/BeggarsCourt/into_the_sewers_for_lucius.lua
index 9ebebb181..132316b2e 100755
--- a/server/Quests/BeggarsCourt/into_the_sewers_for_lucius.lua
+++ b/server/Quests/BeggarsCourt/into_the_sewers_for_lucius.lua
@@ -1,7 +1,7 @@
--[[
Script Name : into_the_sewers_for_lucius.lua
Script Purpose : Handles the quest, "Into The Sewers For Lucius"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
@@ -10,10 +10,11 @@
Preceded by : Casing the Joint
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill six trash hoppers.", 6, 100, "I need to go into the sewers and find six trash hoppers and kill them. Once they're dead, I'll scrape the slime off of their bodies. I sure hope they're not too big.", 611, 1540013)
+ AddQuestStepKill(Quest, 1, "I must kill six trash hoppers.", 6, 100, "I need to go into the sewers and find six trash hoppers and kill them. Once they're dead, I'll scrape the slime off of their bodies. I sure hope they're not too big.", 611, 8430032)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
@@ -21,15 +22,26 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have killed the trash hoppers.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've managed to kill enough trash hoppers to gather up this slime for Lucius.")
- AddQuestStepChat(Quest, 2, "I should return to Lucius.", 1, "I should return to Lucius.", 11, 1370036)
+ AddQuestStepChat(Quest, 2, "I should return to Lucius.", 1, "I should bring these trash hoppers to Lucius.", 611, 1370036)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I gave the trash hoppers to Lucius.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given the slime to Lucius so he can pursue his crazy plan. I sure hope it doesn't work.")
UpdateQuestDescription(Quest, "I've given Lucius Vulso enough slime from the frog's skin to mask his scent. If he manages to pull off this bank heist, I'll have to follow his lead and get out of the city. I'm the only one who was seen asking about the place... what was I thinking?")
GiveQuestReward(Quest, Player)
end
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Regret this? Never! If I pull this off, you and I will be famous! I examined the layout of the districts ... the quickest route around the sewers is through a putrid marsh of frogs called trash hoppers. Kill these frogs and scrape the slime from their bodies. I'll use this slime to mask my scent when I sneak through the bog. Now, get me that slime, and I'll pay you for your time.")
+ Dialog.AddOption("This sounds questionable already...")
+ Dialog.Start()
+end
+
+
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
Step1Complete(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/joining_the_gang.lua b/server/Quests/BeggarsCourt/joining_the_gang.lua
index 6c4ad649e..3857983b8 100755
--- a/server/Quests/BeggarsCourt/joining_the_gang.lua
+++ b/server/Quests/BeggarsCourt/joining_the_gang.lua
@@ -1,7 +1,7 @@
--[[
Script Name : joining_the_gang.lua
Script Purpose : Handles the quest, "Joining the Gang"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
@@ -10,27 +10,37 @@
Preceded by : None
Followed by : Donations from the Banker
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill Blackshield raiders", 10, 100, "I need to kill some of the Blackshields in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 611, 1240002)
+ AddQuestStepKill(Quest, 1, "Kill Blackshield raiders", 10, 100, "I need to kill some of the Freeport raiders in the Sunken City. I can reach the Sunken City by using any of outside of Freeport bells.", 611, 8410035,8410036,8410038,8410041,8410042,8410070 )
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sunken City")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I have killed the Blackshield raiders.")
-
- AddQuestStepChat(Quest, 2, "I should return to Manius.", 1, "I've let Manius know that I've done what it takes to pass his test.", 11, 1370127)
+ UpdateQuestStepDescription(Quest, 1, "I have killed the Freeport raiders.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've let Manius know that I've done what it takes to pass his test.")
+ UpdateQuestZone(Quest,"Beggar's Court")
+
+ AddQuestStepChat(Quest, 2, "I should return to Manius.", 1, "I should return to Manius and let him know that I've passed his test.", 11, 1370127)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Manius.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've let Manius know that I've done what it takes to pass his test.")
UpdateQuestDescription(Quest, "I've killed the raider lackeys as Manius asked, completing my test. He said he'll think about letting me join, as he hasn't decided yet. I should check back with him later.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("A test, huh? Yeah ... hey, boys ... let's give this runt a bit of a test. Okay, here's your test: Go deep into the Sunken City and find some of the lackeys who hang around the raiders. Kill some of them and maybe you can work for us.")
+ Dialog.AddOption("Okay, they're as good as dead.", "Dialog3")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/marcus_cantariuss_monumental_hatred.lua b/server/Quests/BeggarsCourt/marcus_cantariuss_monumental_hatred.lua
index 162089c1d..cdc3ab637 100755
--- a/server/Quests/BeggarsCourt/marcus_cantariuss_monumental_hatred.lua
+++ b/server/Quests/BeggarsCourt/marcus_cantariuss_monumental_hatred.lua
@@ -1,7 +1,7 @@
--[[
Script Name : marcus_cantariuss_monumental_hatred.lua
Script Purpose : Handles the quest, "Marcus Cantarius's Monumental Hatred"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 16.07.2022
Script Notes :
@@ -10,28 +10,41 @@
Preceded by : None
Followed by : Deliver Help to Janus Fieri
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to collect twenty dervish thug scalps.", 20, 100, "I need to collect scalps from the dervish thugs in the Commonlands for Marcus Cantarius.", 138, 330096, 330105)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Commonlands")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have enough dervish thug scalps.")
UpdateQuestTaskGroupDescription(Quest, 1, "I need to take these scalps to Marcus Cantarius in the Beggar's Court.")
+ UpdateQuestZone(Quest,"Beggar's Court")
- AddQuestStepChat(Quest, 2, "I should return to Marcus.", 1, "I should return to Marcus.", 11, 1370042)
+ AddQuestStepChat(Quest, 2, "I need to take these scalps to Marcus Cantarius.", 1, "I need to take these scalps back to Marcus Cantarius in Beggar's Court.", 138, 1370042)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I gave the scalps to Marcus Cantarius.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I gave the dervish thug scalps to Marcus Cantarius.")
UpdateQuestDescription(Quest, "It was a long and arduous task killing so many dervish thugs, but the reward was well worth the effort!")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("My hatred for the dervish thugs is unequaled. Bring me a large amount of these fiends' scalps. I wish to decorate my home with them. I promise to reward you handsomely.")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcuscantarius003.mp3", 3150858972, 2644148691)
+ Dialog.AddOption("Gladly.")
+ if CanReceiveQuest(Player, 5660) then
+ Dialog.AddOption("Of course. Other than scalping dervish, do you need anything else?","Dialog4")
+ end
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/problem_solving.lua b/server/Quests/BeggarsCourt/problem_solving.lua
index 65f5d2195..d7679048f 100755
--- a/server/Quests/BeggarsCourt/problem_solving.lua
+++ b/server/Quests/BeggarsCourt/problem_solving.lua
@@ -1,7 +1,7 @@
--[[
Script Name : problem_solving.lua
Script Purpose : Handles the quest, "Problem Solving"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 17.07.2022
Script Notes :
@@ -11,17 +11,20 @@
Followed by : Advanced Problem Solving
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill vagrant squatters", 10, 100, "I need to send a message to the vagrant squatters in the Ruins. The message will involve a lot of them breathing dirt. I can reach the Ruins by using any of the bells in and around the City of Freeport.", 611, 1270004)
+ AddQuestStepKill(Quest, 1, "Kill vagrant squatters", 10, 100, "I need to send a message to the vagrant squatters in the Ruins. The message will involve a lot of them breathing dirt. I can reach the Ruins by using any of the bells in and around the City of Freeport.", 611, 8420023,8420066)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Ruins")
+
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've dealt with the vagrants.")
UpdateQuestTaskGroupDescription(Quest, 1, "Those vagrants got the message loud and clear.")
-
- AddQuestStepChat(Quest, 2, "Talk with Crispin", 1, "I should let Crispin in Beggar's Court know that his problem has been solved. I should get paid, too. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 11, 1370126)
+ UpdateQuestZone(Quest,"Beggar's Court")
+ AddQuestStepChat(Quest, 2, "Talk with Crispin", 1, "I should let Crispin in Beggar's Court know that his problem has been solved. I should get paid, too.", 11, 1370126)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
@@ -30,12 +33,18 @@ function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 2, "I've spoken with Crispin.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've let Crispin know that I've solved his problem.")
- UpdateQuestDescription(Quest, "I've taken care of Crispin's problem. I think it won't be too long before his business partner decides to do what he was told to do.")
+ UpdateQuestDescription(Quest, "I've taken care of Crispin's problem. It shouldn't be long before his business partner decides to step in line.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Okay, here's the deal. The guy is a vagrant who lives out in the ruins, right? We want to send the message that no one messes with us. You need to head south of here and do some dirty work to his buddies, understand?")
+ Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/quests/crispinluvinius/crispin_x1_accept.mp3", 121176241, 3802962144)
+ PlayFlavor(QuestGiver, "", "", "sniff", 0, 0, Player, 0)
+ Dialog.AddOption("Sounds like an easy job.", "Dialog3")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/running_for_a_candidate.lua b/server/Quests/BeggarsCourt/running_for_a_candidate.lua
index 29b811c25..b36d13356 100755
--- a/server/Quests/BeggarsCourt/running_for_a_candidate.lua
+++ b/server/Quests/BeggarsCourt/running_for_a_candidate.lua
@@ -1,7 +1,7 @@
--[[
Script Name : running_for_a_candidate.lua
Script Purpose : Handles the quest, "Running For A Candidate"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 17.07.2022
Script Notes :
@@ -10,28 +10,28 @@
Preceded by : To Spite a Darkleaf
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "Marianna Darklea asks you to deliver a note to Lurina Galla.", 1, "Marianna Darklea asks you to deliver a note to Lurina Galla here in Beggar's Court.", 11, 1370026)
- AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
-end
-
-function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "The note was delivered to Lurina.")
- UpdateQuestTaskGroupDescription(Quest, 1, "The note was delivered to Lurina in the upper courtyard.")
-
- AddQuestStepChat(Quest, 2, "I should return to Mariana.", 1, "I should return to Mariana to tell her I delivered the note.", 11, 1370014)
- AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+ AddQuestStepChat(Quest, 1, "I need to speak with Lurina in Beggar's Court.", 1, "I need to tell Lurina Galla that 'Elowyn is a perfect candidate'.", 11, 1370026)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "You finished the final task of Mariana Darfleaf. That's all you want to have to do with this person.")
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Lurina.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've given Lurina the message that Mariana had me send.")
+
+ UpdateQuestDescription(Quest, "I think I may have stumbled into some intrigue in the district. It seems that Lurina Galla and Mariana Darkleaf have something going on that involves Elowyn the Half-Elf. I wonder if one day I'll find out more about what's going on. No sense bothering Mariana again. For now.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Ugh. If you'll stop bothering me, then fine! Go find Lurina Galla and tell her I found the perfect candidate, Elowyn. He's ideal! Now, off with you! Go tell Lurina and don't bother me again!")
+ Dialog.AddOption("Fine.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -44,8 +44,6 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- Step1Complete(Quest, QuestGiver, Player)
- elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/BeggarsCourt/siricus_and_the_militia.lua b/server/Quests/BeggarsCourt/siricus_and_the_militia.lua
index 73e95bdc0..a68645dd1 100755
--- a/server/Quests/BeggarsCourt/siricus_and_the_militia.lua
+++ b/server/Quests/BeggarsCourt/siricus_and_the_militia.lua
@@ -9,6 +9,7 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -20,17 +21,25 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken with Sentius.")
UpdateQuestTaskGroupDescription(Quest, 1, "Sentius claims that the application will take time and that he's working on it.")
- AddQuestStepChat(Quest, 2, "I should return to Siricus.", 1, "I should return to Siricus.", 11, 1370045)
+ AddQuestStepChat(Quest, 2, "I need to speak with Siricus.", 1, "I need to let Siricus know that he's going to have to wait a little longer to get into the Militia.", 11, 1370045)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Siricus.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I told Siricus that his friend is still trying to get him into the Militia.")
UpdateQuestDescription(Quest, "Siricus Calventius is waiting to get into the Militia. I have a good feeling he'll be waiting a lot longer, considering how people treat the gimp.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Great! Manius said if I leave my house again without his permission, he and his guys would play \"Smack the Gimp\" with me. Go ask Sentius Poisonleaf the status of my Militia application. I paid him the processing fee -- he's an undercover agent, you know. Thanks for your help, buddy!")
+ Dialog.AddVoiceover("voiceover/english/siricus_calventius/fprt_hood04/quests/siricuscalventius/siricus_x1_accept.mp3", 265810226, 2507610341)
+ PlayFlavor(QuestGiver, "", "", "thanks", 0, 0, Player)
+ Dialog.AddOption("I'll see what Sentius has to say.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/the_nyghtfallow_heirloom.lua b/server/Quests/BeggarsCourt/the_nyghtfallow_heirloom.lua
index 4441a4c61..2ee49a174 100755
--- a/server/Quests/BeggarsCourt/the_nyghtfallow_heirloom.lua
+++ b/server/Quests/BeggarsCourt/the_nyghtfallow_heirloom.lua
@@ -1,7 +1,7 @@
--[[
Script Name : the_nyghtfallow_heirloom.lua
Script Purpose : Handles the quest, "The Nyghtfallow Heirloom"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 17.07.2022
Script Notes :
@@ -10,28 +10,36 @@
Preceded by : None
Followed by : None
--]]
-
+require "SpawnScripts/Generic/DialogModule"
+--The following words appear to have been hastily scribbled on the back of the picture, "Vladin the Pale; the Sunken City. Father, I promise that your death will be avenged." It seems that Tsuul's brother was attempting to grow stronger so that he might avenge his father's death.
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill Dervish hooligans until I find the pendant.", 5, 100, "I should kill Dervish hooligans in The Sprawl until I find Nyghtfallow's Pendant.", 1244, 1260011)
+ AddQuestStepKill(Quest, 1, "I must kill Guttersnipe hooligans until I find the pendant.", 1, 22, "I should kill Guttersnipe hooligans in The Sprawl until I find Nyghtfallow's Pendant.", 1244, 8400011)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I have killed the Dervish hooligans and found the pendant.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have killed some dervishes.")
+ UpdateQuestStepDescription(Quest, 1, "I have killed the Guttersnipe hooligans and found the pendant.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have killed some hooligans.")
- AddQuestStepChat(Quest, 2, "I should return to Tsuul.", 1, "I should return to Tsuul in the Beggar's Court.", 11, 1370025)
+ AddQuestStepChat(Quest, 2, "I must find Tsuul Nyghtfallow.", 1, "I must return the pendant to Tsuul Nyghtfallow in Beggar's Court.", 1244, 1370025)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have found Tsuul Nyghtfallow.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have returned to Tsuul Nyghtfallow.")
UpdateQuestDescription(Quest, "I found and killed the dervish that held Tsuul Nyghtfallow's family pendant. The item given in return is nice enough. ")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddLanguage(7)
+ Dialog.AddDialog("Undoubtedly one of the Guttersnipes who killed my brother took the pendant. I'd suggest you start by rummaging through the Guttersnipes' corpses. When and if you recover the pendant, return to me and I'll give you your reward.")
+ Dialog.AddOption("I'll see what I can do.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BeggarsCourt/to_spite_a_darkleaf.lua b/server/Quests/BeggarsCourt/to_spite_a_darkleaf.lua
index dfc045bcf..efeb6c830 100755
--- a/server/Quests/BeggarsCourt/to_spite_a_darkleaf.lua
+++ b/server/Quests/BeggarsCourt/to_spite_a_darkleaf.lua
@@ -1,7 +1,7 @@
--[[
Script Name : to_spite_a_darkleaf.lua
Script Purpose : Handles the quest, "To Spite a Darkleaf"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 17.07.2022
Script Notes :
@@ -10,28 +10,38 @@
Preceded by : None
Followed by : Running For A Candidate
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill 10 Shoreside Asps in the Sprawl.", 10, 100, "Since she taunted you about killing some Shoreside Asps in the Sprawl, you'll do just that.", 98, 1260018)
+ AddQuestStepKill(Quest, 1, "I must kill 10 Shoreside Asps in the Ruins.", 10, 100, "I should head over to the Ruins and kill ten (10) Snakes just to tick her off.", 98, 8420020,8400012)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Ruins")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I have killed the Shoreside Asps in the Sprawl.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have killed some Shoreside Asps.")
+ UpdateQuestStepDescription(Quest, 1, "I have killed the snakes.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the Snakes.")
+ UpdateQuestZone(Quest,"Beggar's Court")
- AddQuestStepChat(Quest, 2, "I should return to Mariana.", 1, "I should return to Mariana in the Beggar's Court.", 11, 1370014)
+ AddQuestStepChat(Quest, 2, "I should return to Mariana.", 1, "I should now return to Mariana Darkleaf and let her know I did what she asked... and bother her some more.", 11, 1370014)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "You finished the task of Mariana Darfleaf.")
+ UpdateQuestStepDescription(Quest, 2, "I let Mariana know that I was still alive.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I let Mariana know that I was still alive.")
+ UpdateQuestDescription(Quest, "Mariana Darkleaf wasn't too pleased to see me return - alive, that is. Even though it took some time out of my day to kill those snakes, it was still worth it just to see her face when I returned.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Really? Well then, why don't you run along to the Ruins and play with some Shoreside Asps, hmmm? Maybe you'll get bitten by your serpent pals and never bother me again!")
+ Dialog.AddOption("We'll see about that.")
+ Dialog.AddOption("You are insufferable!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BigBend/bronas_thralls.lua b/server/Quests/BigBend/bronas_thralls.lua
index 669710a12..455671f41 100755
--- a/server/Quests/BigBend/bronas_thralls.lua
+++ b/server/Quests/BigBend/bronas_thralls.lua
@@ -11,6 +11,7 @@
Followed by : Brona's Guard Check
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to speak with Bartender Icebrew in the Scale Yard.", 1, "I've got to let Bartender Icebrew from the Scale Yard district know that Brona has new thralls for him to choose from.", 11, 1390051)
@@ -31,7 +32,13 @@ function QuestComplete(Quest, QuestGiver, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Oh? Then drag your sorry carcass to Bartender Icebrew of Scale Yard. Tell him I have new thralls for him to buy. Tell him to hurry, 'cause they won't last. Come back here, and I'll let ya' have a copper.")
+ Dialog.AddVoiceover("voiceover/english/slaver_brona/fprt_hood1/quests\brona/brona_x1_accept.mp3",4231567409,3154108942)
+ PlayFlavor(QuestGiver, "","","stare",0,0, Player)
+ Dialog.AddOption("You better! I'm not doing this for free!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/BigBend/donations_from_the_banker.lua b/server/Quests/BigBend/donations_from_the_banker.lua
index a1bb9a80b..6147fdc42 100755
--- a/server/Quests/BigBend/donations_from_the_banker.lua
+++ b/server/Quests/BigBend/donations_from_the_banker.lua
@@ -1,7 +1,7 @@
--[[
Script Name : donations_from_the_banker.lua
Script Purpose : Handles the quest, "Donations from the Banker"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 15.07.2022
Script Notes :
@@ -11,9 +11,10 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "I need to speak with the banker Voranius in Beggar's Court.", 1, "I need to speak with the banker in Beggar's Court and make sure he hands over his 'donation'.", 11, 1370012)
+ AddQuestStepChat(Quest, 1, "I need to speak with the banker Voranius in Beggar's Court.", 1, "I need to speak with the banker in Beggar's Court and make sure he hands over his \"donation.\"", 11, 1370012)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
@@ -21,18 +22,24 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've spoken with the banker Voranius in Beggar's Court.")
UpdateQuestTaskGroupDescription(Quest, 1, "The banker was scared of my threat and gave his 'donation'. He also said some bad things about Manius.")
- AddQuestStepChat(Quest, 2, "I should return to Manius.", 1, "I should return to Manius.", 11, 1370127)
+ AddQuestStepChat(Quest, 2, "I should return to Manius.", 1, "I should give Manius the banker's \"donation\" and also let him know what the banker said about him.", 11, 1370127)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with the banker Voranius in Beggar's Court.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given Manius the \"donation\" and also let him know what the banker said. Hopefully I got it right.")
UpdateQuestDescription(Quest, "I've collected the 'donation' from the banker and given it to Manius. I've also told Manius what the banker said about him. Needless to say, he wasn't too happy. I just realized that I forgot to ask him about joining his gang. Maybe I'll ask him some other time.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Go to that banker up in the Court. Tell him it's time for us to make a \"withdrawal.\" If he balks, ask him if his kin can afford any more ... accidents. And if you try to keep the money, you'll have an accident. A big one. Got it?")
+ Dialog.AddOption("Sure thing.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Blackburrow/rare_rock_lost.lua b/server/Quests/Blackburrow/rare_rock_lost.lua
index 6275ca1e3..d15a1e9ac 100755
--- a/server/Quests/Blackburrow/rare_rock_lost.lua
+++ b/server/Quests/Blackburrow/rare_rock_lost.lua
@@ -10,6 +10,7 @@
Followed by:
--]]
+
function Init(Quest)
AddQuestStepKill(Quest, 1, "Recover red rock shards", 1, 30, "I need to find the rock samples somewhere in the mines of Blackburrow. There is a good chance that the miners and excavators might already have them.", 1121, 170010, 170029)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
diff --git a/server/Quests/CastleviewHamlet/a_sack_of_rusty_daggers_for_kruuprum.lua b/server/Quests/CastleviewHamlet/a_sack_of_rusty_daggers_for_kruuprum.lua
index c4d55db64..786c24d55 100755
--- a/server/Quests/CastleviewHamlet/a_sack_of_rusty_daggers_for_kruuprum.lua
+++ b/server/Quests/CastleviewHamlet/a_sack_of_rusty_daggers_for_kruuprum.lua
@@ -49,8 +49,7 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
IronmalletChat(Quest, QuestGiver, Player)
- end
- if Step == 2 then
+ elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/CastleviewHamlet/bog_exploring_for_grommluk.lua b/server/Quests/CastleviewHamlet/bog_exploring_for_grommluk.lua
index 731f7fca8..3e7f63056 100755
--- a/server/Quests/CastleviewHamlet/bog_exploring_for_grommluk.lua
+++ b/server/Quests/CastleviewHamlet/bog_exploring_for_grommluk.lua
@@ -16,7 +16,7 @@ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepZoneLoc(Quest, 1, "I need to collect Peat Bog water.", 18, "I need to collect bog water in Grommluk's jar from the middle of Peat Bog.", 356, 667.10, -33.6, 501.99,829)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
-UpdateQuestZone(Quest, "The Peat Bog")
+UpdateQuestZone(Quest, "Peat Bog")
end
function Accepted(Quest, QuestGiver, Player)
diff --git a/server/Quests/CastleviewHamlet/gathering_elddar_leaves.lua b/server/Quests/CastleviewHamlet/gathering_elddar_leaves.lua
index 2aa5ef4c9..b3bae8096 100755
--- a/server/Quests/CastleviewHamlet/gathering_elddar_leaves.lua
+++ b/server/Quests/CastleviewHamlet/gathering_elddar_leaves.lua
@@ -12,7 +12,7 @@
require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepLocation(Quest, 1, "I need to gather Elddar leaves for Scribe Bleemeb.", 14, "I need to gather leaves from the base of the greatest Elddar tree in the grove.", 199, 663.74 -9.72 -373.53)
+ AddQuestStepZoneLoc(Quest, 1, "I need to gather Elddar leaves for Scribe Bleemeb.", 15, "I need to gather leaves from the base of the greatest Elddar tree in the grove.", 199, 663.74, -9.72, -373.53,207 )
AddQuestStepCompleteAction(Quest, 1, "LeavesGathered")
UpdateQuestZone(Quest, "The Eldarr Grove")
end
diff --git a/server/Quests/CastleviewHamlet/proving_myself_to_captain_gerathalas.lua b/server/Quests/CastleviewHamlet/proving_myself_to_captain_gerathalas.lua
index bd8914810..de164059b 100755
--- a/server/Quests/CastleviewHamlet/proving_myself_to_captain_gerathalas.lua
+++ b/server/Quests/CastleviewHamlet/proving_myself_to_captain_gerathalas.lua
@@ -9,19 +9,20 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill some putrid vermin.", 6, 100, "I need to collect six putrid vermin tails for Captain Gerathalas from the Catacombs.", 99, 1990008, 1990010)
+ AddQuestStepKill(Quest, 1, "I must kill some putrid vermin.", 6, 100, "I need to collect six putrid vermin tails for Captain Gerathalas from the Catacombs.", 99, 1990008, 1990010,8340033,8340041)
AddQuestStepCompleteAction(Quest, 1, "RatHunted")
UpdateQuestZone(Quest, "The Down Below")
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
Dialog.AddDialog("Good, good! The vermin live in the catacombs. Bring me back some of those putrid rat's tails and I'll reward you with a piece of armor.")
Dialog.AddVoiceover("voiceover/english/knight-captain_gerathalas/qey_village04/captaingerathalas001.mp3",1809197225,35106101)
- PlayFlavor(NPC, "", "", "agree", 0,0 , Spawn)
+ PlayFlavor(QuestGiver, "", "", "agree", 0,0 , Player)
Dialog.AddOption("Great, I'll be right back to prove how well I can take care of myself.")
Dialog.Start()
end
diff --git a/server/Quests/CastleviewHamlet/reservations_for_a_visitor.lua b/server/Quests/CastleviewHamlet/reservations_for_a_visitor.lua
index fff309349..6102ed982 100755
--- a/server/Quests/CastleviewHamlet/reservations_for_a_visitor.lua
+++ b/server/Quests/CastleviewHamlet/reservations_for_a_visitor.lua
@@ -33,7 +33,7 @@ function Declined(Quest, QuestGiver, Player)
end
function CheckIn(Quest, QuestGiver, Player)
-UpdateQuestStepDescription(Quest, 1, "I've made reservations with innkeeper Valean.")
+ UpdateQuestStepDescription(Quest, 1, "I've made reservations with innkeeper Valean.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've spoken with innkeeper Valean and made reservations for Taneran.")
AddQuestStepChat(Quest, 2, "I need to return to Listalania.", 1, "Listalania should know Taneran's reservation is set at the inn.", 0, 2360011)
@@ -50,7 +50,7 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- Delivery(Quest, QuestGiver, Player)
+ CheckIn(Quest, QuestGiver, Player)
elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
diff --git a/server/Quests/CastleviewHamlet/substance_extract_for_yanari.lua b/server/Quests/CastleviewHamlet/substance_extract_for_yanari.lua
index 7ba54a7b6..fe9739c63 100755
--- a/server/Quests/CastleviewHamlet/substance_extract_for_yanari.lua
+++ b/server/Quests/CastleviewHamlet/substance_extract_for_yanari.lua
@@ -9,9 +9,10 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill some crypt substances.", 6, 80, "I need to slay six crypt substances in the Down Below.", 329, 1990003)
+ AddQuestStepKill(Quest, 1, "I must kill some crypt substances.", 6, 80, "I need to slay six crypt substances in the Down Below.", 329, 8340022)
AddQuestStepCompleteAction(Quest, 1, "Turnin")
UpdateQuestZone(Quest,"The Down Below")
end
@@ -55,8 +56,7 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
Turnin(Quest, QuestGiver, Player)
- end
- if Step == 2 then
+ elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/CastleviewHamlet/sword_for_aadalian.lua b/server/Quests/CastleviewHamlet/sword_for_aadalian.lua
index dc579b397..9ad05d950 100755
--- a/server/Quests/CastleviewHamlet/sword_for_aadalian.lua
+++ b/server/Quests/CastleviewHamlet/sword_for_aadalian.lua
@@ -21,7 +21,7 @@ function Accepted(Quest, QuestGiver, Player)
Dialog.New(QuestGiver, Player)
Dialog.AddDialog("My design is not mere decoration, friend. The inscription chronicles the cohabitation of our two races. Would you be kind and see what's keeping the sword at Froptub's smithy?")
Dialog.AddVoiceover("voiceover/english/aadalian_farenair/qey_village04/aadalianfarenair001.mp3",1068773246, 2639950014)
- PlayFlavor(QuestGiver, "", "", "shrug", 0,0 , Player)
+ PlayFlavor(QuestGiver, "", "", "no", 0,0 , Player)
Dialog.AddOption("I suppose I can do that.")
Dialog.Start()
end
diff --git a/server/Quests/CastleviewHamlet/the_lost_book_of_arbos.lua b/server/Quests/CastleviewHamlet/the_lost_book_of_arbos.lua
index 18def6db1..158c16d6c 100755
--- a/server/Quests/CastleviewHamlet/the_lost_book_of_arbos.lua
+++ b/server/Quests/CastleviewHamlet/the_lost_book_of_arbos.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I must find Faeadaen.", 1, "I must search Castleview Hamlet for Faeadaen.", 0, 2360022)
@@ -16,7 +17,8 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ PlayFlavor(QuestGiver, "", "", "thanks", 0,0 , Player)
+ CloseConversation(QuestGiver,Player)
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/CastleviewHamlet/valeans_stolen_books.lua b/server/Quests/CastleviewHamlet/valeans_stolen_books.lua
index b2eb23d51..ef2df2456 100755
--- a/server/Quests/CastleviewHamlet/valeans_stolen_books.lua
+++ b/server/Quests/CastleviewHamlet/valeans_stolen_books.lua
@@ -11,13 +11,13 @@
--]]
function Init(Quest)
- AddQuestStepLocation(Quest, 1, "I must search for Valean's books.", 2, "I need to seek out the stolen books within the Down Below section of the catacombs. ", 11, -13,0.8, -5.93)
+ AddQuestStepZoneLoc(Quest, 1, "I must search for Valean's books.", 3, "I need to seek out the stolen books within the Down Below section of the catacombs. ", 11, -13,0.8, -5.93,834)
AddQuestStepCompleteAction(Quest, 1, "DownBelow")
UpdateQuestZone(Quest, "The Down Below")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ PlayFlavor(QuestGiver,"","","thanks",0,0,Player)
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Caves/FarSeasDirectRequisitionCVS0276.lua b/server/Quests/Caves/FarSeasDirectRequisitionCVS0276.lua
index 2bc1d07f3..0ec019289 100755
--- a/server/Quests/Caves/FarSeasDirectRequisitionCVS0276.lua
+++ b/server/Quests/Caves/FarSeasDirectRequisitionCVS0276.lua
@@ -49,6 +49,9 @@ function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in Nettleville. I have been paid in full for this work, but the order was late.")
GiveQuestReward(Quest, Player)
+ if HasItem(Player,7046) then
+ RemoveItem(Player,7046,1)
+ end
end
function Reload(Quest, QuestGiver, Player, Step)
diff --git a/server/Quests/Commonlands/ZaZasLittleProblem.lua b/server/Quests/Commonlands/ZaZasLittleProblem.lua
index 5d13b4546..3e42180b6 100755
--- a/server/Quests/Commonlands/ZaZasLittleProblem.lua
+++ b/server/Quests/Commonlands/ZaZasLittleProblem.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Quests/Commonlands/ZaZasLittleProblem.lua
Script Purpose : Handles the quest, "ZaZa's Little Problem"
- Script Author : premierio015
+ Script Author : premierio015\\Dorbin
Script Date : 20.05.2021
Script Notes : Auto generated with QuestParser.
@@ -11,6 +11,7 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need monitor behemoth tears from the Commonlands.", 2, 100, "I need to collect the required ingredients for ZaZa's potion.", 176, 330065, 330738)
@@ -19,17 +20,18 @@ function Init(Quest)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "See you soon.")
- StartConversation(conversation, QuestGiver, Player, "I'm trusting you with the happiness of my marriage. You are most kind to help poor ZaZa. I will see you again ... soon.")
- PlayFlavor(NPC, "voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska004.mp3", "", "", 3780741793, 1494900278)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'm trusting you with the happiness of my marriage. You are most kind to help poor ZaZa. I will see you again ... soon.")
+ Dialog.AddVoiceover("voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska004.mp3", 3780741793, 1494900278)
+ Dialog.AddOption("See you soon.")
+ Dialog.Start()
end
@@ -44,15 +46,22 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I obtained monitor behemoth tears for ZaZa.")
+ CheckProgress(Quest, QuestGiver, Player)
end
function Step2Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 2, "I obtained the vulrich blood for ZaZa.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I got the venom I needed to complete ZaZa's potion.")
+ CheckProgress(Quest, QuestGiver, Player)
end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, 451, 1) and QuestStepIsComplete(Player, 451, 2) and QuestStepIsComplete(Player, 451, 3) then
- UpdateQuestTaskGroupDescription(Quest, 1, "I've obtained the monitor behemoth tears.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've obtained Zaza's ingredients.")
AddQuestStepChat(Quest, 4, "I need to speak to ZaZa.", 1, "I need to speak with ZaZa Lenska in the Commonlands.", 11, 330051)
AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
@@ -60,10 +69,6 @@ end
end
-function Step3Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 3, "I got the venom I needed to complete ZaZa's potion.")
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 4, "I have spoken to ZaZa.")
diff --git a/server/Quests/Commonlands/the_return_of_the_light.lua b/server/Quests/Commonlands/the_return_of_the_light.lua
index e0baaef83..c328220ad 100755
--- a/server/Quests/Commonlands/the_return_of_the_light.lua
+++ b/server/Quests/Commonlands/the_return_of_the_light.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Quests/Commonlands/the_return_of_the_light.lua
Script Purpose : Handles the quest, "The Return of the Light"
- Script Author : premierio015
+ Script Author : premierio015//Dorbin
Script Date : 30.05.2021
Script Notes : Auto generated with QuestParser.
@@ -19,7 +19,10 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player,4737,1) then
+ RemoveItem(Player,4737)
+ SendMessage(Player,"You place the burned out light stone in your quest satchle.")
+ end
end
function Declined(Quest, QuestGiver, Player)
@@ -42,7 +45,7 @@ function Step1Complete(Quest, QuestGiver, Player)
end
function Step2Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 2, "I touched "the Mourned" with the lightstone.")
+ UpdateQuestStepDescription(Quest, 2, "I touched \"the Mourned\" with the lightstone.")
CheckProgress(Quest, QuestGiver, Player)
end
@@ -55,7 +58,7 @@ end
function Step4Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 4, "I returned to Cannix Silverflame.")
UpdateQuestTaskGroupDescription(Quest, 3, "I returned to Cannix Silverflame.")
- GiveQuestItem(Quest, Player, "I returned to Cannix Silverflame.", 151067)
+
AddQuestStepKill(Quest, 5, "I need to slay the lion Rama'nai.", 1, 100, "I need to find and kill the great beast Rama'nai in honorable combat. He can be found in the Commonlands.", 611, 330088)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
end
@@ -63,10 +66,7 @@ end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I slew Rama'nai.")
UpdateQuestTaskGroupDescription(Quest, 4, "I defeated the lion Rama'nai in combat and dipped the lightstone in his blood. The stone is glowing brighter now.")
- if HasItem(Player, 151067) then
- RemoveItem(Player, 151067)
- end
- GiveQuestItem(Quest, Player, "I returned to Cannix Silverflame.", 144492)
+
AddQuestStepChat(Quest, 6, "I should return to Cannix Silverflame.", 1, "I should return to Cannix Silverflame.", 11, 330175)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
end
@@ -75,9 +75,9 @@ function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I returned to Cannix Silverflame.")
UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Cannix Silverflame.")
AddQuestStepKill(Quest, 7, "I need to slay Captain Ogof.", 1, 100, "I need to find and defeat the orc captains that are defiling and stealing from the ancient graves of the Knights of Truth.", 611, 330266)
- AddQuestStepKill(Quest, 8, "I need to slay Captain Gaer.", 1, 100, "I need to find and defeat the orc captains that are defiling and stealing from the ancient graves of the Knights of Truth.", 611, 330264)
+ AddQuestStepKill(Quest, 8, "I need to slay Captain Gaer.", 1, 100, "I need to find and defeat the orc captains that are defiling and stealing from the ancient graves of the Knights of Truth.", 611, 330264)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
- AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
@@ -93,10 +93,7 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I returned to Cannix Silverflame.")
UpdateQuestTaskGroupDescription(Quest, 7, "I returned to Cannix Silverflame.")
- if HasItem(Player, 144492) then
- RemoveItem(Player, 144492)
- end
- GiveQuestItem(Quest, Player, "I returned to Cannix Silverflame.", 180730)
+
AddQuestStepKill(Quest, 10, "I need to defeat the High Priest of Val'marr.", 1, 100, "I need to release the High Priest of Val'marr from his cursed state and allow him to rest in peace.", 611, 330076)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
@@ -111,10 +108,7 @@ end
function Step11Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 11, "I returned to Cannix Silverflame.")
UpdateQuestTaskGroupDescription(Quest, 9, "I returned to Cannix Silverflame.")
- if HasItem(Player, 180730) then
- RemoveItem(Player, 180730)
- end
- GiveQuestItem(Quest, Player, "I returned to Cannix Silverflame.", 155134)
+
AddQuestStepKill(Quest, 12, "I need to recover a broken Sword of Truth from General Drull.", 1, 100, "I need to recover a broken Sword of Truth from the orc General Drull. Cannix says he can be found in the Bloodskulls' camp.", 45, 3060020)
AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
end
@@ -123,7 +117,7 @@ function Step12Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 12, "I recovered the broken Sword of Truth from General Drull.")
UpdateQuestTaskGroupDescription(Quest, 10, "I recovered the sword from General Drull. I found him in Bloodskull Valley with the other leaders of the Bloodskull clan.")
- AddQuestStep(Quest, 13, "I should return to Cannix Silverflame.", 1, 100, "I should return to Cannix Silverflame.", 11)
+ AddQuestStepKill(Quest, 13, "I should return to Cannix Silverflame.", 1, 100, "I should return to Cannix Silverflame.", 11,330404)
AddQuestStepCompleteAction(Quest, 13, "QuestComplete")
end
@@ -131,15 +125,17 @@ function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 13, "I got my Greater Lightstone back.")
UpdateQuestTaskGroupDescription(Quest, 11, "I got my Greater Lightstone back.")
-
+ if HasItem(Player, 155134,1) then
+ RemoveItem(Player, 155134)
+ end
UpdateQuestDescription(Quest, "It looks like I now have in my possession a legendary Greater Lightstone. By following the directions of Cannix Silverflame, I was able to increase the power of the lightstone gradually. Cannix says this object has some importance among his people, too bad he isn't around anymore so I can ask him about it...")
GiveQuestReward(Quest, Player)
end
function CheckProgress(Quest, QuestGiver, Player)
-if QuestStepIsComplete(Player, 485, 2) and QuestStepIsComplete(Player, 485, 3) then
- UpdateQuestTaskGroupDescription(Quest, 2, "I touched the lightstone to both of the Cavalier statues ''the Mourned'' and ''the Forgotten''. My lightstone seems to be glowing brighter now.")
+if QuestStepIsComplete(Player, 485, 2) and QuestStepIsComplete(Player, 485, 3) and not QuestStepIsComplete(Player,485,4) then
+ UpdateQuestTaskGroupDescription(Quest, 2, "I touched the lightstone to both of the Cavalier statues ''the Mourned'' and ''the Forgotten''. My lightstone seems to be glowing brighter now.")
AddQuestStepChat(Quest, 4, "I should return to Cannix Silverflame.", 1, "I should return to Cannix Silverflame.", 11, 330175)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
elseif QuestStepIsComplete(Player, 485, 7) and QuestStepIsComplete(Player, 485, 8) then
diff --git a/server/Quests/EnchantedLands/halt_who_goes_there.lua b/server/Quests/EnchantedLands/halt_who_goes_there.lua
new file mode 100755
index 000000000..8af5a076c
--- /dev/null
+++ b/server/Quests/EnchantedLands/halt_who_goes_there.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : halt_who_goes_there.lua
+ Script Purpose : Handles the quest, "Halt, Who Goes There?"
+ Script Author : Neveruary
+ Script Date : 11/27/2022
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : Enchanted Lands
+ Quest Giver : Deputy Kegie
+ Preceded by : None
+ Followed by : None
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Slay the Mistcaller mischiefmakers near the Fae Island!", 15, 100, "Assist Deputy Kegie in removing the threat to the Deputies near the end of the Lazy Drain.", 611, 390048)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've slain several mischiefmakers.")
+
+ AddQuestStepChat(Quest, 2, "Report back to Deputy Kegie.", 1, "Assist Deputy Kegie in removing the threat to the Deputies near the end of the Lazy Drain.", 11, 390183)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've reported to Deputy Kegie.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've assisted Deputy Kegie, but he is still frightened by something.")
+
+ UpdateQuestDescription(Quest, "There must be more to the situation than meets the eye. Deputy Kegie is frightened out of his wits but I'm not sure the Mistcaller mischiefmakers are the cause. Maybe the Deputy just needs to get out more. Maybe he needs a date more than he needs a rescue.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/EnchantedLands/sanity_check.lua b/server/Quests/EnchantedLands/sanity_check.lua
new file mode 100755
index 000000000..f68dd4173
--- /dev/null
+++ b/server/Quests/EnchantedLands/sanity_check.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : sanity_check.lua
+ Script Purpose : Handles the quest, "Sanity Check"
+ Script Author : QuestParser (Replace this)
+ Script Date : 11/27/2022
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : Enchanted Lands
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+
+function Init(Quest)
+ AddQuestStepObtainItem(Quest, 1, "Pick up a badger for Deputy Kegie. Heck, get a few!", 7, 100, "I'm on my way to visit Deputy Kegie.", 127, 0)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "Obtained badgers for Deputy Kegie to bake.")
+ AddQuestStepChat(Quest, 2, "Deliver badgers to Deputy Kegie in a wagon near the Lazy Drain.", 1, "I'm on my way to visit Deputy Kegie.", 11, 0)
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "Spoke with Deputy Kegie.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've spoken with Deputy Kegie and given him a badger.")
+
+ UpdateQuestDescription(Quest, "I spoke to Deputy Kegie, who seems desperate for company. Maybe I'll drop by to see him from time to time. We might be able to figure out what happened to his partner someday.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/EnchantedLands/start_of_something_big.lua b/server/Quests/EnchantedLands/start_of_something_big.lua
new file mode 100755
index 000000000..41a6e64da
--- /dev/null
+++ b/server/Quests/EnchantedLands/start_of_something_big.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Quests/EnchantedLands/start_of_something_big.lua
+ Script Author : Neveruary
+ Script Date : 2022.11.26 02:11:51
+ Script Purpose :
+
+ Zone : EnchantedLands
+ Quest Giver: Deputy Nettlebrine
+ Preceded by: None
+ Followed by: Surveyor Says
+--]]
+
+function Init(Quest)
+end
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function quest_complete(Quest, QuestGiver, Player)
+
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+
+end
+
diff --git a/server/Quests/EnchantedLands/surveyor_says.lua b/server/Quests/EnchantedLands/surveyor_says.lua
new file mode 100755
index 000000000..ce083cab6
--- /dev/null
+++ b/server/Quests/EnchantedLands/surveyor_says.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Quests/EnchantedLands/surveyor_says.lua
+ Script Author : Neveruary
+ Script Date : 2022.11.26 02:11:25
+ Script Purpose :
+
+ Zone : EnchantedLands
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function quest_complete(Quest, QuestGiver, Player)
+
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+
+end
+
diff --git a/server/Quests/EnchantedLands/whats_this_thing_do.lua b/server/Quests/EnchantedLands/whats_this_thing_do.lua
new file mode 100755
index 000000000..0efe584bb
--- /dev/null
+++ b/server/Quests/EnchantedLands/whats_this_thing_do.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Quests/EnchantedLands/whats_this_thing_do.lua
+ Script Author : Neveruary
+ Script Date : 2022.11.26 02:11:03
+ Script Purpose :
+
+ Zone : EnchantedLands
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function quest_complete(Quest, QuestGiver, Player)
+
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+
+end
+
diff --git a/server/Quests/FarJourneyFreeport/TasksaboardtheFarJourney.lua b/server/Quests/FarJourneyFreeport/TasksaboardtheFarJourney.lua
index 79e3fe177..fe14533fb 100755
--- a/server/Quests/FarJourneyFreeport/TasksaboardtheFarJourney.lua
+++ b/server/Quests/FarJourneyFreeport/TasksaboardtheFarJourney.lua
@@ -58,6 +58,9 @@ function Step5Init(Quest, QuestGiver, Player)
AddQuestStepObtainItem(Quest, 5, "I should find a way to buy the shard from Merchant Vim.", 1, 100, "Ingrid would like me to buy her a Shard of Luclin.", 11, ShardOfLucin)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
SetTutorialStep(Player, 24)
+-- while HasItem(Player,12565,1) do
+-- SetStepComplete(Player,524,5)
+-- end
end
function Step6Init(Quest, QuestGiver, Player)
@@ -88,9 +91,6 @@ end
function Step9Init(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 8, "I have killed the rats.")
UpdateQuestTaskGroupDescription(Quest, 8, "I killed the rats that Captain Varlos requested.")
- if GetLevel(Player) <2 then
- SetPlayerLevel(Player,2)
- end
AddQuestStepChat(Quest, 9, "I should speak to Captain Varlos.", 1, "Inform Captain Varlos that you have exterminated the vermin.", 11, CaptainVarlos)
AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
end
@@ -104,7 +104,7 @@ function Step10Init(Quest, QuestGiver, Player)
end
function CurrentStep(Quest, QuestGiver, Player)
- if GetQuestStep(Player, 524) == 2 then
+ if GetQuestStepProgress(Player, 524,2) == 0 and GetQuestStep(Player, 524) == 2 then
i = 1
spawns = GetSpawnListBySpawnID(Player, 270010)
repeat
@@ -117,7 +117,10 @@ function CurrentStep(Quest, QuestGiver, Player)
i = i + 1
until spawn == Nil
InstructionWindow(Player, -1.0, "You completed the first part of the quest. As you complete quests and defeat enemies, you earn experience points. This is represented in your experience point display. Filling your experience point display is always a requirement to gain your next level. As you gain levels, you will gain access to more powerful skills and abilities.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_011_f16aa848.mp3", 1702963584, 3318288731, "tutorial_stage_15", "", "continue")
- FlashWindow(Player, "MainHUD.Experience", 15.0)
+-- InstructionWindow(Player, -1.0, "You completed the first part of the quest. As you complete quests and defeat enemies, you earn experience points. This is represented in your experience point display. Filling your experience point display is always a requirement to gain your next level. As you gain levels, you will gain access to more powerful skills and abilities.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_011_f16aa848.mp3", 1702963584, 3318288731, "", "", "continue")
+ if GetClientVersion(Player)<=546 then
+ FlashWindow(Player, "MainHUD.Experience", 15.0)
+ end
SetTutorialStep(Player, 14)
AddPrimaryEntityCommandAllSpawns(Player, 270010, "open", 10, "open")
chest = GetRandomSpawnByID(Player, 270010)
@@ -293,8 +296,8 @@ function Accepted(Quest, QuestGiver, Player)
local Waulon = GetSpawn(QuestGiver, 270002)
FaceTarget(QuestGiver, Waulon)
--- local Ingred = GetSpawn(QuestGiver, 270001)
--- WalkToGeredo(Ingred, Spawn)
+-- local Ingred = GetSpawn(Player, 270001)
+-- WalkToGeredo(Ingred, Player)
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Freeport/AFesteringProblem.lua b/server/Quests/Freeport/AFesteringProblem.lua
new file mode 100755
index 000000000..45c562966
--- /dev/null
+++ b/server/Quests/Freeport/AFesteringProblem.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : a_festering_problem.lua
+ Script Purpose : Handles the quest, "A Festering Problem"
+ Script Author : QCynnar
+ Script Date : 4/8/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+local AQeynosianScout = 330306
+local AQeynosianProtector = 330307
+local Kraofla = 330291
+local OfficerGezlowe = 5590146
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Find and destroy the Qeynosians and the rescued froglok.", 1, 100, "Search out the Qeynosians and put the froglok down once more.", 11, Kraofla)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ conversation = CreateConversation()
+
+ PlayFlavor(QuestGiver, "intelligence_officer_gezlowe/fprt_west/io_gezlowe009.mp3", "", "", 1341018136, 217983311, Player)
+ AddConversationOption(conversation, "Fine.")
+ StartConversation(conversation, QuestGiver, Player, "Hey, I don't care about that. What matters is that it's still alive. Go take care of it.")
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "Gezlowe's orders have been followed - the enemies of Freeport are dead.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "The Qeynosians and the froglok have been dealt with appropriately.")
+
+ AddQuestStepChat(Quest, 2, "Inform Gezlowe of the demise of the camp.", 1, "With the froglok dead, I must return once more to Gazlowe.", 11, OfficerGezlowe)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have informed Gezlowe of the froglok's demise.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I.O. Gezlowe has been informed of the death of the Qeynosians and the frog.")
+
+ UpdateQuestDescription(Quest, "I've managed to wipe out the scum of Qeynos and cleanse the stench of that foul frog from the lands outside the city gates. However, it looks like there may be more to be done.
")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Freeport/AnIncriminatingLetter.lua b/server/Quests/Freeport/AnIncriminatingLetter.lua
new file mode 100755
index 000000000..e1c463fd4
--- /dev/null
+++ b/server/Quests/Freeport/AnIncriminatingLetter.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : AnIncriminatingLetter.lua
+ Script Purpose : Handles the quest, "Eliminate Geraufl"
+ Script Author : Cynnar
+ Script Date : 11/20/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+local Geraufl = 1300005
+
+
+function Init(Quest)
+ AddQuestStepLocation(Quest, 1, "Find the old froglok in the jail.", 1, "Geraufl must be killed before his existence invites anymore Qeynosian slime to attempt his rescue.", 11, 173, -23, 128)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "It seems that the frog has been moved.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "It appears that the guards have moved Geraufl deeper into the prison. Just my luck.")
+
+ AddQuestStepKill(Quest, 2, "Slink down into the jail and kill Geraufl.", 1, 100, "I'll need to slip down into the deeper reaches of the jail to kill Geraufl.", 11, Geraufl)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've failed in my mission to kill the frog.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Geraufl has escaped through my own incompetence. Fortunately no one is left to tell the tale of my... indiscretion.")
+
+ UpdateQuestDescription(Quest, "My intentions were good, but I unfortunately failed in my mission to kill the froglok. He escaped the jail while I was stunned, likely fled into the sewers. Unfortunately, I suppose this may mean we'll start to see more of them in the future.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
+
diff --git a/server/Quests/Freeport/QuellingTheRebellion.lua b/server/Quests/Freeport/QuellingTheRebellion.lua
new file mode 100755
index 000000000..c7c875db8
--- /dev/null
+++ b/server/Quests/Freeport/QuellingTheRebellion.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : quelling_the_rebellion.lua
+ Script Purpose : Handles the quest, "Quelling the Rebellion"
+ Script Author : QuestParser (Replace this)
+ Script Date : 4/29/2023
+ Script Notes : Cynnar
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+local JethTheSpy = 5590962
+local InfiltratorKath = 5590963
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Find and slay J.T.S.", 1, 100, "Lurking somewhere in the city is a traitor. Find and slay this "J.T.S."", 11, JethTheSpy)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "Jeth's dead... Jeth's dead.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "The elimination of Jeth has revealed that yet another traitor lurks within the city.")
+
+ AddQuestStepLocation(Quest, 2, "Search the city of Freeport for the second infiltrator.", 1, "There are no clues to the location of this new traitor, so I must search thoroughly.", 11, -113, -11, -82)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "The second traitor has been located.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "The second infiltrator has been holed up in the Jade Tiger's Den.")
+
+ AddQuestStepKill(Quest, 3, "Destroy the second traitor before she can free Geraufl.", 1, 100, "Slay the infiltrator before she manages to free Geraufl.", 11, InfiltratorKath)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "With the death of the second traitor, the threat has ended... for now.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "Though the last Qeynosian has been sent to her grave, it may benefit the city if I simply kill Geraufl.")
+
+ UpdateQuestDescription(Quest, "I have unraveled the traitorous plans of these frogs. It may be better that I simply destroy the one in the jail before he can cause more trouble or try and escape.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Graveyard/RustySymbolOfMarr.lua b/server/Quests/Graveyard/RustySymbolOfMarr.lua
index c0a7422f5..56759a984 100755
--- a/server/Quests/Graveyard/RustySymbolOfMarr.lua
+++ b/server/Quests/Graveyard/RustySymbolOfMarr.lua
@@ -18,7 +18,10 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player,2555,1) then
+ RemoveItem(Player,2555)
+ SendMessage(Player,"You place the rusty symbol of Marr in your quest satchle.")
+ end
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Graveyard/bring_out_your_souls.lua b/server/Quests/Graveyard/bring_out_your_souls.lua
index fd0d6f426..e1d9b7ed8 100755
--- a/server/Quests/Graveyard/bring_out_your_souls.lua
+++ b/server/Quests/Graveyard/bring_out_your_souls.lua
@@ -1,7 +1,7 @@
--[[
Script Name : bring_out_your_souls.lua
Script Purpose : Handles the quest, "Bring Out Your Souls"
- Script Author : premierio015
+ Script Author : premierio015\\Dorbin
Script Date : 25.06.2021
Script Notes : Auto generated with QuestParser.
@@ -10,15 +10,22 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill undead", 10, 100, "Zekvila asked me to destroy some undead in the Graveyard. I'll hold out the crystal as each one is destroyed. I can reach the Graveyard by using any of the bells in and around the City of Freeport.", 611, 1250007, 1250006, 1250010, 1250008, 1250018, 1250012, 1250013, 1250019, 1250030, 1250033, 1250026, 1250023, 1250028, 1250024, 1250021)
+ AddQuestStepKill(Quest, 1, "Kill undead knights", 10, 100, "Zekvila asked me to destroy some undead knights in the Graveyard. I'll hold out the crystal as each one is destroyed.", 611, 1250007, 1250006, 1250010, 1250008, 1250018, 1250012, 1250013, 1250019, 1250030, 1250033, 1250026, 1250023, 1250028, 1250024, 1250021,8390034,8390040)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Graveyard")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You choose wisely, friend. I shall use the lessons taught to the Iksar by our dead emperor, Venril Sathir. This is where you come in ... the magic of the dead will put a stop to Ithelz's pompous belief that he is our new ruler. I will tell you only once: take the crystal, go to the graveyard, and kill the undead knights. As the beasts die, hold out the crystal and collect their souls. Return when you fill the crystal.")
+ Dialog.AddVoiceover("voiceover/english/zekvila_dizelk/fprt_hood06/quests/zekviladizelk/zekvila_x1_accept.mp3", 159211273, 3086323061)
+ Dialog.AddOption("I understand. I'll be back when it's done.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -32,8 +39,9 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have killed the undead.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've killed ten undead and collected their souls.")
+ UpdateQuestZone(Quest,"Scale Yard")
- AddQuestStepChat(Quest, 2, "Speak with Zekvila", 1, "I should return the crystal to Zekvila in the Graveyard. I can reach the Graveyard by using any of the bells in and around the City of Freeport.", 11, 1250034)
+ AddQuestStepChat(Quest, 2, "Speak with Zekvila", 1, "I should return the crystal to Zekvila in the Scale Yard.", 1178, 1250034,1390128)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
diff --git a/server/Quests/Graveyard/natashas_note.lua b/server/Quests/Graveyard/natashas_note.lua
new file mode 100755
index 000000000..140cc2d7c
--- /dev/null
+++ b/server/Quests/Graveyard/natashas_note.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Quests/Graveyard/natashas_note.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.14 04:11:37
+ Script Purpose :
+
+ Zone : Graveyard
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to find Tarakh.", 1, "I should take this note to Tarakh. Based on the note's contents, he is probably a Ratonga.", 185, 1360000)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"Temple Street")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ if HasItem(Player,1568,1) then
+ RemoveItem(Player,1568)
+ SendMessage(Player,"You place the dirty note in your quest satchle.")
+ end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I sold the note to Tarakh.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I sold the note to Tarakh and turned a small profit.")
+
+ UpdateQuestDescription(Quest, "Looks like I turned that worthless paper into a little coin. Tarakh wasn't happy the note contained so little information. Too bad for him.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/GraystoneYard/graystone_bank_tally_delivery.lua b/server/Quests/GraystoneYard/graystone_bank_tally_delivery.lua
index f29464414..e7c19f88e 100755
--- a/server/Quests/GraystoneYard/graystone_bank_tally_delivery.lua
+++ b/server/Quests/GraystoneYard/graystone_bank_tally_delivery.lua
@@ -10,6 +10,7 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
diff --git a/server/Quests/GraystoneYard/rat_man_bloodsaber_crusade.lua b/server/Quests/GraystoneYard/rat_man_bloodsaber_crusade.lua
index 427c2e5cf..6f6ab4666 100755
--- a/server/Quests/GraystoneYard/rat_man_bloodsaber_crusade.lua
+++ b/server/Quests/GraystoneYard/rat_man_bloodsaber_crusade.lua
@@ -9,10 +9,11 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill four ratonga Bloodsabers.", 4, 100, "I need to slay four ratonga Bloodsabers in the Down Below.", 611, 1990025,1990026,1990027,1990023)
+ AddQuestStepKill(Quest, 1, "I must kill four ratonga Bloodsabers.", 4, 100, "I need to slay four ratonga Bloodsabers in the Down Below.", 611, 8340015,8340016,8340017,8340018, 8340019, 8340055)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"The Down Below")
end
@@ -26,7 +27,13 @@ function Step1Complete(Quest,QuestGiver,Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Then seek out the catacombs! You must slay the Bloodsabers in the caverns. May your faith in the righteous bring you victory, or welcome you in the afterlife. The gods are watching!")
+ Dialog.AddVoiceover("voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel002", 1937849354, 1911529851)
+ PlayFlavor(QuestGiver, "","","agree",0,0,Player)
+ Dialog.AddOption("I will prove myself. I will be back.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/GraystoneYard/shrillers_for_tillheel.lua b/server/Quests/GraystoneYard/shrillers_for_tillheel.lua
index 8c99558a4..caab6a27a 100755
--- a/server/Quests/GraystoneYard/shrillers_for_tillheel.lua
+++ b/server/Quests/GraystoneYard/shrillers_for_tillheel.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill some juvenile shrillers.", 5, 100, "I must slay five juvenile shrillers to obtain their wings for Tillheel.", 140, 1990004,1990022,1990001,8290020)
+ AddQuestStepKill(Quest, 1, "I must kill some juvenile shrillers.", 5, 100, "I must slay five juvenile shrillers to obtain their wings for Tillheel.", 140, 8340031,8290020)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Multiple Zones")
end
diff --git a/server/Quests/Hallmark/baubbleshire_citizenship_task.lua b/server/Quests/Hallmark/baubbleshire_citizenship_task.lua
index da238d903..33fa5beda 100755
--- a/server/Quests/Hallmark/baubbleshire_citizenship_task.lua
+++ b/server/Quests/Hallmark/baubbleshire_citizenship_task.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Caves.", 5, 30, "The local caves have been seeded with tokens for the citizens of the Baubbleshire to gather. These tokens may be found on any creatures in the Caves.", 1350, 8260001, 8260002, 8260003, 8260004, 8260005, 8260006, 8260007, 8260008, 8260009, 8260010, 8260011, 8260012, 8260013, 8260014, 8260015,8260016, 8260017, 8260018, 8260019, 8260020, 8260021, 8260022, 8260023, 8260024, 8260025, 8260026, 8260028, 8260030, 8260031, 8260032, 8260034, 8260073,8260074, 8260077, 8260078, 8260079, 8260080, 8260082, 8260083, 8260086, 8260087, 8260088, 8260089, 8260090, 8260091, 8260093, 8260094)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Caves.", 5, 34, "The local caves have been seeded with tokens for the citizens of the Baubbleshire to gather. These tokens may be found on any creatures in the Caves.", 1350, 8260001, 8260002, 8260003, 8260004, 8260005, 8260006, 8260007, 8260008, 8260009, 8260010, 8260011, 8260012, 8260013, 8260014, 8260015,8260016, 8260017, 8260018, 8260019, 8260020, 8260021, 8260022, 8260023, 8260024, 8260025, 8260026, 8260028, 8260030, 8260031, 8260032, 8260034, 8260073,8260074, 8260077, 8260078, 8260079, 8260080, 8260082, 8260083, 8260086, 8260087, 8260088, 8260089, 8260090, 8260091, 8260093, 8260094)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Caves")
end
@@ -42,8 +42,8 @@ function Step2Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
- UpdateQuestZone(Quest,"Qeynos Citizenship Trial Chamber")
- AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 22101350)
+ UpdateQuestZone(Quest,"Citizenship Trial Chamber")
+ AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 8250009)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -53,52 +53,29 @@ function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
- AddQuestStepChat(Quest, 5, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101354)
- AddQuestStepChat(Quest, 6, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101353)
- AddQuestStepChat(Quest, 7, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101352)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I've judged the Freeport mole.")
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 8250009)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
-function Step5Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 5, "I've judged the disgruntled refugee.")
-CheckProgress(Quest, QuestGiver, Player)
-end
-
-
-function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "I've judged the Freeport partisan.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function Step7Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 7, "I've judged Tavithi N'sari.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, 5718, 4) and QuestStepIsComplete(Player, 5718, 5) and QuestStepIsComplete(Player, 5718, 6) and QuestStepIsComplete(Player, 5718, 7)then
- UpdateQuestTaskGroupDescription(Quest, 7, "I have dealt with the traitors")
- AddQuestStepChat(Quest, 8, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 22101350)
- AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
- end
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 8, "Qeynos Citizenship Granted")
- UpdateQuestTaskGroupDescription(Quest, 8, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
+ UpdateQuestStepDescription(Quest, 5, "Qeynos Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Qeynos.")
GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 1 then
+SetAlignment(Player, 1)
+end
end
@@ -113,12 +90,6 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 4 then
Step4Complete(Quest, QuestGiver, Player)
elseif Step == 5 then
- Step5Complete(Quest, QuestGiver, Player)
- elseif Step == 6 then
- Step6Complete(Quest, QuestGiver, Player)
- elseif Step == 7 then
- Step7Complete(Quest, QuestGiver, Player)
- elseif Step == 8 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/Hallmark/becoming_a_bard.lua b/server/Quests/Hallmark/becoming_a_bard.lua
new file mode 100755
index 000000000..2ba46843d
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_bard.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_bard.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.03 04:10:45
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to steal the Coalition's ledger. I should direct the music to distract the leaders.", 1, 100, "I need to get to the merchant party at the Coalition's Headquarters and steal one of their ledger copies. If I direct the band to player in a proper sequence then I will surely grab their attention.", 195)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I stole the ledger.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I stole one of the ledger copies.")
+
+ AddQuestStepChat(Quest, 2, "I need to give the ledger to Millia.", 1, "I need to get this ledger to Millia.", 11, 1440464)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I gave the ledger to Millia.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I gave the ledger back to Millia.")
+
+ UpdateQuestDescription(Quest, "I was able to entertain the merchants and distract them with my talents before I swiped the ledger out from under them. Millia was quite impressed when I turned the ledger over to her.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_brawler.lua b/server/Quests/Hallmark/becoming_a_brawler.lua
new file mode 100755
index 000000000..f60d3d5ae
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_brawler.lua
@@ -0,0 +1,74 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_brawler.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:21
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to find Korong Shatterjaw near the arena.", 1, "I need to find Korong Shatterjaw near the arena.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found Korong Shatterjaw.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found Korong Shatterjaw and spoke with him.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak to Korong inside the building.", 1, "I should meet Korong Shatterjaw in a room inside the Blood Haze Inn just west of where he was standing.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I need to fight Korong's thugs!")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I spoke to Korong inside the building.")
+
+ AddQuestStepKill(Quest, 3, "I need to defeat all these thugs Korong is throwing at me!", 1, 100, "I need to fight off Korong's brawlers!", 11, 1)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I defeated Korong's thugs.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I defeated Korong's thugs.")
+
+ AddQuestStepChat(Quest, 4, "I need to speak to Korong inside the building.", 1, "I need to speak to Korong.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I spoke with Korong.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I spoke with Korong.")
+
+ UpdateQuestDescription(Quest, "I took on all of the Brawler's that Korong Shatterjaw threw at me and survived. He seemed somewhat impressed with my ability and said some day I should be ready to challenge him.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_cleric.lua b/server/Quests/Hallmark/becoming_a_cleric.lua
new file mode 100755
index 000000000..f49bba3a6
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_cleric.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_cleric.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 02:09:48
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak to Modinite Z'Vol.", 1, "I need to find Modinite Z'Vol and tell him I am ready for the Threshing.", 11, 1440466)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Well, this remains to be seen, child. The Dismal Rage requires all aspiring clerics to undergo a test of fortitude to ensure they are strong enough to stand for their faith. The Threshing will test your body and soul. Only the truly devout will emerge from the refiner's fire to take their place as clerics. ")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian012.mp3", 1989505954, 504674124)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("If it is required of me, then it will be done.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I spoke to Modinite Z'Vol.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found Modinite Z'Vol and spoke to him.")
+
+ AddQuestStep(Quest, 2, "I need to survive the Threshing.", 1, 100, "I need to enter the room to undergo the Threshing and then speak to Modinite Z'Vol. I must survive this test.", 11)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I survived the Threshing.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I survived the test and spoke to Z'Vol.")
+
+ UpdateQuestDescription(Quest, "I survived the pain of the Threshing. I have emerged purified and worthy of the title I now hold. I am a Cleric.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Hallmark/becoming_a_crusader.lua b/server/Quests/Hallmark/becoming_a_crusader.lua
new file mode 100755
index 000000000..575310dc3
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_crusader.lua
@@ -0,0 +1,83 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_crusader.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:23
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to find the defectors.", 1, "I need to find where the defectors are hiding before they leave the city.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found the place where the defectors are hiding.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I overheard a man talking about getting others ready to leave on a boat.")
+
+ AddQuestStepChat(Quest, 2, "I should confront the defectors in the building.", 1, "I should go inside and confront the defectors.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I entered the building to investigate.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I entered the building to investigate.")
+
+ AddQuestStepKill(Quest, 3, "I need to subdue the defectors!", 1, 100, "I need to subdue these defectors!", 11, 1)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I subdued the defectors.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I subdued the hostile defectors.")
+
+ AddQuestStepChat(Quest, 4, "I need to speak with the surviving defectors.", 1, "I should speak to the surviving defectors.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I convinced the survivors to surrender.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I convinced the surviving defectors to surrender.")
+
+ AddQuestStepChat(Quest, 5, "I need to report back to Tychus.", 1, "I need to report back to Tychus.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I reported back to Tychus.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I reported back to Tychus.")
+
+ UpdateQuestDescription(Quest, "I stopped the defection and saved the lives of the misguided. To be a Crusader I must stand unswerving for my beliefs and that is what I have done. The Commandant was impressed with my conviction.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_druid.lua b/server/Quests/Hallmark/becoming_a_druid.lua
new file mode 100755
index 000000000..7eb1c98ab
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_druid.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_druid.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 02:09:15
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to destroy the plant beast.", 1, 100, "I need to find this monstrosity of nature and destroy it with my command of nature.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+--It's just a plant, right? I think I can handle that.
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I defeated the plant beast.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I defeated the plant beast.")
+
+ AddQuestStepChat(Quest, 2, "I need to report back to Kelian.", 1, "I need to report back to Priest Kelian.", 11, 1440466)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I spoke with Priest Kelian.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I spoke with Priest Kelian.")
+
+ UpdateQuestDescription(Quest, "I defeated the plant beast that the mage failed to destroy after creating it. I have demonstrated that the power of nature is greater than any mages creation. I am now a Druid.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_predator.lua b/server/Quests/Hallmark/becoming_a_predator.lua
new file mode 100755
index 000000000..df4f220d5
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_predator.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_predator.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:02
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill Captain Driftskull.", 1, 100, "I need to find where Captain Driftskull is hiding out and silence him. Word is he is in a Seafury Buccaneers' den.", 611, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I killed Captain Driftskull.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I killed Captain Driftskull.")
+
+ AddQuestStepChat(Quest, 2, "I need to report to Millia.", 1, "I need to return to Millia and let her know that Captain Driftskull is dead.", 11, 1440464)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I reported back to Millia.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I reported back to Millia.")
+
+ UpdateQuestDescription(Quest, "I was able to take care of Captain Driftskull. There won't be any more talk from him about going independent. Millia was impressed with my work. I think I am going to like being a Predator.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Hallmark/becoming_a_rogue.lua b/server/Quests/Hallmark/becoming_a_rogue.lua
new file mode 100755
index 000000000..a8e8cdea1
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_rogue.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_rogue.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:56
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepObtainItem(Quest, 1, "I need to get the public log.", 1, 100, "I need to enter the Port Authority and steal both sets of logs from the harbor master's office.", 195, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have the public log.")
+
+ AddQuestStepObtainItem(Quest, 2, "I need to get the private log.", 1, 100, "I need to enter the Port Authority and steal both sets of logs from the harbor master's office.", 195, 1)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have the private log.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have both sets of logs.")
+
+ AddQuestStepChat(Quest, 3, "I need to give the logs to Millia.", 1, "I need to return to Emissary Millia with the logs.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I gave the logs to Millia.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I gave the logs to Emissary Millia.")
+
+ UpdateQuestDescription(Quest, "I stole the logs from the Port Authority office and handed them over to Emissary Millia. Millia taught me that being a Rogue is not just about my skills but also how to look for opportunity in any situation.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/becoming_a_shaman.lua b/server/Quests/Hallmark/becoming_a_shaman.lua
new file mode 100755
index 000000000..5ca1d475f
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_shaman.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_shaman.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 02:09:47
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepLocation(Quest, 1, "I need to find the building where the spirits dwell.", 1, "I need to find the residence of the spirits. I get the feeling it has already drawn the attention of curious felines.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found the dwelling place of the spirits.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found the residence the spirits are haunting.")
+
+ AddQuestStepKill(Quest, 2, "I need to subdue the spirits.", 1, 100, "I need to subdue the rebellious spirits.", 611, 1)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I subdued the spirits.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I subdued the spirits.")
+
+ AddQuestStepChat(Quest, 3, "I need to return to Priest Kelian.", 1, "I should return to Priest Kelian and let him know the spirits were subdued.", 11, 1440466)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I spoke to Priest Kelian.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I spoke to Priest Kelian.")
+
+ UpdateQuestDescription(Quest, "I subdued the rebellious spirits. They are now mine to control. I have emerged as a master of the spirit world. I am a Shaman.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_sorcerer.lua b/server/Quests/Hallmark/becoming_a_sorcerer.lua
new file mode 100755
index 000000000..6d5e710a7
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_sorcerer.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_sorcerer.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:49
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to duel Dasicar T'Lys.", 1, 100,"I need to seek out Dasicar T'Lys in the Academy dueling room to have our duel.", 611)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You will face a fellow student, Dasicar T'Lys, in a battle of the arcane arts. The victor of this battle shall acquire the right to be called a sorcerer of Freeport. Make your way inside and enter the dueling chamber. If you win the battle, return to me.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius019.mp3", 861072118, 1987867443)
+ Dialog.AddOption("I will return victorious!")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I defeated Dasicar T'Lys.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I defeated Dasicar T'Lys in a duel.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with the Arcanist.", 1, "I need to return to Arcanist Sonius and let her know I was the victor.", 11,1)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I spoke with the Arcanist.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have spoken to Arcanist Sonius.")
+
+ UpdateQuestDescription(Quest, "I defeated Dasicar T'Lys in a duel of mages. Arcanist Sonius was surprised that I won and Dasicar was the vanquished. It doesn't matter. I am the one that is now the Sorcerer.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_summoner.lua b/server/Quests/Hallmark/becoming_a_summoner.lua
new file mode 100755
index 000000000..364d465f7
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_summoner.lua
@@ -0,0 +1,60 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_summoner.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.01 01:10:01
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to destroy an Earth Elemental of my own creation.", 1, 100, "I need to create and destroy an Earth Elemental while inside the Academy chamber.", 10)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Make your way to the prepared chamber in the academy and find an apprentice's manual. In the manual, find a method for summoning minions from the earth. Create an elemental and then destroy it. Do this and you will prove you are worthy of the title summoner.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius026.mp3", 2862344835, 755954330)
+ Dialog.AddOption("Thank you, Arcanist. I will return.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I defeated my Earth Elemental.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I defeated my Earth Elemental creation.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with the Arcanist.", 1, "I need to report back to Arcanist Sonius.", 11,1440463)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I spoke with the Arcanist.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have spoken to Arcanist Sonius.")
+
+ UpdateQuestDescription(Quest, "I defeated Dasicar T'Lys in a duel of mages. Arcanist Sonius was surprised that I won and Dasicar was the vanquished. It doesn't matter. I am the one that is now the Sorcerer.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_a_warrior.lua b/server/Quests/Hallmark/becoming_a_warrior.lua
new file mode 100755
index 000000000..40e15c25b
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_a_warrior.lua
@@ -0,0 +1,64 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_a_warrior.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:51
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepLocation(Quest, 1, "I need to find the man that is helping the Cutthroats.", 1, "I need to find out who is providing a safehouse for the Dervish Cutthroats in the city. The Commandant said to start my search in the City of Freeport. I should check the taverns, he has to be providing food to them somehow.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found a suspicious man at the Jade Tiger.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found a suspicious man at the Jade Tiger.")
+
+ AddQuestStepLocation(Quest, 2, "I should follow the man with the food.", 1, "I should go inside the building and be ready for anything.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I killed the Dervish Cutthroats and Bargiss Ranlor.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I killed the Dervish Cutthroats and Bargiss Ranlor.")
+
+ AddQuestStepChat(Quest, 3, "I need to return to Tychus.", 1, "I need to return to Tychus and report to him about Bargiss Ranlor.", 19, 1)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I spoke with Commandant Tychus about Bargiss Ranlor.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I spoke with Commandant Tychus about Bargiss Ranlor.")
+
+ UpdateQuestDescription(Quest, "I found out that Bargiss Ranlor was helping out the Dervish Cutthroats survive in the city. I didn't need the Commandant's help, I took care of the problem on my own.
")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/becoming_an_enchanter.lua b/server/Quests/Hallmark/becoming_an_enchanter.lua
new file mode 100755
index 000000000..d7aed0c99
--- /dev/null
+++ b/server/Quests/Hallmark/becoming_an_enchanter.lua
@@ -0,0 +1,58 @@
+--[[
+ Script Name : Quests/Hallmark/becoming_an_enchanter.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:11
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to make an example of the Seafuries.", 1,100, "I need to find these Seafuries and make an example of them. I should look for a way to do this without directly involving myself.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("The Seafuries are Lucan's private navy. At least that's how they present themselves. But everyone knows they're ar nothing more than a bunch of pirates. In between smuggling operations, those swashbucklers manage to keep the seas safe from orcs and the Qeynosians, and perhaps even more. When they're not out at sea, they're based out of the Back Alley Brewhouse. Talk to Thuddfoot. He'll tell you more.")
+ Dialog.AddOption("It will be done, Arcanist.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "The Seafuries have been roughed up.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I convinced Bulz the troll to defeat a couple of Seafuries for me. I handled the first mate myself.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Sonius.", 1, "I need to tell Arcanist Sonius that the job is taken care of.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I spoke to Arcanist Sonius.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I spoke to Arcanist Sonius.")
+
+ UpdateQuestDescription(Quest, "I convinced a troll named Bulz near the Seafuries to attack the men saving me the trouble of doing it myself. Unfortunately a member of their crew was wise to my scheme and attacked me directly. I had to be a little more... direct with him. I reported back to Arcanist Sonius soon afterwards. She was pleased with my work and bestowed upon me the title of Enchanter.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/beggars_court_citizenship_task.lua b/server/Quests/Hallmark/beggars_court_citizenship_task.lua
new file mode 100755
index 000000000..bc38db2fa
--- /dev/null
+++ b/server/Quests/Hallmark/beggars_court_citizenship_task.lua
@@ -0,0 +1,94 @@
+--[[
+ Script Name : Quests/Hallmark/beggars_court_citizenship_task.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.30 07:06:12
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Sunken City.", 5, 34, "The Sunken City has been seeded with tokens for the residents of Beggar's Court to gather. These tokens may be found on any creatures in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 1338,8410001, 8410002, 8410003, 8410004, 8410005, 8410006, 8410007, 8410008, 8410009, 8410010, 8410011, 8410012, 8410016, 8410017, 8410018,8410019, 8410020, 8410021, 8410022, 8410023, 8410024, 8410025, 8410026, 8410027, 8410028, 8410029, 8410030, 8410035,8410036, 8410037, 8410038,8410039, 8410040,8410041,8410042, 8410069, 8410070)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sunken City")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have gathered five tokens from the Sunken City.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have gathered the tokens required to prove my worth as a citizen.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStep(Quest, 2, "I need to enter the citizenship trial.", 1, 100, "I must perform the citizenship trial by returning to the Citizenship Sign and entering the trial chamber",1335)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 3, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial.", 1, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial", 1350, 1640000)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
+ AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Abbetor T'Avi has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Abbetor T'Avi.", 1, "I must return to Abbetor T'Avi to let her know the deed is done.",0, 1640000)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Freeport Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Abbetor T'Avi and she has granted me Freeport citizenship.")
+
+ UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Freeport.")
+ GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 0 then
+SetAlignment(Player, 0)
+end
+end
+
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/big_bend_citizenship_task.lua b/server/Quests/Hallmark/big_bend_citizenship_task.lua
new file mode 100755
index 000000000..eb6bf2b60
--- /dev/null
+++ b/server/Quests/Hallmark/big_bend_citizenship_task.lua
@@ -0,0 +1,94 @@
+--[[
+ Script Name : Quests/Hallmark/big_bend_citizenship_task.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.28 08:06:14
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Sprawl.", 5, 34, "The Sprawl has been seeded with tokens for the residents of Big Bend to gather. These tokens may be found on any creatures in the Sprawl. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 1368, 8400001, 8400002, 8400003, 8400004, 8400005, 8400009, 8400010, 8400011, 8400012, 8400013, 8400015, 8400016, 8400023, 8400025, 8400026, 8400027, 8400028, 8400029, 8400030, 8400031, 8400032, 8400033)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sprawl")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have gathered five tokens from the Sprawl.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have gathered the tokens required to prove my worth as a citizen.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStep(Quest, 2, "I need to enter the citizenship trial.", 1, 100, "I must perform the citizenship trial by returning to the Citizenship Sign and entering the trial chamber",1335)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 3, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial.", 1, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial", 1350, 1640000)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
+ AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Abbetor T'Avi has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Abbetor T'Avi.", 1, "I must return to Abbetor T'Avi to let her know the deed is done.",0, 1640000)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Freeport Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Abbetor T'Avi and she has granted me Freeport citizenship.")
+
+ UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Freeport.")
+ GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 0 then
+SetAlignment(Player, 0)
+end
+end
+
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/castleview_citizenship_task.lua b/server/Quests/Hallmark/castleview_citizenship_task.lua
index 5d4285cb6..2801568b4 100755
--- a/server/Quests/Hallmark/castleview_citizenship_task.lua
+++ b/server/Quests/Hallmark/castleview_citizenship_task.lua
@@ -12,8 +12,8 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Down Below.", 5, 30, "The local forests have been seeded with tokens for the citizens of Castleview Hamlet to gather. These tokens may be found on any creatures in the Caves.", 1334, 1990001, 1990002, 1990003, 1990004, 1990005, 1990006, 1990007, 1990008, 1990009, 1990010, 1990012, 1990013, 1990014, 1990015, 1990016, 1990017, 1990018, 1990019, 1990020, 1990021, 1990022, 1990023, 1990024, 1990025, 1990026, 1990027, 1990028, 1990029, 1990030, 1990031, 1990032, 1990033, 1990034, 1990035, 1990036, 1990037, 1990038, 1990039, 1990041, 1990042, 1990043, 1990044, 1990045, 1990054, 1990056, 1990096, 1990097, 1990098, 1990099, 1990100, 1990101, 1990102, 1990103, 1990104)
- AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Down Below.", 5, 34, "The catacombs have been seeded with tokens for the citizens of Castleview Hamlet to gather. These tokens may be found on any creatures in the Down Below.", 1334, 8340015, 8340016, 8340017, 8340018, 8340019, 8340020, 8340021, 8340022, 8340023, 8340025, 8340026, 8340027, 8340028, 8340029, 8340030, 8340031, 8340032, 8340033, 8340034, 8340035, 8340036, 8340037, 8340038, 8340039, 8340040, 8340041, 8340042, 8340043, 8340044, 8340045, 8340046, 8340047, 8340048, 8340049, 8340050, 8340051, 8340052, 8340053, 8340054, 8340055)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Down Below")
end
@@ -41,8 +41,8 @@ function Step2Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
- UpdateQuestZone(Quest,"Qeynos Citizenship Trial Chamber")
- AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1,100, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1334, 22101350)
+ UpdateQuestZone(Quest,"Citizenship Trial Chamber")
+ AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 8250009)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -50,53 +50,31 @@ function Step3Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
- AddQuestStepChat(Quest, 5, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101354)
- AddQuestStepChat(Quest, 6, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101353)
- AddQuestStepChat(Quest, 7, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101352)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I've judged the Freeport mole.")
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 8250009)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
-function Step5Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 5, "I've judged the disgruntled refugee.")
-CheckProgress(Quest, QuestGiver, Player)
-end
-
-
-function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "I've judged the Freeport partisan.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function Step7Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 7, "I've judged Tavithi N'sari.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, 5719, 4) and QuestStepIsComplete(Player, 5719, 5) and QuestStepIsComplete(Player, 5719, 6) and QuestStepIsComplete(Player, 5719, 7)then
- UpdateQuestTaskGroupDescription(Quest, 7, "I have dealt with the traitors")
- AddQuestStepChat(Quest, 8, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 22101350)
- AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
- end
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 8, "Qeynos Citizenship Granted")
- UpdateQuestTaskGroupDescription(Quest, 8, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
+ UpdateQuestStepDescription(Quest, 5, "Qeynos Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Qeynos.")
GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 1 then
+SetAlignment(Player, 1)
+end
end
@@ -111,12 +89,6 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 4 then
Step4Complete(Quest, QuestGiver, Player)
elseif Step == 5 then
- Step5Complete(Quest, QuestGiver, Player)
- elseif Step == 6 then
- Step6Complete(Quest, QuestGiver, Player)
- elseif Step == 7 then
- Step7Complete(Quest, QuestGiver, Player)
- elseif Step == 8 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/Hallmark/cellar_cleanup.lua b/server/Quests/Hallmark/cellar_cleanup.lua
index 8898ff19c..21b52b4bf 100755
--- a/server/Quests/Hallmark/cellar_cleanup.lua
+++ b/server/Quests/Hallmark/cellar_cleanup.lua
@@ -8,6 +8,7 @@
Quest Giver: Assistant Dreak (3250167)
Preceded by: None
Followed by:
+ Notes : updated coal given to classic version 1001034
--]]
require "SpawnScripts/Generic/DialogModule"
@@ -100,7 +101,7 @@ function Step8Complete(Quest, QuestGiver, Player)
UpdateQuestZone(Quest,"Mizan's Cellar")
if not HasItem(Player,20708,1) and GetTradeskillLevel(Player) <2 then
SummonItem(Player,1030001,1)
- GiveQuestItem(Quest, Player, "", 20708,4142,4142,4142,7391,7391,7391)
+ GiveQuestItem(Quest, Player, "", 20708,1001034,1001034,1001034,7391,7391,7391)
end
if GetTradeskillLevel(Player) <2 then
SetTradeskillLevel(Player,2)
diff --git a/server/Quests/Hallmark/fighter_training.lua b/server/Quests/Hallmark/fighter_training.lua
new file mode 100755
index 000000000..036df0193
--- /dev/null
+++ b/server/Quests/Hallmark/fighter_training.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : Quests/Hallmark/fighter_training.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:39
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ UpdateQuestZone(Quest,"The Sprawl")
+ AddQuestStepKill(Quest, 1, "I must kill some Dervish Crooks.", 5, 100, "The Commandant wants me to kill five (5) Guttersnipe Crooks in the Sprawl. If I can handle that many, I'll have shown I can hold my own as a Warrior.", 611,8400010)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Hmph ... Well, you got a soldier's attitude. Maybe you're not as much of a milksop as I thought. Okay, listen up: If you want to be a warrior, you have to prove your strength. Take your weapon and head to the Sprawl.")
+ Dialog.AddOption("How do I prove myself there, sir?","Dialog1b")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some Dervish Crooks.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the Guttersnipe Crooks in the manner any Warrior would do it. I may choose to become one in the future, but I'd like to see the styles of other Fighters first.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 2, "I need to return to the Commandant.", 1, "While I still have their blood on my weapon, I should return to the Commandant to inform him that I carried out his orders.", 11, 1440465)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have been debriefed by the Commandant.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "The Commandant was surprised that I made it back alive. He was mildly impressed, enough to continue my training.")
+ UpdateQuestZone(Quest,"Multiple Zones")
+
+ AddQuestStepChat(Quest, 3, "I need to give the bartender Elma Lowe at the Jade Tiger's Den a message from Lucan.", 1, "I've now been ordered to speak with the tavern owners who have been serving the Guttersnipes. I'll speak to them the way a Brawler would.", 11, 1440059)
+ AddQuestStepChat(Quest, 4, "I need to let Ranik Calman of the Seafarer's Roost know what Lucan thinks about serving the Guttersnipes.", 1, "I've now been ordered to speak with the tavern owners who have been serving the Guttersnipes. I'll speak to them the way a Brawler would.", 11, 1280029)
+ AddQuestStepChat(Quest, 5, "I need to inform Grum Zoomly of the Back Alley Brewhouse of Lucan's displeasure.", 1, "I've now been ordered to speak with the tavern owners who have been serving the Guttersnipes. I'll speak to them the way a Brawler would.", 11, 1680080)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've suckerpunched Elma Lowe, the bartender of the Jade Tiger's Den.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "Ranik Calman, the owner of the Seafarer's Roost, has been kicked in the groin.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've punched the owner of the Brewhouse, Grum Zoomly, in the gut a few times.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5898, 3) and QuestStepIsComplete(Player, 5898, 4) and QuestStepIsComplete(Player, 5898, 5)then
+
+
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've given each of the tavern owners Lucan's message in the way a Brawler talks to other people.")
+ AddQuestStepChat(Quest, 6, "I need to return to the Commandant", 1, "Before the blood dries on my knuckles, I should let the Commandant know that the tavern owners were listening.", 11, 1440465)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I have been debriefed by the Commandant")
+ UpdateQuestTaskGroupDescription(Quest, 4, "The Commandant has approved of the way I handled the situation.")
+ UpdateQuestZone(Quest,"Multiple Zones")
+
+ AddQuestStepChat(Quest, 7, "I need to speak with a human named Favonius Seneca in Beggar's Court. He should have some goons nearby.", 1, "The Commandant wants me to persuade some people in the districts that they should refrain from associating with the Guttersnipes. I should approach this in the way a Crusader would deal with these people.", 11, 1370028)
+ AddQuestStepChat(Quest, 8, "I need to speak with an Iksar named Savas Dranak in Scale Yard who doesn't treat his servants well.", 1, "The Commandant wants me to persuade some people in the districts that they should refrain from associating with the Guttersnipes. I should approach this in the way a Crusader would deal with these people.", 11, 1390037)
+ AddQuestStepChat(Quest, 9, "I need to speak with a dark elf named Lynsia T'Kanix in Longshadow Alley who runs a drinking establishment.", 1, "The Commandant wants me to persuade some people in the districts that they should refrain from associating with the Guttersnipes. I should approach this in the way a Crusader would deal with these people.", 11, 1380013 )
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I have persuaded Favonius Seneca in Beggar's Court.")
+ CheckProgress2(Quest, QuestGiver, Player)
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I have persuaded Savas Dranak Scale Yard.")
+ CheckProgress2(Quest, QuestGiver, Player)
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I have persuaded Lynsia T'Kanix in Longshadow Alley.")
+ CheckProgress2(Quest, QuestGiver, Player)
+end
+
+function CheckProgress2(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5898, 7) and QuestStepIsComplete(Player, 5898, 8) and QuestStepIsComplete(Player, 5898, 9)then
+ UpdateQuestZone(Quest,"North Freeport")
+
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've convinced the people in the districts to no longer associate with the Guttersnipes.")
+ AddQuestStepChat(Quest, 10, "I need to speak with the Commandant.", 1, "I need to let the Commandant know that the Guttersnipes won't be a problem any longer.", 11, 1440465)
+ AddQuestStepCompleteAction(Quest, 10, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 10, "I've spoken to the Commandant.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "The Commandant has approved of the way I handled the situation.")
+
+ UpdateQuestDescription(Quest, "I have graduated from Commandant Tychus' personal academy. Through his training, I've learned the ways of different classes of Fighter. At the end of my training, the Commandant had let me choose which classification of fighter I wanted to become. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/fighter_training_pt_i.lua b/server/Quests/Hallmark/fighter_training_pt_i.lua
new file mode 100755
index 000000000..8c40a4633
--- /dev/null
+++ b/server/Quests/Hallmark/fighter_training_pt_i.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : Quests/Hallmark/fighter_training_pt_i.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.07 03:12:56
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Master at Arms Dagorel
+ Preceded by: None
+ Followed by: Fighter Training, pt II
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill five white spiderlings in the caves.", 5, 100, "I need to travel to the Caves and kill five white spiderlings like a warrior would.", 91, 8260002)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Och! A bit eager, are we? You're off to a good start then, you are. A warrior takes the bull by the horns! Let's give you a taste, shall we? The Council needs help exterminatin' a massive hatching of Ice Spiders in the caves. Go to the caves and destroy some of the spiders. After you get rid of the critters, head back my way.")
+ PlayFlavor(QuestGiver, "", "", "wince", 0, 0, Player)
+ Dialog.AddOption("Right. I'll be back once I've dealt with these spiders.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5878)==1 then
+ SetStepComplete(Player,5878,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed five white spiderlings in the caves.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the spiders and made the miner's job a bit easier.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Dagorel in South Qeynos.", 1, "I should let Master-at-Arms Dagorel know the miners are safe.", 11, 2310377)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Dagorel in South Qeynos.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Dagorel approved of the way I handled the situation.")
+
+ AddQuestStepChat(Quest, 3, "I need to speak with Luvile in Starcrest Commune and ask for brawling tips", 1, "Master-at-Arms Dagorel has directed me to a couple of people for tips on brawling", 11, 2340042)
+ AddQuestStepChat(Quest, 4, "I need to speak with Hargan in Graystone Yard for brawling tips", 1, "Master-at-Arms Dagorel has directed me to a couple of people for tips on brawling", 11, 2350031)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've received tips from Luvile")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've received tips from Hargan")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5787,3) and QuestStepIsComplete(Player,5787,4) then
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've been given tips on brawling... and a little more, too.")
+
+ AddQuestStepChat(Quest, 5, "I need to speak with Dagorel in South Qeynos.", 1, "I should let Dagorel know I've learned my lesson... in more ways than one.", 11, 2310377)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I've spoken with Dagorel in South Qeynos.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've been told I did well in learning about brawlers.")
+
+ UpdateQuestDescription(Quest, "Dagorel, Master-at-Arms of the Council, has shown me two different ways to focus on fighting. So far I've learned how a warrior and a brawler handle things. Because my brawler tips got out of hand, Dagorel agreed to show me the last way when I've taken time to recover.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/fighter_training_pt_ii.lua b/server/Quests/Hallmark/fighter_training_pt_ii.lua
new file mode 100755
index 000000000..f92a3e330
--- /dev/null
+++ b/server/Quests/Hallmark/fighter_training_pt_ii.lua
@@ -0,0 +1,110 @@
+--[[
+ Script Name : Quests/Hallmark/fighter_training_pt_ii.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.07 03:12:36
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Master at Arms Dagorel
+ Preceded by: Fighter Training, pt I
+ Followed by: Path of the (CLASS)
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Sir Laughlin in North Qeynos", 1, "Dagorel has asked me to inspire three of the guards in Qeynos", 11, 2220024)
+ AddQuestStepChat(Quest, 2, "I need to speak with Lieutenant Ilgar in South Qeynos.", 1, "Dagorel has asked me to inspire three of the guards in Qeynos", 11,2310017)
+ AddQuestStepChat(Quest, 3, "I need to speak with Squire Moorford in Qeynos Harbor.", 1, "Dagorel has asked me to inspire three of the guards in Qeynos", 11, 2210118)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I want you to remind a few of the Qeynos guards that we appreciate what they do for the city. Go find some of the boys posted around town, and remind them why they work so hard. I'll stop yappin' your ear off and write some of the guards' names in your journal.")
+ PlayFlavor(QuestGiver, "", "", "smile", 0, 0, Player)
+ Dialog.AddOption("Sounds easy enough. I'll let you know once I've met with the other guards.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5878)==1 then
+ SetStepComplete(Player,5878,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Sir Laughlin")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Lieutenant Ilgar.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've spoken with Squire Moorford.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5788,1) and QuestStepIsComplete(Player,5788,2) and QuestStepIsComplete(Player,5788,3) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've reminded some of the guards why they are fighting for Qeynos")
+
+ AddQuestStepChat(Quest, 4, "I need to speak with Dagorel", 1, "I should return to Dagorel and let him know that I spoke with the soldiers", 11, 2310377)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with Dagorel")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've let Dagorel know that I spoke with the soldiers")
+
+ AddQuestStepKillByRace(Quest, 5, "I must kill one gnoll", 1, 100, "Dagorel has charged me with finding and killing a Darkpaw Gnoll Pup in Antonica", 1220, 298, 120065)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have killed one gnoll")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've killed the gnoll pup")
+
+ AddQuestStepChat(Quest, 6, "I need to speak with Dagorel", 1, "I should let Dagorel know that the Gnoll Pup is dead", 11, 2310377)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I've spoken with Dagorel")
+ UpdateQuestTaskGroupDescription(Quest, 4, "Dagorel has agreed with the choice that I've made in life")
+
+ UpdateQuestDescription(Quest, "Dagorel, the Master-at-Arms of Qeynos, has shown me different fighting styles. Thanks to his training, I've decided which way to direct my future training. From hereon, I'm no longer just a fighter. In time, people will associate my name with my style of fighting.")
+ GiveQuestReward(Quest, Player)
+end
+--
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/freeport_alignment.lua b/server/Quests/Hallmark/freeport_alignment.lua
index b37fee5f4..074ac54d7 100755
--- a/server/Quests/Hallmark/freeport_alignment.lua
+++ b/server/Quests/Hallmark/freeport_alignment.lua
@@ -37,7 +37,7 @@ Halas = GetFactionAmount(Player, 16)
Gorowyn = GetFactionAmount(Player, 17)
alignment = GetAlignment(Player)
-if GetRace(Player) == 0 or GetRace(Player) == 3 or GetRace(Player) == 5 or GetRace(Player) == 6 or GetRace(Player) == 9 or GetRace(Player) == 11 or GetRace(Player) == 20 then
+if alignment ~= 0 then
SetAlignment(Player, 0)
end
@@ -98,7 +98,7 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestZone(Quest, "Longshadow Alley")
-- Barbarian / Iksar / Sarnak
- elseif Race == 0 or Race == 10 or Race == 19 then
+ elseif Race == 0 or Race == 10 or Race == 18 then
AddQuestStepChat(Quest, 2, "I must find the Overseer", 1, "I have been instructed to seek out the Overseer when I arrive in Freeport. I should ring the bell on the docks to book passage to the city.", 11, 1390126)
UpdateQuestZone(Quest, "Scale Yard")
diff --git a/server/Quests/Hallmark/freeport_citizens_guide_to_opportunity.lua b/server/Quests/Hallmark/freeport_citizens_guide_to_opportunity.lua
new file mode 100755
index 000000000..5ed1fd67b
--- /dev/null
+++ b/server/Quests/Hallmark/freeport_citizens_guide_to_opportunity.lua
@@ -0,0 +1,119 @@
+--[[
+ Script Name : Quests/Hallmark/freeport_citizens_guide_to_opportunity.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.01 12:07:16
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "Renny Parvat will tell me about collecting objects in Norrath.", 1, "I'd better read the booklet from the Overlord.", 11, 1280039)
+ AddQuestStepZoneLoc(Quest, 2, "I must see The Execution Plaza.",10, "I'd better read the booklet from the Overlord.", 11,103.81, -22.44, 44.12,168)
+ AddQuestStepChat(Quest, 3, "I must see Sage Navarius Orvalis in North Freeport.", 1, "I'd better read the booklet from the Overlord.", 11, 1440031)
+ AddQuestStepZoneLoc(Quest, 4, "I should look among the scattered bones of the Siege Lands in the Commonlands.",10, "I'd better read the booklet from the Overlord.", 11,-1327.83, -79.81, -274.91,33)
+ AddQuestStepChat(Quest, 5, "I should speak with Taskmaster's Assistant Koz'ma at the Crossroads in the Commonlands.", 1, "I'd better read the booklet from the Overlord.", 11, 330260)
+ AddQuestStepChat(Quest, 6, "I must speak with Cannix Silverflame in the Commonlands.", 1, "I'd better read the booklet from the Overlord.", 11, 330175)
+ AddQuestStepChat(Quest, 7, "I should speak with Lieutenant Darrius near the castle in West Freeport.", 1, "I'd better read the booklet from the Overlord.", 11, 1680056)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've learned about collections from Mervos Stadrin.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have seen the Execution Plaza.")
+CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have visited the Sage who sells books in Freeport.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I am sure to find something interesting in the Siege Lands.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've spoken with the Taskmaster.")
+CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I have spoken with Cannix Silverflame.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've spoken with Lieutenant Darrius.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5865, 1) and QuestStepIsComplete(Player, 5865, 2) and QuestStepIsComplete(Player, 5865, 3) and
+ QuestStepIsComplete(Player, 5865, 4) and QuestStepIsComplete(Player, 5865, 5) and QuestStepIsComplete(Player, 5865, 6) and QuestStepIsComplete(Player, 5865, 7)then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I should read the Conclusion of the booklet.")
+ AddQuestStep(Quest, 8, "I've one last page to read in my citizenship book.", 1,100, "I am better equipped to prove ways I may be useful to Freeport.",2500)
+ AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
+ end
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 8, "Long live The Overlord!")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Being a citizen has many responsibilities for me.")
+
+ UpdateQuestDescription(Quest, "This book is one more example of the Overlord's concern with the welfare of all Freeport citizens. All praise the Overlord!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/freeport_to_qeynos__acceptance.lua b/server/Quests/Hallmark/freeport_to_qeynos__acceptance.lua
new file mode 100755
index 000000000..279f7d02b
--- /dev/null
+++ b/server/Quests/Hallmark/freeport_to_qeynos__acceptance.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Quests/Hallmark/freeport_to_qeynos__acceptance.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.28 08:09:23
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+-- AddStepZoneLoc(Quest, 1, "Travel to the inn and sign the registry.", 10, "\"Your new home awaits within the walls of Qeynos. I have arranged for a room to be made yours to house you. Sign the book and start your new life. Good luck, friend.\"", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ --Dialog.AddDialog("Then I welcome you into our fold, friend. We need someone like you. Talk with the resistance leader here in Freeport, Kenjedeau. You can find him in the sewers below. Seek him out and tell him our motto, \"nobility comes from personal sacrifice.\"")
+ --Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium007.mp3", 1086694102, 636478984)
+ -- Dialog.AddOption("Thank you. I'll make my way to him.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have found the registry.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found my new residence within Qeynos.")
+
+ UpdateQuestDescription(Quest, "I have begun my new life in Qeynos with the help of my mentor, Vishra. No longer will I blindly turn away from the evils around me. Perhaps others will follow my example and do the same. If so, I will offer my help to them as others have helped me.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/freeport_to_qeynos__conversion.lua b/server/Quests/Hallmark/freeport_to_qeynos__conversion.lua
new file mode 100755
index 000000000..5fff94fce
--- /dev/null
+++ b/server/Quests/Hallmark/freeport_to_qeynos__conversion.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Quests/Hallmark/freeport_to_qeynos__conversion.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.28 08:09:28
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function quest_complete(Quest, QuestGiver, Player)
+
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+
+end
+
diff --git a/server/Quests/Hallmark/freeport_to_qeynos__exile.lua b/server/Quests/Hallmark/freeport_to_qeynos__exile.lua
new file mode 100755
index 000000000..c3dee0e91
--- /dev/null
+++ b/server/Quests/Hallmark/freeport_to_qeynos__exile.lua
@@ -0,0 +1,240 @@
+--[[
+ Script Name : Quests/Hallmark/freeport_to_qeynos__exile.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.26 11:09:16
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Stow away on a ship and travel to Antonica. I will send a message to my old friend, Vishra. Seek him out near the gnoll's lair where he fights to stop their impending threat. I will tell him that you need a home. Go before it's too late!")
+ Dialog.AddOption("Thank you Selindi. I will go to Antonica!")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+OfferQuest(nil,Player,5891)
+end
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "Speak with Selindi in the Commonlands.", 1, "I need to speak with Executioner Selindi in the Commonlands.", 11, 330235)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Commonlands")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Selindi.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Selindi about becoming a Qeynos citizen.")
+
+ AddQuestStepChat(Quest, 2, "I need to find Vishra in Antonica.", 1, "Selindi instructed me to travel to Antonica and seek out Vishra. It seems he can offer me a new home. I am told that he can be found where the gnoll's make their home, preventing them from harming others. I only hope he will see me for what I am, not what I was.", 11, 120402)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestZone(Quest,"Multiple Zones")
+ UpdateQuestStepDescription(Quest, 2, "I have found Vishra the Ranger.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have found Vishra, but he turned me away for now.")
+ AddQuestStepKillByRace(Quest, 3, "Strike into the heart of Blackburrow and attempt to put an end to their merciless attacks on Qeynosians.", 500, 100, "Vishra has tasked me with defending the innocent against those who seek to slaughter them.", 1221,298)
+ AddQuestStepKill(Quest, 4, "Defeat Dancoed of the Pine in Antonica and end the threat he presents.", 1, 100, "Vishra has tasked me with defending the innocent against those who seek to slaughter them.", 1221, 1)
+ AddQuestStepKill(Quest, 5, "Remove the threat Sarn the Wayfarer presents to the people of Antonica.", 1, 100, "Vishra has tasked me with defending the innocent against those who seek to slaughter them.", 1220, 1)
+ AddQuestStepKill(Quest, 6, "Catch Towyn the Lazy unaware in Antonica and put an end to him.", 1, 100, "Vishra has tasked me with defending the innocent against those who seek to slaughter them.", 1221, 1)
+ AddQuestStepKill(Quest, 7, "Find Crugybar the Rock in Blackburrow and stop him from mining ore for gnoll weapons.", 1, 100, "Vishra has tasked me with defending the innocent against those who seek to slaughter them.", 1220, 170038)
+ AddQuestStepKill(Quest, 8, "Seek out and slay Nantglas the Cold in Blackburrow.", 1, 100, "Vishra has tasked me with defending the innocent against those who seek to slaughter them.", 1220, 170050)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I fought for the forces of good and now understand the truth of virtue.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have defeated Dancoed of the Pine.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have removed Sarn the Wayfarer.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "You have put an end to Towyn the Lazy.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "You have stopped Crugybar the Rock.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I have slain Nantglas the Cold.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5891, 3) and
+ QuestStepIsComplete(Player, 5891, 4) and
+ QuestStepIsComplete(Player, 5891, 5) and
+ QuestStepIsComplete(Player, 5891, 6) and
+ QuestStepIsComplete(Player, 5891, 7) and
+ QuestStepIsComplete(Player, 5891, 8) then
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have proved myself in battle against the enemies of Qeynos: the gnolls.")
+
+ AddQuestStepChat(Quest, 9, "Speak with Vishra once more.", 1, "While fighting monsters, I came to realize that I was no different than them. Only when I refused to add hatred's strength to my attacks did I truly defeat my enemies. I see now that virtue and wrath cannot co-exist. I think it's time I speak with Vishra again.", 11, 120402)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestZone(Quest,"Antonica")
+ UpdateQuestStepDescription(Quest, 9, "I have spoken with Vishra again")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have spoken with Vishra and shown him my new understanding.")
+
+ AddQuestStepChat(Quest, 10, "Speak with Timothy Cooper.", 1, "Vishra has asked that I speak with Timothy Cooper and offer my assistance to him.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestZone(Quest,"Antonica")
+ UpdateQuestStepDescription(Quest, 10, "I have spoken with Timothy Cooper.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I have spoken with Timothy Cooper")
+
+ AddQuestStepChat(Quest, 11, "Speak with Felzik Dursin in Antonica.", 1, "I must seek out Felzik Dursin and offer my aid.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestZone(Quest,"Antonica")
+ UpdateQuestStepDescription(Quest, 11, "I found out what Felzik was doing and put a stop to it.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've put an end to the slave trade that Felzik Dursin was running.")
+
+ AddQuestStepChat(Quest, 12, "Speak with Vishra once more.", 1, "I must return to Vishra to let him know what I've done.", 11, 120402)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I have spoken with Vishra.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've spoken with Vishra and have received another task.")
+
+ AddQuestStepChat(Quest, 13, "Speak with Darvin Gallowyn in Antonica.", 1, "Vishra has asked that I speak with children and convince them to follow the path of good.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I have convinced Darvin Gallowyn to turn away from the darkness.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I have convinced Sialla Windwhisper to turn away from the darkness.")
+
+ AddQuestStepChat(Quest, 14, "Speak with Wolfgang Constantine in Antonica.", 1, "Vishra has asked that I speak with children and convince them to follow the path of good.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "I have convinced Wolfgang Constantine to turn away from the darkness.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I have convinced Wolfgang Constantine to turn away from the darkness.")
+
+ AddQuestStepChat(Quest, 15, "Speak with Sialla Windwhisper in Antonica.", 1, "Vishra has asked that I speak with children and convince them to follow the path of good.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, "I have convinced Sialla Windwhisper to turn away from the darkness.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I have convinced Sialla Windwhisper to turn away from the darkness.")
+
+ AddQuestStepChat(Quest, 16, "Speak with Vishra again.", 1, "I must return to Vishra to let him know what I've done.", 11, 120402)
+ AddQuestStepCompleteAction(Quest, 16, "Step16Complete")
+end
+
+function Step16Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 16, "I have spoken with Vishra.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I've spoken with Vishra and have received another task.")
+
+ AddQuestStepChat(Quest, 17, "Speak with Magistrate Rachelle and confess your crimes.", 1, "Vishra has bid me confess any crimes that I may have committed to Lower Magistrate Rachelle in Antonica.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 17, "Step17Complete")
+end
+
+function Step17Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 17, "I have spoken with Magistrate Rachelle and my honesty has won me her backing.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I have spoken with Magistrate Rachelle and my honesty has won me her backing.")
+
+ AddQuestStepChat(Quest, 18, "Speak with Vishra once more.", 1, "I must return to Vishra and speak to him once more.", 11, 120402)
+ AddQuestStepCompleteAction(Quest, 18, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 18, "I have spoken with Vishra again.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "Vishra has absolved me of all crimes and I am now free to walk among the citizens of Qeynos.")
+
+ UpdateQuestDescription(Quest, "During the time I spent in exile, I thought upon what it means to hold the ideals of virtue. I understand that the ends do not justify the means, but rather the path that one takes decides what is good or evil. Though a good life is harder, it is more rewarding.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step14Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step15Complete(Quest, QuestGiver, Player)
+ elseif Step == 16 then
+ Step16Complete(Quest, QuestGiver, Player)
+ elseif Step == 17 then
+ Step17Complete(Quest, QuestGiver, Player)
+ elseif Step == 18 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Hallmark/freeport_to_qeynos__part_1.lua b/server/Quests/Hallmark/freeport_to_qeynos__part_1.lua
new file mode 100755
index 000000000..6c7a6e137
--- /dev/null
+++ b/server/Quests/Hallmark/freeport_to_qeynos__part_1.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Quests/Hallmark/freeport_to_qeynos__part_1.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 07:09:12
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to give Kenjedeau the secret code", 1, "I need to seek out Kenjedeau and tell him 'nobility comes from personal sacrifice'. I've been told he's hiding somewhere within the Serpent Sewers below Freeport.", 11, 1550077)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"Serpent Sewer")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Then I welcome you into our fold, friend. We need someone like you. Talk with the resistance leader here in Freeport, Kenjedeau. You can find him in the sewers below. Seek him out and tell him our motto, \"nobility comes from personal sacrifice.\"")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium007.mp3", 1086694102, 636478984)
+ Dialog.AddOption("Thank you. I'll make my way to him.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've given Kenjedeau the secret code")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've found Kenjedeau masquerading as a watchman of some sorts down in the sewers.")
+
+ UpdateQuestDescription(Quest, "I have found and spoken to the head of the Qeynos resistance here in Freeport")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/freeport_to_qeynos__part_2.lua b/server/Quests/Hallmark/freeport_to_qeynos__part_2.lua
new file mode 100755
index 000000000..abc260718
--- /dev/null
+++ b/server/Quests/Hallmark/freeport_to_qeynos__part_2.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : Quests/Hallmark/freeport_to_qeynos__part_2.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 07:09:16
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to reach the official before it's too late.", 1, 100, "I need to find the official in the mansion and put a stop to him. I only hope I can reach him in time.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You made the right choice and just in time! We learned the location of a secret meeting involving a very important Freeport official. As we speak, he's planning to invade Qeynos.")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau006.mp3", 1366986633, 1336111674)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("What must I do?","Retry")
+ Dialog.Start()
+ if HasQuest(Player,5889) and GetQuestStep(Player,5889) ==1 then
+ SetStepComplete(Player,5889,1)
+ end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I thought I smelled a coward. I want nothing to do with you until you come to your senses.")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau005.mp3", 1178065540, 4141402431)
+ PlayFlavor(QuestGiver, "", "", "glare", 0, 0, Player)
+ Dialog.AddOption("Fine.")
+ Dialog.Start()
+ if HasQuest(Player,5889) and GetQuestStep(Player,5889) ==1 then
+ SetStepFailed(Player,5889,1)
+ end
+end
+
+function Deleted(Quest, QuestGiver, Player)
+end
+
+function Step1Complete(Quest)
+ UpdateQuestStepDescription(Quest, 1, "I fought my way to the room where the official awaited me.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've reached the official, only to find out he was waiting for me... along with my fellow 'conspirators'.")
+ AddQuestStepZoneLoc(Quest, 2, "I need to await judgement.", 15, "I've been tricked, but I'm still intent on leaving Freeport. I must await judgement.", 11-1341.61, -69.51, 333.4,33)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have been judged as a traitor to Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have been banished from Freeport, but I am still alive for some reason.")
+
+ UpdateQuestDescription(Quest, "I am the victim of a cruel and elaborate hoax intended to coerce people into betraying Freeport, all for the amusement of the Overlord himself. In the end, I still believed in what I said and accepted my fate. For some reason... I'm still alive.
")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/graystone_citizenship_task.lua b/server/Quests/Hallmark/graystone_citizenship_task.lua
index 3994a4118..2c940d966 100755
--- a/server/Quests/Hallmark/graystone_citizenship_task.lua
+++ b/server/Quests/Hallmark/graystone_citizenship_task.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Oakmyst Forest.", 5, 30, "The local forests have been seeded with tokens for the citizens of Graystone Yard to gather. These tokens may be found on any creatures in the Oakmyst Forest.", 1333,8300001, 8300002, 8300003, 8300004, 8300005, 8300006, 8300008, 8300010, 8300013, 8300014, 8300015, 8300016, 8300017, 8300018, 8300019, 8300022, 8300023, 8300026, 8300027, 8300034, 8300035, 8300036, 8300048, 8300049, 8300050, 8300051, 8300052, 8300053, 8300064)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Oakmyst Forest.", 5, 34, "The local forests have been seeded with tokens for the citizens of Graystone Yard to gather. These tokens may be found on any creatures in the Oakmyst Forest.", 1333,8300001, 8300002, 8300003, 8300004, 8300005, 8300006, 8300008, 8300010, 8300013, 8300014, 8300015, 8300016, 8300017, 8300018, 8300019, 8300022, 8300023, 8300026, 8300027, 8300034, 8300035, 8300036, 8300048, 8300049, 8300050, 8300051, 8300052, 8300053, 8300064)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Oakmyst Forest")
end
@@ -42,8 +42,8 @@ function Step2Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
- UpdateQuestZone(Quest,"Qeynos Citizenship Trial Chamber")
- AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1333, 22101350)
+ UpdateQuestZone(Quest,"Citizenship Trial Chamber")
+ AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 8250009)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -53,52 +53,29 @@ function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
- AddQuestStepChat(Quest, 5, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101354)
- AddQuestStepChat(Quest, 6, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101353)
- AddQuestStepChat(Quest, 7, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101352)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I've judged the Freeport mole.")
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 8250009)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
-function Step5Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 5, "I've judged the disgruntled refugee.")
-CheckProgress(Quest, QuestGiver, Player)
-end
-
-
-function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "I've judged the Freeport partisan.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function Step7Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 7, "I've judged Tavithi N'sari.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, 5720, 4) and QuestStepIsComplete(Player, 5720, 5) and QuestStepIsComplete(Player, 5720, 6) and QuestStepIsComplete(Player, 5720, 7)then
- UpdateQuestTaskGroupDescription(Quest, 7, "I have dealt with the traitors")
- AddQuestStepChat(Quest, 8, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 22101350)
- AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
- end
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 8, "Qeynos Citizenship Granted")
- UpdateQuestTaskGroupDescription(Quest, 8, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
+ UpdateQuestStepDescription(Quest, 5, "Qeynos Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Qeynos.")
GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 1 then
+SetAlignment(Player, 1)
+end
end
@@ -113,12 +90,6 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 4 then
Step4Complete(Quest, QuestGiver, Player)
elseif Step == 5 then
- Step5Complete(Quest, QuestGiver, Player)
- elseif Step == 6 then
- Step6Complete(Quest, QuestGiver, Player)
- elseif Step == 7 then
- Step7Complete(Quest, QuestGiver, Player)
- elseif Step == 8 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/Hallmark/gruttooth_invasion_fighter.lua b/server/Quests/Hallmark/gruttooth_invasion_fighter.lua
index 7024afca7..7188571d1 100755
--- a/server/Quests/Hallmark/gruttooth_invasion_fighter.lua
+++ b/server/Quests/Hallmark/gruttooth_invasion_fighter.lua
@@ -34,9 +34,6 @@ function Deleted(Quest, QuestGiver, Player)
end
function Step1Complete(Quest, QuestGiver, Player)
- if not HasItem(Player, 1001011,1) and not HasItem(Player, 75057,1) then
- GiveQuestItem(Quest,Player,"You found some items that suit you on the weapon rack.",1001011, 75057)
- end
UpdateQuestStepDescription(Quest, 1, "Got my weapon, now to kill some goblins.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've got my weapon and am ready to do my part defending the outpost.")
diff --git a/server/Quests/Hallmark/gruttooth_invasion_mage.lua b/server/Quests/Hallmark/gruttooth_invasion_mage.lua
index e16daa2e7..154e5ca14 100755
--- a/server/Quests/Hallmark/gruttooth_invasion_mage.lua
+++ b/server/Quests/Hallmark/gruttooth_invasion_mage.lua
@@ -34,9 +34,6 @@ function Deleted(Quest, QuestGiver, Player)
end
function Step1Complete(Quest, QuestGiver, Player)
- if not HasItem(Player, 1001011,1) and not HasItem(Player, 73899,1) then
- GiveQuestItem(Quest,Player,"You found some items that suit you on the weapon rack.",1001011,73899)
- end
UpdateQuestStepDescription(Quest, 1, "Got my weapon, now to kill some goblins.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've got my weapon and am ready to do my part defending the outpost.")
diff --git a/server/Quests/Hallmark/gruttooth_invasion_priest.lua b/server/Quests/Hallmark/gruttooth_invasion_priest.lua
index 560126afb..b8cf4dc49 100755
--- a/server/Quests/Hallmark/gruttooth_invasion_priest.lua
+++ b/server/Quests/Hallmark/gruttooth_invasion_priest.lua
@@ -34,9 +34,7 @@ function Deleted(Quest, QuestGiver, Player)
end
function Step1Complete(Quest, QuestGiver, Player)
- if not HasItem(Player, 1001011,1) and not HasItem(Player, 73731,1) then
- GiveQuestItem(Quest,Player,"You found some items that suit you on the weapon rack.",1001011, 73731)
- end
+
UpdateQuestStepDescription(Quest, 1, "Got my weapon, now to kill some goblins.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've got my weapon and am ready to do my part defending the outpost.")
diff --git a/server/Quests/Hallmark/gruttooth_invasion_scout.lua b/server/Quests/Hallmark/gruttooth_invasion_scout.lua
index b99b45071..d258bbb79 100755
--- a/server/Quests/Hallmark/gruttooth_invasion_scout.lua
+++ b/server/Quests/Hallmark/gruttooth_invasion_scout.lua
@@ -34,9 +34,7 @@ function Deleted(Quest, QuestGiver, Player)
end
function Step1Complete(Quest, QuestGiver, Player)
- if not HasItem(Player, 1001011,1) and not HasItem(Player, 73896,1) then
- GiveQuestItem(Quest,Player,"You found some items that suit you on the weapon rack.",1001011,73896)
- end
+
UpdateQuestStepDescription(Quest, 1, "Got my weapon, now to kill some goblins.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've got my weapon and am ready to do my part defending the outpost.")
diff --git a/server/Quests/Hallmark/longshadow_alley_citizenship_task.lua b/server/Quests/Hallmark/longshadow_alley_citizenship_task.lua
new file mode 100755
index 000000000..961999421
--- /dev/null
+++ b/server/Quests/Hallmark/longshadow_alley_citizenship_task.lua
@@ -0,0 +1,93 @@
+--[[
+ Script Name : Quests/Hallmark/longshadow_alley_citizenship_task.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 03:06:28
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Ruins.", 5, 34, "The Ruins have been seeded with tokens for the citizens of Longshadow Alley to gather. These tokens may be found on any creatures in the Ruins. I can reach the Ruins by using any of the bells in and around the City of Freeport.", 1335, 8420001,8420002,8420003,8420004,8420005,8420006,8420007,8420008,8420009,8420010,8420011,8420012,8420013,8420014,8420015,8420016,8420017,8420018,8420019,8420020,8420021,8420022,8420023,8420024,8420025,8420027,8420028,8420029,8420030,8420031,8420036,8420037,8420038,8420039)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Ruins")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have gathered five tokens from the Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have gathered the tokens required to prove my worth as a citizen.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
+ AddQuestStep(Quest, 2, "I need to enter the citizenship trial.", 1, 100, "I must perform the citizenship trial by returning to the Citizenship Sign and entering the trial chamber",1335)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 3, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial.", 1, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial", 1350, 1640000)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
+ AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Abbetor T'Avi has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Abbetor T'Avi.", 1, "I must return to Abbetor T'Avi to let her know the deed is done.",0, 1640000)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Freeport Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Abbetor T'Avi and she has granted me Freeport citizenship.")
+
+ UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Freeport.")
+ GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 0 then
+SetAlignment(Player, 0)
+end
+end
+
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/mage_training.lua b/server/Quests/Hallmark/mage_training.lua
new file mode 100755
index 000000000..b04435a7a
--- /dev/null
+++ b/server/Quests/Hallmark/mage_training.lua
@@ -0,0 +1,141 @@
+--[[
+ Script Name : Quests/Hallmark/mage_training.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:21
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ UpdateQuestZone(Quest,"Thieves' Way")
+ AddQuestStepKill(Quest, 1, "I must collect some usable sewer slime.", 5, 80, "The Arcanist has directed me to the Thieves Way sewers below Freeport to collect five usable Slimes. The best way to approach this will be to harness the primal arcane energies to destroy them.", 343, 8430030,1540003)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You need that attitude to control the secrets of the universe. Your first test is mastering your sorcery skills. Harness the primal power of the arcane energies, and command these energies to snuff the life from the Slimes in the sewers. After you destroy the Slimes, collect samples of their flesh and bring them to me. This shall be the first of many lessons.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius003.mp3", 574179385, 379662539)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("It shall be done, Arcanist.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have collected some usable sewer slime.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have collected five usable Slimes using everything in my arsenal and have gathered samples of what would be considered their flesh.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with the Arcanist", 1, "I should bring these samples to the Arcanist as she asked so that I may complete this lesson.", 11, 1440463)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with the Arcanist")
+ UpdateQuestTaskGroupDescription(Quest, 2, "The Arcanist has taught me the lesson that knowledge comes before everything else.")
+
+ AddQuestStepChat(Quest, 3, "I need to speak with Aulus Crispian and have the price of ink lowered.", 1, "The Arcanist has instructed me to speak with Aulus Crispian and have the price of ink lowered for her. I should approach this in the manner an Enchanter would.", 11, 1440010)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have spoken with Aulus Crispian.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have lowered the price of ink by playing on Aulus Crispian's greed. Beguiling a person as an Enchanter doesn't seem to be too hard. With spells at my command, it would be even easier.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 4, "I need to speak with the Arcanist", 1, "I should inform the Arcanist that I have completed my lesson.", 11, 1440463)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have spoken with Arcanist Sonius")
+ UpdateQuestTaskGroupDescription(Quest, 4, "Arcanist Sonius was rather pleased by the deal I worked out. She has agreed to teach me more concerning the arcane arts.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 5, "I should see what else the Arcanist needs", 1, "Once I'm ready, I should speak with the Arcanist again.", 11, 1440463)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have spoken with Arcanist Sonius")
+ UpdateQuestTaskGroupDescription(Quest, 4, "Arcanist Sonius has agreed to continue my lessons.")
+ UpdateQuestZone(Quest,"Multiple Zones")
+ AddQuestStepChat(Quest, 6, "I need to speak with Molg, the ogress who sells her wares on the streets of Big Bend.", 1, "I need to speak with some people in the Districts regarding an incident involving a rogue summoning. The Arcanist has given me a list of who saw the event.", 11, 1340021 )
+ AddQuestStepChat(Quest, 7, "I need to speak with Reana Astia, a lonely merchant in Beggar's Court.", 1, "I need to speak with some people in the Districts regarding an incident involving a rogue summoning. The Arcanist has given me a list of who saw the event.", 11, 1370007)
+ AddQuestStepChat(Quest, 8, "I need to speak with Skal Vethiz, a person caught up in nostalgia in Scale Yard.", 1, "I need to speak with some people in the Districts regarding an incident involving a rogue summoning. The Arcanist has given me a list of who saw the event.", 11, 1390012)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "Molg claimed to have been draped in a sheet of leather.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "Reana claims to have been stuck with a spear.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "Skal claims to have been attacked by a snake.")
+CheckProgress(Quest, QuestGiver, Player)
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5902, 6) and QuestStepIsComplete(Player, 5902, 7) and QuestStepIsComplete(Player, 5902, 8)then
+
+ UpdateQuestTaskGroupDescription(Quest, 6, "I have collected the information on what was summoned. It looks like three different things were summoned into existence.")
+ UpdateQuestZone(Quest,"North Freeport")
+ AddQuestStepChat(Quest, 9, "I need to speak with the Arcanist.", 1, "I should let the Arcanist know what I have learned.", 11, 1440463)
+ AddQuestStepCompleteAction(Quest,9, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 9, "I have spoken with the Arcanist.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "With the help of the Arcanist, I was able to see that the Summoner brought forth an elephant.")
+
+ UpdateQuestDescription(Quest, "I have graduated from Arcanist Sonius's courses and chose which dedicated study I will pursue. Though I have seen what a Sorcerer, Enchanter, and Summoner studies... I know which one I will devote myself to. Grasping the mysteries of arcane knowledge will be a daunting task, but the reward of power will drive me to learn as much as I can. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
+--]]
\ No newline at end of file
diff --git a/server/Quests/Hallmark/mage_training_part_1.lua b/server/Quests/Hallmark/mage_training_part_1.lua
index 89563094c..2380b2d79 100755
--- a/server/Quests/Hallmark/mage_training_part_1.lua
+++ b/server/Quests/Hallmark/mage_training_part_1.lua
@@ -25,6 +25,11 @@ function Accepted(Quest, QuestGiver, Player)
PlayFlavor(QuestGiver, "", "", "nod", 0, 0, Player)
Dialog.AddOption("Alright. I'll investigate the creatures in the bog.")
Dialog.Start()
+
+if GetQuestStep(Player,5877)==1 then
+ SetStepComplete(Player,5877,1)
+end
+
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Hallmark/mage_training_part_2.lua b/server/Quests/Hallmark/mage_training_part_2.lua
index cf5e39be5..7db1be624 100755
--- a/server/Quests/Hallmark/mage_training_part_2.lua
+++ b/server/Quests/Hallmark/mage_training_part_2.lua
@@ -24,6 +24,11 @@ function Accepted(Quest, QuestGiver, Player)
PlayFlavor(QuestGiver, "", "", "doh", 0, 0, Player)
Dialog.AddOption("I suppose I can try my own \"charm\". I'll go speak with Willim.")
Dialog.Start()
+
+if GetQuestStep(Player,5877)==1 then
+ SetStepComplete(Player,5877,1)
+end
+
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/Hallmark/nettleville_citizenship_task.lua b/server/Quests/Hallmark/nettleville_citizenship_task.lua
index bdcf0d989..d8ac35b90 100755
--- a/server/Quests/Hallmark/nettleville_citizenship_task.lua
+++ b/server/Quests/Hallmark/nettleville_citizenship_task.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Peat Bog.", 5, 30, "The local bog have been seeded with tokens for the citizens of Nettleville Hovel to gather. These tokens may be found on any creatures in the Peat Bog.", 1341, 8290001,8290002,8290003,8290004,8290005,8290006,8290007,8290008,8290009,8290010,8290011,8290012,8290013,8290014,8290015,8290016,8290017,8290018,8290019,8290020,8290021,8290022,8290023,8290024,8290025,8290026,8290027,8290028,8290029,8290030,8290031,8290032,8290033,8290038,8290039,8290040,8290041,8290042,8290043,8290044)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Peat Bog.", 5, 34, "The local bog have been seeded with tokens for the citizens of Nettleville Hovel to gather. These tokens may be found on any creatures in the Peat Bog.", 1341, 8290001,8290002,8290003,8290004,8290005,8290006,8290007,8290008,8290009,8290010,8290011,8290012,8290013,8290014,8290015,8290016,8290017,8290018,8290019,8290020,8290021,8290022,8290023,8290024,8290025,8290026,8290027,8290028,8290029,8290030,8290031,8290032,8290033,8290038,8290039,8290040,8290041,8290042,8290043,8290044)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Peat Bog")
end
@@ -42,8 +42,8 @@ function Step2Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
- UpdateQuestZone(Quest,"Qeynos Citizenship Trial Chamber")
- AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1341, 22101350)
+ UpdateQuestZone(Quest,"Citizenship Trial Chamber")
+ AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 8250009)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -53,52 +53,29 @@ function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
- AddQuestStepChat(Quest, 5, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101354)
- AddQuestStepChat(Quest, 6, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101353)
- AddQuestStepChat(Quest, 7, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101352)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I've judged the Freeport mole.")
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 8250009)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
-function Step5Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 5, "I've judged the disgruntled refugee.")
-CheckProgress(Quest, QuestGiver, Player)
-end
-
-
-function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "I've judged the Freeport partisan.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function Step7Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 7, "I've judged Tavithi N'sari.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, 5721, 4) and QuestStepIsComplete(Player, 5721, 5) and QuestStepIsComplete(Player, 5721, 6) and QuestStepIsComplete(Player, 5721, 7)then
- UpdateQuestTaskGroupDescription(Quest, 7, "I have dealt with the traitors")
- AddQuestStepChat(Quest, 8, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 22101350)
- AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
- end
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 8, "Qeynos Citizenship Granted")
- UpdateQuestTaskGroupDescription(Quest, 8, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
+ UpdateQuestStepDescription(Quest, 5, "Qeynos Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Qeynos.")
GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 1 then
+SetAlignment(Player,1)
+end
end
@@ -113,12 +90,6 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 4 then
Step4Complete(Quest, QuestGiver, Player)
elseif Step == 5 then
- Step5Complete(Quest, QuestGiver, Player)
- elseif Step == 6 then
- Step6Complete(Quest, QuestGiver, Player)
- elseif Step == 7 then
- Step7Complete(Quest, QuestGiver, Player)
- elseif Step == 8 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__ffighter.lua b/server/Quests/Hallmark/obtain_adventurer_class__ffighter.lua
new file mode 100755
index 000000000..bca5bbef3
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__ffighter.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__ffighter.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:50
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Commandant Tychus within the Temple of War.", 1, "I need to speak with Commandant Tychus within the Temple of War.", 11, 0)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Freeport")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Commandant Tychus.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Commandant Tychus.")
+
+ UpdateQuestDescription(Quest, "I have contacted Commandant Tychus about advancing.")
+ GiveQuestReward(Quest, Player)
+end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__fmage.lua b/server/Quests/Hallmark/obtain_adventurer_class__fmage.lua
new file mode 100755
index 000000000..a150dae18
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__fmage.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__fmage.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:39
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Arcanist Sonius within the Academy.", 1, "I need to speak with Arcanist Sonius within the Academy of Arcane Sciences.", 11, 0)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Freeport")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Arcanist Sonius.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Arcanist Sonius.")
+
+ UpdateQuestDescription(Quest, "I have contacted Arcanist Sonius about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__fpriest.lua b/server/Quests/Hallmark/obtain_adventurer_class__fpriest.lua
new file mode 100755
index 000000000..9fe68cd3b
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__fpriest.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__fpriest.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:13
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Priest Kelian within the Temple of War.", 1, "I need to speak with Priest Kelian within the Temple of War.", 11, 0)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Freeport")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Priest Kelian.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Priest Kelian.")
+
+ UpdateQuestDescription(Quest, "I have contacted Priest Kelian about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__fscout.lua b/server/Quests/Hallmark/obtain_adventurer_class__fscout.lua
new file mode 100755
index 000000000..c8e68c0a7
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__fscout.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__fscout.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:35
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Emissary Millia inside the Jade Tiger Inn.", 1, "I need to speak with Emissary Millia within the Jade Tiger's Den.", 11, 0)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Freeport")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Emissary Millia.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Emissary Millia.")
+
+ UpdateQuestDescription(Quest, "I have contacted Emissary Millia about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__qfighter.lua b/server/Quests/Hallmark/obtain_adventurer_class__qfighter.lua
new file mode 100755
index 000000000..7ca9c7f42
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__qfighter.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__qfighter.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:15
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Master at Arms Dagorel on the east side of South Qeynos.", 1, "I need to speak with Master at Arms Dagorel in South Qeynos.", 11, 2310377)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"South Qeynos")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Master at Arms Dagorel.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Master at Arms Dagorel.")
+
+ UpdateQuestDescription(Quest, "I have contacted Master at Arms Dagorel about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__qmage.lua b/server/Quests/Hallmark/obtain_adventurer_class__qmage.lua
new file mode 100755
index 000000000..cd32a1a2c
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__qmage.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__qmage.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:33
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestRepeatable(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Magister Niksel outside the mage tower in South Qeynos.", 1, "I need to speak with Magister Niksel in South Qeynos.", 11, 2310376)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"South Qeynos")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Magister Niksel.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Magister Niksel.")
+
+ UpdateQuestDescription(Quest, "I have contacted Magister Niksel about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__qpriest.lua b/server/Quests/Hallmark/obtain_adventurer_class__qpriest.lua
new file mode 100755
index 000000000..e631c76b8
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__qpriest.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__qpriest.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:55
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Hierophant Aldalad under the trees south of the Qeynos Claymore in North Qeynos.", 1, "I need to speak with Hierophant Aldalad in North Qeynos.", 11, 2220484)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Qeynos")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Hierophant Aldalad.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Hierophant Aldalad.")
+
+ UpdateQuestDescription(Quest, "I have contacted Hierophant Aldalad about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/obtain_adventurer_class__qscout.lua b/server/Quests/Hallmark/obtain_adventurer_class__qscout.lua
new file mode 100755
index 000000000..fb041f555
--- /dev/null
+++ b/server/Quests/Hallmark/obtain_adventurer_class__qscout.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Quests/Hallmark/obtain_adventurer_class__qscout.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 03:08:09
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Counselor Vemerik on the benches south of the Qeynos Claymore in North Qeynos.", 1, "I need to speak with Counselor Vemerik in North Qeynos.", 11, 2220485)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Qeynos")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I spoke with Counselor Vemerik.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I spoke with Counselor Vemerik.")
+
+ UpdateQuestDescription(Quest, "I have contacted Counselor Vemerik about advancing.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
+
diff --git a/server/Quests/Hallmark/path_of_the_bard.lua b/server/Quests/Hallmark/path_of_the_bard.lua
new file mode 100755
index 000000000..53ecd2085
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_bard.lua
@@ -0,0 +1,330 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_bard.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.29 02:11:35
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Councilor Vemerik
+ Preceded by: Scout Training pt. II
+ Followed by: None
+--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to subdue the mob in the Fermented Grape, a small tavern in South Qeynos. The tavern is located amongst the southern-most row of buildings.", 1, 100, "I need to save the other bard from an angry crowd.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Go rescue the poor minstrel from the angry crowd, of course. Just handle the situation appropriately and make sure the bard is okay. If you can handle that, then you'll have no problems with the fallout from a bad evening, even under the worst conditions.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik034.mp3", 1060882099, 2285417556)
+ PlayFlavor(QuestGiver, "", "", "nod", 0, 0, Player)
+ Dialog.AddOption("Interesting. I suppose I can save your bard friend from the unruly crowd.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5880)==1 then
+ SetStepComplete(Player,5880,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've subdued the mob.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've saved the other bard from the angry crowd.")
+ if GetClass(Player)== 31 then
+ SetAdventureClass(Player,35)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Bard.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Bard.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+-- SkillCheck(Quest,Player)
+
+
+ local level = GetLevel(Player)*5
+if not HasSkill(Player, 1921433074) then -- Reconnaissance
+ AddSkill(Player, 1921433074,1,level)
+ SendMessage(Player, "You have learned the Reconnaissance skill")
+end
+if not HasSkill(Player, 1311635100) then -- Melodies/Bard
+ AddSkill(Player, 1311635100,1,level)
+ SendMessage(Player, "You have learned the Melodies skill")
+end
+if not HasSkill(Player, 1468243427) then -- Tracking
+ AddSkill(Player, 1468243427,1,level)
+ SendMessage(Player, "You have learned the Tracking skill")
+end
+if not HasSkill(Player, 2200201799) then -- Disarm Trap
+ AddSkill(Player, 2200201799,1,level)
+ SendMessage(Player, "You have learned the Disarm Trap skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,31,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Spawn, 613995491) then -- Disruption
+ AddSkill(Spawn, 613995491,1,level)
+ SendMessage(Spawn, "You have learned the Disruption skill")
+end
+if not HasSkill(Spawn, 366253016) then -- Ministration
+ AddSkill(Spawn, 366253016,1,level)
+ SendMessage(Spawn, "You have learned the Ministration skill")
+end
+if not HasSkill(Spawn, 3587918036) then -- Ordination
+ AddSkill(Spawn, 3587918036,1,level)
+ SendMessage(Spawn, "You have learned the Ordination skill")
+end
+if not HasSkill(Spawn, 882983852) then -- Subjugation
+ AddSkill(Spawn, 882983852,1,level)
+ SendMessage(Spawn, "You have learned the Subjugation skill")
+end
+--REMOVE SKILLS
+-- Remove Fighter for Scout
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+
+
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Scout
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Scout
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+ end
+ UpdateQuestDescription(Quest, "I managed to lay out the entire mob single-handedly. I've proven that even in the off-chance I give a bad performance, I can handle anything the crowd might throw at me.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/path_of_the_brawler.lua b/server/Quests/Hallmark/path_of_the_brawler.lua
new file mode 100755
index 000000000..f240db1df
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_brawler.lua
@@ -0,0 +1,346 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_brawler.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.07 04:12:46
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I must defeat a third circle initiate.", 1, 100, "The dojo where I need to prove myself may be found at the eastern end of South Qeynos in the middle row of buildings.", 11)
+ AddQuestStep(Quest, 2, "I must defeat a second circle initiate.", 1, 100, "The dojo where I need to prove myself may be found at the eastern end of South Qeynos in the middle row of buildings.", 11)
+ AddQuestStep(Quest, 3, "I must defeat a first circle adept.", 1, 100, "The dojo where I need to prove myself may be found at the eastern end of South Qeynos in the middle row of buildings.", 11)
+ AddQuestStep(Quest, 4, "I must defeat a white headband initiate.", 1, 100, "The dojo where I need to prove myself may be found at the eastern end of South Qeynos in the middle row of buildings.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("If you're a true brawler, you need to undergo a challenge. In order to join the ranks of the brawlers here in Qeynos, you gotta prove your skills. Enter the dojo and go fist to fist against another brawler. If you manage to defeat 'em, you'll become that which you seek.")
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("Thank you, Dagorel. I won't forget your lessons.")
+ Dialog.Start()
+if GetQuestStep(Player,5878)==1 then
+ SetStepComplete(Player,5878,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have defeated a third circle initiate.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have defeated a second circle initiate.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have defeated a first circle adept.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have defeated a white headband initiate.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5790,1) and QuestStepIsComplete(Player,5790,2) and QuestStepIsComplete(Player,5790,3)and QuestStepIsComplete(Player,5790,4) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have entered the dojo and defeated each of my four opponents in combat.")
+
+ AddQuestStep(Quest, 5, "I must meditate at the altar.", 1, 100, "I must clear my thoughts and concentrate on the events that have passed.", 11)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I must meditate at the altar.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have passed the trial and become a brawler.")
+ if GetClass(Player)== 1 then
+ SetAdventureClass(Player,5)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Brawler.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Brawler.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ RemoveSpellBookEntry(Player, 2550401)
+
+ local level = GetLevel(Player)*5
+if not HasSkill(Player, 1408356869) then -- Martial
+ AddSkill(Player, 1408356869,1,level)
+ SendMessage(Player, "You have learned the Martial skill")
+end
+if not HasSkill(Player, 3856706740) then -- Brawling
+ AddSkill(Player, 3856706740,1,level)
+ SendMessage(Player, "You have learned the Brawling skill")
+end
+if not HasSkill(Player, 3850377186) then -- Deflection
+ AddSkill(Player, 3850377186,1,level)
+ SendMessage(Player, "You have learned the Deflection skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,1,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,36,36)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 3177806075) then -- Fists
+ AddSkill(Player, 3177806075,1,level)
+ SendMessage(Player, "You are now more proficient with your Fists")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+
+--REMOVED SKILLS
+--Removed Advance Fighter
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout for Fighter
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Fighter
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Fighter
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVED WEAPON
+if not HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3173504370) then -- Roundshield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 2476073427) then -- Axe
+ RemoveSkill(Player, 2476073427)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if not HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 2200201799) then -- Disarm Trap
+ RemoveSkill(Player, 2200201799)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+
+ end
+ UpdateQuestDescription(Quest, "One by one, I've faced the opponents brought before me. One by one, they have fallen before me. I have proved myself worthy of becoming a brawler.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/path_of_the_cleric.lua b/server/Quests/Hallmark/path_of_the_cleric.lua
new file mode 100755
index 000000000..bec88b7b6
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_cleric.lua
@@ -0,0 +1,287 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_cleric.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.19 05:11:14
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to complete the trial.", 1, 100, "I must complete Aldalad's trial in order to become a cleric.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Then I will facilitate a prayer trance for you. You will experience a struggle unlike any you've known before... but upon exiting the trance, should you prove successful, you will emerge with the emotional strength to survive and prosper in the re-forged Norrath. Are you ready?")
+ --Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 2729819197, 1238324646) WE DON"T HAVE THE VO FOR THIS
+ PlayFlavor(QuestGiver, "", "", "nod", 0, 0, Player)
+ Dialog.AddOption("I am.","ClericPort" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5879)==1 then
+ SetStepComplete(Player,5879,1)
+end
+end
+
+function ClericPort(QuestGiver,Player)
+ Trial = GetZone("TheDisconcertingMeditation")
+ Zone(Trial,Player,-47.02, -45.79, -49.3, 272)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've completed the trial.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've completed Aldalad's trial and become a cleric.")
+ if GetClass(Player)== 11 then
+ SetAdventureClass(Player,12)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Cleric.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Cleric.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ local level = GetLevel(Player)*5
+--WEAPON SKILLS
+if not HasSkill(Player, 2463145248) then -- Inspirations
+ AddSkill(Player, 2463145248,1,level)
+ SendMessage(Player, "You have learned the Inspirations skill")
+end
+if not HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ AddSkill(Player, 3341842907,1,level)
+ SendMessage(Player, "You have learned the Theurgy skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Remove Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+ end
+ UpdateQuestDescription(Quest, "After a somewhat surreal dream, I have cemented my beliefs and become a true cleric. I stride forth with a renewed faith and will prove my worth to those around me in my adventures to come.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/path_of_the_crusader.lua b/server/Quests/Hallmark/path_of_the_crusader.lua
new file mode 100755
index 000000000..5a8939df6
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_crusader.lua
@@ -0,0 +1,304 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_crusader.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.07 03:12:29
+ Script Purpose : QEYNOS CRUSADER CLASS QUEST
+
+ Zone : Hallmark
+ Quest Giver: Master at Arms Dagorel
+ Preceded by: Fighter Training pt II
+ Followed by: None
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I must defeat the brigands and free the villager from a house in the Harbor.", 1, 100, "I must rescue the villager from the brigands in the Qeynos Harbor.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Prove to me that you've got the courage and conviction to stand up for others when they cannot stand up for themselves. I heard that some outsider thugs are holed up in Qeynos Harbor, and that they've got one of our citizens as a prisoner. If you can rescue him, you'll earn the title of crusader.")
+ PlayFlavor(QuestGiver, "", "", "nod", 0, 0, Player)
+ Dialog.AddOption("Thank you, Dagorel. I won't forget your lessons.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5878)==1 then
+ QuestStepIsComplete(Player,5878,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've defeated the brigands and freed the villager.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've defeated the thugs holding the villager hostage and set her free.")
+ if GetClass(Player)== 1 then
+ SetAdventureClass(Player,8)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Crusader.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Crusader.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+
+ local level = GetLevel(Player)*5
+if not HasSkill(Player, 1408356869) then -- Martial
+ AddSkill(Player, 1408356869,1,level)
+ SendMessage(Player, "You have learned the Martial skill")
+end
+if not HasSkill(Player, 3809066846) then -- Faith/Crusader
+ AddSkill(Player, 3809066846,1,level)
+ SendMessage(Player, "You have learned the Faith skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 2246237129) then -- Medium Armor
+ AddSkill(Player, 2246237129,1,level)
+ SendMessage(Player, "You are now more proficient with Medium Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 2608320658) then -- Kite Shield
+ AddSkill(Player, 2608320658,1,level)
+ SendMessage(Player, "You are now more proficient with a Kite Shield")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Player, 2292577688) then -- Great Sword
+ AddSkill(Player, 2292577688,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Sword")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+
+--REMOVED SKILLS
+--Removed Advance Fighter
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout for Fighter
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Fighter
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Fighter
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVED WEAPON
+if not HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2476073427) then -- Axe
+ RemoveSkill(Player, 2476073427)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 3180399725) then -- Staff(2h)
+ RemoveSkill(Player, 3180399725)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 2200201799) then -- Disarm Trap
+ RemoveSkill(Player, 2200201799)
+end
+
+
+ end
+ UpdateQuestDescription(Quest, "I have rescued the frightened villager from the hands of a dangerous band of brigands, in the process proving to both myself and others that I fight for others and for what I believe in. I am now worthy of becoming a crusader.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/path_of_the_druid.lua b/server/Quests/Hallmark/path_of_the_druid.lua
new file mode 100755
index 000000000..4e00674b3
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_druid.lua
@@ -0,0 +1,286 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_druid.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.19 05:11:31
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I must complete the trial Aldalad has set forth for me.", 1, 100, "I must complete Aldalad's trial in the elddar grove in order to become a druid.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("There will be no need to return to me when you have completed this trial, but go forth and put what you have learned into practice. You will know when you have earned the right to call yourself a druid. I will send you to where you need to go.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad030.mp3", 110213528, 850594761)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("I am ready.","DruidPort" )
+ Dialog.Start()
+if GetQuestStep(Player,5879)==1 then
+ SetStepComplete(Player,5879,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've completed the trial.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've completed Aldalad's trial by defeating the fire elemental and become a druid.")
+ if GetClass(Player)== 11 then
+ SetAdventureClass(Player,15)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Druid.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Druid.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 2463145248) then -- Inspirations
+ AddSkill(Player, 2463145248,1,level)
+ SendMessage(Player, "You have learned the Inspirations skill")
+end
+if not HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ AddSkill(Player, 3282420779,1,level)
+ SendMessage(Player, "You have learned the Archegenesis skill")
+end
+if not HasSkill(Player, 3341842907) then -- Theurgy/Druid
+ AddSkill(Player, 3341842907,1,level)
+ SendMessage(Player, "You have learned the Theurgy skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Remove Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Remove Priest
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Remove Mage
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 545043066) then -- Symbol
+ RemoveSkill(Player, 545043066)
+end
+ end
+ UpdateQuestDescription(Quest, "I have completed the trial Aldalad set before me, and am finally ready to journey forth as a druid - a defender of the forests and animals, of those who cannot adequately do so for themselves.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/path_of_the_enchanter(Q).lua b/server/Quests/Hallmark/path_of_the_enchanter(Q).lua
index 12efbfb01..e5f72504c 100755
--- a/server/Quests/Hallmark/path_of_the_enchanter(Q).lua
+++ b/server/Quests/Hallmark/path_of_the_enchanter(Q).lua
@@ -9,14 +9,32 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStep(Quest, 1, "I should look to the middle of the southern row of buildings in South Qeynos for the Wayfarer's Rest.", 1, 100, "I must enter the Wayfarer's Rest in South Qeynos and take care of the disturbance.", 11)
- AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ AddQuestStepZoneLoc(Quest, 1, "I should look to the middle of the southern row of buildings in South Qeynos for the Wayfarer's Rest.", 5, "I must enter the Wayfarer's Rest in South Qeynos and take care of the disturbance.", 11,6.50, -0.15, 0.88,215)
+ AddQuestStepCompleteAction(Quest, 1, "QuestStep1")
+end
+
+function QuestStep1(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have entered the Wayfarer's Rest.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have entered the Wayfarer's Rest.")
+ AddQuestStep(Quest, 2, "I need to discover and neutralize the cause of the brawl in the Wayfarer's Rest.", 1, 100, "I must practice 'Crowd Control' in the Wayfarer's Rest.", 11)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You'll be an enchanter... yes... perhaps ... First, let's see how you deal with an angry crowd. Not everyone is cut out to deal with the thought required behind this choice ... we need to make sure that you are.")
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("Alright. I'll deal with the crowd.","GoodbyeEnch")
+ Dialog.Start()
+
+if GetQuestStep(Player,5877)==1 then
+ SetStepComplete(Player,5877,1)
+end
+
end
function Declined(Quest, QuestGiver, Player)
@@ -29,15 +47,245 @@ end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 1, "I have taken care of the disturbance in the Wayfarer's Rest.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have taken care of the disturbance for Niksel and proven myself as an enchanter.")
+ UpdateQuestStepDescription(Quest, 2, "I have taken care of the disturbance in the Wayfarer's Rest.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have taken care of the disturbance for Niksel and proven myself as an enchanter.")
+ if GetClass(Player)== 21 then
+ SetAdventureClass(Player,25)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are an Enchanter.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are an Enchanter.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 3820670534) then -- Evocations/Mage
+ AddSkill(Player, 3820670534,1,level)
+ SendMessage(Player, "You have learned the Evocations skill")
+end
+if not HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ AddSkill(Player, 287643040,1,level)
+ SendMessage(Player, "You have learned the Enchantments skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+--REMOVE SKILLS
+-- Removed Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 770311065) then -- Mace
+ RemoveSkill(Player, 770311065)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 545043066) then -- Symbol
+ RemoveSkill(Player, 545043066)
+end
+if HasSkill(Player, 4037812502) then -- Buckler
+ RemoveSkill(Player, 4037812502)
+end
+ end
UpdateQuestDescription(Quest, "After thinking about it rationally, I realized that there was no way for those tavern patrons to have been so upset. So naturally, I went to find the root of their animosity. Having done so, I find myself in a new role as an enchanter. I suppose I'll have much to learn.")
GiveQuestReward(Quest, Player)
end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- QuestComplete(Quest, QuestGiver, Player)
- end
+ QuestStep1(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
end
diff --git a/server/Quests/Hallmark/path_of_the_predator.lua b/server/Quests/Hallmark/path_of_the_predator.lua
new file mode 100755
index 000000000..961576e3d
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_predator.lua
@@ -0,0 +1,321 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_predator.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.29 02:11:20
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill the assassin leader who has holed up in the Qeynos Harbor.", 1, 100, "I need to track down and slay the leader of the assassins. They should be located in one of the buildings in the harbor.", 611, 2080023)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Well this is fortunate then! I have just been given news of a group of cutthroats taking up residence inside Qeynos' walls! The group and their leader are holed up down by the docks. Quickly and quietly deal with their leader. Doing so will be like cutting the head off a snake. Leaderless, they should soon disband from the city and you will have proven yourself as a predator!")
+-- Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik034.mp3", 1060882099, 2285417556)
+ PlayFlavor(QuestGiver, "", "", "smile", 0, 0, Player)
+ Dialog.AddOption("This does sound like a worthy task. My hunt begins.")
+ Dialog.Start()
+if GetQuestStep(Player,5880)==1 then
+ SetStepComplete(Player,5880,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've killed the assassin leader.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the leader of the assassins.")
+ if GetClass(Player)== 31 then
+ SetAdventureClass(Player,38)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Predator.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Predator.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ local level = GetLevel(Player)*5
+if not HasSkill(Player, 1921433074) then -- Reconnaissance
+ AddSkill(Player, 1921433074,1,level)
+ SendMessage(Player, "You have learned the Reconnaissance skill")
+end
+if not HasSkill(Player, 3167106577) then -- Stalking/Predator
+ AddSkill(Player, 3167106577,1,level)
+ SendMessage(Player, "You have learned the Stalking skill")
+end
+if not HasSkill(Player, 1468243427) then -- Tracking
+ AddSkill(Player, 1468243427,1,level)
+ SendMessage(Player, "You have learned the Tracking skill")
+end
+if not HasSkill(Player, 2200201799) then -- Disarm Trap
+ AddSkill(Player, 2200201799,1,level)
+ SendMessage(Player, "You have learned the Disarm Trap skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,31,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+--REMOVE SKILLS
+-- Remove Fighter for Scout
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+
+if HasSkill(Spawn, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Spawn, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Scout
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Scout
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+ end
+ UpdateQuestDescription(Quest, "My skills were up to the task and I have succeeded in killing the leader of the ring without alerting the others. They will undoubtedly break apart now that their leader has perished... and now I have earned the title of predator.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/path_of_the_rogue.lua b/server/Quests/Hallmark/path_of_the_rogue.lua
new file mode 100755
index 000000000..676b732f9
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_rogue.lua
@@ -0,0 +1,332 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_rogue.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.29 02:11:26
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Councilor Vemerik
+ Preceded by: Scout Training pt. II
+ Followed by: None
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to steal the orders from the safehouse in Qeynos Harbor.", 1, 100, "I need to steal the plans from a lieutenant in the Qeynos harbor.", 75)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'd like you to check in on a new squad of soldiers. Go steal a note from underneath their noses. If you succeed, then the guards need more training and if you fail, then obviously, you're not ready to be a rogue.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik029.mp3", 2070937138, 2065993519)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("What kind of note am I looking for?","Rogue3")
+ Dialog.Start()
+if GetQuestStep(Player,5880)==1 then
+ SetStepComplete(Player,5880,1)
+end
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've stolen the orders.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've stolen the plans out from under the watchful patrol.")
+
+ AddQuestStepChat(Quest, 2, "I need to return the document to Vemerik.", 1, "I need to return the documents I've stolen to Counselor Vemerik in North Qeynos.", 75, 2220485)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Vemerik.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've returned and spoken with Counselor Vemerik.")
+ if GetClass(Player)== 31 then
+ SetAdventureClass(Player,32)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Rogue.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Rogue.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ local level = GetLevel(Player)*5
+if not HasSkill(Player, 1921433074) then -- Reconnaissance
+ AddSkill(Player, 1921433074,1,level)
+ SendMessage(Player, "You have learned the Reconnaissance skill")
+end
+if not HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ AddSkill(Player, 1514256692,1,level)
+ SendMessage(Player, "You have learned the Skulldugery skill")
+end
+if not HasSkill(Player, 1468243427) then -- Tracking
+ AddSkill(Player, 1468243427,1,level)
+ SendMessage(Player, "You have learned the Tracking skill")
+end
+if not HasSkill(Player, 2200201799) then -- Disarm Trap
+ AddSkill(Player, 2200201799,1,level)
+ SendMessage(Player, "You have learned the Disarm Trap skill")
+end
+if not HasSkill(Player, 3232294366) then -- Safe Fall
+ AddSkill(Player, 3232294366,31,level)
+ SendMessage(Player, "You have learned the Safe Fall skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 418532101,1,level) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+--REMOVE SKILLS
+-- Remove Fighter for Scout
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+
+if HasSkill(Spawn, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Spawn, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Scout
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Scout
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 1616998748) then -- Spear
+ RemoveSkill(Player, 1616998748)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+ end
+ UpdateQuestDescription(Quest, "I managed to grab the lieutenant's orders out from under the watchful eye of the Qeynos guard. I'm sure they'll be put through some rigorous training after this to help them keep a sharper eye out in the future, but that's not my concern now!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/path_of_the_shaman.lua b/server/Quests/Hallmark/path_of_the_shaman.lua
new file mode 100755
index 000000000..cb08df9e4
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_shaman.lua
@@ -0,0 +1,308 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_shaman.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.19 05:11:32
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must subdue the first spirit.", 1, 100, "I must venture into the house in South Qeynos, located among the middle row of buildings, and subdue the spirits within.", 11, 2140028)
+ AddQuestStepKill(Quest, 2, "I must subdue the second spirit.", 1, 100, "I must venture into the house in South Qeynos, located among the middle row of buildings, and subdue the spirits within.", 11, 2140029)
+ AddQuestStepKill(Quest, 3, "I must subdue the third spirit.", 1, 100, "I must venture into the house in South Qeynos, located among the middle row of buildings, and subdue the spirits within.", 11, 2140027)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Then you must travel to the Southern part of the city where a home has reportedly become a site of restless spirits. Use the skills you have gained to unshackle them from this world and you will have proven yourself as a shaman. There will be no need to return to me, but be wary, spirits have powers even they can fathom.")
+-- Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad030.mp3", 110213528, 850594761)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("Thank you, Aldalad. I will pass this trial." )
+ Dialog.Start()
+
+if GetQuestStep(Player,5879)==1 then
+ SetStepComplete(Player,5879,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have subdued the first spirit.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have subdued the second spirit.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I have subdued the third spirit.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5776,1) and QuestStepIsComplete(Player,5776,2) and QuestStepIsComplete(Player,5776,3) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have ventured into the house in South Qeynos and subdued the spirits within.")
+ if GetClass(Player)== 11 then
+ SetAdventureClass(Player,18)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Shaman.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Shaman.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 2463145248) then -- Inspirations
+ AddSkill(Player, 2463145248,1,level)
+ SendMessage(Player, "You have learned the Inspirations skill")
+end
+if not HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ AddSkill(Player, 3343700951,1,level)
+ SendMessage(Player, "You have learned the Talismans skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Remove Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Remove Mage
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 545043066) then -- Symbol
+ RemoveSkill(Player, 545043066)
+end
+end
+ UpdateQuestDescription(Quest, "The spirits I encountered proved quite spiteful, obviously intent on destroying all life around them. Perhaps their souls were unable to find peace. Even so, after my trial I proved that I am worthy to be a shaman.")
+ GiveQuestReward(Quest, Player)
+end
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/path_of_the_sorcerer(Q).lua b/server/Quests/Hallmark/path_of_the_sorcerer(Q).lua
index ad4345fb4..184aca65b 100755
--- a/server/Quests/Hallmark/path_of_the_sorcerer(Q).lua
+++ b/server/Quests/Hallmark/path_of_the_sorcerer(Q).lua
@@ -9,13 +9,24 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function Init(Quest)
- AddQuestStep(Quest, 1, "I need to pass Magister Niksel's trial.", 1, 100, "I must pass Magister Niksel's trial in the testing room south of the mage tower in South Qeynos.", 11)
+ AddQuestStep(Quest, 1, "I need to pass Magister Niksel's trial.", 1, 100, "I must pass Magister Niksel's trial in the testing room south of the mage tower in South Qeynos. The chamber is located at the top of the tower.", 11)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("We shall see. In this trial for aspiring sorcerers, you will face against the arcane creations from the Three-Tower's menagerie. They will each be translocated into the testing chamber, but also taken swiftly out once defeated. All for swift repairs, of course! Defeat these arcane guardians and you will have proven yourself in the art of sorcery.")
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("Once I prove myself, should I find you?","GoodbyeSumm")
+ Dialog.Start()
+
+if GetQuestStep(Player,5877)==1 then
+ SetStepComplete(Player,5877,1)
+end
end
function Declined(Quest, QuestGiver, Player)
@@ -30,11 +41,238 @@ function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 1, "I've passed Magister Niksel's trial.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've passed Magister Niksel's trial.")
+ if GetClass(Player)== 21 then
+ SetAdventureClass(Player,22)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Sorcerer.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Sorcerer.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 3820670534) then -- Evocations/Mage
+ AddSkill(Player, 3820670534,1,level)
+ SendMessage(Player, "You have learned the Evocations skill")
+end
+if not HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ AddSkill(Player, 2533124061,1,level)
+ SendMessage(Player, "You have learned the Sorcery skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Spawn, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Spawn, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 770311065) then -- Mace
+ RemoveSkill(Player, 770311065)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 4037812502) then -- Buckler
+ RemoveSkill(Player, 4037812502)
+end
+ end
UpdateQuestDescription(Quest, "I passed the trial and will continue on my path as a sorcerer. I know that I cannot be reckless with my power, or these forces may overwhelm me.")
GiveQuestReward(Quest, Player)
end
+
+
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
QuestComplete(Quest, QuestGiver, Player)
diff --git a/server/Quests/Hallmark/path_of_the_summoner.lua b/server/Quests/Hallmark/path_of_the_summoner.lua
index 2f61254d4..70cd4bca0 100755
--- a/server/Quests/Hallmark/path_of_the_summoner.lua
+++ b/server/Quests/Hallmark/path_of_the_summoner.lua
@@ -9,14 +9,26 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStep(Quest, 1, "I need to pass Magister Niksel's trial.", 1, 100, "I must pass Magister Niksel's trial in the testing room south of the mage tower in South Qeynos.", 11)
+ AddQuestStepKill(Quest, 1, "I need to pass Magister Niksel's trial using a summoned creature.", 1, 100, "I must pass Magister Niksel's trial in the testing room in the South Qeynos mage tower . The chamber is located on the middle floor of the tower.", 11,22105121)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Then I suggest you prepare yourself. The trial you will face places you against the mighty beings you will one day summon on your own. One from each element will be represented. Destroy them all, and you will be ready to move on in your new role as a summoner.")
+ Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel030.mp3", 4260640044, 118480964)
+ PlayFlavor(QuestGiver, "", "", "scold", 0, 0, Player)
+ Dialog.AddOption("Should I return to you once I've completed the trial?","GoodbyeSumm")
+ Dialog.Start()
+
+if GetQuestStep(Player,5877)==1 then
+ SetStepComplete(Player,5877,1)
+end
+
end
function Declined(Quest, QuestGiver, Player)
@@ -31,11 +43,238 @@ function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 1, "I've passed Magister Niksel's trial.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've passed Magister Niksel's trial.")
+ if GetClass(Player)== 21 then
+ SetAdventureClass(Player,28)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Summoner.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Summoner.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+ local level = GetLevel(Player)*5
+
+
+--WEAPON SKILLS
+if not HasSkill(Player, 3820670534) then -- Evocations/Mage
+ AddSkill(Player, 3820670534,1,level)
+ SendMessage(Player, "You have learned the Evocations skill")
+end
+if not HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ AddSkill(Player, 2120065377,1,level)
+ SendMessage(Player, "You have learned the Legerdemain skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+--CASTING SKILLS
+if not HasSkill(Player, 613995491) then -- Disruption
+ AddSkill(Player, 613995491,1,level)
+ SendMessage(Player, "You have learned the Disruption skill")
+end
+if not HasSkill(Player, 366253016) then -- Ministration
+ AddSkill(Player, 366253016,1,level)
+ SendMessage(Player, "You have learned the Ministration skill")
+end
+if not HasSkill(Player, 3587918036) then -- Ordination
+ AddSkill(Player, 3587918036,1,level)
+ SendMessage(Player, "You have learned the Ordination skill")
+end
+if not HasSkill(Player, 882983852) then -- Subjugation
+ AddSkill(Player, 882983852,1,level)
+ SendMessage(Player, "You have learned the Subjugation skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+
+--WEAPON SKILLS
+if not HasSkill(Player, 545043066) then -- Symbol
+ AddSkill(Player, 545043066,1,level)
+ SendMessage(Player, "You are now more proficient with a Symbol")
+end
+if not HasSkill(Player, 887279616) then -- Dagger
+ AddSkill(Player, 887279616,1,level)
+ SendMessage(Player, "You are now more proficient with a Dagger")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+
+--REMOVE SKILLS
+-- Remove Fighter
+if HasSkill(Player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(Player, 1408356869)
+end
+if HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(Player, 1124719197)
+end
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Advance Scout
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest
+if HasSkill(Spawn, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Spawn, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage
+
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVE WEAPON
+if HasSkill(Player, 2246237129) then -- Medium Armor
+ RemoveSkill(Player, 2246237129)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 770311065) then -- Mace
+ RemoveSkill(Player, 770311065)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 1696217328) then -- Sword
+ RemoveSkill(Player, 1696217328)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2292577688) then -- Great Sword
+ RemoveSkill(Player, 2292577688)
+end
+if HasSkill(Player, 2954459351) then -- Great Axe
+ RemoveSkill(Player, 2954459351)
+end
+if HasSkill(Player, 1653482350) then -- Great Spear
+ RemoveSkill(Player, 1653482350)
+end
+if HasSkill(Player, 3173504370) then -- Round Shield
+ RemoveSkill(Player, 3173504370)
+end
+if HasSkill(Player, 2608320658) then -- Kite Shield
+ RemoveSkill(Player, 2608320658)
+end
+if HasSkill(Player, 570458645) then -- Tower Shield
+ RemoveSkill(Player, 570458645)
+end
+if HasSkill(Player, 4037812502) then -- Buckler
+ RemoveSkill(Player, 4037812502)
+end
+ end
UpdateQuestDescription(Quest, "Having completed my trial as a summoner, I will be focusing my studies in magic down the path I've chosen. I am well on my way in Norrath - and have learned valuable lessons in responsible summoning.")
GiveQuestReward(Quest, Player)
end
+
+
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
QuestComplete(Quest, QuestGiver, Player)
diff --git a/server/Quests/Hallmark/path_of_the_warrior.lua b/server/Quests/Hallmark/path_of_the_warrior.lua
new file mode 100755
index 000000000..30e2bb436
--- /dev/null
+++ b/server/Quests/Hallmark/path_of_the_warrior.lua
@@ -0,0 +1,353 @@
+--[[
+ Script Name : Quests/Hallmark/path_of_the_warrior.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.07 04:12:38
+ Script Purpose : WARRIOR CLASS QUEST
+
+ Zone : Hallmark
+ Quest Giver: Master at Arms Dagorel
+ Preceded by: Fighter Training pt II
+ Followed by: None
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must defeat the bears in the arena.", 2, 100, "I must defeat the challenge set before me in the make-shift arena set up in the warehouse of northern Qeynos.", 11,8320025)
+ AddQuestStepKill(Quest, 2, "I must defeat the lions in the arena.", 3, 100, "I must defeat the challenge set before me in the make-shift arena set up in the warehouse of northern Qeynos.", 11, 8320024)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Whoa, now! Not yet, you're not! You have to prove you can last in the fray. You didn't think I'd wave a magic wand and make you a warrior, did you? No, no, we got a make shift arena set up in the warehouse, where you'll prove yourself, a true warrior of Qeynos. No need to return to me, I've taught you all I can.")
+ PlayFlavor(QuestGiver, "", "", "scold", 0, 0, Player)
+ Dialog.AddOption("I will step forth victorious! Wait and see!")
+ Dialog.Start()
+
+if GetQuestStep(Player,5878)==1 then
+ SetStepComplete(Player,5878,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've defeated the bears in the arena.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've defeated the lions in the arena.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5791,1) and QuestStepIsComplete(Player,5791,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've defeated all the creatures in the arena in front of the cheering onlookers.")
+
+ AddQuestStep(Quest, 3, "I've defeated the arena creatures, and must declare myself victor on the dais.", 1, 100, "I must stand on the dais and declare my victory!", 957)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I declared myself victorious.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've declared my victory.")
+ if GetClass(Player)== 1 then
+ SetAdventureClass(Player,2)
+ SetPlayerLevel(Player,10)
+ SendMessage(Player, "Congratulations! You are a Warrior.","yellow")
+ SendPopUpMessage(Player, "Congratulations! You are a Warrior.",250,250,200)
+ ApplySpellVisual(Player, 324)
+ PlaySound(Player, "sounds/test/endquest.wav", GetX(Player), GetY(Player), GetZ(Player), Player)
+
+ local level = GetLevel(Player)*5
+if not HasSkill(Player, 1408356869) then -- Martial
+ AddSkill(Player, 1408356869,1,level)
+ SendMessage(Player, "You have learned the Martial skill")
+end
+if not HasSkill(Player, 1124719197) then -- Tactics/Warrior
+ AddSkill(Player, 1124719197,1,level)
+ SendMessage(Player, "You have learned the Tactics skill")
+end
+if not HasSkill(Player, 3421494576) then -- Crushing
+ AddSkill(Player, 3421494576,1,level)
+ SendMessage(Player, "You have learned the Crushing skill")
+end
+if not HasSkill(Player, 418532101) then -- Slashing
+ AddSkill(Player, 418532101,1,level)
+ SendMessage(Player, "You have learned the Slashing skill")
+end
+ if not HasSkill(Player, 1756482397) then -- Ranged
+ AddSkill(Player, 1756482397,1,level)
+ SendMessage(Player, "You have learned the Ranged skill")
+end
+if not HasSkill(Player, 2650425026) then -- Thrown Weapon
+ AddSkill(Player, 2650425026,1,level)
+ SendMessage(Player, "You have learned the Thrown Weapon skill")
+end
+if not HasSkill(Player, 3048574950) then -- Piercing
+ AddSkill(Player, 3048574950,1,level)
+ SendMessage(Player, "You have learned the Piercing skill")
+end
+if not HasSkill(Player, 1852383242) then -- Dual Wield
+ AddSkill(Player, 1852383242,1,level)
+ SendMessage(Player, "You have learned the Dual Wield skill")
+end
+if not HasSkill(Player, 2638198038) then -- Focus
+ AddSkill(Player, 2638198038,1,level)
+ SendMessage(Player, "You have learned the Focus skill")
+end
+--WEAPON SKILLS
+ if not HasSkill(Player, 2897193374) then -- Light Armor
+ AddSkill(Player, 2897193374,1,level)
+ SendMessage(Player, "You are now more proficient with Light Armor")
+end
+if not HasSkill(Player, 2246237129) then -- Medium Armor
+ AddSkill(Player, 2246237129,1,level)
+ SendMessage(Player, "You are now more proficient with Medium Armor")
+end
+if not HasSkill(Player, 1743366740) then -- Bow
+ AddSkill(Player, 1743366740,1,level)
+ SendMessage(Player, "You are now more proficient with a Bow")
+end
+if not HasSkill(Player, 4037812502) then -- Buckler
+ AddSkill(Player, 4037812502,1,level)
+ SendMessage(Player, "You are now more proficient with a Buckler")
+end
+if not HasSkill(Player, 3173504370) then -- Roundshield
+ AddSkill(Player, 3173504370,1,level)
+ SendMessage(Player, "You are now more proficient with a Roundshield")
+end
+if not HasSkill(Player, 2476073427) then -- Axe
+ AddSkill(Player, 2476073427,1,level)
+ SendMessage(Player, "You are now more proficient with an Axe")
+end
+if not HasSkill(Player, 2954459351) then -- Great Axe
+ AddSkill(Player, 2954459351,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Axe")
+end
+if not HasSkill(Player, 1696217328) then -- Sword
+ AddSkill(Player, 1696217328,1,level)
+ SendMessage(Player, "You are now more proficient with a Sword")
+end
+if not HasSkill(Player, 2292577688) then -- Great Sword
+ AddSkill(Player, 2292577688,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Sword")
+end
+if not HasSkill(Player, 770311065) then -- Mace
+ AddSkill(Player, 770311065,1,level)
+ SendMessage(Player, "You are now more proficient with a Mace")
+end
+if not HasSkill(Player, 554333641) then -- Hammer
+ AddSkill(Player, 554333641,1,level)
+ SendMessage(Player, "You are now more proficient with a Hammer")
+end
+if not HasSkill(Player, 1653482350) then -- Great Hammer
+ AddSkill(Player, 1653482350,1,level)
+ SendMessage(Player, "You are now more proficient with a Great Hammer")
+end
+if not HasSkill(Player, 3180399725) then -- Staff(2h)
+ AddSkill(Player, 3180399725,1,level)
+ SendMessage(Player, "You are now more proficient with a Staff")
+end
+if not HasSkill(Player, 641561514) then -- Rapier
+ AddSkill(Player, 641561514,1,level)
+ SendMessage(Player, "You are now more proficient with a Rapier")
+end
+if not HasSkill(Player, 1616998748) then -- Spear
+ AddSkill(Player, 1616998748,1,level)
+ SendMessage(Player, "You are now more proficient with a Spear")
+end
+if not HasSkill(Player, 570458645) then -- Tower Shield
+ AddSkill(Player, 570458645,1,level)
+ SendMessage(Player, "You are now more proficient with a Tower Shield")
+end
+if not HasSkill(Player, 2608320658) then -- Kite Shield
+ AddSkill(Player, 2608320658,1,level)
+ SendMessage(Player, "You are now more proficient with a Kite Shield")
+end
+
+--REMOVED SKILLS
+--Removed Advance Fighter
+if HasSkill(Player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(Player, 433335062)
+end
+if HasSkill(Player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(Player, 1209716810)
+end
+if HasSkill(Player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(Player, 3856706740)
+end
+if HasSkill(Player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(Player, 2011726342)
+end
+if HasSkill(Player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(Player, 3067436248)
+end
+if HasSkill(Player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(Player, 3809066846)
+end
+if HasSkill(Player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(Player, 90523872)
+end
+if HasSkill(Player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(Player, 2741805322)
+end
+
+--Removed Scout for Fighter
+if HasSkill(Player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(Player, 1921433074)
+end
+if HasSkill(Player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(Player, 1311635100)
+end
+if HasSkill(Player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(Player, 296246391)
+end
+if HasSkill(Player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(Player, 340921594)
+end
+if HasSkill(Player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(Player, 1514256692)
+end
+if HasSkill(Player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(Player, 2663054519)
+end
+if HasSkill(Player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(Player, 1519965519)
+end
+if HasSkill(Player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(Player, 3167106577)
+end
+if HasSkill(Player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(Player, 1400160844)
+end
+if HasSkill(Player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(Player, 2711101135)
+end
+
+--Removed Priest for Fighter
+if HasSkill(Player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(Player, 2463145248)
+end
+if HasSkill(Player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(Player, 3341842907)
+end
+if HasSkill(Player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(Player, 2581053277)
+end
+if HasSkill(Player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(Player, 1829443087)
+end
+if HasSkill(Player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(Player, 3282420779)
+end
+if HasSkill(Player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(Player, 1624274802)
+end
+if HasSkill(Player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(Player, 1040683335)
+end
+if HasSkill(Player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(Player, 3343700951)
+end
+if HasSkill(Player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(Player, 3467160477)
+end
+if HasSkill(Player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(Player, 3191839982)
+end
+
+--Removed Mage for Fighter
+if HasSkill(Player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(Player, 3820670534)
+end
+if HasSkill(Player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(Player, 287643040)
+end
+if HasSkill(Player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(Player, 2898101972)
+end
+if HasSkill(Player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(Player, 2950599749)
+end
+if HasSkill(Player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(Player, 2533124061)
+end
+if HasSkill(Player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(Player, 2662430630)
+end
+if HasSkill(Player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(Player, 193411854)
+end
+if HasSkill(Player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(Player, 2120065377)
+end
+if HasSkill(Player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(Player, 2042842194)
+end
+if HasSkill(Player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(Player, 289471519)
+end
+
+--REMOVED WEAPON
+if not HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 241174330) then -- Heavy Armor
+ RemoveSkill(Player, 241174330)
+end
+if HasSkill(Player, 3177806075) then -- Fists
+ RemoveSkill(Player, 3177806075)
+end
+if HasSkill(Player, 540022425) then -- Parry
+ RemoveSkill(Player, 540022425)
+end
+if HasSkill(Player, 1553857724) then -- Investigation
+ RemoveSkill(Player, 1553857724)
+end
+if HasSkill(Player, 3429135390) then -- Mystical Destruction
+ RemoveSkill(Player, 3429135390)
+end
+if HasSkill(Player, 2200201799) then -- Disarm Trap
+ RemoveSkill(Player, 2200201799)
+end
+if HasSkill(Player, 366253016) then --Ministration
+ RemoveSkill(Player, 366253016)
+end
+if HasSkill(Player, 613995491) then -- Disruption
+ RemoveSkill(Player, 613995491)
+end
+if HasSkill(Player, 882983852) then -- Subjigation
+ RemoveSkill(Player, 882983852)
+end
+if HasSkill(Player, 3587918036) then -- Ordination
+ RemoveSkill(Player, 3587918036)
+end
+
+
+ end
+ UpdateQuestDescription(Quest, "I managed to defeat the creatures brought before me in the arena that was set up, and have proved myself worthy of being a warrior. Forever shall I wear this as a badge of courage and honor.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/priest_training.lua b/server/Quests/Hallmark/priest_training.lua
new file mode 100755
index 000000000..425187c0b
--- /dev/null
+++ b/server/Quests/Hallmark/priest_training.lua
@@ -0,0 +1,106 @@
+--[[
+ Script Name : Quests/Hallmark/priest_training.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 04:09:33
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Kill Diseased Ratonga", 5, 100, "Priest Kelian has suggested that I free the Diseased Ratonga in the Thieves' Way from their pain. I can reach the Thieves' Way by using the sewer entrances in and around the City of Freeport.", 611, 8430010, 8430009, 8430011, 1540002, 1540073, 1540072, 1540028, 1540024, 1540022, 1540021)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Thieves' Way")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Three paths lead down the road to enlightenment, child. Let me explain: The first path is that of the cleric, a healer and comforter. As we speak, ratonga inflicted with a vile disease fill the sewers beneath our feet. You must ease their pain. Venture below and put some of these creatures out of their misery.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian002.mp3", 4221398277, 318277158)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("As you say. I will return soon.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I laid to rest five Diseased Ratonga.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have stopped the suffering of five Diseased Ratonga by sending them to the sweet embrace of death.")
+ UpdateQuestZone(Quest,"Multiple Zones")
+
+ AddQuestStepChat(Quest, 2, "Speak with Priest Kelian", 1, "I should return to Kelian in the City of Freeport for continued guidance.", 11, 1440466)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Priest Kelian.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Priest Kelian was pleased with my compassion towards those Ratonga. He has explained that Clerics heal people in many different ways.")
+ UpdateQuestZone(Quest,"South Freeport")
+
+ AddQuestStepLocation(Quest, 3, "Find out if foreign plants are being sold in Freeport", 1, "The Priest wishes me to track down any foreign plants. I should speak with the following people in the City of Freeport to see if they have any foreign plants: Torlig the Alchemist, Alypia Damian at the Trader's Holiday, and Annia Kaeso down by the docks.", 340,1660026,1280043,1440007)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have found a purple flower that has traveled from across the ocean.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "The only foreign plant I was able to find was a purple flower given to me by Annia Kaeso.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 4, "Speak with Priest Kelian", 1, "I should bring this flower back to Priest Kelian in the City of Freeport so that he can see what I have found.", 11, 1440466)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have spoken with Priest Kelian")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have given Priest Kelian the flower, but he claims this wasn't the source of the disease.")
+ UpdateQuestZone(Quest,"The Sprawl")
+
+ AddQuestStepKill(Quest, 5, "Collect gravel viper poison sacs", 5, 70, "The Priest has told me to trust in my guiding spirits to direct me to the gravel vipers that contains the most lethal poison in the Sprawl. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 113, 8400009, 1260006)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I found and five gravel viper poison sacs.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "The spirits have guided me to the deadliest of the gravel viper. I've collected their poison sacs for the Priest.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 6, "I should talk to Priest Kelian.", 1, "I should bring these poison sacs back to Priest Kelian in the City of Freeport.", 11, 1440466)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I have spoken with Priest Kelian.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "Kelian has taken the poison sacs and plans on using them to cure the city of this disease.")
+
+ UpdateQuestDescription(Quest, "I have told Proctor Fergus the choice I have made towards my spiritual enlightenment. He has given me his blessing and told me to go forth and spread the word. Soon enough, I shall introduce my new-found faith to the heathens of this world.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/priest_training_pt_i.lua b/server/Quests/Hallmark/priest_training_pt_i.lua
new file mode 100755
index 000000000..a40e3371c
--- /dev/null
+++ b/server/Quests/Hallmark/priest_training_pt_i.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : Quests/Hallmark/priest_training_pt_i.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.19 04:11:58
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Heirophant Aldalad
+ Preceded by: None
+ Followed by: Priest Training, pt II
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to heal the fletcher, Nightbow, in the Elddar Grove.", 1, "Aldalad has suggested that I pray for divine healing to heal some people that have injuries.", 11, 2070011)
+ AddQuestStepChat(Quest, 2, "I need to heal the carpenter in Graystone.", 1, "Aldalad has suggested that I pray for divine healing to heal some people that have injuries.", 11, 2350030)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Such devotion would make me glad indeed! Take your special healing gifts to the people and restore their faith! People are suffering right here in Qeynos. To begin your work, seek out a fletcher named Armsdealer Nightbow in the Elddar, and the carpenter Jorgie Icearmor down by the harbor. One is wounded; the other is ill. Heal them, and return to me.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad005.mp3", 257418287, 4158083367)
+ PlayFlavor(QuestGiver, "", "", "thanks", 0, 0, Player)
+ Dialog.AddOption("A fletcher is someone who makes bows and arrows, right? I'll find Nightbow and Jorgie, and heal them right away.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5879)==1 then
+ SetStepComplete(Player,5879,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have healed Nightbow.")
+
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have healed Jorgie.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5772,1) and QuestStepIsComplete(Player,5772,2) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've healed both of Nightbow and Jorgie of their ailments.")
+ AddQuestStepChat(Quest, 3, "I need to speak with Aldalad in North Qeynos.", 1, "I should let Aldalad know that through divine intervention, they will be fine now.", 11, 2220484)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ end
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've spoken with Aldalad.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Aldalad was impressed at the divine potency that I wield.")
+
+ AddQuestStepKill(Quest, 4, "I must kill five Oakmyst fairies.", 5, 100, "Aldalad has directed me to the Oakmyst Forest to put five Oakmyst fairies to rest.", 110, 8300048,8300049,8300050,8300014,8300015,8300016)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have killed some Oakmyst fairies")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've sent the Oakmyst spirits back to the Gray Fields.")
+
+ AddQuestStepChat(Quest, 5, "I need to speak with Aldalad in North Qeynos.", 1, "I should let Aldalad know that the spirits will no longer bother the living", 11, 2220484)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I've spoken with Aldalad.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've let Aldalad know that the spirits are no longer haunting the forest.")
+
+ UpdateQuestDescription(Quest, "Hierophant Aldalad has shown me the difference between a cleric and a shaman. I have learned that faith comes from many different avenues. He has hinted at the fact there are even more paths to learn of, but wishes for me to learn from my experiences before I continue seeing more.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/priest_training_pt_ii_.lua b/server/Quests/Hallmark/priest_training_pt_ii_.lua
new file mode 100755
index 000000000..3115c114a
--- /dev/null
+++ b/server/Quests/Hallmark/priest_training_pt_ii_.lua
@@ -0,0 +1,111 @@
+--[[
+ Script Name : Quests/Hallmark/priest_training_pt_ii_.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.19 05:11:41
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Heirophant Aldalad
+ Preceded by: Priest Training, pt I
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill five toxic bog slugs in the Peat Bog.", 5, 100, "Aldalad has directed me to the Bog to help whittle down five bog slugs.", 611, 8290031 )
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Druids assist in maintaining the Balance. When harmony has been breached, the druid can tell instantly. For example, if you travel to the Bog, you will find that some creatures are thriving at the expense of all others. It is out of balance. If you wish to help the druids in their work, go to the Bog and slay five Carnivorous Slugs.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad015.mp3", 3124149580, 1197890726)
+ PlayFlavor(QuestGiver, "", "", "thanks", 0, 0, Player)
+ Dialog.AddOption("Ah, I knew you had a task for me! All right. I'll return when I've killed five carnivorous slugs.")
+ Dialog.Start()
+
+if GetQuestStep(Player,5879)==1 then
+ SetStepComplete(Player,5879,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed five toxic bog slugs.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed five bog slugs. Hopefully this will help to balance the bog's population.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Aldalad", 1, "I should let Aldalad know that the slugs' numbers have been reduced", 11, 2220484)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Aldalad")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Aldalad has commended me for helping take part of nature's cycles")
+
+ AddQuestStepChat(Quest, 3, "I need to help the soldier Homrie near the Claymore in Antonica.", 1, "Aldalad has charged me with helping the Qeynosian soldiers outside of the city", 11, 120411)
+ AddQuestStepChat(Quest, 4, "I need to help the soldier Selennia near the two southern guard towers in Antonica.", 1, "Aldalad has charged me with helping the Qeynosian soldiers outside of the city", 11, 120269,121378 )
+ AddQuestStepChat(Quest, 5, "I need to help the soldier Pellenos near the two southern guard towers in Antonica.", 1, "Aldalad has charged me with helping the Qeynosian soldiers outside of the city", 11, 120276,121385)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've cured Homrie of poison.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've saved the life of Selennia.")
+ QuestCheck(Quest, QuestGiver, Player)
+
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've helped to heal the mental wounds of Pellenos.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,5773,3) and QuestStepIsComplete(Player,5773,4) and QuestStepIsComplete(Player,5773,5) then
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've healed the soldiers, but should report to Aldalad as to what befell them")
+
+ AddQuestStepChat(Quest, 6, "I need to speak with Aldalad", 1, "I need to report to Aldalad at once", 11, 2220484)
+ AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 6, "I've spoken with Aldalad")
+ UpdateQuestTaskGroupDescription(Quest, 4, "Aldalad told me all that he can and suggested I make a spiritual choice.")
+
+ UpdateQuestDescription(Quest, "I have listened to all that the Hierophant has to offer. Looking in my heart, I know that there is only one way for me to proceed. From hereon, I will follow my chosen path to spirituality and never waver from where it leads me.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/qeynos_to_freeport__acceptance.lua b/server/Quests/Hallmark/qeynos_to_freeport__acceptance.lua
new file mode 100755
index 000000000..d61f8ed5a
--- /dev/null
+++ b/server/Quests/Hallmark/qeynos_to_freeport__acceptance.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Quests/Hallmark/qeynos_to_freeport__acceptance.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.30 03:09:17
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+-- AddStepZoneLoc(Quest, 1, "Travel to the inn and sign the registry.", 10, "\"Your new home awaits within the walls of Freeport. I have arranged for a room to be made yours to house you. Sign the book on the dotted line and the room will be yours.\"", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ --Dialog.AddDialog("Then I welcome you into our fold, friend. We need someone like you. Talk with the resistance leader here in Freeport, Kenjedeau. You can find him in the sewers below. Seek him out and tell him our motto, \"nobility comes from personal sacrifice.\"")
+ --Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium007.mp3", 1086694102, 636478984)
+ -- Dialog.AddOption("Thank you. I'll make my way to him.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have found the registry.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found my new residence within Freeport.")
+
+ UpdateQuestDescription(Quest, "I have begun a new life in Freeport with the help of my mentor, Matthias. No longer will this world keep from me what is rightfully mine. Those that stand against me will show themselves to be my enemies. ...May the gods grant them the mercy that I can not...")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/qeynos_to_freeport__conversion.lua b/server/Quests/Hallmark/qeynos_to_freeport__conversion.lua
new file mode 100755
index 000000000..1ba351ca4
--- /dev/null
+++ b/server/Quests/Hallmark/qeynos_to_freeport__conversion.lua
@@ -0,0 +1,80 @@
+--[[
+ Script Name : Quests/Hallmark/qeynos_to_freeport__conversion.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 03:09:05
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Slay the orc Commander Du'Nar", 1, 100, "\"There is no salvation other than death for the Orcs. The blood of their officers will be added to the mortar used to cement the walls of our fair city.\" - Matthias", 611, 1)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have slain Commander Du'Nar")
+
+ AddQuestStepKill(Quest, 2, "Slay the orc Commander Grik'Sna", 1, 100, "\"There is no salvation other than death for the Orcs. The blood of their officers will be added to the mortar used to cement the walls of our fair city.\" - Matthias", 611,1)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have slain Commander Grik'Sna")
+
+ AddQuestStepKill(Quest, 3, "Slay the orc Lieutenant Vrah'Kna", 1, 100,"\"There is no salvation other than death for the Orcs. The blood of their officers will be added to the mortar used to cement the walls of our fair city.\" - Matthias", 611, 1)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have slain Lieutenant Vrah'Kna")
+
+ AddQuestStepKill(Quest, 4, "Slay the orc General Vhar'Taug", 1, 100,"\"There is no salvation other than death for the Orcs. The blood of their officers will be added to the mortar used to cement the walls of our fair city.\" - Matthias", 611,1)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have slain General Vhar'Taug")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have killed the orc enemies of Freeport")
+
+ AddQuestStepChat(Quest, 5, "I need to return to Matthias", 1, "The enemies of Freeport lay scattered at my feet. It is time I returned to Matthias and informed him of my slaughter.", 11, 331144)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I have returned to Matthias")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have let Matthias know that the enemies of Freeport have been reduced in number.")
+
+ UpdateQuestDescription(Quest, "I have decimated the enemies of Freeport using the true power of vengeance to guide my way. I have shown Freeport that I am a kindred soul to their beliefs. If they do not accept me within their walls, then they too will suffer my wrath.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/qeynos_to_freeport__exile.lua b/server/Quests/Hallmark/qeynos_to_freeport__exile.lua
new file mode 100755
index 000000000..c9fc7cd0a
--- /dev/null
+++ b/server/Quests/Hallmark/qeynos_to_freeport__exile.lua
@@ -0,0 +1,209 @@
+--[[
+ Script Name : Quests/Hallmark/qeynos_to_freeport__exile.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.28 11:09:02
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "Speak with Yuri in Antonica... he may have information to aid you.", 1, "After my brief encounter with the Jailer knocking me out, I awoke to find myself in Antonica.", 11, 120418)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Yuri.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've spoken with Yuri. His recommendation for me was to find a man named Matthias Siegemaker in the Commonlands.")
+
+ AddQuestStepChat(Quest, 2, "I need to find Matthias Siegemaker in the Commonlands.", 1, "Yuri instructed me to flee to the Commonlands and seek out Matthias. It seems he can offer me a new home. I am told he can be found slaughtering the "cutthroats". If I have any hope of finding a new home, it will be with him.", 11,331144)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have found Matthias Siegemaker")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have found Matthias Siegemaker, but I was turned away.")
+
+ AddQuestStepKill(Quest, 3, "Feed your hatred by annihilating all orcs you encounter in the Commonlands.", 500, 100, "Matthias refuses to speak with me again until I truly know what true vengeance and hatred means. Until that time, I will suffer endlessly in this gods-forsaken world. Meanwhile, I will slake my thirst for vengeance with the blood of those who slight me. I should check back with him regularly as I learn from my experiences.", 2488, 1)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have sated my thirst for vengeance for the moment.")
+
+ AddQuestStepKill(Quest, 4, "Seek vengeance on Dinas Drefelin in the Commonlands.", 1, 100, "Matthias refuses to speak with me again until I truly know what true vengeance and hatred means. Until that time, I will suffer endlessly in this gods-forsaken world. Meanwhile, I will slake my thirst for vengeance with the blood of those who slight me. I should check back with him regularly as I learn from my experiences.", 611, 1)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have turned the knife in Dinas' side.")
+
+ AddQuestStepKill(Quest, 5, "Destroy Garreg Stonecrusher, an orc that has been sighted in the Wailing Caves.", 1, 100, "Matthias refuses to speak with me again until I truly know what true vengeance and hatred means. Until that time, I will suffer endlessly in this gods-forsaken world. Meanwhile, I will slake my thirst for vengeance with the blood of those who slight me. I should check back with him regularly as I learn from my experiences.", 611, 1)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "Garreg has been brought low.")
+
+ AddQuestStepKill(Quest, 6, "Remove Dolfor Mochdre from the world of the living. Seek him out in the Commonlands.", 1, 100, "Matthias refuses to speak with me again until I truly know what true vengeance and hatred means. Until that time, I will suffer endlessly in this gods-forsaken world. Meanwhile, I will slake my thirst for vengeance with the blood of those who slight me. I should check back with him regularly as I learn from my experiences.", 611,1)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "Dolfor Mochdre has been removed.")
+
+ AddQuestStepKill(Quest, 7, "Find Glan Mostyn in the Commonlands and tear the breath from his lungs.", 1, 100, "Matthias refuses to speak with me again until I truly know what true vengeance and hatred means. Until that time, I will suffer endlessly in this gods-forsaken world. Meanwhile, I will slake my thirst for vengeance with the blood of those who slight me. I should check back with him regularly as I learn from my experiences.", 611, 1)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "Glan Mostyn breathes no longer.")
+
+ AddQuestStepKill(Quest, 8, "Grug Geifr's offensive presence in the Commonlands can be tolerated no longer.", 1, 100, "Matthias refuses to speak with me again until I truly know what true vengeance and hatred means. Until that time, I will suffer endlessly in this gods-forsaken world. Meanwhile, I will slake my thirst for vengeance with the blood of those who slight me. I should check back with him regularly as I learn from my experiences.", 611, 1)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "You have removed Grug Geifr from the Commonlands.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have spent a long time wandering the world and have learned to hate unlike no other.")
+
+ AddQuestStepChat(Quest, 9, "Return to Matthias Siegemaker in the Commonlands.", 1, "Every creature that died by my hands wore the face of those who betrayed me. I now know that vengeance can never be satisifed. In turn, I will always have something to look forward to. It is time I speak with Matthias again.", 11, 331144)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I have spoken with Matthias.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have spoken with Matthias and shown him my new understanding.")
+
+ AddQuestStepChat(Quest, 10, "Stop the message runner in the Commonlands.", 1, "I must kill the Message Runner and take his codes.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've killed the message runner.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I slew the message runner and took what I needed.")
+
+ AddQuestStepKill(Quest, 11, "Kill Libertius in the Commonlands, use the codes from the messenger to gain his trust.", 1, 100, "Kill Libertius, but do not alert him to the fact that you have been sent to kill him... at least not until he's already dead.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I have slain Libertius.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I poisoned Libertius and prevented him from smuggling more to Qeynos.")
+
+ AddQuestStepChat(Quest, 12, "Return to Matthias Siegemaker in the Commonlands.", 1, "I have done as Matthias asked and now I must return to speak with him again.", 11, 331144)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I have spoken with Matthias.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I have spoken with Matthias once more and he has given me further enlightenment.")
+
+ AddQuestStepChat(Quest, 13, "Take the Aethus Kasyu's engagement ring.", 1, "Matthias has bid me take items from people who... no longer have a use for them... the first on the list is a ring from Aethus Kasyu.", 595, 1)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've taken the ring from Aethus.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I have taken the items Matthias wanted.")
+
+ AddQuestStepChat(Quest, 14, "Seek out Twirlwhizzer and take the medal from her.", 1, "Now that the ring is dealt with, I'm to take the medal of service from a gnome named Twirlwhizzer.", 1303, 1)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "I've taken the medal from Grandma Twirlwhizzer.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "The medal is mine!")
+
+ AddQuestStepChat(Quest, 15, "Seek out Stalker Granis and take his lucky shard.", 1, "Stalker Granis has a nice shard that he keeps as a childhood reminder. Take it from him.", 183, 1)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, "I've taken the last thing Granis holds dear.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've taken the last thing Granis has to remember his childhood by.")
+
+ AddQuestStepChat(Quest, 16, "Return to Matthias Siegemaker in the Commonlands.", 1, "I have done as Matthias asked and now I must return to speak with him again.", 11, 331144)
+ AddQuestStepCompleteAction(Quest, 16, "Step16Complete")
+end
+
+function Step16Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 16, "I have spoken with Matthias.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I have yet another task laid before me now that I have spoken with Matthias.")
+
+ AddQuestStepKill(Quest, 17, "Kill Gesarius before he can escape to Qeynos.", 1, 100, "Matthias is pleased with my progress... and has asked me to make certain War Duke Gesarius doesn't escape.", 11, 1)
+ AddQuestStepCompleteAction(Quest, 17, "Step17Complete")
+end
+
+function Step17Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 17, "I've killed the War Duke and prevented his escape.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I'm positive that Gesarius won't be escaping anytime soon...")
+
+ AddQuestStepChat(Quest, 18, "Return to Matthias Siegemaker in the Commonlands.", 1, "I have done as Matthias asked and now I must return to speak with him again.", 11, 331144)
+ AddQuestStepCompleteAction(Quest, 18, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 18, "I have spoken with Matthias.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I have earned my place within Freeport now.")
+
+ UpdateQuestDescription(Quest, "During my time in exile, I spent day and night cultivating my vengeance towards those who spurned me and betrayed my trust. I can now see my own soul, and find it to be black and twisted. This comforts me. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step14Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step15Complete(Quest, QuestGiver, Player)
+ elseif Step == 16 then
+ Step16Complete(Quest, QuestGiver, Player)
+ elseif Step == 17 then
+ Step17Complete(Quest, QuestGiver, Player)
+ elseif Step == 18 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/qeynos_to_freeport__part_1.lua b/server/Quests/Hallmark/qeynos_to_freeport__part_1.lua
new file mode 100755
index 000000000..34f62b710
--- /dev/null
+++ b/server/Quests/Hallmark/qeynos_to_freeport__part_1.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Hallmark/qeynos_to_freeport__part_1.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.28 11:09:40
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to give Remy the secret code", 1, "I need to seek out Remy in the catacombs below Qeynos. It seems he's masquerading as a cryptcleaner in the Vermin Snye, so I need to be on the lookout for him. I need to tell him the secret code \"only the darkness will save you\".", 11, 1)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've given Remy the secret code")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've found Remy down in the Vermin Snye.")
+
+ UpdateQuestDescription(Quest, "I have found and spoken with Cordun's partner, Remy.
")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/qeynos_to_freeport__part_2.lua b/server/Quests/Hallmark/qeynos_to_freeport__part_2.lua
new file mode 100755
index 000000000..982060c2f
--- /dev/null
+++ b/server/Quests/Hallmark/qeynos_to_freeport__part_2.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Quests/Hallmark/qeynos_to_freeport__part_2.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.28 11:09:33
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I need to kill the Queen's bodyguard before it's too late.", 1, 100, "I need to find the bodyguard who holds the key to the Queen's vaults and kill her quickly. She'll probably be found deep inside the mansion. Hopefully she won't have guards of her own.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I fought my way to the room where the Queen awaited me.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've reached the bodyguard only to find out I was sent to assassinate the Queen herself... with every bodyguard present.")
+
+ UpdateQuestDescription(Quest, "I've been set up by Cordun and Remy. They backstabbed me by setting me up for the fall, all the while getting a reward for their "heroic" actions. I'll likely be given a life sentence for trying to assassinate the Queen. My life of evil was short and swift.
")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Hallmark/scale_yard_citizenship_task.lua b/server/Quests/Hallmark/scale_yard_citizenship_task.lua
new file mode 100755
index 000000000..5cc2e208c
--- /dev/null
+++ b/server/Quests/Hallmark/scale_yard_citizenship_task.lua
@@ -0,0 +1,93 @@
+--[[
+ Script Name : Quests/Hallmark/scale_yard_citizenship_task.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.01 05:07:08
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the The Thieves' Way.", 5, 34, "The Thieves' Way has been seeded with tokens for the residents of Scale Yard to gather. These tokens may be found on any creatures in the Thieves' Way.", 1332, 8430001, 8430002, 8430003, 8430004, 8430005, 8430006, 8430007, 8430008, 8430010, 8430011, 8430012, 8430013, 8430014, 8430015, 8430016, 8430017, 8430018, 8430024, 8430025, 8430026, 8430027, 8430028, 8430029,8430030, 8430031, 8430032, 8430033, 8430034, 8430035)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Theives Way")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have gathered five tokens from the The Thieves' Way.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have gathered the tokens required to prove my worth as a citizen.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStep(Quest, 2, "I need to enter the citizenship trial.", 1, 100, "I must perform the citizenship trial by returning to the Citizenship Sign and entering the trial chamber",1335)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 3, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial.", 1, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial", 1350, 1640000)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
+ AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Abbetor T'Avi has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Abbetor T'Avi.", 1, "I must return to Abbetor T'Avi to let her know the deed is done.",0, 1640000)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Freeport Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Abbetor T'Avi and she has granted me Freeport citizenship.")
+
+ UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Freeport.")
+ GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 0 then
+SetAlignment(Player, 0)
+end
+end
+
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/scout_training.lua b/server/Quests/Hallmark/scout_training.lua
new file mode 100755
index 000000000..560dfb758
--- /dev/null
+++ b/server/Quests/Hallmark/scout_training.lua
@@ -0,0 +1,120 @@
+--[[
+ Script Name : Quests/Hallmark/scout_training.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 02:09:41
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill five rust monsters.", 5, 100, "Emissary Millia wants me to go to the Sunken City and kill five mature Rust Monsters. She claims that a Rogue always keeps open an avenue of escape.", 142, 1240011,8410008)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sunken City")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Let's see if you have the skills to go with that mouth of yours, eh? Being a scout doesn't take much, a couple of eyes, working limbs, that's about all can get out of a sticky situation. If you do, you'll go even further. For instance, a good rogue always has an escape route. Go into the Sunken City and clear an escape path. Kill several Rust Monsters, and then comes back. If you return in one piece, maybe I shows you a few more tricks.")
+ Dialog.AddOption("I won't need to escape when they're dead! I'll return shortly.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I killed five rust monsters.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed five Rust Monsters as Millia has asked. If I were a Rogue and needed to get out of the city really fast, that would definitely help.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Emissary Millia", 1, "I should let Millia know that I've done what she suggested.", 11, 1440464)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Emissary Millia")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Millia was pleased with the way I handled the situation.")
+ UpdateQuestZone(Quest,"Multiple Zones")
+
+ AddQuestStepChat(Quest, 3, "I should do some type of buffoonery in front of bartender Grum Zoomly of the Back Alley Brewhouse", 1, "Emissary Millia has now forced me to act the role of the fool in front of a couple bartenders here in the city. I can't believe I'm about to do this....", 11,1280029 )
+ AddQuestStepChat(Quest, 4, "I should sing my own special type of love song to bartender, Ranik Calman, of the Seafarer's Roost.", 1, "Emissary Millia has now forced me to act the role of the fool in front of a couple bartenders here in the city. I can't believe I'm about to do this....", 11, 1680080 )
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I conned Grum Zoomly into thinking I am a fool.")
+ CheckProgress(Quest, QuestGiver, Player)
+
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've sang my song to Ranik Calman and also managed to swipe a gold coin for Millia.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5910, 3) and QuestStepIsComplete(Player, 5910, 4) then
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've convinced the bartenders I was an idiot, and in doing so they let their guard down. I could get away with murder being a Bard.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 5, "I need to speak with Emissary Millia", 1, "I should return to Millia and also give her this gold coin I swiped when Ranik wasn't looking.", 11, 1440464)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have spoken with Emissary Millia")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I told Millia about my buffoonery and she agreed that Bards are far more dangerous than they look.")
+ UpdateQuestZone(Quest,"Theives' Way")
+
+ AddQuestStepKill(Quest, 6, "I need to kill five Darkblade Scouts.", 5, 100, "Emissary Millia wants me to stalk the sewers for Darkblade Scouts and kill five of them.", 91, 8430008,1540040 , 1540027)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I killed five Darkblade Scouts.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've killed five Darkblade Scouts the way a Predator would take care of their victims.")
+ UpdateQuestZone(Quest,"North Freeport")
+
+ AddQuestStepChat(Quest, 7, "I need to speak with Emissary Millia.", 1, "I should return to Millia to let her know that I was able to take care of the competition.", 11, 1440464)
+ AddQuestStepCompleteAction(Quest, 7, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 7, "I spoke with Emissary Millia.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "Millia has let me know that I've learned all of the tricks she's willing to teach me.")
+
+ UpdateQuestDescription(Quest, "I have been given a taste of what the Emissary does for Freeport, and it seems intriguing. With that in mind, I think I'm going to specialize in certain skills so that one day I might be in a position to do what she does. Either way, I'm pretty sure I can find some good loot in the meantime. ")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/scout_training_pt_i.lua b/server/Quests/Hallmark/scout_training_pt_i.lua
new file mode 100755
index 000000000..c1b71189a
--- /dev/null
+++ b/server/Quests/Hallmark/scout_training_pt_i.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : Quests/Hallmark/scout_training_pt_i.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.29 01:11:47
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Councilor Vemerik
+ Preceded by: Level 7
+ Followed by: Scout Training, pt II
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill five rock adders in the Forest Ruins.", 5, 100, "I need to kill five rock adders in the Forest Ruins.", 91, 8270017,8270002)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("How about the Ruins, hmmm? Why don't you try sneaking up on the rock adders that haunt that old place? Unless your skills aren't up to it, which I'd understand.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik004.mp3", 34105284, 2609408402)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddOption("I'm MORE than up to it! I'll return once i'ts done and show you!")
+ Dialog.Start()
+
+if GetQuestStep(Player,5880)==1 then
+ SetStepComplete(Player,5880,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed five rock adders in the Forest Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the rock adders.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Vemerik in North Qeynos.", 1, "I should let Vemerik in North Qeynos know I've done as he advised.", 11,2220485)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Vemerik.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have told Vemerik that I killed the forest scavengers.")
+
+ AddQuestStepChat(Quest, 3, "I need to speak with Dawson in North Qeynos.", 1, "Vemerik has told me to speak with Dawson in North Qeynos as if I was a sharp bard.", 11, 2220113)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've spoken with Dawson.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have beaten Dawson at a game of words.")
+
+ AddQuestStepChat(Quest, 4, "I need to speak with Vemerik in North Qeynos.", 1, "I should tell Vemerik that I spoke with Dawson.", 11, 2220485)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with Vemerik.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have informed Vemerik that Dawson was beaten.")
+
+ UpdateQuestDescription(Quest, "I've learned what it is to be a rogue and a bard, but there will be more to learn in the future.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/scout_training_pt_ii.lua b/server/Quests/Hallmark/scout_training_pt_ii.lua
new file mode 100755
index 000000000..cdbfbb0a6
--- /dev/null
+++ b/server/Quests/Hallmark/scout_training_pt_ii.lua
@@ -0,0 +1,86 @@
+--[[
+ Script Name : Quests/Hallmark/scout_training_pt_ii.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.29 01:11:15
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver: Councilor Vemerik
+ Preceded by: Scout Training, pt I
+ Followed by: Path of the (Scout Class)
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill five forest scavengers in the Forest Ruins.", 5, 100, "I need to kill five forest scavengers in the Forest Ruins in order to learn about predators", 91, 8270037,8270015)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Hmph! I like it the way I said it. Anyways... I think you might find an interesting time tracking down the creepy crawlies that waylay the unobservant. Take the idea of what a predator does for a living and track down those spiders.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik015.mp3", 3018112745, 368427142)
+ PlayFlavor(QuestGiver, "", "", "sigh", 0, 0, Player)
+ Dialog.AddOption("I'll learn what I can from these spiders. They shouldn't be a problem.")
+ Dialog.AddOption("Oof. Spiders. It HAD to be spiders?!")
+ Dialog.Start()
+
+if GetQuestStep(Player,5880)==1 then
+ SetStepComplete(Player,5880,1)
+end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed five forest scavengers in the Forest Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the forest scavengers as Vemerik advised.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Vemerik in North Qeynos.", 1, "I should let Vemerik know what I've done.", 11, 2220485)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Vemerik.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've told Vemerik that I've killed the scavengers.")
+
+ AddQuestStepChat(Quest, 3, "Speak to Sentry Acton at the eastern end of Antonica on the southernmost bridge", 1, "Vemerik has sent me out to Antonica to tell let one of the guards by the bridge know that his sister is sick but she's in good hands.", 11,121413)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've spoken with Sentry Acton next to the bridge.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "Vemerik was updated on what the guard said.")
+
+ AddQuestStepChat(Quest, 4, "I need to speak with Vemerik in North Qeynos.", 1, "I should tell Vemerik that I spoke with the corrupt guard.", 11, 2220485)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with Vemerik.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have informed Vemerik that the corrupt guard threatened him.")
+
+ UpdateQuestDescription(Quest, "I've learned how uses my skills in better ways. I've decided to focus on one type of skill in order to excel in my chosen field. I have only Vemerik to thank for this.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/starcrest_citizenship_task.lua b/server/Quests/Hallmark/starcrest_citizenship_task.lua
index ec07d03ce..050252d91 100755
--- a/server/Quests/Hallmark/starcrest_citizenship_task.lua
+++ b/server/Quests/Hallmark/starcrest_citizenship_task.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Down Below.", 5, 30, "The catacombs have been seeded with tokens for the citizens of the Starcrest Commune to gather. These tokens may be found on any creatures in the Down Below.", 1342, 1990001, 1990002, 1990003, 1990004, 1990005, 1990006, 1990007, 1990008, 1990009, 1990010, 1990012, 1990013, 1990014, 1990015, 1990016, 1990017, 1990018, 1990019, 1990020, 1990021, 1990022, 1990023, 1990024, 1990025, 1990026, 1990027, 1990028, 1990029, 1990030, 1990031, 1990032, 1990033, 1990034, 1990035, 1990036, 1990037, 1990038, 1990039, 1990041, 1990042, 1990043, 1990044, 1990045, 1990054, 1990056, 1990096, 1990097, 1990098, 1990099, 1990100, 1990101, 1990102, 1990103, 1990104)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Down Below.", 5, 34, "The catacombs have been seeded with tokens for the citizens of the Starcrest Commune to gather. These tokens may be found on any creatures in the Down Below.", 1342, 8340015, 8340016, 8340017, 8340018, 8340019, 8340020, 8340021, 8340022, 8340023, 8340025, 8340026, 8340027, 8340028, 8340029, 8340030, 8340031, 8340032, 8340033, 8340034, 8340035, 8340036, 8340037, 8340038, 8340039, 8340040, 8340041, 8340042, 8340043, 8340044, 8340045, 8340046, 8340047, 8340048, 8340049, 8340050, 8340051, 8340052, 8340053, 8340054, 8340055)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Down Below")
end
@@ -42,8 +42,8 @@ function Step2Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
- UpdateQuestZone(Quest,"Qeynos Citizenship Trial Chamber")
- AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1342, 22101350)
+ UpdateQuestZone(Quest,"Citizenship Trial Chamber")
+ AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 8250009)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -53,52 +53,29 @@ function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
- AddQuestStepChat(Quest, 5, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101354)
- AddQuestStepChat(Quest, 6, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101353)
- AddQuestStepChat(Quest, 7, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101352)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I've judged the Freeport mole.")
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 8250009)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
-function Step5Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 5, "I've judged the disgruntled refugee.")
-CheckProgress(Quest, QuestGiver, Player)
-end
-
-
-function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "I've judged the Freeport partisan.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function Step7Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 7, "I've judged Tavithi N'sari.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, 5722, 4) and QuestStepIsComplete(Player, 5722, 5) and QuestStepIsComplete(Player, 5722, 6) and QuestStepIsComplete(Player, 5722, 7)then
- UpdateQuestTaskGroupDescription(Quest, 7, "I have dealt with the traitors")
- AddQuestStepChat(Quest, 8, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 22101350)
- AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
- end
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 8, "Qeynos Citizenship Granted")
- UpdateQuestTaskGroupDescription(Quest, 8, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
+ UpdateQuestStepDescription(Quest, 5, "Qeynos Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Qeynos.")
GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 1 then
+SetAlignment(Player, 1)
+end
end
@@ -113,12 +90,6 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 4 then
Step4Complete(Quest, QuestGiver, Player)
elseif Step == 5 then
- Step5Complete(Quest, QuestGiver, Player)
- elseif Step == 6 then
- Step6Complete(Quest, QuestGiver, Player)
- elseif Step == 7 then
- Step7Complete(Quest, QuestGiver, Player)
- elseif Step == 8 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/Hallmark/stonestair_byway_citizenship_task.lua b/server/Quests/Hallmark/stonestair_byway_citizenship_task.lua
new file mode 100755
index 000000000..1622c16da
--- /dev/null
+++ b/server/Quests/Hallmark/stonestair_byway_citizenship_task.lua
@@ -0,0 +1,93 @@
+--[[
+ Script Name : Quests/Hallmark/stonestair_byway_citizenship_task.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 04:06:46
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Graveyard.", 5, 34, "The Graveyard has been seeded with tokens for the citizens of Stonestair Byway to gather. These tokens may be found on any creatures in the Graveyard. I can reach the Graveyard by using any of the bells in and around the City of Freeport.", 1366, 8390001,8390002,8390003,8390004,8390005,8390006,8390007,8390008,8390009,8390010,8390011,8390012,8390013,8390014,8390015,8390016,8390017,8390018,8390019,8390020,8390021,8390022,8390023,8390024,8390025,8390026,8390029,8390031,8390032,8390033,8390034,8390035,8390036,8390037,8390038,8390039,8390040,8390041,8390042,8390043,8390044)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Graveyard")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have gathered five tokens from the Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have gathered the tokens required to prove my worth as a citizen.")
+ UpdateQuestZone(Quest,"Stonestair Byway")
+ AddQuestStep(Quest, 2, "I need to enter the citizenship trial.", 1, 100, "I must perform the citizenship trial by returning to the Citizenship Sign and entering the trial chamber",1335)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 3, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial.", 1, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial", 1350, 1640000)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
+ AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Abbetor T'Avi has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Abbetor T'Avi.", 1, "I must return to Abbetor T'Avi to let her know the deed is done.",0, 1640000)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Freeport Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Abbetor T'Avi and she has granted me Freeport citizenship.")
+
+ UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Freeport.")
+ GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 0 then
+SetAlignment(Player, 0)
+end
+end
+
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/temple_street_citizenship_task.lua b/server/Quests/Hallmark/temple_street_citizenship_task.lua
new file mode 100755
index 000000000..7597ad692
--- /dev/null
+++ b/server/Quests/Hallmark/temple_street_citizenship_task.lua
@@ -0,0 +1,93 @@
+--[[
+ Script Name : Quests/Hallmark/temple_street_citizenship_task.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.27 03:06:21
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the The Thieves' Way.", 5, 34, "The Thieves' Way has been seeded with tokens for the residents of Temple Street to gather. These tokens may be found on any creatures in the Thieves' Way.", 1379, 8430001, 8430002, 8430003, 8430004, 8430005, 8430006, 8430007, 8430008, 8430010, 8430011, 8430012, 8430013, 8430014, 8430015, 8430016, 8430017, 8430018, 8430024, 8430025, 8430026, 8430027, 8430028, 8430029,8430030, 8430031, 8430032, 8430033, 8430034, 8430035)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Thieves Way")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have gathered five tokens from the The Thieves' Way.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have gathered the tokens required to prove my worth as a citizen.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStep(Quest, 2, "I need to enter the citizenship trial.", 1, 100, "I must perform the citizenship trial by returning to the Citizenship Sign and entering the trial chamber",1335)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 3, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial.", 1, "I need to speak with Abbetor T'Avi regarding my Citizenship Trial", 1350, 1640000)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I've entered the citizenship trial.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
+
+ AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Abbetor T'Avi has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Abbetor T'Avi.", 1, "I must return to Abbetor T'Avi to let her know the deed is done.",0, 1640000)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "Freeport Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Abbetor T'Avi and she has granted me Freeport citizenship.")
+
+ UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Freeport.")
+ GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 0 then
+SetAlignment(Player, 0)
+end
+end
+
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Hallmark/the_call_of_qeynos.lua b/server/Quests/Hallmark/the_call_of_qeynos.lua
new file mode 100755
index 000000000..178d3bc93
--- /dev/null
+++ b/server/Quests/Hallmark/the_call_of_qeynos.lua
@@ -0,0 +1,110 @@
+--[[
+ Script Name : Quests/Hallmark/the_call_of_qeynos.lua
+ Script Author : Dorbin
+ Script Date : 2023.03.16 06:03:41
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest,QuestGiver,Player)
+ AddQuestStep(Quest, 1, "Queen Antonia is speaking to me...", 1,100, "Queen Antonia is speaking to me...", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have listened to Queen Antonia's message.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have listened to Queen Antonia's message.")
+Race = GetRace(Player)
+ -- Human
+ if Race == 9 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward", 1, "I have been instructed to seek out a Steward in Qeynos where I arrived.", 11, 2330170,2340166)
+ UpdateQuestZone(Quest, "Multiple Zones")
+
+ -- Kerra
+ elseif Race == 11 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward in Nettleville Hovel", 1, "I must find the Steward in Nettleville Hovel", 11, 2330170)
+ UpdateQuestZone(Quest, "Nettleville")
+
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward in Starcrest Commune", 1, "I must find the Steward in Starcrest Commune", 11, 2340166)
+ UpdateQuestZone(Quest, "Starcrest")
+
+
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward in Graystone Yard", 1, "I must find the Steward in Graystone Yard", 11, 2350184)
+ UpdateQuestZone(Quest, "Graystone Yard")
+
+
+ -- High Elf / Froglok
+ elseif Race == 4 or Race == 8 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward Castleview Hamlet", 1, "I must find the Steward Castleview Hamlet", 11, 2360174)
+ UpdateQuestZone(Quest, "Castleview")
+
+
+ -- Half Elf / Wood Elf / Fae
+ elseif Race == 6 or Race == 15 or Race == 16 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward in The Willow Wood", 1, "I must find the Steward in The Willow Wood", 11, 2370111)
+ UpdateQuestZone(Quest, "Willow Wood")
+
+
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ AddQuestStepChat(Quest, 2, "I must find the Steward in The Baubbleshire", 1, "I must find the Steward in The Baubbleshire", 11, 2380173)
+ UpdateQuestZone(Quest, "Baubbleshire")
+
+ else
+ AddQuestStepChat(Quest, 2, "I must find the Steward in Nettleville Hovel", 1, "I must find the Steward in Nettleville Hovel", 11, 2330170)
+ UpdateQuestZone(Quest, "Nettleville")
+
+end
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+conversation = CreateConversation()
+ PlayFlavor(Player, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_11.mp3", "", "", 3316158990, 3680571955, Player)
+ AddConversationOption(conversation, "[I must speak with a Steward!]")
+ StartDialogConversation(conversation, 1, QuestGiver, Player, "\"Your loyalty will be tested, for you must earn the right to be called citizen.\"")
+ SetStepComplete(Player, 5792,1)
+end
+
+
+
+function Declined(Quest, QuestGiver, Player)
+conversation = CreateConversation()
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(Player, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_3.mp3", "", "", 1841028977, 3133868486, Player)
+ StartDialogConversation(conversation, 1, QuestGiver, Player, "\"If you are tired, cold or hungry, if you flee persecution, poverty or injustice, be comforted, there is a place at our hearth for you.\"")
+ elseif choice ==2 then
+ PlayFlavor(Player, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_15.mp3", "", "", 3873638463, 3215411094, Player)
+ StartDialogConversation(conversation, 1, QuestGiver, Player, "\"I trust that you do not share in Lucan's deceit, and that the well-being of Qeynos and its people is in your heart.\"")
+ elseif choice ==3 then
+ PlayFlavor(Player, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_12.mp3", "", "", 2036336595, 3509341224, Player)
+ StartDialogConversation(conversation, 1, QuestGiver, Player, "\"Qeynosians are generous to travelers, but harsh with traitors.\"")
+ end
+
+ OfferQuest(QuestGiver,Player, 5792)
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I found the Steward")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have spoken with the Steward.")
+
+ UpdateQuestDescription(Quest, "I have taken the first steps in declaring myself a true Qeynosian.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+end
+end
diff --git a/server/Quests/Hallmark/welcome_to_freeport__beggars_court.lua b/server/Quests/Hallmark/welcome_to_freeport__beggars_court.lua
new file mode 100755
index 000000000..8f2ec326d
--- /dev/null
+++ b/server/Quests/Hallmark/welcome_to_freeport__beggars_court.lua
@@ -0,0 +1,169 @@
+--[[
+ Script Name : Quests/Hallmark/welcome_to_freeport__beggars_court.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 06:06:04
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+--
+ require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "Use the room door to be given your inn room. Click on the \"Buy\" button to get your room. Once you have purchased your room click on \"Enter\" to enter your room.", 10, "I've been instructed to sign in at the inn's guest registry in order to get the key to my room.", 11,-5.63, 0.75, -13.88 ,145)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Beggar's Court")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Good. I'm glad I made this clear. Go to your house immediately. The landlord awaits you, and he doesn't like waiting. Now, go before I kill you and explain to the Militia that you attacked me, and I had to act in self-defense.")
+ PlayFlavor(QuestGiver,"","","glare",0,0,Player)
+-- Dialog.AddVoiceover("voiceover/english/overseer_daerla/fprt_hood05/overseer_daerla004.mp3", 2116614625, 2551669022)
+ Dialog.AddOption("Fine. I'm going.")
+ Dialog.Start()
+ if HasQuest(Player,5758) and GetQuestStep(Player, 5758)==2 then
+ SetStepComplete(Player, 5758,2)
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been given my inn room")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been given the key to my room and can now come and go as I please.")
+ AddQuestStepChat(Quest, 2, "I need to introduce myself to the landlord.", 1, "I need to introduce myself to the landlord",11,1450271)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've introduced myself to the slumlord of the inn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've introduced myself to the slumlord that's in charge of my innroom, Valthun.")
+
+ AddQuestStep(Quest, 3, "Open your inventory. \"Place\" your new table and then speak with the slumlord.", 1, 100, "I've spoken with Valthun, a despicable slumlord. Since I don't know how attentive the guards are, I'll hold off on killing him for now. He says the Coalition of Tradesfolke have given me a table for free. I should place this on the floor for now then talk with the slumlord again.",11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ AddQuestStepChat(Quest, 4, "Speak with the Banker Voranius in Beggar's Court.", 1, "Slumlord Valthun has informed me that I have a bank account waiting for me. I need to speak with the Banker in Beggar's Court to open the account.",11,1370012)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with the Banker in Beggar's Court.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've spoken with the Banker in the Beggar's Court.")
+ AddQuestStepChat(Quest, 5, "Return to your room and speak with Slumlord Valthun.", 1, "Now that I have a bank account, I should return to my house and look around my brand new room. When I get there maybe I can find out where that Slumlord went.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with Slumlord Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with slumlord Valthun, who seems to have had a change in attitude since I last spoke with him.")
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new mirror and then speak with the slumlord.", 1,100, "Slumlord Valthun has suggested that I place the mirror on my walls. I don't know what came over him, but I don't trust it. I should place the mirror and then get him to tell me everything he knows about Beggar's Court",0)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestZone(Quest,"Ruins")
+ AddQuestStepZoneLoc(Quest, 7, "I need to use the mariner's bells near the docks to get to the Ruins.",6,"\"The more daring of you bold, courageous adventurer types tend to make a living by killing things in the Ruins. You have to take a ferry to reach the place. Go to the mariner's bell near the docks and give it a ring to travel there. I'll show you a few other places after you take a look at the gates.\" - Valthun", 2297,-132.74, -1.07, 80.37,842)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've visited the Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Valthun has told me about.")
+ UpdateQuestZone(Quest,"Beggar's Court")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Beggar's Court crafting trainer, Sandon Breezebender.",1,"\"Some commoners choose to waste their time twiddling, creating rubbish. If you have interest in such crafting nonsense, then speak with representative from The Ring of Wanderlust. While I doubt you can, there might be some coin to be made crafting. If I see your filth littering the streets though, remember, I know where you live.\" - Valthun", 11,1370030)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've met with the district crafting trainer.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've visisted two of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 9, "I need to locate the grate to the Thieve's Way.",6,"\"Though most of the people who venture down into the sewers are nothing more than filthy, worthless, good-for-nothing vagabonds, I'm sure you have good reasons for traveling there yourself. You can find the grate leading down to them if you take a close look. After that, I'll show you one more place.\" - Valthun", 0,57.45, -6.16, 56.8,137)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Thieve's Way.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Valthun has told me about.")
+ AddQuestStep(Quest, 10, "I need to locate the gates to North Freeport.",1,100, "\"Only citizens like myself can come and go as they please. The rest of you refugees are corralled into the districts. If you'd like to see what door you're not allowed to travel through, take a look for the city gates. You'll be able to find it here. By the time you look at it, I should be done wi----- waiting for you.\" - Valthun", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Slumlord Valthun has told me about.")
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Slumlord Valthun why I can't enter the city.", 1, 100, "I should return back to my room and tell Valthun to let me know why the guard didn't allow me to enter into the city. I also don't trust him hanging around my house.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ AddQuestStep(Quest, 12, "Open your inventory. \"Place\" your new chandelier and then speak with the slumlord.", 1, 100,"I came back to find Valthun doing something suspicious. When I confronted him, he gave me another piece of furniture. I don't believe for a second he was doing this out of the kindness of his own heart. Nontheless, there's no need for me to throw away the chandelier. I'll place it on the ceiling, then get Valthun to tell me why I can't go into the city.",11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ AddQuestStep(Quest, 13, "Take an application from the citizenship sign, complete the task, then speak with Abbetor T'avi by using the citizenship sign again.", 1, 100,"\"If you for one moment think that Freeport wants trash like you walking around the city, you've got another think coming. You're going to die here, and hopefully soon, no matter what they say. I'm not being paid to tell you this, but if you want to become a citizen you have to apply for it. Go to the city gates and pull an application from the sign there. Do what it says and then use the sign again to speak to Abbetor T'avi. I hope it winds up getting you killed so I can have this room back.\" - Valthun",11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Freeport.", 1, 100,"Abbetor T'avi has asked that I prove my loyalty to the city of Freeport in order to gain citizenship. She has pointed out that there are those who would betray our great city to that harlot Antonia. To prove myself, I will have to deal with their insolent and foolish behavior.",11,22101350)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I have completed the Citizenship Trial and am now a citizen of Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 14, "I am now a citizen of Freeport!")
+ UpdateQuestDescription(Quest, "I've managed to keep from killing Vathun long enough for me to familiarize myself with Longshadow Alley. That disgusting man has shown me what I need to know about my new home, along with pointing me at who I need to talk to in order to become a citizen. The next time we meet, things will be much different.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/Hallmark/welcome_to_freeport__big_bend.lua b/server/Quests/Hallmark/welcome_to_freeport__big_bend.lua
new file mode 100755
index 000000000..3fd41bddc
--- /dev/null
+++ b/server/Quests/Hallmark/welcome_to_freeport__big_bend.lua
@@ -0,0 +1,168 @@
+--[[
+ Script Name : Quests/Hallmark/welcome_to_freeport__big_bend.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.28 12:06:41
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+ require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "Use the room door to be given your inn room. Click on the \"Buy\" button to get your room. Once you have purchased your room click on \"Enter\" to enter your room.", 10, "I've been instructed to sign in at the inn's guest registry in order to get the key to my room.", 11,-5.63, 0.75, -13.88 ,145)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Big Bend")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Of course it should please you! Our Lord granted you a spacious home in paradise! You must leave immediately. The landlord is waiting. Welcome to Freeport, refugee ... now, away with you!")
+ PlayFlavor(QuestGiver,"","","stare",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg004.mp3", 2874238984, 355838629)
+ Dialog.AddOption("Uhhh... thanks.")
+ Dialog.Start()
+ if HasQuest(Player,5758) and GetQuestStep(Player, 5758)==2 then
+ SetStepComplete(Player, 5758,2)
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been given my inn room")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been given the key to my room and can now come and go as I please.")
+ AddQuestStepChat(Quest, 2, "I need to introduce myself to the landlord.", 1, "I need to introduce myself to the landlord",11,1450271)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've introduced myself to the slumlord of the inn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've introduced myself to the slumlord that's in charge of my innroom, Valthun.")
+
+ AddQuestStep(Quest, 3, "Open your inventory. \"Place\" your new table and then speak with the slumlord.", 1, 100, "I've spoken with Valthun, a despicable slumlord. Since I don't know how attentive the guards are, I'll hold off on killing him for now. He says the Coalition of Tradesfolke have given me a table for free. I should place this on the floor for now then talk with the slumlord again.",11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ AddQuestStepChat(Quest, 4, "Speak with the Banker Quintius Calacicus in Big Bend.", 1, "Slumlord Valthun has informed me that I have a bank account waiting for me. I need to speak with the Banker in Big Bend to open the account.",11,1340011)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with the Banker in Big Bend.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've spoken with the Banker in the Big Bend.")
+ AddQuestStepChat(Quest, 5, "Return to your room and speak with Slumlord Valthun.", 1, "Now that I have a bank account, I should return to my house and look around my brand new room. When I get there maybe I can find out where that Slumlord went.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with Slumlord Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with slumlord Valthun, who seems to have had a change in attitude since I last spoke with him.")
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new mirror and then speak with the slumlord.", 1,100, "Slumlord Valthun has suggested that I place the mirror on my walls. I don't know what came over him, but I don't trust it. I should place the mirror and then get him to tell me everything he knows about Big Bend",0)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestZone(Quest,"Sprawl")
+ AddQuestStepZoneLoc(Quest, 7, "I need to step through the gates to the Sprawl.",6,"\"The more daring of you bold, courageous adventurer types tend to make a living by killing things in the Sprawl. If you venture there, try not to get hurt too much. This is where you can find the gates to the Sprawl. I'll show you a few other places after you take a look at the gates.\" - Valthun\"", 11,-82.27, -4.79, -41.69 ,840)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've visited the Sprawl.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Valthun has told me about.")
+ UpdateQuestZone(Quest,"Big Bend")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Big Bend crafting trainer, Korkoof Crackstone.",1,"\"Some commoners choose to waste their time twiddling, creating rubbish. If you have interest in such crafting nonsense, then speak with representative from The Ransackers Annex. While I doubt you can, there might be some coin to be made crafting. If I see your filth littering the streets though, remember, I know where you live.\" - Valthun", 11,1340013)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've met with the district crafting trainer.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've visisted two of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 9, "I need to locate the grate to the Thieve's Way.",6,"\"Though most of the people who venture down into the sewers are nothing more than filthy, worthless, good-for-nothing vagabonds, I'm sure you have good reasons for traveling there yourself. You can find the grate leading down to them if you take a close look. After that, I'll show you one more place.\" - Valthun", 0,9.00, 0.84, -11.55,134)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Thieve's Way.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Valthun has told me about.")
+ AddQuestStep(Quest, 10, "I need to locate the gates to South Freeport.",1,100, "\"Only citizens like myself can come and go as they please. The rest of you refugees are corralled into the districts. If you'd like to see what door you're not allowed to travel through, take a look for the city gates. You'll be able to find it here. By the time you look at it, I should be done wi----- waiting for you.\" - Valthun", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Slumlord Valthun has told me about.")
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Slumlord Valthun why I can't enter the city.", 1, 100, "I should return back to my room and tell Valthun to let me know why the guard didn't allow me to enter into the city. I also don't trust him hanging around my house.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ AddQuestStep(Quest, 12, "Open your inventory. \"Place\" your new chandelier and then speak with the slumlord.", 1, 100,"I came back to find Valthun doing something suspicious. When I confronted him, he gave me another piece of furniture. I don't believe for a second he was doing this out of the kindness of his own heart. Nontheless, there's no need for me to throw away the chandelier. I'll place it on the ceiling, then get Valthun to tell me why I can't go into the city.",11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ AddQuestStep(Quest, 13, "Take an application from the citizenship sign, complete the task, then speak with Abbetor T'avi by using the citizenship sign again.", 1, 100,"\"If you for one moment think that Freeport wants trash like you walking around the city, you've got another think coming. You're going to die here, and hopefully soon, no matter what they say. I'm not being paid to tell you this, but if you want to become a citizen you have to apply for it. Go to the city gates and pull an application from the sign there. Do what it says and then use the sign again to speak to Abbetor T'avi. I hope it winds up getting you killed so I can have this room back.\" - Valthun",11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Freeport.", 1, 100,"Abbetor T'avi has asked that I prove my loyalty to the city of Freeport in order to gain citizenship. She has pointed out that there are those who would betray our great city to that harlot Antonia. To prove myself, I will have to deal with their insolent and foolish behavior.",11,22101350)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I have completed the Citizenship Trial and am now a citizen of Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 14, "I am now a citizen of Freeport!")
+
+ UpdateQuestDescription(Quest, "I've managed to keep from killing Vathun long enough for me to familiarize myself with Longshadow Alley. That disgusting man has shown me what I need to know about my new home, along with pointing me at who I need to talk to in order to become a citizen. The next time we meet, things will be much different.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/welcome_to_freeport__longshadow_alley.lua b/server/Quests/Hallmark/welcome_to_freeport__longshadow_alley.lua
new file mode 100755
index 000000000..ce1966b90
--- /dev/null
+++ b/server/Quests/Hallmark/welcome_to_freeport__longshadow_alley.lua
@@ -0,0 +1,167 @@
+--[[
+ Script Name : Quests/Hallmark/welcome_to_freeport__longshadow_alley.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.21 06:06:05
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+ require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "Use the room door to be given your inn room. Click on the \"Buy\" button to get your room. Once you have purchased your room click on \"Enter\" to enter your room.", 10, "I've been instructed to sign in at the inn's guest registry in order to get the key to my room.", 11,-5.63, 0.75, -13.88 ,145)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Longshadow Alley")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Go to your house immediately and meet with the landlord. He is expecting you at this very moment. Do not be late. He can't waste his precious time waiting for a lowly refugee. Now away with you! By the way ... Welcome to Freeport.")
+ PlayFlavor(QuestGiver,"","","point",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/overseer_daerla/fprt_hood05/overseer_daerla004.mp3", 2116614625, 2551669022)
+ Dialog.AddOption("Grrrr... thank you, Overseer.")
+ Dialog.Start()
+ if HasQuest(Player,5758) and GetQuestStep(Player, 5758)==2 then
+ SetStepComplete(Player, 5758,2)
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been given my inn room")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been given the key to my room and can now come and go as I please.")
+ AddQuestStepChat(Quest, 2, "I need to introduce myself to the landlord.", 1, "I need to introduce myself to the landlord",11,1450271)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've introduced myself to the slumlord of the inn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've introduced myself to the slumlord that's in charge of my innroom, Valthun.")
+
+ AddQuestStep(Quest, 3, "Open your inventory. \"Place\" your new table and then speak with the slumlord.", 1, 100, "I've spoken with Valthun, a despicable slumlord. Since I don't know how attentive the guards are, I'll hold off on killing him for now. He says the Coalition of Tradesfolke have given me a table for free. I should place this on the floor for now then talk with the slumlord again.",11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ AddQuestStepChat(Quest, 4, "Speak with the Banker T`Val in Longshadow Alley.", 1, "Slumlord Valthun has informed me that I have a bank account waiting for me. I need to speak with the Banker in Longshadow Alley to open the account.",11,1380021)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with the Banker in Longshadow Alley.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've spoken with the Banker in the Longshadow Alley.")
+ AddQuestStepChat(Quest, 5, "Return to your room and speak with Slumlord Valthun.", 1, "Now that I have a bank account, I should return to my house and look around my brand new room. When I get there maybe I can find out where that Slumlord went.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with Slumlord Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with slumlord Valthun, who seems to have had a change in attitude since I last spoke with him.")
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new mirror and then speak with the slumlord.", 1,100, "Slumlord Valthun has suggested that I place the mirror on my walls. I don't know what came over him, but I don't trust it. I should place the mirror and then get him to tell me everything he knows about Longshadow Alley",0)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestZone(Quest,"Ruins")
+ AddQuestStepZoneLoc(Quest, 7, "I need to use the mariner's bells near the docks to get to the Ruins.",10,"\"The more daring of you bold, courageous adventurer types tend to make a living by killing things in the Ruins. You have to take a ferry to reach the place. Go to the mariner's bell near the docks and give it a ring to travel there. I'll show you a few other places after you take a look at the gates.\" - Valthun", 2297,-132.74, -1.07, 80.37,842)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've visited the Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Valthun has told me about.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Longshadow Alley crafting trainer, Alanaramal Z'Aste.",1,"\"Some commoners choose to waste their time twiddling, creating rubbish. If you have interest in such crafting nonsense, then speak with representative from The Dark Bargainers. While I doubt you can, there might be some coin to be made crafting. If I see your filth littering the streets though, remember, I know where you live.\" - Valthun", 11,1380027)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've met with the district crafting trainer.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted two of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 9, "I need to locate the grate to the Thieve's Way.",6,"\"Though most of the people who venture down into the sewers are nothing more than filthy, worthless, good-for-nothing vagabonds, I'm sure you have good reasons for traveling there yourself. You can find the grate leading down to them if you take a close look. After that, I'll show you one more place.\" - Valthun", 0,43.64, -0.87, -22.94,138)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Thieve's Way.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted three of four locations Valthun has told me about.")
+ AddQuestStep(Quest, 10, "I need to locate the gates to North Freeport.",1,100, "\"Only citizens like myself can come and go as they please. The rest of you refugees are corralled into the districts. If you'd like to see what door you're not allowed to travel through, take a look for the city gates. You'll be able to find it here. By the time you look at it, I should be done wi----- waiting for you.\" - Valthun", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted all four locations Slumlord Valthun has told me about.")
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Slumlord Valthun why I can't enter the city.", 1, 100, "I should return back to my room and tell Valthun to let me know why the guard didn't allow me to enter into the city. I also don't trust him hanging around my house.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ AddQuestStep(Quest, 12, "Open your inventory. \"Place\" your new chandelier and then speak with the slumlord.", 1, 100,"I came back to find Valthun doing something suspicious. When I confronted him, he gave me another piece of furniture. I don't believe for a second he was doing this out of the kindness of his own heart. Nontheless, there's no need for me to throw away the chandelier. I'll place it on the ceiling, then get Valthun to tell me why I can't go into the city.",11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ AddQuestStep(Quest, 13, "Take an application from the citizenship sign, complete the task, then speak with Abbetor T'avi by using the citizenship sign again.", 1, 100,"\"If you for one moment think that Freeport wants trash like you walking around the city, you've got another think coming. You're going to die here, and hopefully soon, no matter what they say. I'm not being paid to tell you this, but if you want to become a citizen you have to apply for it. Go to the city gates and pull an application from the sign there. Do what it says and then use the sign again to speak to Abbetor T'avi. I hope it winds up getting you killed so I can have this room back.\" - Valthun",11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Freeport.", 1, 100,"Abbetor T'avi has asked that I prove my loyalty to the city of Freeport in order to gain citizenship. She has pointed out that there are those who would betray our great city to that harlot Antonia. To prove myself, I will have to deal with their insolent and foolish behavior.",11,22101350)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I have completed the Citizenship Trial and am now a citizen of Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I am now a citizen of Freeport!")
+ UpdateQuestDescription(Quest, "I've managed to keep from killing Vathun long enough for me to familiarize myself with Longshadow Alley. That disgusting man has shown me what I need to know about my new home, along with pointing me at who I need to talk to in order to become a citizen. The next time we meet, things will be much different.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/welcome_to_freeport__scale_yard.lua b/server/Quests/Hallmark/welcome_to_freeport__scale_yard.lua
new file mode 100755
index 000000000..9bd108ee2
--- /dev/null
+++ b/server/Quests/Hallmark/welcome_to_freeport__scale_yard.lua
@@ -0,0 +1,167 @@
+--[[
+ Script Name : Quests/Hallmark/welcome_to_freeport__scale_yard.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.28 10:06:09
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+ require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "Use the room door to be given your inn room. Click on the \"Buy\" button to get your room. Once you have purchased your room click on \"Enter\" to enter your room.", 10, "I've been instructed to sign in at the inn's guest registry in order to get the key to my room.", 11,-5.63, 0.75, -13.88 ,145)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Scale Yard")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Your house is within the Scale Yard, where we call home. Go at once and find your landlord. He is waiting to give you further commands. So ends my gracious welcome. Now, get out of here...")
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+-- Dialog.AddVoiceover("voiceover/english/overseer_daerla/fprt_hood05/overseer_daerla004.mp3", 2116614625, 2551669022)
+ Dialog.AddOption("Praise the Overlord!")
+ Dialog.Start()
+ if HasQuest(Player,5758) and GetQuestStep(Player, 5758)==2 then
+ SetStepComplete(Player, 5758,2)
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been given my inn room")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been given the key to my room and can now come and go as I please.")
+ AddQuestStepChat(Quest, 2, "I need to introduce myself to the caretaker.", 1, "I need to introduce myself to the landlord",11,1450271)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've introduced myself to the slumlord of the inn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've introduced myself to the slumlord that's in charge of my innroom, Valthun.")
+
+ AddQuestStep(Quest, 3, "Open your inventory. \"Place\" your new table and then speak with the slumlord.", 1, 100, "I've spoken with Valthun, a despicable slumlord. Since I don't know how attentive the guards are, I'll hold off on killing him for now. He says the Coalition of Tradesfolke have given me a table for free. I should place this on the floor for now then talk with the slumlord again.",11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ AddQuestStepChat(Quest, 4, "Speak with the Banker Izark in Scale Yard.", 1, "Slumlord Valthun has informed me that I have a bank account waiting for me. I need to speak with the Banker in Scale Yard to open the account.",11,1390055)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with the Banker in Scale Yard.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've spoken with the Banker in the Scale Yard.")
+ AddQuestStepChat(Quest, 5, "Return to your room and speak with Slumlord Valthun.", 1, "Now that I have a bank account, I should return to my house and look around my brand new room. When I get there maybe I can find out where that Slumlord went.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with Slumlord Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with slumlord Valthun, who seems to have had a change in attitude since I last spoke with him.")
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new mirror and then speak with the slumlord.", 1,100, "Slumlord Valthun has suggested that I place the mirror on my walls. I don't know what came over him, but I don't trust it. I should place the mirror and then get him to tell me everything he knows about Scale Yard",0)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestZone(Quest,"Sunken City")
+ AddQuestStepZoneLoc(Quest, 7, "I need to use the mariner's bells near the docks to get to the Sunken City.",6,"\"The more daring of you bold, courageous adventurer types tend to make a living by killing things in the Sunken City. You have to take a ferry to reach the place. Go to the mariner's bell near the docks and give it a ring to travel there. I'll show you a few other places after you take a look at the gates.\" - Valthun", 2297,-48.62,-0.1,41.83,841)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've visited the Sunken City.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Valthun has told me about.")
+ UpdateQuestZone(Quest,"Scale Yard")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Scale Yard crafting trainer, Tegan Frostfist.",1,"\"Some commoners choose to waste their time twiddling, creating rubbish. If you have interest in such crafting nonsense, then speak with representative from The War Hagglers. While I doubt you can, there might be some coin to be made crafting. If I see your filth littering the streets though, remember, I know where you live.\" - Valthun", 11,1390014)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've met with the district crafting trainer.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've visisted two of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 9, "I need to locate the grate to the Thieve's Way.",6,"\"Though most of the people who venture down into the sewers are nothing more than filthy, worthless, good-for-nothing vagabonds, I'm sure you have good reasons for traveling there yourself. You can find the grate leading down to them if you take a close look. After that, I'll show you one more place.\" - Valthun", 0,37, -3.5, -30.72,139)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Thieve's Way.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to South Freeport.",6, "\"Only citizens like myself can come and go as they please. The rest of you refugees are corralled into the districts. If you'd like to see what door you're not allowed to travel through, take a look for the city gates. You'll be able to find it here. By the time you look at it, I should be done wi----- waiting for you.\" - Valthun", 11,15.54, 3.00, 73.32,139)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Slumlord Valthun has told me about.")
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Slumlord Valthun why I can't enter the city.", 1, 100, "I should return back to my room and tell Valthun to let me know why the guard didn't allow me to enter into the city. I also don't trust him hanging around my house.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ AddQuestStep(Quest, 12, "Open your inventory. \"Place\" your new chandelier and then speak with the slumlord.", 1, 100,"I came back to find Valthun doing something suspicious. When I confronted him, he gave me another piece of furniture. I don't believe for a second he was doing this out of the kindness of his own heart. Nontheless, there's no need for me to throw away the chandelier. I'll place it on the ceiling, then get Valthun to tell me why I can't go into the city.",11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ AddQuestStep(Quest, 13, "Take an application from the citizenship sign, complete the task, then speak with Abbetor T'avi by using the citizenship sign again.", 1, 100,"\"If you for one moment think that Freeport wants trash like you walking around the city, you've got another think coming. You're going to die here, and hopefully soon, no matter what they say. I'm not being paid to tell you this, but if you want to become a citizen you have to apply for it. Go to the city gates and pull an application from the sign there. Do what it says and then use the sign again to speak to Abbetor T'avi. I hope it winds up getting you killed so I can have this room back.\" - Valthun",11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Freeport.", 1, 100,"Abbetor T'avi has asked that I prove my loyalty to the city of Freeport in order to gain citizenship. She has pointed out that there are those who would betray our great city to that harlot Antonia. To prove myself, I will have to deal with their insolent and foolish behavior.",11,22101350)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I have completed the Citizenship Trial and am now a citizen of Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 14, "I am now a citizen of Freeport!")
+ UpdateQuestDescription(Quest, "I've managed to keep from killing Vathun long enough for me to familiarize myself with Longshadow Alley. That disgusting man has shown me what I need to know about my new home, along with pointing me at who I need to talk to in order to become a citizen. The next time we meet, things will be much different.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/welcome_to_freeport__stonestair.lua b/server/Quests/Hallmark/welcome_to_freeport__stonestair.lua
new file mode 100755
index 000000000..198c32c9a
--- /dev/null
+++ b/server/Quests/Hallmark/welcome_to_freeport__stonestair.lua
@@ -0,0 +1,168 @@
+--[[
+ Script Name : Quests/Hallmark/welcome_to_freeport__stonestair.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 03:06:06
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+ require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "Use the room door to be given your inn room. Click on the \"Buy\" button to get your room. Once you have purchased your room click on \"Enter\" to enter your room.", 10, "I've been instructed to sign in at the inn's guest registry in order to get the key to my room.", 11,-5.63, 0.75, -13.88 ,145)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stonestair Byway")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Good, good! The Overlord arranged for you to meet the landlord of your new home. I suggest you muster up any thoughts you can in your thick skull and meet him at once. If you don't go quickly, I'm certain he'll give your house to a cockroach – it would be an understandable mistake.")
+ PlayFlavor(QuestGiver,"","","sarcasm",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/overseer_melkia/fprt_hood02/overseer_melkia004.mp3", 1464763024, 2963821560)
+ Dialog.AddOption("Ugh... Thank you, Overseer.")
+ Dialog.Start()
+ if HasQuest(Player,5758) and GetQuestStep(Player, 5758)==2 then
+ SetStepComplete(Player, 5758,2)
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been given my inn room")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been given the key to my room and can now come and go as I please.")
+ AddQuestStepChat(Quest, 2, "I need to introduce myself to the landlord.", 1, "I need to introduce myself to the landlord",11,1450271)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've introduced myself to the slumlord of the inn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've introduced myself to the slumlord that's in charge of my innroom, Valthun.")
+
+ AddQuestStep(Quest, 3, "Open your inventory. \"Place\" your new table and then speak with the slumlord.", 1, 100, "I've spoken with Valthun, a despicable slumlord. Since I don't know how attentive the guards are, I'll hold off on killing him for now. He says the Coalition of Tradesfolke have given me a table for free. I should place this on the floor for now then talk with the slumlord again.",11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ AddQuestStepChat(Quest, 4, "Speak with the Banker Kaman in Stonestair Byway.", 1, "Slumlord Valthun has informed me that I have a bank account waiting for me. I need to speak with the Banker in Stonestair Byway to open the account.",11,1350044)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with the Banker in Stonestair Byway.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've spoken with the Banker in the Stonestair Byway.")
+ AddQuestStepChat(Quest, 5, "Return to your room and speak with Slumlord Valthun.", 1, "Now that I have a bank account, I should return to my house and look around my brand new room. When I get there maybe I can find out where that Slumlord went.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with Slumlord Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with slumlord Valthun, who seems to have had a change in attitude since I last spoke with him.")
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new mirror and then speak with the slumlord.", 1,100, "Slumlord Valthun has suggested that I place the mirror on my walls. I don't know what came over him, but I don't trust it. I should place the mirror and then get him to tell me everything he knows about Stonestair Byway",0)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestZone(Quest,"Graveyard")
+ AddQuestStepZoneLoc(Quest, 7, "I need to go through the gates to the Graveyard.",8,"\"The more daring of you bold, courageous adventurer types tend to make a living by killing things in the Graveyard. If you venture there, try not to get hurt too much. This is where you can find the gates to the Graveyard. I'll show you a few other places after you take a look at the gates.\" - Valthun", 11,-69.95, -12.85, 119.34,839)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've visited the Graveyard.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Valthun has told me about.")
+ UpdateQuestZone(Quest,"Stonestair Byway")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Stonestair Byway crafting trainer, Shatana Kamelia.",1,"\"Some commoners choose to waste their time twiddling, creating rubbish. If you have interest in such crafting nonsense, then speak with representative from The Brokerage of Nepeta Cataria. While I doubt you can, there might be some coin to be made crafting. If I see your filth littering the streets though, remember, I know where you live.\" - Valthun", 11,1350032)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've met with the district crafting trainer.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've visisted two of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 9, "I need to locate the grate to the Thieve's Way.",6,"\"Though most of the people who venture down into the sewers are nothing more than filthy, worthless, good-for-nothing vagabonds, I'm sure you have good reasons for traveling there yourself. You can find the grate leading down to them if you take a close look. After that, I'll show you one more place.\" - Valthun", 0,53.92, -3.51, -26.73,135)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Thieve's Way.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Valthun has told me about.")
+ AddQuestStep(Quest, 10, "I need to locate the gates to North Freeport.",1,100, "\"Only citizens like myself can come and go as they please. The rest of you refugees are corralled into the districts. If you'd like to see what door you're not allowed to travel through, take a look for the city gates. You'll be able to find it here. By the time you look at it, I should be done wi----- waiting for you.\" - Valthun", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Slumlord Valthun has told me about.")
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Slumlord Valthun why I can't enter the city.", 1, 100, "I should return back to my room and tell Valthun to let me know why the guard didn't allow me to enter into the city. I also don't trust him hanging around my house.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ AddQuestStep(Quest, 12, "Open your inventory. \"Place\" your new chandelier and then speak with the slumlord.", 1, 100,"I came back to find Valthun doing something suspicious. When I confronted him, he gave me another piece of furniture. I don't believe for a second he was doing this out of the kindness of his own heart. Nontheless, there's no need for me to throw away the chandelier. I'll place it on the ceiling, then get Valthun to tell me why I can't go into the city.",11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ AddQuestStep(Quest, 13, "Take an application from the citizenship sign, complete the task, then speak with Abbetor T'avi by using the citizenship sign again.", 1, 100,"\"If you for one moment think that Freeport wants trash like you walking around the city, you've got another think coming. You're going to die here, and hopefully soon, no matter what they say. I'm not being paid to tell you this, but if you want to become a citizen you have to apply for it. Go to the city gates and pull an application from the sign there. Do what it says and then use the sign again to speak to Abbetor T'avi. I hope it winds up getting you killed so I can have this room back.\" - Valthun",11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Freeport.", 1, 100,"Abbetor T'avi has asked that I prove my loyalty to the city of Freeport in order to gain citizenship. She has pointed out that there are those who would betray our great city to that harlot Antonia. To prove myself, I will have to deal with their insolent and foolish behavior.",11,22101350)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I have completed the Citizenship Trial and am now a citizen of Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 14, "I am now a citizen of Freeport!")
+
+ UpdateQuestDescription(Quest, "I've managed to keep from killing Vathun long enough for me to familiarize myself with Longshadow Alley. That disgusting man has shown me what I need to know about my new home, along with pointing me at who I need to talk to in order to become a citizen. The next time we meet, things will be much different.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/welcome_to_freeport__temple_street.lua b/server/Quests/Hallmark/welcome_to_freeport__temple_street.lua
new file mode 100755
index 000000000..3bb9c67fe
--- /dev/null
+++ b/server/Quests/Hallmark/welcome_to_freeport__temple_street.lua
@@ -0,0 +1,168 @@
+--[[
+ Script Name : Quests/Hallmark/welcome_to_freeport__temple_street.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.27 12:06:29
+ Script Purpose :
+
+ Zone : Hallmark
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+ require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepZoneLoc(Quest, 1, "Use the room door to be given your inn room. Click on the \"Buy\" button to get your room. Once you have purchased your room click on \"Enter\" to enter your room.", 10, "I've been instructed to sign in at the inn's guest registry in order to get the key to my room.", 11,-5.63, 0.75, -13.88 ,145)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Temple Street")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You are very smart to take the house. The landlord is waiting for you in your house, so you need to scurry there real fast. The landlord is very nice. Yes, he is very nice! We love the Overlord and we love the Freeport! Welcome to your new home!")
+ PlayFlavor(QuestGiver,"","","applaud",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/overseer_ivagora/fprt_hood03/overseer_ivagora004.mp3", 1123497400, 2405553191)
+ Dialog.AddOption("Thank you, Overseer.")
+ Dialog.Start()
+ if HasQuest(Player,5758) and GetQuestStep(Player, 5758)==2 then
+ SetStepComplete(Player, 5758,2)
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've been given my inn room")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've been given the key to my room and can now come and go as I please.")
+ AddQuestStepChat(Quest, 2, "I need to introduce myself to the landlord.", 1, "I need to introduce myself to the landlord",11,1450271)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've introduced myself to the slumlord of the inn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've introduced myself to the slumlord that's in charge of my innroom, Valthun.")
+
+ AddQuestStep(Quest, 3, "Open your inventory. \"Place\" your new table and then speak with the slumlord.", 1, 100, "I've spoken with Valthun, a despicable slumlord. Since I don't know how attentive the guards are, I'll hold off on killing him for now. He says the Coalition of Tradesfolke have given me a table for free. I should place this on the floor for now then talk with the slumlord again.",11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the slumlord.")
+ AddQuestStepChat(Quest, 4, "Speak with the Banker Sempronia Gallus in Temple Street.", 1, "Slumlord Valthun has informed me that I have a bank account waiting for me. I need to speak with the Banker in Temple Street to open the account.",11,1360020)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've spoken with the Banker in Temple Street.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've spoken with the Banker in the Temple Street.")
+ AddQuestStepChat(Quest, 5, "Return to your room and speak with Slumlord Valthun.", 1, "Now that I have a bank account, I should return to my house and look around my brand new room. When I get there maybe I can find out where that Slumlord went.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with Slumlord Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with slumlord Valthun, who seems to have had a change in attitude since I last spoke with him.")
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new mirror and then speak with the slumlord.", 1,100, "Slumlord Valthun has suggested that I place the mirror on my walls. I don't know what came over him, but I don't trust it. I should place the mirror and then get him to tell me everything he knows about Temple Street",0)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the mirror and spoken with the slumlord.")
+ UpdateQuestZone(Quest,"Ruins")
+ AddQuestStepZoneLoc(Quest, 7, "I need to use the mariner's bells near the docks to get to the Ruins.",6,"\"The more daring of you bold, courageous adventurer types tend to make a living by killing things in the Ruins. You have to take a ferry to reach the place. Go to the mariner's bell near the docks and give it a ring to travel there. I'll show you a few other places after you take a look at the gates.\" - Valthun", 2297,-132.74, -1.07, 80.37,842)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've visited the Ruins.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Valthun has told me about.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Temple Street crafting trainer, Tuber Fattleweeble.",1,"\"Some commoners choose to waste their time twiddling, creating rubbish. If you have interest in such crafting nonsense, then speak with representative from The Circle of Vaniki. While I doubt you can, there might be some coin to be made crafting. If I see your filth littering the streets though, remember, I know where you live.\" - Valthun", 11,1360037)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I've met with the district crafting trainer.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "I've visisted two of four locations Valthun has told me about.")
+ AddQuestStepZoneLoc(Quest, 9, "I need to locate the grate to the Thieve's Way.",6,"\"Though most of the people who venture down into the sewers are nothing more than filthy, worthless, good-for-nothing vagabonds, I'm sure you have good reasons for traveling there yourself. You can find the grate leading down to them if you take a close look. After that, I'll show you one more place.\" - Valthun", 0,53.41, 3.84, 43.56,136)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Thieve's Way.")
+ UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Valthun has told me about.")
+ AddQuestStep(Quest, 10, "I need to locate the gates to South Freeport.",1,100, "\"Only citizens like myself can come and go as they please. The rest of you refugees are corralled into the districts. If you'd like to see what door you're not allowed to travel through, take a look for the city gates. You'll be able to find it here. By the time you look at it, I should be done wi----- waiting for you.\" - Valthun", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
+ UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Slumlord Valthun has told me about.")
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Slumlord Valthun why I can't enter the city.", 1, 100, "I should return back to my room and tell Valthun to let me know why the guard didn't allow me to enter into the city. I also don't trust him hanging around my house.",11,1450271)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ UpdateQuestTaskGroupDescription(Quest, 11, "I've spoken with Slumlord Valthun and have a chandelier now.")
+ AddQuestStep(Quest, 12, "Open your inventory. \"Place\" your new chandelier and then speak with the slumlord.", 1, 100,"I came back to find Valthun doing something suspicious. When I confronted him, he gave me another piece of furniture. I don't believe for a second he was doing this out of the kindness of his own heart. Nontheless, there's no need for me to throw away the chandelier. I'll place it on the ceiling, then get Valthun to tell me why I can't go into the city.",11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ UpdateQuestTaskGroupDescription(Quest, 12, "I've placed the chandelier on the ceiling and spoke with Valthun.")
+ AddQuestStep(Quest, 13, "Take an application from the citizenship sign, complete the task, then speak with Abbetor T'avi by using the citizenship sign again.", 1, 100,"\"If you for one moment think that Freeport wants trash like you walking around the city, you've got another think coming. You're going to die here, and hopefully soon, no matter what they say. I'm not being paid to tell you this, but if you want to become a citizen you have to apply for it. Go to the city gates and pull an application from the sign there. Do what it says and then use the sign again to speak to Abbetor T'avi. I hope it winds up getting you killed so I can have this room back.\" - Valthun",11)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Abbetor T'avi and have been told how to become a citizen.")
+ UpdateQuestZone(Quest,"Uncovered Traitors Hideout")
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Freeport.", 1, 100,"Abbetor T'avi has asked that I prove my loyalty to the city of Freeport in order to gain citizenship. She has pointed out that there are those who would betray our great city to that harlot Antonia. To prove myself, I will have to deal with their insolent and foolish behavior.",11,22101350)
+ AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 14, "I have completed the Citizenship Trial and am now a citizen of Freeport.")
+ UpdateQuestTaskGroupDescription(Quest, 14, "I am now a citizen of Freeport!")
+
+ UpdateQuestDescription(Quest, "I've managed to keep from killing Vathun long enough for me to familiarize myself with Longshadow Alley. That disgusting man has shown me what I need to know about my new home, along with pointing me at who I need to talk to in order to become a citizen. The next time we meet, things will be much different.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_Baubbleshire.lua b/server/Quests/Hallmark/welcome_to_qeynos_Baubbleshire.lua
index 92f766347..23addc781 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_Baubbleshire.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_Baubbleshire.lua
@@ -28,6 +28,9 @@ function Accepted(Quest, QuestGiver, Player)
if HasQuest(Player,5717) and GetQuestStep(Player,5717)==2 then
SetStepComplete(Player,5717,2)
end
+ if HasQuest(Player,5792) and GetQuestStep(Player,5792)==2 then
+ SetStepComplete(Player,5792,2)
+ end
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -69,13 +72,15 @@ end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
- AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Forest Ruins.",6,"\"Some people choose to adventure in the Forest Ruins. It's a dangerous place, so watch yourself. Here's where you can find the gates to the ruins. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,888.41, -12.55, -545.74,238)
+ UpdateQuestZone(Quest,"Forest Ruins")
+ AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Forest Ruins.",15,"\"Some people choose to adventure in the Forest Ruins. It's a dangerous place, so watch yourself. Here's where you can find the gates to the ruins. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,922.51, -20.99, -562.5,827)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've found the gates to the Forest Ruins.")
UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Ms. Fairlee has told me about.")
+ UpdateQuestZone(Quest,"Baubbleshire")
AddQuestStepChat(Quest, 8, "I need to introduce myself to the Baubbleshire crafting trainer, Rala Eurocarry.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside the Deductive Directory so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2380025)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
@@ -90,7 +95,7 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Down Below.")
UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Ms. Fairlee has told me about.")
- AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to the Elddar Grove.",6, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11,820.05, -20.60, -525.39,238)
+ AddQuestStep(Quest, 10, "I need to locate the gates to the Elddar Grove.",1,100, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
@@ -118,7 +123,7 @@ end
function Step13Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
- AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, 100,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
end
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_Castleivew.lua b/server/Quests/Hallmark/welcome_to_qeynos_Castleivew.lua
index deed5d4ae..5ba75e1e2 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_Castleivew.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_Castleivew.lua
@@ -23,11 +23,14 @@ function Accepted(Quest, QuestGiver, Player)
Dialog.AddDialog("This is the village of Castleview, one of several villages surrounding Qeynos. Within our hamlet, both Koada'Dal like me, and Frogloks, live side by side. I digress. The caretaker of your home awaits you, and it is impolite to keep her waiting.")
PlayFlavor(QuestGiver,"","","orate",0,0,Player)
Dialog.AddVoiceover("voiceover/english/steward_quyntar/qey_village04/steward_quyntar004.mp3", 2072542675, 3706058762)
- Dialog.AddOption("I thank your for your assistance. I shall meet with the caretaker at once.")
+ Dialog.AddOption("I thank you for your assistance. I shall meet with the caretaker at once.")
Dialog.Start()
if HasQuest(Player,5717) and GetQuestStep(Player,5717)==2 then
SetStepComplete(Player,5717,2)
end
+ if HasQuest(Player,5792) and GetQuestStep(Player,5792)==2 then
+ SetStepComplete(Player,5792,2)
+ end
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -69,13 +72,15 @@ end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
- AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Oakmyst Forest.",6,"\"Some people choose to adventure in the Oakmyst Forest. It's a dangerous place, so watch yourself. Here's where you can find the gates to the forest. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,749.32, -6.25, -194.2,236)
+ UpdateQuestZone(Quest,"Oakmyst Forest")
+ AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Oakmyst Forest.",15,"\"Some people choose to adventure in the Oakmyst Forest. It's a dangerous place, so watch yourself. Here's where you can find the gates to the forest. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,756.89, 10.24, -200.68,830)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've found the gates to the Oakmyst Forest.")
UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Ms. Fairlee has told me about.")
+ UpdateQuestZone(Quest,"Castleview")
AddQuestStepChat(Quest, 8, "I need to introduce myself to the Castleview Hamlet crafting trainer, Glump Marrblade.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside The Charter of the Truthbringer so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2360033)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
@@ -90,14 +95,14 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Down Below.")
UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Ms. Fairlee has told me about.")
- AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to Qeynos Harbor.",6, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11,730.60, -21.16, -124.67,236)
+ AddQuestStep(Quest, 10, "I need to locate the gates to Qeynos Harbor.",1,100, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
function Step10Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Ms. Fairlee has told me about.")
- AddQuestStepChat(Quest, 11, "I need to return to my room and ask Ms. Fairlee why I can't enter the city.", 1, 100, "I should return back to my room and ask Ms. Fairlee why the guard didn't allow me to enter into the city. Hopefully she might know why.",11,2230785)
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Ms. Fairlee why I can't enter the city.", 1, "I should return back to my room and ask Ms. Fairlee why the guard didn't allow me to enter into the city. Hopefully she might know why.",11,2230785)
AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
end
@@ -118,7 +123,7 @@ end
function Step13Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
- AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, 100,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
end
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_Graystone.lua b/server/Quests/Hallmark/welcome_to_qeynos_Graystone.lua
index d87af7677..ec1a475ac 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_Graystone.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_Graystone.lua
@@ -28,6 +28,9 @@ function Accepted(Quest, QuestGiver, Player)
if HasQuest(Player,5717) and GetQuestStep(Player,5717)==2 then
SetStepComplete(Player,5717,2)
end
+ if HasQuest(Player,5792) and GetQuestStep(Player,5792)==2 then
+ SetStepComplete(Player,5792,2)
+ end
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -62,20 +65,22 @@ end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee.")
UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee. She gave me a painting of hers to place on my walls.")
- AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about The Baubbleshire.",0)
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about Graystone Yard.",0)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
- AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Oakmyst Forest.",6,"\"Some people choose to adventure in the Oakmyst Forest. It's a dangerous place, so watch yourself. Here's where you can find the gates to the forest. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,861.01, -5.17, -203.63,235)
+ UpdateQuestZone(Quest,"Oakmyst Forest")
+ AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Oakmyst Forest.",15,"\"Some people choose to adventure in the Oakmyst Forest. It's a dangerous place, so watch yourself. Here's where you can find the gates to the forest. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,858.79, 2.16, -189.35,830)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've found the gates to the Oakmyst Forest.")
UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Ms. Fairlee has told me about.")
+ UpdateQuestZone(Quest,"Graystone Yard")
AddQuestStepChat(Quest, 8, "I need to introduce myself to the Graystone Yard crafting trainer, Dorak Everstock.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside The Stalwart Township so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2350050)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
@@ -90,7 +95,7 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Down Below.")
UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Ms. Fairlee has told me about.")
- AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to Qeynos Harbor.",6, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11,865.63, -25.47, -98.92,235)
+ AddQuestStep(Quest, 10, "I need to locate the gates to Qeynos Harbor.",1,100, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
@@ -118,7 +123,7 @@ end
function Step13Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
- AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, 100,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
end
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_Nettleville.lua b/server/Quests/Hallmark/welcome_to_qeynos_Nettleville.lua
index aea2d75c6..1881785e3 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_Nettleville.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_Nettleville.lua
@@ -28,6 +28,9 @@ function Accepted(Quest, QuestGiver, Player)
if HasQuest(Player,5717) and GetQuestStep(Player,5717)==2 then
SetStepComplete(Player,5717,2)
end
+ if HasQuest(Player,5792) and GetQuestStep(Player,5792)==2 then
+ SetStepComplete(Player,5792,2)
+ end
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -62,21 +65,23 @@ end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee.")
UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee. She gave me a painting of hers to place on my walls.")
- AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about The Baubbleshire.",0)
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about Nettleville Hovel.",0)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
- AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Peat Bog.",6,"\"Some people choose to adventure in the Peat Bog. It's a dangerous place, so watch yourself. Here's where you can find the gates to the Bog. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,576.11, -26.74, 395.69,233)
+ UpdateQuestZone(Quest,"Peat Bog")
+ AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Peat Bog.",15,"\"Some people choose to adventure in the Peat Bog. It's a dangerous place, so watch yourself. Here's where you can find the gates to the Bog. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,565.60, -27.25, 415.96,829)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've found the gates to the Peat Bog.")
UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Ms. Fairlee has told me about.")
- AddQuestStepChat(Quest, 8, "I need to introduce myself to the Nettleville crafting trainer, Nawal Tahri.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside The Elsuive Commonwealth so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2350050)
+ UpdateQuestZone(Quest,"Nettleville")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Nettleville crafting trainer, Nawal Tahri.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside The Elsuive Commonwealth so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2330044)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
@@ -90,7 +95,7 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Down Below.")
UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Ms. Fairlee has told me about.")
- AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to South Qeynos.",6, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11,669.28, -20.37, 275.44,233)
+ AddQuestStep(Quest, 10, "I need to locate the gates to South Qeynos.",1,100, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
@@ -118,7 +123,7 @@ end
function Step13Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
- AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, 100,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
end
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_Starcrest.lua b/server/Quests/Hallmark/welcome_to_qeynos_Starcrest.lua
index 237c73f48..7a50f1ee7 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_Starcrest.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_Starcrest.lua
@@ -28,6 +28,9 @@ function Accepted(Quest, QuestGiver, Player)
if HasQuest(Player,5717) and GetQuestStep(Player,5717)==2 then
SetStepComplete(Player,5717,2)
end
+ if HasQuest(Player,5792) and GetQuestStep(Player,5792)==2 then
+ SetStepComplete(Player,5792,2)
+ end
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -48,7 +51,7 @@ end
function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 3, "I've placed the table and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 3, "I've placed the table and spoken with the caretaker.")
- AddQuestStepChat(Quest, 4, "Speak with the Banker Orudormo in Nettleville Hovel.", 1, "Ms. Fairlee has informed me that I have a bank account waiting for me. I need to speak with the Banker Caroline to open the account.",11,2340031)
+ AddQuestStepChat(Quest, 4, "Speak with the Banker Orudormo in Starcrest Commune.", 1, "Ms. Fairlee has informed me that I have a bank account waiting for me. I need to speak with the Banker Caroline to open the account.",11,2340031)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
end
@@ -62,20 +65,22 @@ end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee.")
UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee. She gave me a painting of hers to place on my walls.")
- AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about The Baubbleshire.",0)
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about Starcrest Commune.",0)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
- AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Peat Bog.",6,"\"Some people choose to adventure in the Peat Bog. It's a dangerous place, so watch yourself. Here's where you can find the gates to the Bog. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,769.35, -26.47, 360.3,234)
+ UpdateQuestZone(Quest,"Peat Bog")
+ AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Peat Bog.",15,"\"Some people choose to adventure in the Peat Bog. It's a dangerous place, so watch yourself. Here's where you can find the gates to the Bog. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,755.67, -26.52, 372.22,829)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've found the gates to the Peat Bog.")
UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Ms. Fairlee has told me about.")
+ UpdateQuestZone(Quest,"Starcrest Commune")
AddQuestStepChat(Quest, 8, "I need to introduce myself to the Starcrest crafting trainer, Erian Seaver.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside The Luminary Cache so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2340036)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
@@ -90,7 +95,7 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Down Below.")
UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Ms. Fairlee has told me about.")
- AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to South Qeynos.",6, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11,704.68, -20.38, 264.64,234)
+ AddQuestStep(Quest, 10, "I need to locate the gates to South Qeynos.",1,100, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
@@ -118,7 +123,7 @@ end
function Step13Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
- AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, 100,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
end
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_WillowWood.lua b/server/Quests/Hallmark/welcome_to_qeynos_WillowWood.lua
index 4b5a9d7a0..8eedee031 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_WillowWood.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_WillowWood.lua
@@ -28,6 +28,9 @@ function Accepted(Quest, QuestGiver, Player)
if HasQuest(Player,5717) and GetQuestStep(Player,5717)==2 then
SetStepComplete(Player,5717,2)
end
+ if HasQuest(Player,5792) and GetQuestStep(Player,5792)==2 then
+ SetStepComplete(Player,5792,2)
+ end
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -62,21 +65,23 @@ end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee.")
UpdateQuestTaskGroupDescription(Quest, 5, "I've returned to my room and spoken with caretaker Fairlee. She gave me a painting of hers to place on my walls.")
- AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about The Baubbleshire.",0)
+ AddQuestStep(Quest, 6, "Open your inventory. \"Place\" your new painting and then speak with the caretaker.", 1,100, "Caretake Fairlee has suggested that I place the painting on my walls to liven up the place. I should place the painting and then ask her about The Willow Wood.",0)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
UpdateQuestTaskGroupDescription(Quest, 6, "I've placed the painting and spoken with the caretaker.")
- AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Forest Ruins.",6,"\"Some people choose to adventure in the Forest Ruins. It's a dangerous place, so watch yourself. Here's where you can find the gates to the ruins. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,883.43, -15.20, -584.80,237)
+ UpdateQuestZone(Quest,"Forest Ruins")
+ AddQuestStepZoneLoc(Quest, 7, "I need to visit the gates to the Forest Ruins.",15,"\"Some people choose to adventure in the Forest Ruins. It's a dangerous place, so watch yourself. Here's where you can find the gates to the ruins. I'll show you a few other places after you take a look at the gates.\" - Ms. Fairlee", 11,922.51, -20.99, -562.5,827)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've found the gates to the Forest Ruins.")
UpdateQuestTaskGroupDescription(Quest, 7, "I've visisted one of four locations Ms. Fairlee has told me about.")
- AddQuestStepChat(Quest, 8, "I need to introduce myself to the Willow Wood crafting trainer, Oseof Crestryder.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside the Wayfarer's Stockpilers so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2380025)
+ UpdateQuestZone(Quest,"Willow Wood")
+ AddQuestStepChat(Quest, 8, "I need to introduce myself to the Willow Wood crafting trainer, Oseof Crestryder.",1,"\"Not all coin gained by refugees comes from battling vermin. Crafting is a great opportunity for some refugees to become skilled in a tradeskill. You should meet with the crafting trainer outside the Wayfarer's Stockpilers so you become familiar with where to begin a tradeskill if you so desire.\" - Ms. Fairlee", 11,2370008)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
@@ -90,14 +95,14 @@ end
function Step9Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 9, "I've found the enterence to the Down Below.")
UpdateQuestTaskGroupDescription(Quest, 9, "I've visisted three of four locations Ms. Fairlee has told me about.")
- AddQuestStepZoneLoc(Quest, 10, "I need to locate the gates to the Elddar Grove.",6, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11,810.64, -21.30, -565.55,237)
+ AddQuestStep(Quest, 10, "I need to locate the gates to the Elddar Grove.",1,100, "\"Even though only citizens can travel into the city proper, it would be rude not to at least show where the gates to Qeynos are. I'll lead you over to where you can find the gates into the city. I should be done with fixing up the place by the time you get back.\" - Ms. Fairlee", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
end
function Step10Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 10, "I've visited the inner city gates but was not allowed access.")
UpdateQuestTaskGroupDescription(Quest, 10, "I've visisted all four locations Ms. Fairlee has told me about.")
- AddQuestStepChat(Quest, 11, "I need to return to my room and ask Ms. Fairlee why I can't enter the city.", 1, 100, "I should return back to my room and ask Ms. Fairlee why the guard didn't allow me to enter into the city. Hopefully she might know why.",11,2230785)
+ AddQuestStepChat(Quest, 11, "I need to return to my room and ask Ms. Fairlee why I can't enter the city.", 1, "I should return back to my room and ask Ms. Fairlee why the guard didn't allow me to enter into the city. Hopefully she might know why.",11,2230785)
AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
end
@@ -118,7 +123,7 @@ end
function Step13Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
UpdateQuestTaskGroupDescription(Quest, 13, "I've spoken with Marshal Glorfel and have been told how to become a citizen.")
- AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1, 100,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
+ AddQuestStepChat(Quest, 14, "Judge the traitors individually and prove your loyalty to Qeynos.", 1,"Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them.",11,22101350)
AddQuestStepCompleteAction(Quest, 14, "QuestComplete")
end
diff --git a/server/Quests/Hallmark/welcome_to_qeynos_citizen.lua b/server/Quests/Hallmark/welcome_to_qeynos_citizen.lua
index 9d4b8a219..ec29ece71 100755
--- a/server/Quests/Hallmark/welcome_to_qeynos_citizen.lua
+++ b/server/Quests/Hallmark/welcome_to_qeynos_citizen.lua
@@ -2,17 +2,80 @@
Script Name : Quests/Hallmark/welcome_to_qeynos_citizen.lua
Script Author : Dorbin
Script Date : 2022.10.31 12:10:43
- Script Purpose :
+ Script Purpose : Post Qeynos Citizenship Book Quest
Zone : Hallmark
- Quest Giver:
+ Quest Giver: Welcome to Qeynos, Citizen!
Preceded by: None
Followed by:
+
--]]
function Init(Quest)
AddQuestStepChat(Quest, 1, "Mervos Stadrin in North Qeynos will tell me about collecting objects in Norrath.", 1, "I should read through my Qeynos' citizenship booklet.", 11, 2220015)
- AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ AddQuestStepZoneLoc(Quest, 2, "I should pay my respects at the Claymore Plaza in North Qeynos.",10, "I should read through my Qeynos' citizenship booklet.", 11,292.73, -18.10, -20.88,222)
+ AddQuestStepChat(Quest, 3, "I must see Sage Indis Surion in South Qeynos.", 1, "I should read through my Qeynos' citizenship booklet.", 11, 2310067)
+ AddQuestStepZoneLoc(Quest, 4, "I should look inside the Tower of Vhalen in Antonica.",10, "I should read through my Qeynos' citizenship booklet.", 11,-1300, 38, 45,12)
+ AddQuestStepChat(Quest, 5, "I should speak with Taskmaster Lynette in the lighthouse at Coldwind Point in Antonica.", 1, "I should read through my Qeynos' citizenship booklet.", 11, 121256)
+ AddQuestStepChat(Quest, 6, "I must speak with Hwal Rucksif, a dwarf in Antonica.", 1, "I should read through my Qeynos' citizenship booklet.", 11, 120197)
+ AddQuestStepChat(Quest, 7, "I should speak with Knight-Lieutenant Alesso near the castle in North Qeynos.", 1, "I should read through my Qeynos' citizenship booklet.", 11, 120083)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've learned about collections from Mervos Stadrin.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have seen the Claymore Plaza.")
+CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have visited the Sage who sells books in Qeynos.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I am sure to find something interesting in the Tower.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I've spoken with the Taskmaster.")
+CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I have spoken with Hwal Rucksif.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I've spoken with Knight-Lieutenant Alesso.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5766, 1) and QuestStepIsComplete(Player, 5766, 2) and QuestStepIsComplete(Player, 5766, 3) and QuestStepIsComplete(Player, 5766, 4) and QuestStepIsComplete(Player, 5766, 5) and QuestStepIsComplete(Player, 5766, 6) and QuestStepIsComplete(Player, 5766, 7) then
+
+ UpdateQuestTaskGroupDescription(Quest, 1, "I should read the Conclusion of the booklet.")
+ AddQuestStep(Quest, 8, "I've one last page to read in my citizenship book.", 1,100, "I've enjoyed reading about different ways I may be useful to Qeynos.",2500)
+ AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
+ end
end
function Accepted(Quest, QuestGiver, Player)
@@ -29,8 +92,8 @@ end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 1, "I've learned about collections from Mervos Stadrin.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I should read the Conclusion of the booklet.")
+ UpdateQuestStepDescription(Quest, 8, "Long live Antonia Bayle!")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Being a citizen has many responsibilities for me.")
UpdateQuestDescription(Quest, "While I might have learned these things on my own, it's thoughtful of the Queen to provide this information to the citizens of Qeynos. Long live Antonia Bayle!")
GiveQuestReward(Quest, Player)
@@ -38,6 +101,20 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- QuestComplete(Quest, QuestGiver, Player)
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ QuestComplete(Quest, QuestGiver, Player)
end
end
\ No newline at end of file
diff --git a/server/Quests/Hallmark/willow_wood_citizenship_task.lua b/server/Quests/Hallmark/willow_wood_citizenship_task.lua
index ed21c78b4..a761caace 100755
--- a/server/Quests/Hallmark/willow_wood_citizenship_task.lua
+++ b/server/Quests/Hallmark/willow_wood_citizenship_task.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Forest Ruins.", 5, 30, "The local ruins have been seeded with tokens for the citizens of the Willow Wood to gather. These tokens may be found on any creatures in the Forest Ruins.", 1322, 8270002 ,8270003 ,8270005,8270006,8270007,8270008,8270009,8270010,8270011,8270012,8270013,8270014,8270015,8270016,8270017,8270018,8270019,8270020,8270021,8270024,8270025,8270026,8270027,8270028,8270031,8270034,8270045,8270056,8270058,8270059,8270060,8270061,8270062,8270063,8270064,8270065,8270075,8270076)
+ AddQuestStepKill(Quest, 1, "Gather five tokens from the creatures in the Forest Ruins.", 5, 34, "The local ruins have been seeded with tokens for the citizens of the Willow Wood to gather. These tokens may be found on any creatures in the Forest Ruins.", 1322, 8270002 ,8270003 ,8270005,8270006,8270007,8270008,8270009,8270010,8270011,8270012,8270013,8270014,8270015,8270016,8270017,8270018,8270019,8270020,8270021,8270024,8270025,8270026,8270027,8270028,8270031,8270034,8270045,8270056,8270058,8270059,8270060,8270061,8270062,8270063,8270064,8270065,8270075,8270076)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Forest Ruins")
end
@@ -43,8 +43,8 @@ function Step2Complete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I've entered the citizenship trial.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've entered the citizenship trial.")
- UpdateQuestZone(Quest,"Qeynos Citizenship Trial Chamber")
- AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1322, 22101350)
+ UpdateQuestZone(Quest,"Citizenship Trial Chamber")
+ AddQuestStepChat(Quest, 3, "I need to speak with Marshal Glorfel regarding my Citizenship Trial.", 1, "I need to speak with Marshal Glorfel regarding my Citizenship Trial", 1350, 8250009)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -54,52 +54,29 @@ function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 3, "I've entered the citizenship trial.")
AddQuestStepChat(Quest, 4, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101351)
- AddQuestStepChat(Quest, 5, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101354)
- AddQuestStepChat(Quest, 6, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101353)
- AddQuestStepChat(Quest, 7, "I need to judge the traitors.",1, "Marshal Glorfel has tasked me with rendering judgment upon some treasonous residents in order to gain citizenship. He has pointed out that there are those who would betray our great city to that wretch Lucan. To prove myself, I will have to render final judgment on all of them. ",0,22101352)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I've judged the Freeport mole.")
- CheckProgress(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've judged the traitors.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have dealt with the traitors")
+ AddQuestStepChat(Quest, 5, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 8250009)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
-function Step5Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 5, "I've judged the disgruntled refugee.")
-CheckProgress(Quest, QuestGiver, Player)
-end
-
-
-function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "I've judged the Freeport partisan.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function Step7Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 7, "I've judged Tavithi N'sari.")
- CheckProgress(Quest, QuestGiver, Player)
-end
-
-function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, 5723, 4) and QuestStepIsComplete(Player, 5723, 5) and QuestStepIsComplete(Player, 5723, 6) and QuestStepIsComplete(Player, 5723, 7)then
- UpdateQuestTaskGroupDescription(Quest, 7, "I have dealt with the traitors")
- AddQuestStepChat(Quest, 8, "I need to return to Marshal Glorfel.", 1, "I must return to Marshal Glorfel to let him know the deed is done.",0, 22101350)
- AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
- end
-end
-
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 8, "Qeynos Citizenship Granted")
- UpdateQuestTaskGroupDescription(Quest, 8, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
+ UpdateQuestStepDescription(Quest, 5, "Qeynos Citizenship Granted")
+ UpdateQuestTaskGroupDescription(Quest, 5, "I returned to Marshal Glorfel and he has granted me Qeynos citizenship.")
UpdateQuestDescription(Quest, "The task list is completed and you may now apply to become a citizen of the city of Qeynos.")
GiveQuestReward(Quest, Player)
+alignment = GetAlignment(Player)
+
+if alignment ~= 1 then
+SetAlignment(Player, 1)
+end
end
@@ -114,12 +91,6 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 4 then
Step4Complete(Quest, QuestGiver, Player)
elseif Step == 5 then
- Step5Complete(Quest, QuestGiver, Player)
- elseif Step == 6 then
- Step6Complete(Quest, QuestGiver, Player)
- elseif Step == 7 then
- Step7Complete(Quest, QuestGiver, Player)
- elseif Step == 8 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/IsleofRefuge/scouting_the_goblin_camp.lua b/server/Quests/IsleofRefuge/scouting_the_goblin_camp.lua
index 581ceacfe..7f6f43ebf 100755
--- a/server/Quests/IsleofRefuge/scouting_the_goblin_camp.lua
+++ b/server/Quests/IsleofRefuge/scouting_the_goblin_camp.lua
@@ -13,7 +13,7 @@ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepLocation(Quest, 1, "I need to scout the goblin camp.", 12, "I need to scout out the main goblin camp and gather information for the outpost. If I can sneak past the brutes and manage to get close enough to their central camps in the north I should be able to get the information I need.", 11, 195.26, -0.68, -188.07)
+ AddQuestStepZoneLoc(Quest, 1, "I need to scout the goblin camp.", 14, "I need to scout out the main goblin camp and gather information for the outpost. If I can sneak past the brutes and manage to get close enough to their central camps in the north I should be able to get the information I need.", 11, 195.26, -0.68, -188.07,325)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
@@ -38,6 +38,7 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I scouted the goblin camp.")
UpdateQuestTaskGroupDescription(Quest, 1, "I gathered information about the goblins' camp.")
+ SendPopUpMessage(Player,"I have scouted the goblin camp.",255,255,255)
AddQuestStepChat(Quest, 2, "I need to give the information to Vladiminn.", 1, "I should report back to Vladiminn with the information I've gathered on the goblin camp.", 11, 3250016)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
diff --git a/server/Quests/IsleofRefuge/striking_back_at_the_goblins_fighter.lua b/server/Quests/IsleofRefuge/striking_back_at_the_goblins_fighter.lua
index fa844687a..c27a8660a 100755
--- a/server/Quests/IsleofRefuge/striking_back_at_the_goblins_fighter.lua
+++ b/server/Quests/IsleofRefuge/striking_back_at_the_goblins_fighter.lua
@@ -10,6 +10,7 @@
Followed by: Removing the Orc Menace
--]]
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to collect 4 Flint Head Spears.", 4, 80, "I need to kill Gruttooth Brutes to collect 4 Flint Head Spears", 287, 3250124)
diff --git a/server/Quests/IsleofRefuge/striking_back_at_the_goblins_mage.lua b/server/Quests/IsleofRefuge/striking_back_at_the_goblins_mage.lua
index de863455e..1fb1da748 100755
--- a/server/Quests/IsleofRefuge/striking_back_at_the_goblins_mage.lua
+++ b/server/Quests/IsleofRefuge/striking_back_at_the_goblins_mage.lua
@@ -10,6 +10,7 @@
Followed by: Attack on the Orc Leader
--]]
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to collect 4 Goblin Blood from Gruttooth Brutes.", 4, 70, "I need to collect four goblin blood samples from brutes found in the goblin village on the northwestern part of the island and return them to Mizan.", 178, 3250134,3250123,3250124)
@@ -17,6 +18,7 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
+ SkillCheck(QuestGiver,Player)
FaceTarget(QuestGiver, Player)
Dialog.New(QuestGiver, Player)
Dialog.AddDialog("Very good. The village is located in the northwest portion of the isle. The others should already be on their way to the village. You are to provide magical support for the assault. The sooner you return with the samples, the sooner my teacher can begin to work on the warding spells.")
diff --git a/server/Quests/IsleofRefuge/striking_back_at_the_goblins_scout.lua b/server/Quests/IsleofRefuge/striking_back_at_the_goblins_scout.lua
index 50e3aec7f..902c70b5c 100755
--- a/server/Quests/IsleofRefuge/striking_back_at_the_goblins_scout.lua
+++ b/server/Quests/IsleofRefuge/striking_back_at_the_goblins_scout.lua
@@ -10,6 +10,7 @@
Followed by: Hunting the Orcish Leader
--]]
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to gather four wolf harnesses and return to Vladiminn.", 4, 70, "My part in the raid on the main goblin camp will consist of slaying the trained battle and war wolves that the goblins keep there. Vladiminn would like me to return four wolf harnesses to him.", 286, 3250128,3250129)
diff --git a/server/Quests/LongshadowAlley/a_dramatic_performance.lua b/server/Quests/LongshadowAlley/a_dramatic_performance.lua
index b8e83a64b..c89f58bd9 100755
--- a/server/Quests/LongshadowAlley/a_dramatic_performance.lua
+++ b/server/Quests/LongshadowAlley/a_dramatic_performance.lua
@@ -11,6 +11,7 @@
Followed by : A Shady Clearing
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "Talk to Pavo Nightfire in Beggar's Court.", 1, "Talk to Pavo Nightfire in Beggar's Court, in front of a building to the east of the inn.", 11, 1370048)
@@ -18,20 +19,28 @@ function Init(Quest)
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I delivered the message to Pavo Nightfire.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I delivered the message to Pavo Nightfire in Beggar's Court.")
+ UpdateQuestStepDescription(Quest, 1, "I have found and spoken to Pavo Nightfire.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "Pavo seemed upset by that message. I would have thought he would have been happy by it, considering how much the performance moved Maliz's friend.")
- AddQuestStepChat(Quest, 2, "I should return to Maliz T`Raan.", 1, "I should return to Maliz T`Raan in Longshadow Alley.", 11, 1380030)
+ AddQuestStepChat(Quest, 2, "I should return to Imnat and let him know that Pavo Nightfire can do his part now.", 1, "Pavo has asked me to return a message to Maliz. The message is that the understudies will be performing tomorrow night, except Maliz needs to set up the stage first.", 11, 1380030)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
+
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "I have returned and Maliz has entrusted me with the next task.")
+ UpdateQuestStepDescription(Quest, 2, "I delivered the message to Pavo Nightfire.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I delivered the message to Pavo Nightfire in Beggar's Court.")
+ UpdateQuestDescription(Quest, "Maliz seemed a lot different than I was expecting. He accepted the message, and suggested I talk to his friend, Inmat, for some more employment. I'm curious as to what this is all about.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'm not certain of your motives, but nonetheless, I will entrust you with this message. Go to the human's district and look for a man named Pavo. Tell him the acting troupe's performance brought my friend to tears. I need to know his response. For your sake, I hope you return quickly...")
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("Touching... I'll see he get's this.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/a_lesson_to_learn.lua b/server/Quests/LongshadowAlley/a_lesson_to_learn.lua
index 156ec46d3..9cbab39bd 100755
--- a/server/Quests/LongshadowAlley/a_lesson_to_learn.lua
+++ b/server/Quests/LongshadowAlley/a_lesson_to_learn.lua
@@ -14,7 +14,7 @@
local SHADOWS_KISS = 12113
function Init(Quest)
- AddQuestStepObtainItem(Quest, 1, "I need to retrieve a few clumps of Shadows' Kiss for Alders.", 5, 100, "Aldera has sent me to collect Shadows' Kiss - a small flowery fungus near the sewer.", 318, SHADOWS_KISS)
+ AddQuestStepObtainItem(Quest, 1, "I need to retrieve a few clumps of Shadows' Kiss for Aldera.", 5, 100, "Aldera has sent me to collect Shadows' Kiss - a small flowery fungus near the sewer.", 318, SHADOWS_KISS)
AddQuestStepCompleteAction(Quest, 1, "Step1_Complete_GotFungus")
end
diff --git a/server/Quests/LongshadowAlley/a_shady_clearing.lua b/server/Quests/LongshadowAlley/a_shady_clearing.lua
index 2097bb1af..4c9e2b11f 100755
--- a/server/Quests/LongshadowAlley/a_shady_clearing.lua
+++ b/server/Quests/LongshadowAlley/a_shady_clearing.lua
@@ -10,28 +10,36 @@
Preceded by : A Dramatic Performance
Followed by : None
--]]
-
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill 10 diseased Ratonga.", 10, 100, "Kill 10 diseased Ratonga; they are in the Thieves' Way, near the entrances.", 611, 1540002, 1540021, 1540022, 1540024, 1540028, 1540072, 1540073)
+ AddQuestStepKill(Quest, 1, "I must kill ten diseased ratonga", 10, 100, " I need to venture to the sewers and kill ten diseased ratonga", 611, 1540002, 1540021, 1540022, 1540024, 1540028, 1540072, 1540073)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Thieves Way")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I killed the Ratonga.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I killed the Ratonga in the Thieves' Way.")
-
+ UpdateQuestStepDescription(Quest, 1, "I have killed ten diseased ratonga.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed ten of the diseased ratonga and made sure the way is clear for Imnat's treasure.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
AddQuestStepChat(Quest, 2, "I should return to Imnat D`Vren.", 1, "I should return to Imnat D`Vren in Longshadow Alley.", 11, 1380031)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "I killed the diseased Ratonga and returned to Imnat for a nice reward.")
+ UpdateQuestStepDescription(Quest, 2, "I've informed Imnat that sewers have less diseased ratonga.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've informed Imnat that sewers have a few less diseased ratonga to get in the way.")
+ UpdateQuestDescription(Quest, "I've cleared the way for Imnat's treasure to show up. I'm not sure what this is all about, but it feels rather important. Imnat said that in time I may be told more about how this treasure will 'liberate' the Teir'Dal from Lucan's grasp.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("We're giving Pavo Nightfire another chance to make up for his past failure. You killed the raiders hired by Pavo to ensure an invaluable treasure made it safely into our hands. His attempt met with dismal failure, but this will not dissuade us from trying to transport the treasure again. Before we attempt another delivery, we need to clear the sewers of the diseased refugees who live there. Go and kill some of these ailing peasants and return.")
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("For treasure's sake, I will purge the sewers of this refuse!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/a_special_perfume.lua b/server/Quests/LongshadowAlley/a_special_perfume.lua
index dfdd32fd9..aed8f46e9 100755
--- a/server/Quests/LongshadowAlley/a_special_perfume.lua
+++ b/server/Quests/LongshadowAlley/a_special_perfume.lua
@@ -10,27 +10,36 @@
Preceded by : None
Followed by : For That Special Someone
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill small scorpions until I find a large scent gland.", 1, 15, "I need to travel to the Sunken City and gather a large scent gland from a small scorpion.", 94, 1240016)
+ AddQuestStepKill(Quest, 1, "I must kill puny squalid vermin until I find a large scent gland.", 1, 15, "I need to travel to the Ruins and gather a large scent gland from a small rodent.", 94, 8420017)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Ruins")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have found a large scent gland.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I've gathered a large scent gland from the scorpion.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've gathered a large scent gland from the squalid vermin.")
AddQuestStepChat(Quest, 2, "I should return to Zelina.", 1, "I should return to Zelina to deliver the gland.", 11, 1380033)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Zelina has given me some coin for gathering the scent gland. She should have enough to be able to make that perfume she was planning on making. If she wants to make a perfume that smell like wine, I don't see why she doesn't just use wine. Go figure.")
+ UpdateQuestStepDescription(Quest, 2, "I've given the gland to Zelina.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given the gland to Zelina.")
+ UpdateQuestDescription(Quest, "Zelina has given me some coin for gathering the scent gland. She should have enough to be able to make that perfume she was planning on making. If she wants to make a perfume that smell like wine, I don't see why she doesn't just use wine. Go figure.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Good. Make yourself useful and find the gland. I'll gather the rest of the ingredients from the alchemist and await your return. Do NOT return to me unless you found a complete gland. I will settle for nothing less!")
+ PlayFlavor(QuestGiver, "", "", "nod", 0, 0, Player, 0)
+ Dialog.AddOption("Understood.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/dead_mans_eyes.lua b/server/Quests/LongshadowAlley/dead_mans_eyes.lua
index 3ea779671..ec21ef0a2 100755
--- a/server/Quests/LongshadowAlley/dead_mans_eyes.lua
+++ b/server/Quests/LongshadowAlley/dead_mans_eyes.lua
@@ -10,6 +10,7 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -21,17 +22,25 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have collected two zombie eyes")
UpdateQuestTaskGroupDescription(Quest, 1, "I have found a pair of zombie eyes from two different zombies.")
- AddQuestStepChat(Quest, 2, "I should return to Divek.", 1, "I should return to Divek.", 11, 1380029)
+ AddQuestStepChat(Quest, 2, "I should return to Divek.", 1, "I will need to now bring these eyes back to Divek for my payment.", 11, 1380029)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
+
+
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Divek has paid me for the eyes that he claims will be used to look for his brother's soul. I have been warned not to interrupt his ritual. At least I was paid for the job.")
+ UpdateQuestStepDescription(Quest, 2, "I've given Divek the two zombie eyes")
+ UpdateQuestTaskGroupDescription(Quest,2, "I have found a pair of zombie eyes from two different zombies.")
+ UpdateQuestDescription(Quest, "Divek has paid me for the eyes that he claims will be used to look for his brother's soul. I have been warned not to interrupt his ritual. At least I was paid for the job.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I need a pair of eyes from a zombie's skull. The eyes will allow me to peer into the spirit realm and locate my brother's soul. Go to the graveyard and extract one pair of zombie eyes. They must be whole and intact, with minimal decay.")
+ Dialog.AddOption("Finding your brother's spirit better be worth it!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/for_that_special_someone.lua b/server/Quests/LongshadowAlley/for_that_special_someone.lua
index 685793ee3..1dc1a8ec2 100755
--- a/server/Quests/LongshadowAlley/for_that_special_someone.lua
+++ b/server/Quests/LongshadowAlley/for_that_special_someone.lua
@@ -10,6 +10,7 @@
Preceded by : A Special Perfume
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -21,17 +22,24 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have given the bottle to T'Val the banker.")
UpdateQuestTaskGroupDescription(Quest, 1, "I gave her husband the wine, which he enjoyed. He seemed worried that his wife was outside for some reason.")
- AddQuestStepChat(Quest, 2, "I should return to Zelina T`Von.", 1, "I should return to Zelina T`Von.", 11, 1380033)
+ AddQuestStepChat(Quest, 2, "I should return to Zelina T`Von.", 1, "I should return to Zelina and let her know he received his gift.", 11, 1380033)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've informed Zelina that her husband enjoyed the wine.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've informed Zelina that her husband enjoyed the wine.")
UpdateQuestDescription(Quest, "It seems that Zelina isn't married to T'val, and she tricked me into giving him some poisoned wine. I'm not sure what's going on between the two, but it looks like I just got myself involved in something more than I had expected.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("My partner is the banker for this horrid district, so you should find him at the bank--unless he's with that tram ... trainee, I mean. Give him this wine, and tell him I hope he enjoys it. When you return, I'll give you some coin.")
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player, 0)
+ Dialog.AddOption("Alright. I'll make sure the banker gets this wine.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/information_gathering_from_a_fishmonger.lua b/server/Quests/LongshadowAlley/information_gathering_from_a_fishmonger.lua
index 755ab8806..3c444370b 100755
--- a/server/Quests/LongshadowAlley/information_gathering_from_a_fishmonger.lua
+++ b/server/Quests/LongshadowAlley/information_gathering_from_a_fishmonger.lua
@@ -10,11 +10,13 @@
Preceded by : Ogre Watch
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "I need to speak with Tilzak in the Sunken City.", 1, "Tilzak apparently is the local fishmonger. I need to see if I can get him to tell me the information I need.", 11, 1240026)
+ AddQuestStepChat(Quest, 1, "I need to speak with Tilzak in the Longshadow Alley.", 1, "Tilzak apparently is the local fishmonger. I need to see if I can get him to tell me the information I need.", 11, 1240026,1380131)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Longshadow Alley")
end
function Step1Complete(Quest, QuestGiver, Player)
@@ -26,12 +28,20 @@ function Step1Complete(Quest, QuestGiver, Player)
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have told Orian what little I was able to find out.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Tilzak didn't tell me the information, but he apparently is far more than he appears to be.")
+
UpdateQuestDescription(Quest, "Orian D'Rak has decided to slow down his information gathering efforts. He will continue with his information gathering personally for now. He did reward me with some coin for my efforts, though.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I need you to find Tilzak N'Lim. He lives close to here and is nothing more than a simple fishmonger! What a disgrace! A Teir'Dal performing the common chores of a slave! From the new information, I am wondering if Tilzak is as simple as he appears. Ask him for directions to \"the meeting place\" then return.")
+-- Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/qst_kylanith_hail.mp3", 387692981, 2731095766)
+ Dialog.AddOption("I'll make him squirm to get the information.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/magical_retribution.lua b/server/Quests/LongshadowAlley/magical_retribution.lua
index c2eb86f67..756e08e71 100755
--- a/server/Quests/LongshadowAlley/magical_retribution.lua
+++ b/server/Quests/LongshadowAlley/magical_retribution.lua
@@ -11,27 +11,30 @@
Followed by : None
--]]
+ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must kill ten Black Magis insurgents", 10, 100, "I should travel to the Sprawl and kill those Black Magi. I won't be done until I've killed at least ten of them.", 611, 1260012)
- AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"Sprawl")
end
-function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I have killed the Black Magis insurgents")
- UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the mages like I said I would.")
-
- AddQuestStepChat(Quest, 2, "I should return to Lotni.", 1, "I should return to Lotni in Longshadow Alley.", 11, 1380009)
- AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
-end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed the Black Magis insurgents")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the mages like I said I would.")
UpdateQuestDescription(Quest, "I have killed a number of the Black Magi. They appear to have taught a number of their kin how to use magic, so they're not all dead. I'll decide whether to kill some more or just continue on. Either way, at least ten of them will no longer practice the forbidden magics. Neither will the last one need the magical necklace it possessed.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Hmmm ... yes, at least you could prevent a few of those beasts from learning the secrets of the ancient book. It won't solve the problem, but it's a fitting lesson -- if they play with fire, then they should expect to be burned. Go to the sprawl and kill as many ratonga as you can find.")
+ PlayFlavor(QuestGiver,"","","ponder",0,0,Player)
+-- Dialog.AddVoiceover("voiceover/english/standard_dark_elf_female/fprt_hood05/quests/lotniklria/lotni_x2_accept.mp3", 1332546096, 2822860601) Missing VO Keys
+ Dialog.AddOption("I'll see it done.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -44,8 +47,6 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- Step1Complete(Quest, QuestGiver, Player)
- elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/LongshadowAlley/no_rivals_for_yarana_part_i.lua b/server/Quests/LongshadowAlley/no_rivals_for_yarana_part_i.lua
index 9b0b2c786..321f910b2 100755
--- a/server/Quests/LongshadowAlley/no_rivals_for_yarana_part_i.lua
+++ b/server/Quests/LongshadowAlley/no_rivals_for_yarana_part_i.lua
@@ -3,7 +3,7 @@
Script Purpose : Handles the quest, "No Rivals For Yarana"
Script Author : torsten
Script Date : 18.07.2022
- Script Notes : later this quest was splitted up into 3 Parts
+ Script Notes :
Zone : Longshadow Alley
Quest Giver : Yarana D'Ven
@@ -11,54 +11,71 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Destroy 8 filthy moccasins.", 8, 100, "I need to go to the Serpent Sewers and destroy 8 filthy moccasins.", 611, 1550002, 1550039)
+ AddQuestStepKill(Quest, 1, "I have to kill eight filthy moccasins.", 8, 100, "I need to go to the Serpent Sewers and destroy 8 filthy moccasins.", 611, 1550002, 1550039)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Serpent Sewer")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I killed the filthy moccasins.")
-
- AddQuestStepChat(Quest, 2, "I should return to Yarana.", 1, "I should return to Yarana in Longshadow Alley.", 11, 1380028)
+ UpdateQuestStepDescription(Quest, 1, "I've killed the filthy moccasins.")
+ UpdateQuestTaskGroupDescription(Quest,1,"I've killed the filthy moccasins Yarana wanted me to destroy.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
+
+ AddQuestStepChat(Quest, 2, "I should return to Yarana.", 1, "I should return to Yarana in Longshadow Alley and inform her of my progress.", 11, 1380028)
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
end
function Step2Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 2, "I returned to Yarana in Longshadow Alley.")
+ UpdateQuestStepDescription(Quest, 2, "I spoke with Yarana D'Ven.")
+ UpdateQuestZone(Quest,"Fallen Gate")
- AddQuestStepKill(Quest, 3, "Destroy 7 shadow lurkers.", 7, 100, "I need search Fallen Gate for seven slime sacs and destroy them.", 611, 1190001)
+ AddQuestStepKill(Quest, 3, "Destroy 7 slime sacs.", 7, 100, "Now Yarana wants me to destroy seven slime sacs in Fallen Gate.", 611, 1190001)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
function Step3Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 3, "I killed the shadow lurkers.")
-
- AddQuestStepChat(Quest, 4, "I should return to Yarana.", 1, "I should return to Yarana.", 11, 1380028)
+ UpdateQuestStepDescription(Quest, 3, "I killed the slime sacs.")
+ UpdateQuestTaskGroupDescription(Quest,2,"I've killed the slime sacs Yarana wanted me to destroy.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
+
+ AddQuestStepChat(Quest, 4, "I should return to Yarana.", 1, "I should return to Yarana in Longshadow Alley and inform her of my progress.", 11, 1380028)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 4, "I returned to Yarana in Longshadow Alley.")
+ UpdateQuestStepDescription(Quest, 4, "I've returned to Yarana and informed her of my deeds.")
+ UpdateQuestZone(Quest,"Fallen Gate")
- AddQuestStepKill(Quest, 5, "Destroy two suspended watchers.", 2, 100, "Go back to Fallen Gate and destroy two suspended watchers.", 611, 1190029, 1190030)
+ AddQuestStepKill(Quest, 5, "Destroy two suspended watchers.", 2, 100, "Yarana wants me to get rid of two suspended watchers.", 611, 1190029, 1190030)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I killed two suspended watchers in Fallen Gate.")
-
- AddQuestStepChat(Quest, 6, "I should return to Yarana.", 1, "I should return to Yarana to collect my reward.", 11, 1380028)
+ UpdateQuestTaskGroupDescription(Quest,3,"I've killed the suspended watchers Yarana wanted me to destroy.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
+ AddQuestStepChat(Quest, 6, "I should return to Yarana.", 1, "I should return to Yarana in Longshadow Alley and inform her of my progress.", 11, 1380028)
AddQuestStepCompleteAction(Quest, 6, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "I completed all the tasks for Yarana and received a nice silver ring.")
+ UpdateQuestStepDescription(Quest, 6, "I've returned to Yarana and informed her of my deeds.")
+ UpdateQuestTaskGroupDescription(Quest,3,"Yarana will deal directly with her rival, but I've done what she asked.")
+ UpdateQuestDescription(Quest, "Yarana will deal directly with her rival, but I've done what she asked. She even gave me a reward, which seemed unusual, but I'm not complaining.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I cannot risk being overheard. Come closer and I will whisper to you what I need. You must write these instructions down in your journal. Do what I say, and I will reward you.")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven001.mp3",4193738982,2153468807)
+ PlayFlavor(QuestGiver, "","","snicker",0,0, Player)
+ Dialog.AddOption("Fine. Here is my journal. I'll see what I can do.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/ogre_watch.lua b/server/Quests/LongshadowAlley/ogre_watch.lua
index f6a80e43b..6c204aba7 100755
--- a/server/Quests/LongshadowAlley/ogre_watch.lua
+++ b/server/Quests/LongshadowAlley/ogre_watch.lua
@@ -1,7 +1,7 @@
--[[
Script Name : ogre_watch.lua
Script Purpose : Handles the quest, "Ogre Watch"
- Script Author : torsten
+ Script Author : torsten/Dorbin
Script Date : 18.07.2022
Script Notes :
@@ -10,28 +10,30 @@
Preceded by : None
Followed by : Information Gathering From a Fishmonger
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to speak with Azreana", 1, "I need to deliver this package to Azreana.", 11, 1350030)
- AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"Stonestair Byway")
end
-function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I have spoken with Azreana")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have delivered the package to Azreana.")
-
- AddQuestStepChat(Quest, 2, "I should return to Orian D`Rak.", 1, "I should return to Orian D`Rak in Longshadow Alley.", 11, 1380039)
- AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
-end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've delivered the package in one piece.")
+ UpdateQuestTaskGroupDescription(Quest,1,"I've delivered the package as requested to Azreana.")
UpdateQuestDescription(Quest, "Azreana was able to understand what the message said, and acted as if it was rather important. I might want to check back with Orian at a later time to see if he needs any more help.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'm pleased that not everyone is stupid enough to look the other way while the ogres embed themselves in the Freeport Militia. I need a message delivered to an associate. It's time to take a stand, and I must inform her. Take this note to an Erudite named Azreana living in Stonestair Byway. Do not return here! No one must see you!")
+-- Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/qst_kylanith_hail.mp3", 387692981, 2731095766)
+ Dialog.AddOption("I'll make sure Azreana gets this.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -44,8 +46,6 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- Step1Complete(Quest, QuestGiver, Player)
- elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/LongshadowAlley/silenced_speech.lua b/server/Quests/LongshadowAlley/silenced_speech.lua
index db766e1dd..1eab87e04 100755
--- a/server/Quests/LongshadowAlley/silenced_speech.lua
+++ b/server/Quests/LongshadowAlley/silenced_speech.lua
@@ -10,28 +10,38 @@
Preceded by : The Truth is out There
Followed by : None
--]]
+ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Slay Dervish crooks in the Sprawl until Kirs' signet ring is found.", 1, 10, "I need to find out which one of the Dervish crooks is Kirs. I'll need to slay all of the crooks until I find something indentifying him... or her.", 596, 1260000)
+ AddQuestStepKill(Quest, 1, "Slay Dervish crooks in the Sprawl until Kirs' signet ring is found.", 1, 30, " I need to find out which one of the Dervish crooks is Kirs. I'll need to slay all of the crooks until I find something indentifying him... or her.", 596, 1260000)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sprawl")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I've found a signet ring on who I believe to be Kirs.")
+ UpdateQuestStepDescription(Quest, 1, " I've found a signet ring on who I believe to be Kirs.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found a ring with the name Kirs on it. I'm pretty certain this Dervish crook was the one causing all of these problems.")
-
- AddQuestStepChat(Quest, 2, "I should return to Captain L'Nek.", 1, "I should return to Captain L'Nek in Longshadow Alley.", 11, 1380010)
+ UpdateQuestZone(Quest,"Longshadow Alley")
+ AddQuestStepChat(Quest, 2, "Captain L'Nek should know the deed is done.", 1, "I should let Captain L'Nek know that Kirs won't be a problem any longer.", 11, 1380010)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I returned to Captain L`Nek with the news.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "The Captain didn't necessarily give me the reward I was expecting for helping him with Kirs.")
UpdateQuestDescription(Quest, "The Captain didn't necessarily give me the reward I was expecting for helping him with Kirs. I guess I shouldn't have expected much.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("That's my worthy servant! A gangrenous limb must be cut off before it infects the rest of the body. If we do not want this traitorous sentiment to spread, we must ... cut ... Kirs G'Viz. You will find him hiding among the Dervish crooks in the Sprawl, wearing some pathetic disguise. Go to the Sprawl and kill until you find the one who is Kirs G'Viz. I will pretend this conversation did not occur.")
+ PlayFlavor(QuestGiver,"","","shakefist",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/quests/captainlnek/lnek_x2_accept.mp3", 346613900, 1400494910)
+ Dialog.AddOption("What conversation?...")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/taking_it_out_on_the_raiders.lua b/server/Quests/LongshadowAlley/taking_it_out_on_the_raiders.lua
index df63e06a8..590960c45 100755
--- a/server/Quests/LongshadowAlley/taking_it_out_on_the_raiders.lua
+++ b/server/Quests/LongshadowAlley/taking_it_out_on_the_raiders.lua
@@ -11,6 +11,7 @@
Followed by : A Dramatic Performance
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must kill 10 Blackshield pirates.", 10, 100, "Kill 10 Blackshield pirates, they are in the Sunken City. I should be able to find them there.", 611, 1240000, 1240001, 1240002, 1240009, 1240010, 1240012)
@@ -30,8 +31,14 @@ function QuestComplete(Quest, QuestGiver, Player)
GiveQuestReward(Quest, Player)
end
+--
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Why don't you go kill the Raiders? They don't deserve to breathe the same air as the Teir'Dal ... and killing one or two is not enough ... a real warrior would kill at least ten of them before calling it a day. And if you find their leader, kill that worthless traitor. Go now! May you return with a blood-soaked blade!")
+ PlayFlavor(QuestGiver,"","","ponder",0,0,Player)
+ Dialog.AddOption("If that is what it takes, gladly.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/the_missing_book.lua b/server/Quests/LongshadowAlley/the_missing_book.lua
index 563c18e23..433d58b9f 100755
--- a/server/Quests/LongshadowAlley/the_missing_book.lua
+++ b/server/Quests/LongshadowAlley/the_missing_book.lua
@@ -10,28 +10,38 @@
Preceded by : None
Followed by : Magical Retribution
--]]
+ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "I need to find the thief.", 1, "I need to find and speak to the Ratonga who stole Lotni's book.", 11, 1360007)
+ AddQuestStep(Quest, 1, "I need to find the thief.", 1,100, "I need to find and speak to the Ratonga who stole Lotni's book.", 11)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Temple Street")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I spoke to the Ratonga thief, Chrna.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found the Ratonga, but she didn't have the book.")
-
- AddQuestStepChat(Quest, 2, "I should return to Lotni.", 1, "I should return to Lotni in Longshadow Alley.", 11, 1380009)
+ UpdateQuestZone(Quest,"Longshadow Ally")
+ AddQuestStepChat(Quest, 2, "I should return to Lotni.", 1, "I should tell Lotni K'Lria that Chrna doesn't have the book anymore.", 11, 1380009)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestDescription(Quest, "Lotni claims she already spoke to the mastermind behind the theft. Unfortunately,she already killed him when his answers were not satisfactory. I doubt she will ever get her book back.")
+ UpdateQuestStepDescription(Quest, 2, "I have told Lotni about the fate of her book.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have told Lotni about the fate of her book.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You'd help me? Well, if you're offering ... The last time I saw the book, a ratonga was leaving my room. When I confronted her, she claimed she was lost. I'm certain she took the book. Why don't you check Temple Street and track her down? Do whatever you need to get that book from her!")
+ PlayFlavor(QuestGiver,"","","boggle",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_female/fprt_hood05/quests/lotniklria/lotni_x1_accept.mp3", 1332546096, 2822860601)
+ Dialog.AddOption("I'll see it done.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/the_stolen_artifacts_of_thex.lua b/server/Quests/LongshadowAlley/the_stolen_artifacts_of_thex.lua
index 9f03992df..be9fbad79 100755
--- a/server/Quests/LongshadowAlley/the_stolen_artifacts_of_thex.lua
+++ b/server/Quests/LongshadowAlley/the_stolen_artifacts_of_thex.lua
@@ -10,10 +10,12 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
local TheStolenArtifactsofThex = 5683
function Init(Quest)
+ UpdateQuestZone(Quest,"Big Bend")
AddQuestStep(Quest, 1, "Inspect the Thex monument", 1, 100, "I must go to Big Bend and find all five of the Thex artifacts relocated there.", 11)
AddQuestStep(Quest, 2, "Inspect the Thex monument", 1, 100, "I must go to Big Bend and find all five of the Thex artifacts relocated there.", 11)
AddQuestStep(Quest, 3, "Inspect the Thex monument", 1, 100, "I must go to Big Bend and find all five of the Thex artifacts relocated there.", 11)
@@ -46,7 +48,8 @@ end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, TheStolenArtifactsofThex, 1) and QuestStepIsComplete(Player, TheStolenArtifactsofThex, 2) and QuestStepIsComplete(Player, TheStolenArtifactsofThex, 3) and QuestStepIsComplete(Player, TheStolenArtifactsofThex, 4) then
- UpdateQuestTaskGroupDescription(Quest, 1, "I went to Big Bend and could only find four Thex artifacts.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I went to Big Bend and could only find four Thexian artifacts.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
AddQuestStepChat(Quest, 5, "Speak to Kylanith D'Lar", 1, "I must report back to Kylanith D'Lar in Longshadow Alley.", 11, 1380032)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
@@ -62,10 +65,10 @@ function Step5Complete(Quest, QuestGiver, Player)
end
function Step6Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 6, "Inspected the Thex monument.")
+ UpdateQuestStepDescription(Quest, 6, "I discovered the Thex monument gravestone.")
UpdateQuestTaskGroupDescription(Quest, 3, "I went to the Freeport graveyard to find the fifth Thex artifact.")
-
- AddQuestStepChat(Quest, 7, "Speak to Kylanith D'Lar", 1, "I must report back to Kylanith D'Lar in Longshadow Alley.", 11, 1380032)
+ UpdateQuestZone(Quest,"Longshadow Alley")
+ AddQuestStepChat(Quest, 7, "I must inform Kylanith of the illegible monument.", 1, "I must report my findings to Kylanith D'Lar in Longshadow Alley.", 11, 1380032)
AddQuestStepCompleteAction(Quest, 7, "QuestComplete")
end
@@ -80,7 +83,13 @@ end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("It is rumored that the artifacts are somewhere within Big Bend's foul-stenching streets. Some artifacts have sustained great damage. Find them for me and report their existence. ")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/language/thexian/lan_5_kylanith_x1_initial01.mp3", 2884704375, 1873644890)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("I will find them and report back.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/LongshadowAlley/the_truth_is_out_there.lua b/server/Quests/LongshadowAlley/the_truth_is_out_there.lua
index c965eda8a..9a8455ecc 100755
--- a/server/Quests/LongshadowAlley/the_truth_is_out_there.lua
+++ b/server/Quests/LongshadowAlley/the_truth_is_out_there.lua
@@ -11,27 +11,36 @@
Followed by : Silenced Speech
--]]
+ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "Talk to Imnat D'Vren, a secret informant to the Militia.", 1, "Talk to Imnat D'Vren, a secret informant to the Militia. He is in a building to the Southwest of the Destroyed Knowledge Portal.", 11, 1380031)
+ AddQuestStepChat(Quest, 1, "I need to speak with Imnat D'Vren, a secret informant to the Militia. He supposedly lives near the courtyard of Longshadow Alley.", 1, "Talk to Imnat D'Vren, a secret informant to the Militia. He is in a building to the Southwest of the Destroyed Knowledge Portal.", 11, 1380031)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I talked to Imnat D'Vren.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I talked to Imnat D'Vren and should return to Captain L`Nek.")
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Imnat.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "Imnat D'Vren, the informant, has given me the identity of the propagandist.")
- AddQuestStepChat(Quest, 2, "I should return to Captain L`Nek.", 1, "I should return to Captain L`Nek in Longshadow Alley.", 11, 1380010)
+ AddQuestStepChat(Quest, 2, "I should return to Captain L`Nek.", 1, "I need to let Captain L'Nek know that the Thexian is a person by the name of Kirs G'Viz.", 11, 1380010)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "I have returned to Captain L`Nek and let him know what Imnat told me.")
+ UpdateQuestStepDescription(Quest, 2, "I returned to Captain L`Nek with the news.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've let the Captain know that Kirs G'Viz is the one who's been spreading the propaganda.")
+ UpdateQuestDescription(Quest, "I returned to Captain L'Nek and let him know what Imnat told me.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Excellent. You may not be completely worthless after all, sirrah. The Overlord tires of hearing about the Thexians, and wants this canker rooted out. So, listen carefully and do not force me to repeat myself: there is an informant named Imnat D'Vren, who discreetly plies his trade near the Central Courtyard. Tell him you seek the font of Thexian propaganda. Discover what he knows.")
+ PlayFlavor(QuestGiver,"","","nod",0,0,Player)
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/quests/captainlnek/lnek_x1_accept.mp3", 3738122891, 1112622069)
+ Dialog.AddOption("At once.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/MultipleZones/lore_and_legend_bixie.lua b/server/Quests/MultipleZones/lore_and_legend_bixie.lua
index e3e912b2c..cb6a9c54d 100755
--- a/server/Quests/MultipleZones/lore_and_legend_bixie.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_bixie.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a bixie spirit.", 1, 100, "I must locate several bixie body parts.", 2516, 113)
- AddQuestStepKillByRace(Quest, 2, "I need to find a bixie heart.", 1, 100, "I must locate several bixie body parts.", 2516, 113)
- AddQuestStepKillByRace(Quest, 3, "I need to find a bixie brain.", 1, 100, "I must locate several bixie body parts.", 2516, 113)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a bixie spirit.", 1, 25, "I must locate several bixie body parts.", 2516, 113)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a bixie heart.", 1, 35, "I must locate several bixie body parts.", 2516, 113)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a bixie brain.", 1, 10, "I must locate several bixie body parts.", 2516, 113)
AddQuestStep(Quest, 4, "I need to find and study a bixie eye.", 1, 100, "I must locate several bixie body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a bixie leg.", 1, 100, "I must locate several bixie body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a bixie stinger.", 1, 100, "I must locate several bixie body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_centaur.lua b/server/Quests/MultipleZones/lore_and_legend_centaur.lua
index cd47e9582..976c6dbb5 100755
--- a/server/Quests/MultipleZones/lore_and_legend_centaur.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_centaur.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a centaur spirit.", 1, 100, "I must locate several centaur body parts.", 2516, 283)
- AddQuestStepKillByRace(Quest, 2, "I need to find a centaur heart.", 1, 100, "I must locate several centaur body parts.", 2516, 283)
- AddQuestStepKillByRace(Quest, 3, "I need to find a centaur brain.", 1, 100, "I must locate several centaur body parts.", 2516, 283)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a centaur spirit.", 1, 25, "I must locate several centaur body parts.", 2516, 283)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a centaur heart.", 1, 10, "I must locate several centaur body parts.", 2516, 283)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a centaur brain.", 1, 35, "I must locate several centaur body parts.", 2516, 283)
AddQuestStep(Quest, 4, "I need to find and study a centaur hoof.", 1, 100, "I must locate several centaur body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a centaur eye.", 1, 100, "I must locate several centaur body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a centaur hand.", 1, 100, "I must locate several centaur body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_efreeti.lua b/server/Quests/MultipleZones/lore_and_legend_efreeti.lua
index fb5114c3f..af2f2a2ad 100755
--- a/server/Quests/MultipleZones/lore_and_legend_efreeti.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_efreeti.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find an efreeti spirit.", 1, 100, "I must locate several efreeti body parts.", 2516, 249)
- AddQuestStepKillByRace(Quest, 2, "I need to find an efreeti swirling smoke.", 1, 100, "I must locate several efreeti body parts.", 2516, 249)
- AddQuestStepKillByRace(Quest, 3, "I need to find an efreeti wish fragment.", 1, 100, "I must locate several efreeti body parts.", 2516, 249)
+ AddQuestStepKillByRace(Quest, 1, "I need to find an efreeti spirit.", 1, 35, "I must locate several efreeti body parts.", 2516, 249)
+ AddQuestStepKillByRace(Quest, 2, "I need to find an efreeti swirling smoke.", 1, 25, "I must locate several efreeti body parts.", 2516, 249)
+ AddQuestStepKillByRace(Quest, 3, "I need to find an efreeti wish fragment.", 1, 10, "I must locate several efreeti body parts.", 2516, 249)
AddQuestStep(Quest, 4, "I need to find and study an efreeti silken sash.", 1, 100, "I must locate several efreeti body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study an efreeti shattered lamp.", 1, 100, "I must locate several efreeti body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study an efreeti broken shackle.", 1, 100, "I must locate several efreeti body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_evil_eye.lua b/server/Quests/MultipleZones/lore_and_legend_evil_eye.lua
index b28f506e9..414d9815f 100755
--- a/server/Quests/MultipleZones/lore_and_legend_evil_eye.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_evil_eye.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find an evil eye lens.", 1, 100, "I must locate several evil eye body parts.", 2516, 253)
- AddQuestStepKillByRace(Quest, 2, "I need to find an evil eye rod.", 1, 100, "I must locate several evil eye body parts.", 2516, 253)
- AddQuestStepKillByRace(Quest, 3, "I need to find an evil eye cone.", 1, 100, "I must locate several evil eye body parts.", 2516, 253)
+ AddQuestStepKillByRace(Quest, 1, "I need to find an evil eye lens.", 1, 35, "I must locate several evil eye body parts.", 2516, 253)
+ AddQuestStepKillByRace(Quest, 2, "I need to find an evil eye rod.", 1, 10, "I must locate several evil eye body parts.", 2516, 253)
+ AddQuestStepKillByRace(Quest, 3, "I need to find an evil eye cone.", 1, 25, "I must locate several evil eye body parts.", 2516, 253)
AddQuestStep(Quest, 4, "I need to find and study an evil eye pupil.", 1, 100, "I must locate several evil eye body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study an evil eye enchantment.", 1, 100, "I must locate several evil eye body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study an evil eye malicious gaze.", 1, 100, "I must locate several evil eye body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_fairy.lua b/server/Quests/MultipleZones/lore_and_legend_fairy.lua
index 41037e08b..f4ab8e6c7 100755
--- a/server/Quests/MultipleZones/lore_and_legend_fairy.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_fairy.lua
@@ -13,7 +13,7 @@
function Init(Quest)
AddQuestStepKillByRace(Quest, 1, "I need to find a fairy spirit.", 1, 35, "I must locate several fairy body parts.", 2516, 117)
AddQuestStepKillByRace(Quest, 2, "I need to find a fairy heart.", 1, 25, "I must locate several fairy body parts.", 135, 117)
- AddQuestStepKillByRace(Quest, 3, "I need to find a fairy brain.", 1, 15, "I must locate several fairy body parts.", 109, 117)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a fairy brain.", 1, 10, "I must locate several fairy body parts.", 109, 117)
AddQuestStep(Quest, 4, "I need to find and study a fairy ear.", 1, 100, "I must locate several fairy body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a fairy eye.", 1, 100, "I must locate several fairy body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a fairy wing.", 1, 100, "I must locate several fairy body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_ghost.lua b/server/Quests/MultipleZones/lore_and_legend_ghost.lua
index 8f247b1d6..d21426fc0 100755
--- a/server/Quests/MultipleZones/lore_and_legend_ghost.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_ghost.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a ghost dream shard.", 1, 100, "I must locate several ghost body parts.", 2516, 334)
- AddQuestStepKillByRace(Quest, 2, "I need to find a ghost ectoplasm.", 1, 100, "I must locate several ghost body parts.", 2516, 334)
- AddQuestStepKillByRace(Quest, 3, "I need to find a ghost haunted fragment.", 1, 100, "I must locate several ghost body parts.", 2516, 334)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a ghost dream shard.", 1, 10, "I must locate several ghost body parts.", 2516, 334)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a ghost ectoplasm.", 1, 35, "I must locate several ghost body parts.", 2516, 334)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a ghost haunted fragment.", 1, 25, "I must locate several ghost body parts.", 2516, 334)
AddQuestStep(Quest, 4, "I need to find and study a ghost vile plasm.", 1, 100, "I must locate several ghost body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a ghost ethereal strand.", 1, 100, "I must locate several ghost body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a ghost phantasmal echo.", 1, 100, "I must locate several ghost body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_giant.lua b/server/Quests/MultipleZones/lore_and_legend_giant.lua
index 824a27474..bd25599ee 100755
--- a/server/Quests/MultipleZones/lore_and_legend_giant.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_giant.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a giant spirit.", 1, 100, "I must locate several giant body parts.", 2516, 258)
- AddQuestStepKillByRace(Quest, 2, "I need to find a giant heart.", 1, 100, "I must locate several giant body parts.", 2516, 258)
- AddQuestStepKillByRace(Quest, 3, "I need to find a giant eye.", 1, 100, "I must locate several giant body parts.", 2516, 258)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a giant spirit.", 1, 10, "I must locate several giant body parts.", 2516, 258)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a giant heart.", 1, 35, "I must locate several giant body parts.", 2516, 258)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a giant eye.", 1, 25, "I must locate several giant body parts.", 2516, 258)
AddQuestStep(Quest, 4, "I need to find and study a giant toe.", 1, 100, "I must locate several giant body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a giant finger.", 1, 100, "I must locate several giant body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a giant tooth.", 1, 100, "I must locate several giant body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_gnoll.lua b/server/Quests/MultipleZones/lore_and_legend_gnoll.lua
index 1f1ce1f1d..d5bcb404c 100755
--- a/server/Quests/MultipleZones/lore_and_legend_gnoll.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_gnoll.lua
@@ -12,11 +12,11 @@
function Init(Quest)
AddQuestStepKillByRace(Quest, 1, "I need to find a gnoll spirit.", 1, 35, "I must locate several gnoll body parts.", 2516, 298)
- AddQuestStepKillByRace(Quest, 2, "I need to find a gnoll heart.", 1, 15, "I must locate several gnoll body parts.", 135, 298)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a gnoll heart.", 1, 10, "I must locate several gnoll body parts.", 135, 298)
AddQuestStepKillByRace(Quest, 3, "I need to find a gnoll brain.", 1, 25, "I must locate several gnoll body parts.", 130, 298)
AddQuestStep(Quest, 4, "I need to find and study a gnoll paw.", 1, 100, "I must locate several gnoll body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a gnoll tooth.", 1, 100, "I must locate several gnoll body parts.", 11)
- AddQuestStep(Quest, 6, "I need to find and study a gnoll nail.", 1, 100, "I must locate several gnoll body parts.", 11)
+ AddQuestStep(Quest, 6, "I need to find and study a gnoll tail.", 1, 100, "I must locate several gnoll body parts.", 11)
AddQuestStep(Quest, 7, "I need to find and study a gnoll eye.", 1, 100, "I must locate several gnoll body parts.", 11)
AddQuestStep(Quest, 8, "I need to find and study a gnoll ear.", 1, 100, "I must locate several gnoll body parts.", 11)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
diff --git a/server/Quests/MultipleZones/lore_and_legend_goblin.lua b/server/Quests/MultipleZones/lore_and_legend_goblin.lua
index 430158fcc..b3c31aabe 100755
--- a/server/Quests/MultipleZones/lore_and_legend_goblin.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_goblin.lua
@@ -13,7 +13,7 @@
function Init(Quest)
AddQuestStepKillByRace(Quest, 1, "I need to find a goblin spirit.", 1, 45, "I must locate several goblin body parts.", 2516, 300)
AddQuestStepKillByRace(Quest, 2, "I need to find a goblin heart.", 1, 35, "I must locate several goblin body parts.", 135, 300)
- AddQuestStepKillByRace(Quest, 3, "I need to find a goblin brain.", 1, 20, "I must locate several goblin body parts.", 109, 300)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a goblin brain.", 1, 10, "I must locate several goblin body parts.", 109, 300)
AddQuestStep(Quest, 4, "I need to find and study a goblin eye.", 1, 100, "I must locate several goblin body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a goblin claw.", 1, 100, "I must locate several goblin body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a goblin tooth.", 1, 100, "I must locate several goblin body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_golem.lua b/server/Quests/MultipleZones/lore_and_legend_golem.lua
index 7669c22e8..bf6308c97 100755
--- a/server/Quests/MultipleZones/lore_and_legend_golem.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_golem.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a golem ambulatory fragment.", 1, 100, "I must locate several golem body parts.", 2516, 135)
- AddQuestStepKillByRace(Quest, 2, "I need to find a golem core shard.", 1, 100, "I must locate several golem body parts.", 2516, 135)
- AddQuestStepKillByRace(Quest, 3, "I need to find a golem essence trap.", 1, 100, "I must locate several golem body parts.", 2516, 135)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a golem ambulatory fragment.", 1, 25, "I must locate several golem body parts.", 2516, 135)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a golem core shard.", 1, 10, "I must locate several golem body parts.", 2516, 135)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a golem essence trap.", 1, 35, "I must locate several golem body parts.", 2516, 135)
AddQuestStep(Quest, 4, "I need to find and study a golem motive prism.", 1, 100, "I must locate several golem body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a golem corporeal shell.", 1, 100, "I must locate several golem body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a golem sentience leash.", 1, 100, "I must locate several golem body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_lizardman.lua b/server/Quests/MultipleZones/lore_and_legend_lizardman.lua
index 9e42c6fe3..17c32f272 100755
--- a/server/Quests/MultipleZones/lore_and_legend_lizardman.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_lizardman.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a lizardman brain.", 1, 100, "I must locate several lizardman body parts.", 2516, 314)
- AddQuestStepKillByRace(Quest, 2, "I need to find a lizardman heart.", 1, 100, "I must locate several lizardman body parts.", 2516, 314)
- AddQuestStepKillByRace(Quest, 3, "I need to find a lizardman spirit.", 1, 100, "I must locate several lizardman body parts.", 2516, 314)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a lizardman brain.", 1, 25, "I must locate several lizardman body parts.", 2516, 314)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a lizardman heart.", 1, 35, "I must locate several lizardman body parts.", 2516, 314)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a lizardman spirit.", 1, 10, "I must locate several lizardman body parts.", 2516, 314)
AddQuestStep(Quest, 4, "I need to find and study a lizardman tail.", 1, 100, "I must locate several lizardman body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a lizardman scale.", 1, 100, "I must locate several lizardman body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a lizardman claw.", 1, 100, "I must locate several lizardman body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_nightblood.lua b/server/Quests/MultipleZones/lore_and_legend_nightblood.lua
index d4f551c75..3e2ea8f5e 100755
--- a/server/Quests/MultipleZones/lore_and_legend_nightblood.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_nightblood.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a nightblood doom essence.", 1, 100, "I must locate several nightblood body parts.", 2516, 246)
- AddQuestStepKillByRace(Quest, 2, "I need to find a nightblood forged horn.", 1, 100, "I must locate several nightblood body parts.", 2516, 246)
- AddQuestStepKillByRace(Quest, 3, "I need to find a nightblood heart of darkness.", 1, 100, "I must locate several nightblood body parts.", 2516, 246)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a nightblood doom essence.", 1, 25, "I must locate several nightblood body parts.", 2516, 246)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a nightblood forged horn.", 1, 35, "I must locate several nightblood body parts.", 2516, 246)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a nightblood heart of darkness.", 1, 10, "I must locate several nightblood body parts.", 2516, 246)
AddQuestStep(Quest, 4, "I need to find and study a nightblood hoof.", 1, 100, "I must locate several nightblood body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a nightblood inferno eye.", 1, 100, "I must locate several nightblood body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a nightblood tooth.", 1, 100, "I must locate several nightblood body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_orc_.lua b/server/Quests/MultipleZones/lore_and_legend_orc_.lua
index 54f6626ab..1c1185463 100755
--- a/server/Quests/MultipleZones/lore_and_legend_orc_.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_orc_.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Quests/MultipleZones/lore_and_legend_orc_.lua
Script Purpose : Handles the quest, "Lore and Legend: Orc"
- Script Author : premierio015
+ Script Author : premierio015//Dorbin
Script Date : 20.06.2021
Script Notes : Auto generated with QuestParser.
@@ -13,22 +13,22 @@
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find an orc spirit.", 1, 100, "I must locate several orc body parts.", 2516, 317)
- AddQuestStep(Quest, 2, "I need to find an orc heart.", 1, 100, "I must locate several orc body parts.", 135)
- AddQuestStep(Quest, 3, "I need to find an orc brain.", 1, 100, "I must locate several orc body parts.", 109)
- AddQuestStep(Quest, 4, "I need to find and study an orc eye.", 1, 100, "I must locate several orc body parts.", 11)
- AddQuestStep(Quest, 5, "I need to find and study an orc skin.", 1, 100, "I must locate several orc body parts.", 11)
- AddQuestStep(Quest, 6, "I need to find and study an orc tooth.", 1, 100, "I must locate several orc body parts.", 11)
- AddQuestStep(Quest, 7, "I need to find and study an orc spine.", 1, 100, "I must locate several orc body parts.", 11)
- AddQuestStep(Quest, 8, "I need to find and study an orc ear.", 1, 100, "I must locate several orc body parts.", 11)
+ AddQuestStepKillByRace(Quest, 1, "I need to find an orc spirit.", 1, 10, "I must locate several orc body parts.", 2516, 317)
+ AddQuestStepKillByRace(Quest, 2, "I need to find an orc heart.", 1, 35, "I must locate several orc body parts.", 135, 317)
+ AddQuestStepKillByRace(Quest, 3, "I need to find an orc brain.", 1, 22, "I must locate several orc body parts.", 109, 317)
+ AddQuestStep(Quest, 4, "I need to find and study an orc eye.", 1, 100, "I must locate several orc body parts.", 11)
+ AddQuestStep(Quest, 5, "I need to find and study an orc skin.", 1, 100, "I must locate several orc body parts.", 11)
+ AddQuestStep(Quest, 6, "I need to find and study an orc tooth.", 1, 100, "I must locate several orc body parts.", 11)
+ AddQuestStep(Quest, 7, "I need to find and study an orc spine.", 1, 100, "I must locate several orc body parts.", 11)
+ AddQuestStep(Quest, 8, "I need to find and study an orc ear.", 1, 100, "I must locate several orc body parts.", 11)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
- AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
- AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
function Accepted(Quest, QuestGiver, Player)
diff --git a/server/Quests/MultipleZones/lore_and_legend_shadowed_man.lua b/server/Quests/MultipleZones/lore_and_legend_shadowed_man.lua
index d701d5058..d45b0a8e5 100755
--- a/server/Quests/MultipleZones/lore_and_legend_shadowed_man.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_shadowed_man.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a shadowman spirit.", 1, 100, "I must locate several shadowman body parts.", 2516, 283)
- AddQuestStepKillByRace(Quest, 2, "I need to find a shadowman shadowed heart.", 1, 100, "I must locate several shadowman body parts.", 2516, 283)
- AddQuestStepKillByRace(Quest, 3, "I need to find a shadowman collected darkness.", 1, 100, "I must locate several shadowman body parts.", 2516, 283)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a shadowman spirit.", 1, 35, "I must locate several shadowman body parts.", 2516, 283)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a shadowman shadowed heart.", 1, 25, "I must locate several shadowman body parts.", 2516, 283)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a shadowman collected darkness.", 1, 10, "I must locate several shadowman body parts.", 2516, 283)
AddQuestStep(Quest, 4, "I need to find and study a shadowman aspect of shadow.", 1, 100, "I must locate several shadowman body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a shadowman vortex ripple.", 1, 100, "I must locate several shadowman body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a shadowman void kernel.", 1, 100, "I must locate several shadowman body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_siren.lua b/server/Quests/MultipleZones/lore_and_legend_siren.lua
index 62e858081..4c4334e2b 100755
--- a/server/Quests/MultipleZones/lore_and_legend_siren.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_siren.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a siren shreak.", 1, 100, "I must locate several siren body parts.", 2516, 118)
- AddQuestStepKillByRace(Quest, 2, "I need to find a siren heart.", 1, 100, "I must locate several siren body parts.", 2516, 118)
- AddQuestStepKillByRace(Quest, 3, "I need to find a siren brain.", 1, 100, "I must locate several siren body parts.", 2516, 118)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a siren shreak.", 1, 25, "I must locate several siren body parts.", 2516, 118)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a siren heart.", 1, 35, "I must locate several siren body parts.", 2516, 118)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a siren brain.", 1, 10, "I must locate several siren body parts.", 2516, 118)
AddQuestStep(Quest, 4, "I need to find and study a siren wail.", 1, 100, "I must locate several siren body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a siren song.", 1, 100, "I must locate several siren body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a siren scale.", 1, 100, "I must locate several siren body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_treant.lua b/server/Quests/MultipleZones/lore_and_legend_treant.lua
index 2f96bee1a..5c76b5dd8 100755
--- a/server/Quests/MultipleZones/lore_and_legend_treant.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_treant.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a treant spirit.", 1, 100, "I must locate several treant body parts.", 2516, 121)
- AddQuestStepKillByRace(Quest, 2, "I need to find a treant heart.", 1, 100, "I must locate several treant body parts.", 2516, 121)
- AddQuestStepKillByRace(Quest, 3, "I need to find a treant vial of sap.", 1, 100, "I must locate several treant body parts.", 2516, 121)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a treant spirit.", 1, 10, "I must locate several treant body parts.", 2516, 121)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a treant heart.", 1, 35, "I must locate several treant body parts.", 2516, 121)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a treant vial of sap.", 1, 25, "I must locate several treant body parts.", 2516, 121)
AddQuestStep(Quest, 4, "I need to find and study a treant bark.", 1, 100, "I must locate several treant body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a treant eye.", 1, 100, "I must locate several treant body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a treant leaf.", 1, 100, "I must locate several treant body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legend_zombie.lua b/server/Quests/MultipleZones/lore_and_legend_zombie.lua
index eae929726..c0307b20d 100755
--- a/server/Quests/MultipleZones/lore_and_legend_zombie.lua
+++ b/server/Quests/MultipleZones/lore_and_legend_zombie.lua
@@ -12,7 +12,7 @@
function Init(Quest)
AddQuestStepKillByRace(Quest, 1, "I need to find a zombie reanimating essence.", 1, 35, "I must locate several zombie body parts.", 2516, 343)
- AddQuestStepKillByRace(Quest, 2, "I need to find a zombie degenerated vitae.", 1, 15, "I must locate several zombie body parts.", 2522, 343)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a zombie degenerated vitae.", 1, 10, "I must locate several zombie body parts.", 2522, 343)
AddQuestStepKillByRace(Quest, 3, "I need to find a zombie grotesque visage.", 1, 25, "I must locate several zombie body parts.", 2493, 343)
AddQuestStep(Quest, 4, "I need to find and study a necrotic zombie skin.", 1, 100, "I must locate several zombie body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a flesh covered zombie bone.", 1, 100, "I must locate several zombie body parts.", 11)
diff --git a/server/Quests/MultipleZones/lore_and_legendskeleton.lua b/server/Quests/MultipleZones/lore_and_legendskeleton.lua
index bcf35061c..a46e68790 100755
--- a/server/Quests/MultipleZones/lore_and_legendskeleton.lua
+++ b/server/Quests/MultipleZones/lore_and_legendskeleton.lua
@@ -12,9 +12,9 @@
function Init(Quest)
- AddQuestStepKillByRace(Quest, 1, "I need to find a skeleton essence.", 1, 30, "I must locate several skeleton body parts.", 2516, 340)
- AddQuestStepKillByRace(Quest, 2, "I need to find a skeleton skull.", 1, 40, "I must locate several skeleton body parts.", 91, 340)
- AddQuestStepKillByRace(Quest, 3, "I need to find a skeleton ribcage.", 1, 55, "I must locate several skeleton body parts.", 90, 340)
+ AddQuestStepKillByRace(Quest, 1, "I need to find a skeleton essence.", 1, 10, "I must locate several skeleton body parts.", 2516, 340)
+ AddQuestStepKillByRace(Quest, 2, "I need to find a skeleton skull.", 1, 35, "I must locate several skeleton body parts.", 91, 340)
+ AddQuestStepKillByRace(Quest, 3, "I need to find a skeleton ribcage.", 1, 25, "I must locate several skeleton body parts.", 90, 340)
AddQuestStep(Quest, 4, "I need to find and study a skeleton arm.", 1, 100, "I must locate several skeleton body parts.", 11)
AddQuestStep(Quest, 5, "I need to find and study a skeleton leg.", 1, 100, "I must locate several skeleton body parts.", 11)
AddQuestStep(Quest, 6, "I need to find and study a skeleton objurgatory hunger.", 1, 100, "I must locate several skeleton body parts.", 11)
diff --git a/server/Quests/MultipleZones/qeynos_alignment.lua b/server/Quests/MultipleZones/qeynos_alignment.lua
index 92efd2606..50f933c0f 100755
--- a/server/Quests/MultipleZones/qeynos_alignment.lua
+++ b/server/Quests/MultipleZones/qeynos_alignment.lua
@@ -39,7 +39,7 @@ Halas = GetFactionAmount(Player, 16)
Gorowyn = GetFactionAmount(Player, 17)
alignment = GetAlignment(Player)
-if GetRace(Player) == 0 or GetRace(Player) == 3 or GetRace(Player) == 5 or GetRace(Player) == 6 or GetRace(Player) == 9 or GetRace(Player) == 11 or GetRace(Player) == 20 then
+if alignment ~= 1 then
SetAlignment(Player, 1)
end
@@ -108,6 +108,10 @@ function Step1Complete(Quest, QuestGiver, Player)
elseif Race == 5 or Race == 7 then
AddQuestStepChat(Quest, 2, "I must find the Steward", 1, "I have been instructed to seek out the Steward when I arrive in Qeynos. I should ring the bell on the docks to book passage to the city.", 11, 2380173)
UpdateQuestZone(Quest, "Baubbleshire")
+ else
+ AddQuestStepChat(Quest, 2, "I must find the Steward", 1, "I have been instructed to seek out the Steward when I arrive in Qeynos. I should ring the bell on the docks to book passage to the city.", 11, 2330170)
+ UpdateQuestZone(Quest, "Nettleville")
+
end
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
diff --git a/server/Quests/NektulosForest/maid_for_the_mist__part_I.lua b/server/Quests/NektulosForest/maid_for_the_mist__part_I.lua
new file mode 100755
index 000000000..d7798ed62
--- /dev/null
+++ b/server/Quests/NektulosForest/maid_for_the_mist__part_I.lua
@@ -0,0 +1,81 @@
+--[[
+ Script Name : Quests/NektulosForest/maid_for_the_mist__part_I.lua
+ Script Author : Premierio015
+ Script Date : 2023.03.23 09:03:20
+ Script Purpose : Access Quest "Maid for the Mist Part I"
+
+ Zone : NektulosForest
+ Quest Giver: Daisy Winterhope
+ Preceded by: None
+ Followed by:
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to obtain 25 Nerius crab carapaces.", 25, 25, "I need to obtain 25 crab carapaces in Nektulos and then tell Daisy Winterhope.", 141, 1790036, 1790342)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog006.mp3", 4126545806, 2664999676)
+ Dialog.AddOption("I'll be back.")
+ Dialog.AddDialog("Great! What I need first off are some ironshell carapaces. You can get them off them Nerius crabs. About twenty-five would protect the hull. Let me know when you've got those, and then we'll see if we need anything else.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have obtained 25 Nerius crab carapaces.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have obtained 25 crab carapaces and need to tell Daisy Winterhope in Nektulos.")
+
+ AddQuestStepChat(Quest, 2, "I must return to Daisy Winterhope in Nektulos with the crab carapaces.", 1, "I must return to speak with Daisy Winterhope in Nektulos.", 11, 1790042)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have returned to Daisy Winterhope in Nektulos with the crab carapaces.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have spoken with Daisy Winterhope in Nektulos.")
+
+ AddQuestStepKill(Quest, 3, "I must obtain 13 owlbear sinews for Daisy Winterhope in Nektulos.", 13, 25, "I need to obtain 13 ash owlbear sinews in Nektulos and then tell Daisy Winterhope.", 139, 1790131)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have obtained 13 owlbear sinews for Daisy Winterhope in Nektulos.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I have obtained 13 ash owlbear sinews in Nektulos and must tell Daisy Winterhope.")
+
+ AddQuestStepChat(Quest, 4, "I obtained 13 owlbear sinews and need to return to Daisy Winterhope in Nektulos.", 1, "I must return to speak with Daisy Winterhope in Nektulos.", 11, 1790042)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I returned to Daisy Winterhope in Nektulos with the owlbear sinews.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I have spoken with Daisy Winterhope in Nektulos.")
+
+ UpdateQuestDescription(Quest, "I have obtained 25 Nerius crab carapaces and 13 ash owlbear sinews and need to tell Daisy Winterhope in Nektulos. I hope this is enough for passage on her ship.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Nettleville/nias_hissing_fit.lua b/server/Quests/Nettleville/nias_hissing_fit.lua
index bc7e4b1e6..916479c68 100755
--- a/server/Quests/Nettleville/nias_hissing_fit.lua
+++ b/server/Quests/Nettleville/nias_hissing_fit.lua
@@ -12,7 +12,7 @@
require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepChat(Quest, 1, "I need to go to the scribe shop.", 1, "I need to go to the scribe shop in Nettleville to see if Marjani Kenan is still there.", 11, 2360024)
+ AddQuestStepChat(Quest, 1, "I need to go to the scribe shop.", 1, "I need to go to the scribe shop in Nettleville to see if Marjani Kenan is still there.", 11, 2330031)
AddQuestStepCompleteAction(Quest, 1, "CheckIn")
end
diff --git a/server/Quests/Nettleville/refill_the_oakmyst_spider_silk_jars.lua b/server/Quests/Nettleville/refill_the_oakmyst_spider_silk_jars.lua
index 00dc0dd65..2f21355a6 100755
--- a/server/Quests/Nettleville/refill_the_oakmyst_spider_silk_jars.lua
+++ b/server/Quests/Nettleville/refill_the_oakmyst_spider_silk_jars.lua
@@ -21,7 +21,7 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have slain some Oakmyst spiders.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have refilled the Oakmyst spider silk jars.")
- AddQuestStepChat(Quest, 2, "I must return to Varion Smitelin", 1, "I must return the spider silk jars to Varion Smitelin, a sage within the Concordium in the Qeynos Capitol District", 354, 2330056)
+ AddQuestStepChat(Quest, 2, "I must return to Varion Smitelin", 1, "I must return the spider silk jars to Varion Smitelin, a sage within the Nettleville Quill.", 354, 2330056)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
diff --git a/server/Quests/Nettleville/restocking_bog_faerie_wings.lua b/server/Quests/Nettleville/restocking_bog_faerie_wings.lua
index 08a794bee..9e33b7e3c 100755
--- a/server/Quests/Nettleville/restocking_bog_faerie_wings.lua
+++ b/server/Quests/Nettleville/restocking_bog_faerie_wings.lua
@@ -12,7 +12,7 @@
require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to collect eight bog faerie wings.", 8, 100, "I need to collect eight Bog Faerie Wings from the Peat Bog for Scribe Varion Smitelin.", 110, 8290002,8290003,8290052,8290008,8290009,8290010,8290013,8290014,8290011,8290012,8290017,8290018,8290019,8290053,8290044)
+ AddQuestStepKill(Quest, 1, "I need to collect eight bog faerie wings.", 8, 100, "I need to collect eight Bog Faerie Wings from the Peat Bog for Scribe Varion Smitelin.", 110, 8290002,8290003,8290052,8290008,8290009,8290010,8290013,8290014,8290011,8290012,8290017,8290018,8290019,8290053,8290044,8290001 )
AddQuestStepCompleteAction(Quest, 1, "Step1_Complete_GotWings")
end
diff --git a/server/Quests/NorthFreeport/death_certificate.lua b/server/Quests/NorthFreeport/death_certificate.lua
new file mode 100755
index 000000000..f43c0e517
--- /dev/null
+++ b/server/Quests/NorthFreeport/death_certificate.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : Quests/NorthFreeport/death_certificate.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 03:07:09
+ Script Purpose :
+
+ Zone : NorthFreeport
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I must give the death certificate to merchant Talia.", 1, "I should give merchant Talia the death certificate of her late husband. Talia is known to sell her wares in the Ruins.", 75, 8420035)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I wouldn't take these warnings lightly ... Watch yourself, not everyone in Freeport is as forgiving as I. Take this death certificate to merchant Talia. You'll find her peddling her wares in the ruins.")
+ PlayFlavor(QuestGiver, "", "", "nod", 0, 0, Player)
+ Dialog.AddVoiceover("voiceover/english/missionary_g_zule/fprt_north/qst_gzule006.mp3", 3179072985, 1240800573)
+ Dialog.AddOption("Understood. I'll see she gets this certificate.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have given the death certificate to merchant Talia.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have given merchant Talia the death certificate of her deceased husband, guard Barel.")
+
+ UpdateQuestDescription(Quest, "I have given the death certificate of guard Barel to merchant Talia at the request of missionary G'Zule.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/NorthQeynos/antivenom_components_for_brendan.lua b/server/Quests/NorthQeynos/antivenom_components_for_brendan.lua
index 9869eeabe..cb8c50a40 100755
--- a/server/Quests/NorthQeynos/antivenom_components_for_brendan.lua
+++ b/server/Quests/NorthQeynos/antivenom_components_for_brendan.lua
@@ -11,8 +11,8 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Gather a cave serpent venom sac.", 1, 25, "I need to gather poison sacs from the snakes and spiders that live in the Caves. I can reach the Caves via mariner bell within the City of Qeynos.", 1161, 1970008,8260002, 8260019 ,8260023)
- AddQuestStepKill(Quest, 2, "Gather white spider venom sacs.", 4, 30, "I need to gather poison sacs from the snakes and spiders that live in the Caves. I can reach the Caves via mariner bell within the City of Qeynos.", 413, 1970012,8260003,8260024,8260030,8260074,8260082)
+ AddQuestStepKill(Quest, 1, "Gather a cave serpent venom sac.", 1, 25, "I need to gather poison sacs from the snakes and spiders that live in the Caves. I can reach the Caves via mariner bell within the City of Qeynos.", 1161, 1970012,8260003,8260024,8260030,8260074,8260082)
+ AddQuestStepKill(Quest, 2, "Gather white spider venom sacs.", 4, 20, "I need to gather poison sacs from the snakes and spiders that live in the Caves. I can reach the Caves via mariner bell within the City of Qeynos.", 413, 1970008,8260002,8260019,8260023)
UpdateQuestZone(Quest,"Caves")
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
diff --git a/server/Quests/NorthQeynos/delivery_for_the_temple_of_life.lua b/server/Quests/NorthQeynos/delivery_for_the_temple_of_life.lua
index fa0f39f9a..6b52d8b53 100755
--- a/server/Quests/NorthQeynos/delivery_for_the_temple_of_life.lua
+++ b/server/Quests/NorthQeynos/delivery_for_the_temple_of_life.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -18,12 +19,15 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/gavin_ironforge/qey_north/gavinironforge002.mp3", "", "smile", 2486535171, 583526887, Player)
- AddConversationOption(conversation, "I'll make sure Rowena receives this.")
- StartConversation(conversation, QuestGiver, Player, "Wonderful! Take this small box to Medic Rowena in the temple. Tell her the Jewel Box sent you. She'll be very pleased as she is not expecting it until tomorrow! You will have some coin upon your return.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Wonderful! Take this small box to Medic Rowena in the temple. Tell her the Jewel Box sent you. She'll be very pleased, as she's not expecting it until the morrow. You will have some coin upon your return.")
+ Dialog.AddVoiceover("voiceover/english/gavin_ironforge/qey_north/gavinironforge002.mp3", 2486535171, 583526887)
+ PlayFlavor(QuestGiver, "", "", "smile", 0, 0, Player)
+ Dialog.AddOption("I'll be off now!")
+ Dialog.Start()
end
+
function Declined(Quest, QuestGiver, Player)
-- Add dialog here for when the quest is declined
end
diff --git a/server/Quests/NorthQeynos/dwarven_fish_delivery.lua b/server/Quests/NorthQeynos/dwarven_fish_delivery.lua
index da7e84f0c..5b903c5ab 100755
--- a/server/Quests/NorthQeynos/dwarven_fish_delivery.lua
+++ b/server/Quests/NorthQeynos/dwarven_fish_delivery.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to pick up an order of fish from Umli Grayfist.", 1, "Umli Grayfist's order of fish for Gretta won't keep forever.", 2540, 2210135)
@@ -18,11 +19,13 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(QuestGiver, "voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x002.mp3", "", "chuckle", 2938647056, 1980096242, Player)
- AddConversationOption(conversation, "I hope I don't regret this.")
- AddConversationOption(conversation, "I'll be back soon... hopefully.")
- StartConversation(conversation, QuestGiver, Player, "Ah, thank Brell I don't have to go!.. Uh, that you're going to that mudglub Umli. You'll find him at the harbor down by the docks. Can't miss him. He's uglier than a troll woman in a wedding dress! Hah! And you can tell him I said so!")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Ah, thank Brell I don't have to go!.. Uh, that you're going to that mudglub Umli. You'll find him at the harbor down by the docks. Can't miss him. He's uglier than a troll woman in a wedding dress! Hah! And you can tell him I said so!")
+ Dialog.AddVoiceover("voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x000.mp3", 612712171, 2321965832)
+ PlayFlavor(QuestGiver, "", "", "chuckle", 0, 0, Player)
+ Dialog.AddOption("I hope I don't regret this.")
+ Dialog.AddOption("I'll be back soon... hopefully.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/NorthQeynos/the_scholars_search.lua b/server/Quests/NorthQeynos/the_scholars_search.lua
index 4b9acf9b3..4f9c739f6 100755
--- a/server/Quests/NorthQeynos/the_scholars_search.lua
+++ b/server/Quests/NorthQeynos/the_scholars_search.lua
@@ -12,7 +12,7 @@
require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepLocation(Quest, 1, "I need to find and search the area around the Bells of Vhalen.", 6, "According to Demini, the scholar to the Sage of Ages was last seen at the Bells of Vhalen out in Antonica. Perhaps I can find him there.", 11, -1300, 38 ,45)
+ AddQuestStepZoneLoc(Quest, 1, "I need to find and search the area around the Bells of Vhalen.", 7, "According to Demini, the scholar to the Sage of Ages was last seen at the Bells of Vhalen out in Antonica. Perhaps I can find him there.", 11, -1300, 38 ,45,12)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"Antonica")
end
@@ -46,42 +46,42 @@ function Step2Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 2, "I've found a partially eaten page from a journal.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've found a clue on a badger. It's a page from a journal, claiming that the scholar was actually escorting the Sage of Ages personally. Unfortunately, the last words on the page claim the two had been accosted by bandits.")
- AddQuestStepLocation(Quest, 3, "I need to search the area around the Bramble Woods.", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -1659, -11, 416)
+ AddQuestStepZoneLoc(Quest, 3, "I need to search the area around the Bramble Woods.", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -1659, -11, 416,12)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 3, "I've searched the Bramble Woods, but found no trace of the pair.")
- AddQuestStepLocation(Quest, 4, "I need to search the area around the Qeynos Highway", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11,-1723, -14, 376)
+ AddQuestStepZoneLoc(Quest, 4, "I need to search the area around the Qeynos Highway", 15, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11,-1723, -14, 376,12)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 4, "I've searched the Qeynos Highway, but found no trace of the pair")
- AddQuestStepLocation(Quest, 5, "I need to search the area around the Northern Farmlands", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -1902, -14, 42)
+ AddQuestStepZoneLoc(Quest, 5, "I need to search the area around the Northern Farmlands", 15, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -1902, -14, 42,12)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
end
function Step5Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 5, "I've searched the Northern Farmlands, but found no trace of the pair")
- AddQuestStepLocation(Quest, 6, "I need to search the area around the Gnollslayer Highlands", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -1755, -14, 521)
+ AddQuestStepZoneLoc(Quest, 6, "I need to search the area around the Gnollslayer Highlands", 15, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -1755, -14, 521,12)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
end
function Step6Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 6, "I've searched the Gnollslayer Highlands, but found no trace of the pair")
- AddQuestStepLocation(Quest, 7, "I need to search the area around the Scarecrow Fields", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11,-1755, -14, 521)
+ AddQuestStepZoneLoc(Quest, 7, "I need to search the area around the Scarecrow Fields", 15, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11,-1755, -14, 521,12)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
end
function Step7Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 7, "I've searched the Scarecrow Fields, but found no trace of the pair")
- AddQuestStepLocation(Quest, 8, "I need to search the area around the Keep of the Gnollslayers", 8, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -2089, -45, 474)
+ AddQuestStepZoneLoc(Quest, 8, "I need to search the area around the Keep of the Gnollslayers", 10, "I should check the surrounding region to see if I can find both the scholar and the Sage of Ages. I hope it's not too late to find them.", 11, -2089, -45, 474,12)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
end
diff --git a/server/Quests/OakmystForest/destroy_the_corruption.lua b/server/Quests/OakmystForest/destroy_the_corruption.lua
index 336570bc3..ead38cb6d 100755
--- a/server/Quests/OakmystForest/destroy_the_corruption.lua
+++ b/server/Quests/OakmystForest/destroy_the_corruption.lua
@@ -31,7 +31,7 @@ function Declined(Quest, QuestGiver, Player)
end
function Step1_Complete_KilledRotweed(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I have found and defeated Rotweed .")
+ UpdateQuestStepDescription(Quest, 1, "I have found and defeated Rotweed.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have slain the many creatures that made up Rotweed the plant fiend.")
AddQuestStepChat(Quest, 2, "Speak to Empress Anassa.", 1, "I must return to speak to Empress Anassa in Oakmyst Forest.", 0, 1950050,8300021)
@@ -39,6 +39,8 @@ function Step1_Complete_KilledRotweed(Quest, QuestGiver, Player)
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken to Empress Anassa.")
+ UpdateQuestStepDescription(Quest, 2, "I have returned and spoken to Empress Anassa.")
UpdateQuestDescription(Quest, "I encountered and defeated the twisted plant fiend Rotweed. Empress Anassa of the Oakmyst dryads was very appreciative.")
GiveQuestReward(Quest, Player)
end
@@ -46,5 +48,7 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
Step1_Complete_KilledRotweed(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/OakmystForest/druids_legacy.lua b/server/Quests/OakmystForest/druids_legacy.lua
index d05ac3145..5f55acdcb 100755
--- a/server/Quests/OakmystForest/druids_legacy.lua
+++ b/server/Quests/OakmystForest/druids_legacy.lua
@@ -34,7 +34,7 @@ end
function Step1Complete(Quest)
UpdateQuestStepDescription(Quest, 1, "I've found the tree on the island in the stream.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found the tree the druid spoke of and it looks like he had a map hidden there.")
- AddQuestStepZoneLoc(Quest, 2, "I need to find the tree overlooking the waterfall.", 3, "I must find the tree overlooking the waterfall where the druid buried the token he left behind.", 199, 914, 15, -199,830)
+ AddQuestStepZoneLoc(Quest, 2, "I need to find the tree overlooking the waterfall.", 7, "I must find the tree overlooking the waterfall where the druid buried the token he left behind.", 199, 914, 15, -199,830)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
diff --git a/server/Quests/OakmystForest/far_seas_requisition_okf050.lua b/server/Quests/OakmystForest/far_seas_requisition_okf050.lua
index 1df915426..f224f6e11 100755
--- a/server/Quests/OakmystForest/far_seas_requisition_okf050.lua
+++ b/server/Quests/OakmystForest/far_seas_requisition_okf050.lua
@@ -14,7 +14,7 @@
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must gather some mystail yearling tails.", 4, 80, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 172, 1950009,8300035)
- AddQuestStepKill(Quest, 2, "I must gather tongues from clearwater frogs.", 3, 80, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 1104, 1950020.8300003)
+ AddQuestStepKill(Quest, 2, "I must gather tongues from clearwater frogs.", 3, 80, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 1104, 1950020, 8300003)
AddQuestStepKill(Quest, 3, "I must get the hide from one Oakmyst great bear.", 1, 70, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 127, 1950023,8300016)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
diff --git a/server/Quests/OakmystForest/far_seas_requisition_okf063.lua b/server/Quests/OakmystForest/far_seas_requisition_okf063.lua
index f81212324..99581adf1 100755
--- a/server/Quests/OakmystForest/far_seas_requisition_okf063.lua
+++ b/server/Quests/OakmystForest/far_seas_requisition_okf063.lua
@@ -14,31 +14,36 @@
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must collect five Oakmyst deer pelts.", 5, 80, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 138, 1950001, 1950007, 8300015,8300013)
+ AddQuestStepKill(Quest, 2, "I must collect five badger cub pelts.", 5, 80, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 129, 1950035)
+ AddQuestStepKill(Quest, 3, "I must collect a single bear cub pelt.", 1, 70, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 128, 1950000)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have collected five Oakmyst fawn pelts.")
-
- AddQuestStepKill(Quest, 2, "I must collect five badger cub pelts.", 5, 80, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 129, 1950035)
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ QuestCheck(Quest, QuestGiver, Player)
end
function Step2Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 2, "I have collected five badger cub pelts.")
-
- AddQuestStepKill(Quest, 3, "I must collect a single bear cub pelt.", 1, 70, "To fill the requisition, I must hunt down the creatures in Oakmyst Forest, reachable by any number of mariner bells in the City of Qeynos.", 128, 1950000)
- AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ QuestCheck(Quest, QuestGiver, Player)
end
function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 3, "I have collected a single bear cub pelt.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have collected all of the items listed in the requisition.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,237,1) and QuestStepIsComplete(Player,237,2) and QuestStepIsComplete(Player,237,3) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have collected all of the items listed in the requisition.")
UpdateQuestZone(Quest, "Baubbleshire")
AddQuestStepChat(Quest, 4, "I need to talk to Diggin Diggs", 1, "I must go to the province district of Qeynos to seek out the client for this order.", 10, 6600085, 2380049)
AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
end
+end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
diff --git a/server/Quests/OakmystForest/judgement_of_the_dryads.lua b/server/Quests/OakmystForest/judgement_of_the_dryads.lua
index e967df186..96e40ef6a 100755
--- a/server/Quests/OakmystForest/judgement_of_the_dryads.lua
+++ b/server/Quests/OakmystForest/judgement_of_the_dryads.lua
@@ -13,7 +13,7 @@ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Slay five Sunshimmer Sprites.", 5, 100, "I must hunt down and slay five Sunshimmer Sprites in Oakmyst Forest.", 611, 1950034, 1950036, 1950054, 1950031,8300052,8300053,8300006,8300012)
+ AddQuestStepKill(Quest, 1, "Slay five Sunshimmer Sprites.", 5, 100, "I must hunt down and slay five Sunshimmer Sprites in Oakmyst Forest.", 611, 1950034, 1950036, 1950054, 1950031,8300051, 8300052,8300053,8300006,8300012)
AddQuestStepCompleteAction(Quest, 1, "Step1_Complete_KillSprites")
end
diff --git a/server/Quests/OakmystForest/proof_of_poachers.lua b/server/Quests/OakmystForest/proof_of_poachers.lua
index f1b649e80..f6d48a9a6 100755
--- a/server/Quests/OakmystForest/proof_of_poachers.lua
+++ b/server/Quests/OakmystForest/proof_of_poachers.lua
@@ -18,10 +18,10 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
Dialog.AddDialog("A new defender of Oakmyst? Grand! Tracker Galera seeks proof of the poachers' existence. They say they lurk the shadows at night. Bring her proof, and I'm sure she'll be grateful.")
- PlayFlavor(NPC,"","","smile",0,0,Spawn)
+ PlayFlavor(QuestGiver,"","","smile",0,0,Player)
Dialog.AddVoiceover("voiceover/english/optional1/steward_tredo/qey_adv01_oakmyst/stewardtredo001.mp3", 3490306942, 2253910242)
Dialog.AddOption("I'll keep my eyes out at night.")
Dialog.Start()
diff --git a/server/Quests/OakmystForest/runed_acorn.lua b/server/Quests/OakmystForest/runed_acorn.lua
index a2f416ddd..daf15efb8 100755
--- a/server/Quests/OakmystForest/runed_acorn.lua
+++ b/server/Quests/OakmystForest/runed_acorn.lua
@@ -33,7 +33,10 @@ function Reload(Quest, QuestGiver, Player, Step)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player, 11780) then
+ RemoveItem(Player, 11780)
+ end
+ SendMessage(Player,"You place the runed acorn in your quest satchle.")
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0162.lua b/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0162.lua
index fec88ee93..e0be5b89e 100755
--- a/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0162.lua
+++ b/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0162.lua
@@ -45,9 +45,12 @@ function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 2, "I spoke to Tanaira.")
UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the goods to Tanaira.")
-
- UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in the Peat Bog. I have been paid in full for this work, but the order was late.")
+ UpdateQuestZone(Quest,"Starcrest")
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in Starcrest Commune. I have been paid in full for this work, but the order was late.")
GiveQuestReward(Quest, Player)
+ if HasItem(Player,7080) then
+ RemoveItem(Player,7080,1)
+ end
end
function Reload(Quest, QuestGiver, Player, Step)
diff --git a/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0295.lua b/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0295.lua
index 71dcb6200..c27f114f8 100755
--- a/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0295.lua
+++ b/server/Quests/PeatBog/FarSeasDirectRequisitionPBG0295.lua
@@ -51,8 +51,8 @@ end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, FAR_SEAS_DR_PBG0295_QUEST_ID, 1) and QuestStepIsComplete(Player, FAR_SEAS_DR_PBG0295_QUEST_ID, 2) then
UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
-
- AddQuestStepChat(Quest, 3, "I must speak with Tanaira", 1, "I must seek out Tanaira here in the Peat Bog.", 11, TANAIRA_ID)
+ UpdateQuestZone(Quest,"Starcrest")
+ AddQuestStepChat(Quest, 3, "I must speak with Tanaira", 1, "I must seek out Tanaira here in Starcrest Commune.", 11, TANAIRA_ID)
AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
end
end
@@ -74,6 +74,9 @@ function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in the Peat Bog. I have been paid in full for this work, but the order was late.")
GiveQuestReward(Quest, Player)
+ if HasItem(Player,7081) then
+ RemoveItem(Player,7081,1)
+ end
end
function Reload(Quest, QuestGiver, Player, Step)
diff --git a/server/Quests/QeynosHarbor/sleek_wolf_hides.lua b/server/Quests/QeynosHarbor/sleek_wolf_hides.lua
index 1aa59cf59..cd19dfb38 100755
--- a/server/Quests/QeynosHarbor/sleek_wolf_hides.lua
+++ b/server/Quests/QeynosHarbor/sleek_wolf_hides.lua
@@ -34,7 +34,7 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 1, "I have gone out and gathered sleek wolf hides.")
UpdateQuestZone(Quest,"Qeynos Harbor")
- AddQuestStepChat(Quest, 2, "I must speak with Erwin in Qeynos Harbor.", 1, "I should take the sleek wolf hides back to Erwin in Qeynos Harbor so he can sell them soon.", 160, 2210153)
+ AddQuestStepChat(Quest, 2, "I must speak with Erwin in Qeynos Harbor.", 1, "I should take the sleek wolf hides back to Erwin in Qeynos Harbor so he can sell them soon.", 160, 2210124)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
diff --git a/server/Quests/QeynosHarbor/taking_the_bait.lua b/server/Quests/QeynosHarbor/taking_the_bait.lua
index b8ec01daf..f3d093e70 100755
--- a/server/Quests/QeynosHarbor/taking_the_bait.lua
+++ b/server/Quests/QeynosHarbor/taking_the_bait.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must gather five bog faerie wings for Sean.", 5, 80, "I need to head over to the Peat Bog and get five pieces of bog slug meat and five bog faerie wings.", 110, 8290002,8290003,8290052,8290008,8290009,8290010,8290013,8290014,8290011,8290012,8290017,8290018,8290019,8290053,8290044)
+ AddQuestStepKill(Quest, 1, "I must gather five bog faerie wings for Sean.", 5, 80, "I need to head over to the Peat Bog and get five pieces of bog slug meat and five bog faerie wings.", 110, 8290001,8290002,8290003,8290052,8290008,8290009,8290010,8290013,8290014,8290011,8290012,8290017,8290018,8290019,8290053,8290044)
AddQuestStepKill(Quest, 2, "I must gather five bog slug meat for Sean.", 5, 80, "I need to head over to the Peat Bog and get five pieces of bog slug meat and five bog faerie wings.", 133, 8290005,8290006,8290031,8290027)
UpdateQuestZone(Quest, "The Peat Bog")
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
@@ -51,7 +51,7 @@ end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, 5571, 1) and QuestStepIsComplete(Player, 5571, 2) then
- UpdateQuestStepDescription(Quest, "I've gathered the bait supplies Sean needs.")
+-- UpdateQuestStepDescription(Quest, 2,"I've gathered the bait supplies Sean needs.")
UpdateQuestTaskGroupDescription(Quest, 2, "I've collected the five pieces of slug meat and five bog faerie wings.")
UpdateQuestZone(Quest, "Qeynos Harbor")
AddQuestStepChat(Quest, 3, "I need to return to Sean Wellfayer on the docks of Qeynos Harbor.", 1, "Sean Wellfayer Should be pleased with this bait once I get it back to him at the harbor.", 11, 2210065)
@@ -71,10 +71,10 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
Step1Complete(Quest, QuestGiver, Player)
- elseif Step == 1 then
- Step2Complete(Quest, QuestGiver, Player)
- elseif Step == 3 then
- CheckProgress(Quest, QuestGiver, Player)
- end
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step ==3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
end
diff --git a/server/Quests/ScaleYard/a_worthy_teacher.lua b/server/Quests/ScaleYard/a_worthy_teacher.lua
index 753b51c1f..cc13186dd 100755
--- a/server/Quests/ScaleYard/a_worthy_teacher.lua
+++ b/server/Quests/ScaleYard/a_worthy_teacher.lua
@@ -1,37 +1,47 @@
--[[
Script Name : a_worthy_teacher.lua
Script Purpose : Handles the quest, "A Worthy Teacher"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 21.07.2022
Script Notes :
- Zone : The Graveyard
+ Zone : Scale Yard
Quest Giver : Zekvila Dizelk
Preceded by : Bring Out Your Souls
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to find and speak to Raban.", 1, "I should be able to find this Raban person in the Stonestair Byway district.", 11, 1350037)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stonestair Byway")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken to Raban.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've spoken with Raban and she's given me a message that I don't think Zekvila will like.")
+ UpdateQuestZone(Quest,"Scale Yard")
- AddQuestStepChat(Quest, 2, "I need to return to Zekvila.", 1, "I need to return to Zekvila in the Graveyard.", 11, 1250034)
+ AddQuestStepChat(Quest, 2, "I need to return to Zekvila.", 1, "I need to return to Zekvila in Scale Yard.", 11, 1390128)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Zekvila.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Zekvila has received the message, and surprisingly I'm still alive.")
UpdateQuestDescription(Quest, "Zekvila was outraged over the response she got from Raban. She even forgot to pay me. I don't think I should press the issue, though.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I want you to travel to Stonestair Byway and find an Erudite named Raban. She's insufferable, but is well-versed in the necromantic arts. She may be able to discen what I am doing wro-- ... I mean, what immense power I must summon. Give her this missive and treat her with respect. Do not trifle with her ... or with me.")
+ Dialog.AddVoiceover("voiceover/english/zekvila_dizelk/fprt_hood06/quests/zekviladizelk/zekvila_x2_accept.mp3", 280848054, 3784973788)
+ Dialog.AddOption("I'll go give her the message.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/avoiding_the_sea_beasties.lua b/server/Quests/ScaleYard/avoiding_the_sea_beasties.lua
index d30a7836b..2c8e489d4 100755
--- a/server/Quests/ScaleYard/avoiding_the_sea_beasties.lua
+++ b/server/Quests/ScaleYard/avoiding_the_sea_beasties.lua
@@ -1,7 +1,7 @@
--[[
Script Name : avoiding_the_sea_beasties.lua
Script Purpose : Handles the quest, "Avoiding the Sea Beasties"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 23.07.2022
Script Notes :
@@ -11,27 +11,38 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to kill ten orcs in the Commonlands.", 10, 100, "I need to travel to the Commonlands and kill ten orcs.", 611, 330068, 330126, 330128, 330129, 330202, 330204, 330218, 330249, 330250, 330268, 330265, 330323, 330327)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Commonlands")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've killed the orcs in the Commonlands.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have killed the orcs as I was tasked by the Warchief.")
-
- AddQuestStepChat(Quest, 2, "I should return to Dunn.", 1, "I should return to Dunn in Scale Yard.", 11, 1390036)
+ UpdateQuestZone(Quest,"Scale Yard")
+ AddQuestStepChat(Quest, 2, "I should return to Dunn.", 1, "I should return to Dunn in Scale Yard and tell him about the orcs.", 11, 1390036)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Dunn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've informed Dunn that the orcs have been destroyed and Lucan's men didn't intervene.")
+
UpdateQuestDescription(Quest, "Dunn Coldbrow has chosen to ask Verin why I wasn't killed by Lucan when I killed the orcs. I think I can see how his 'advisor' may be the real Warchief. Dunn doesn't seem to have much common sense, only a very strong presence.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("And face the wrath of Lucan? Do you think I'm mad? Verin says we're not to kill orcs without the Overlord's command. But you could do it! You seem eager for battle. Arm yourself well, journey beyond the gates, and fight the Bloodskulls. Crush them! If you die, you'll die with honor; and if you return alive and victorious ... may the mighty fist of Lucan spare your life.")
+ Dialog.AddVoiceover("voiceover/english/dunn_coldbrow/fprt_hood06/quests/dunncoldbrow/dunn_x2_accept.mp3",2604399476,564355703)
+ PlayFlavor(QuestGiver, "","","boggle",0,0, Player)
+ Dialog.AddOption("We'll just see about that.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/blind_taste_test.lua b/server/Quests/ScaleYard/blind_taste_test.lua
index 6e83dce8f..83255c3de 100755
--- a/server/Quests/ScaleYard/blind_taste_test.lua
+++ b/server/Quests/ScaleYard/blind_taste_test.lua
@@ -10,6 +10,7 @@
Preceded by : Icebrew's Secret Recipe
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -21,7 +22,7 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have had Modian K'Jarr taste the brew.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found a Dark Elf by the name of Modian K'Jarr to drink the Wheat Rust Stout. He immediately went blind and I think he might have died.")
- AddQuestStepChat(Quest, 2, "I should return to Bartender Icebrew.", 1, "I should return to Bartender Icebrew in Scale Yard.", 11, 1390051)
+ AddQuestStepChat(Quest, 2, "I should return to Bartender Icebrew.", 1, "I should tell Icebrew not to serve that drink. Well, except to his enemies, I guess.", 11, 1390051)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
@@ -31,7 +32,12 @@ function QuestComplete(Quest, QuestGiver, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Take this tankard of Stout and head to Longshadow Alley where those prissy little Dark Elves live. The Iksar at my bar drink some strange things, so I can't use them to gauge the quality of my brew. Find one of those little purple freaks in a tavern and offer him a taste. Let me know how he likes it. Got it?")
+ Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x2_accept.mp3", 1018004755, 1842224270)
+ Dialog.AddOption("Will do. I'll let you know what he thinks.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/door_to_door_anger.lua b/server/Quests/ScaleYard/door_to_door_anger.lua
index 0437fc4a7..77d7b39fb 100755
--- a/server/Quests/ScaleYard/door_to_door_anger.lua
+++ b/server/Quests/ScaleYard/door_to_door_anger.lua
@@ -1,7 +1,7 @@
--[[
Script Name : door_to_door_anger.lua
Script Purpose : Handles the quest, "Door to Door Anger"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 21.07.2022
Script Notes :
@@ -10,29 +10,40 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to speak with Plordo.", 1, "I need to get Plordo the gnome to give Evelyn's money back.", 11, 1360008)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Temple Street")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken with Plordo.")
UpdateQuestTaskGroupDescription(Quest, 1, "Plordo is quite adamant over the fact that he won't offer a refund.")
- AddQuestStepChat(Quest, 2, "I should return to Evelyn.", 1, "I should return to Evelyn in Scale Yard.", 11, 1390023)
+ AddQuestStepChat(Quest, 2, "I need to talk with Evelyn.", 1, "I need to let Evelyn know that the gnome will not be giving her a refund.", 11, 1390023)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+ UpdateQuestZone(Quest,"Scale Yard")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken to Evelyn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Evelyn seemed to take the news rather well. That's the part that scares me.")
UpdateQuestDescription(Quest, "Evelyn Stoutfist was pretty upset when she heard the news about not getting a refund. I think she's planning to do something to the gnome.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Unless you can fix the contraption, but it's completely broken, thanks to that no-good gnome. If you want to help, go find that scoundrel and get my money back. I think his name is Plordo Blotty or something. His shop is in the Districts.")
+ Dialog.AddVoiceover("voiceover/english/evelyn_stoutfist/fprt_hood06/quests/evelynstoutfist/evelyn_x1_accept.mp3",0,0)
+ PlayFlavor(QuestGiver, "","","confused",0,0, Player)
+ Dialog.AddOption("I'll see what I can do.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/ending_the_fury.lua b/server/Quests/ScaleYard/ending_the_fury.lua
index ce18e05ce..a8541c574 100755
--- a/server/Quests/ScaleYard/ending_the_fury.lua
+++ b/server/Quests/ScaleYard/ending_the_fury.lua
@@ -10,27 +10,38 @@
Preceded by : None
Followed by : Avoiding the Sea Beasties
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill five Darkblade furies.", 5, 100, "I need to kill five Darkblade furies in order to ensure the Barbarians' place on the front lines of the upcoming Orc assault. I should be able to find them living in the sewers.", 611, 1540017, 1540019, 1540041)
+ AddQuestStepKill(Quest, 1, "I must kill five Darkblade furies.", 5, 100, "I need to kill five Darkblade furies in order to ensure the Barbarians' place on the front lines of the upcoming Orc assault. I should be able to find them living in the sewers.", 611, 8430024, 8430004)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Thieves Way")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have killed the Darkblade furies.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've killed all five of the Darkblade furies like I said I would.")
-
- AddQuestStepChat(Quest, 2, "I should return to Dunn.", 1, "I should return to Dunn in Scale Yard.", 11, 1390036)
+ UpdateQuestZone(Quest,"Scale Yard")
+ AddQuestStepChat(Quest, 2, "I should return to Dunn.", 1, "I should return to Dunn and let him know that the furies are now dead.", 11, 1390036)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Dunn.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've informed Dunn that I've killed the furies. He seemed quite pleased by this.")
+
UpdateQuestDescription(Quest, "I've helped kill the Darkblade furies in the sewers. I have no idea what this has to do with the Barbarians killing the Orcs, though. I have a feeling Dunn's Iksar advisor, Verin Ithelz, is pursuing his own agenda rather than helping the Barbarians.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You, brave warrior, must use your might and bear down upon the furies. The more slugs you kill, the more likely the Overlord is to consider letting barbarians on the front lines during the orc invasion. Go to the sewers and kill those filthy Darkblade slugs. This deed shall gain you the respect of Dunn Coldbrow, Warchief of the People.")
+ Dialog.AddVoiceover("voiceover/english/dunn_coldbrow/fprt_hood06/quests/dunncoldbrow/dunn_x1_accept.mp3",92877347,212315096)
+ PlayFlavor(QuestGiver, "","","agree",0,0, Player)
+ Dialog.AddOption("They don't stand a chance!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/icebrews_secret_recipe.lua b/server/Quests/ScaleYard/icebrews_secret_recipe.lua
index ef40ba372..4c4b068a0 100755
--- a/server/Quests/ScaleYard/icebrews_secret_recipe.lua
+++ b/server/Quests/ScaleYard/icebrews_secret_recipe.lua
@@ -10,10 +10,11 @@
Preceded by : None
Followed by : Blind Taste Test
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Collect jars of rust monster blood", 10, 100, "I should head out to the Sunken City and collect ten vials of blood from some of those rust monsters.", 180, 1240011, 1240013)
+ AddQuestStepKill(Quest, 1, "Collect jars of rust monster blood", 10, 100, "Icebrew, the Bartender in Scale Yard, has asked me to gather together ten jars of rust monster blood. He says that the blood is actually liquid rust. I'll take his word for it.", 180, 1240011, 1240013)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
@@ -21,17 +22,24 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have collected the jars.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've collected up the blood from the Rust Monsters that Icebrew wanted. I guess he was right... this blood DOES look like rust.")
- AddQuestStepChat(Quest, 2, "I should return to Bartender Icebrew.", 1, "I should return to Bartender Icebrew in Scale Yard.", 11, 1390051)
+ AddQuestStepChat(Quest, 2, "I should return to Bartender Icebrew.", 1, "I should bring this rust monster blood to Bartender Icebrew for his brew.", 180, 1390051)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Icebrew has given me my money and my free beer. I think I'll hold onto the beer for now... it seems more like a weapon than a drink.")
+ UpdateQuestStepDescription(Quest, 2, "I gave Icebrew the blood that I collected.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I gave Icebrew the blood that I collected.")
+ UpdateQuestDescription(Quest, "Icebrew has given me my money and my free beer. I think I'll hold onto the beer for now... it seems more like a weapon than a drink.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Go to the Sunken City and slay the rust monsters that lurk there. Kill the beasts and squeeze them with all your might. Out of their bodies should pour about a jar's worth of pure, liquid rust. Come back with as many jars as you can, and we have a deal.")
+ Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x1_accept.mp3", 2282916525, 4054783281)
+ Dialog.AddOption("I can do this.", "Dialog9")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/poisonous_zever_CLASSIC.lua b/server/Quests/ScaleYard/poisonous_zever_CLASSIC.lua
new file mode 100755
index 000000000..6991d18f9
--- /dev/null
+++ b/server/Quests/ScaleYard/poisonous_zever_CLASSIC.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : Quests/ScaleYard/poisonous_zever_CLASSIC.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.11 04:12:21
+ Script Purpose : NEEDS NEW SPAWN IDS FOR CLASSIC
+
+ Zone : ScaleYard
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to gather some putrid dragoon tongues for Zever's antidote.", 9, 100, "I need to kill nine putrid dragoon in Fallen Gate.", 89, 1190050)-- 1190050, 1190004, 1190008, 1190043, 1190045, 1190051, 1190052, 1190061, 1190062, 1190069)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Fallen Gate")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've gathered putrid dragoon tongues for Zever's antidote.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I killed nine tormented souls in Fallen Gate.")
+ UpdateQuestZone(Quest,"Scale Yard")
+
+ AddQuestStepChat(Quest, 2, "I should return to Zever Tzizzink.", 1, "I should return to Zever Tzizzink to deliver the tongues.", 89, 1370024)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've taken the ingredients to Zever.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I returned to Zever Tzizzink.")
+ UpdateQuestZone(Quest,"Fallen Gate")
+
+ AddQuestStepKill(Quest, 3, "I need to gather some tainted wretch hearts for Zever's antidote.", 12, 100, "I need to get some tainted wretch hearts from zombies in Fallen Gate for Zever's antidote.", 1148, 1190004, 1190008, 1190043, 1190045, 1190051, 1190052, 1190061, 1190062, 1190069)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I've gathered the tainted hearts for Zever's antidote.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've gathered the tainted hearts for Zever's antidote.")
+ UpdateQuestZone(Quest,"Scale Yard")
+
+ AddQuestStepChat(Quest, 4, "I should return to Zever Tzizzink.", 1, "I need to take these hearts back to Zever in the Scale Yard.", 1148, 1370024)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I've taken the ingredients to Zever.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "I've taken Zever the ingredients I gathered for him.")
+ UpdateQuestDescription(Quest, "That double-crossing sneak! Instead of getting ingredients for an antidote, Zever had me gathering ingredients for a deadly poison! He thought he gave me a piece of junk for a reward, but he was mistaken!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Yes, but if I live, my revenge shall be so much sweeter! Now go, and hurry back!")
+ Dialog.AddVoiceover("voiceover/english/zever_tzizzink/fprt_hood06/quests/zevertzizzink/zevertzizzink004.mp3",2397600191,3617877932)
+ Dialog.AddOption("I'll do what I can.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/ScaleYard/swordchucks_of_doom.lua b/server/Quests/ScaleYard/swordchucks_of_doom.lua
index 3305f562b..165fae0d8 100755
--- a/server/Quests/ScaleYard/swordchucks_of_doom.lua
+++ b/server/Quests/ScaleYard/swordchucks_of_doom.lua
@@ -10,7 +10,7 @@
Preceded by : None
Followed by : None
--]]
-
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to speak with a Barbarian named Briac Tundrafire.", 1, "Once I find Briac Tundrafire, I need to tell him his 'sword-chucks' are in.", 11, 1390053)
@@ -21,21 +21,27 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken with Briac Tundrafire.")
UpdateQuestTaskGroupDescription(Quest, 1, "I let Briac Tundrafire know his sword-chucks were in . He seemed quite happy about it.")
- AddQuestStepChat(Quest, 2, "I should return to Shilza.", 1, "I should return to Armsdealer Shilza in Scale Yard.", 11, 1390046)
+ AddQuestStepChat(Quest, 2, "I should return to Shilza.", 1, "Tundrafire said he'll be by later, so I should let Shilza know about it.", 11, 1390046)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 1, "I have spoken with Briac Tundrafire.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I let Briac Tundrafire know his sword-chucks were in . He seemed quite happy about it.")
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Shilza.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have told Shilza about Briac Tundrafire stopping by later.")
UpdateQuestDescription(Quest, "Shilza has paid me for giving Briac the message his 'sword-chucks' are in. I'm not too sure which person Shilza was referring to when she said that weapon would sever someone's head from their shoulders.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("He has one of those impossible barbarian names ... BurningIcelands or WastelandAflame or ... I remember! Briac Tundrafire! Yes ... Briac Tundrafire. Big, tall, built like he should be pulling a supply wagon. Ah, they all look alike to me. Just find him and tell him I have his sword-chucks in stock.")
+ Dialog.AddVoiceover("voiceover/english/arms_dealer_shilza/fprt_hood06/quests/armsdealershilza/shilza_x1_accept.mp3",4001987290,675557143)
+ PlayFlavor(QuestGiver, "","","confused",0,0, Player)
+ Dialog.AddOption("I'll let him know.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/tasty_tears_of_the_thralls.lua b/server/Quests/ScaleYard/tasty_tears_of_the_thralls.lua
index a898371a3..74c1475dd 100755
--- a/server/Quests/ScaleYard/tasty_tears_of_the_thralls.lua
+++ b/server/Quests/ScaleYard/tasty_tears_of_the_thralls.lua
@@ -15,13 +15,15 @@
function Init(Quest)
AddQuestStepKill(Quest, 1, "Collect tears from Brokentusk prophets", 4, 100, "Dyerth said I should be able to find some Brokentusk prophets in the Ruins, so that's where I should start.", 2489, 1270009)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Ruins")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have collected the tears from the orcs.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have collected the tears of four Brokentusk prophets.")
+ UpdateQuestZone(Quest,"Scale Yard")
- AddQuestStepChat(Quest, 2, "I should return to Dyerth Shiraz.", 1, "I should return to Dyerth Shiraz in Scale Yard.", 11, 1390054)
+ AddQuestStepChat(Quest, 2, "I should return to Dyerth Shiraz.", 1, "I should return these to Dyerth Shiraz so that she can start making some Sazzpazilla.", 11, 1390054)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
diff --git a/server/Quests/ScaleYard/verins_new_thralls.lua b/server/Quests/ScaleYard/verins_new_thralls.lua
index 771fe0e32..760f52828 100755
--- a/server/Quests/ScaleYard/verins_new_thralls.lua
+++ b/server/Quests/ScaleYard/verins_new_thralls.lua
@@ -1,7 +1,7 @@
--[[
Script Name : verins_new_thralls.lua
Script Purpose : Handles the quest, "Verin's New Thralls"
- Script Author : torsten
+ Script Author : torsten/Dorbin
Script Date : 24.07.2022
Script Notes : Auto generated with QuestParser.
@@ -10,28 +10,38 @@
Preceded by : None
Followed by : Preventative Maintenance
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must kill ten Dervish crooks.", 10, 100, "I should travel to the Sprawl and start beating on these dervish crooks.", 611, 1260000)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Sprawl")
end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have killed the Dervish crooks.")
UpdateQuestTaskGroupDescription(Quest, 1, "I've beaten up ten of the dervishes.")
-
- AddQuestStepChat(Quest, 2, "I should return to Verin Ithelz.", 1, "I should return to Verin Ithelz in Scale Yard.", 11, 1390020)
+ UpdateQuestZone(Quest,"Scale Yard")
+ AddQuestStepChat(Quest, 2, "I should return to Verin Ithelz.", 1, "They didn't take too long before they died, so I don't think Verin will be pleased with these potential replacements for his current thralls. I should let him know this.", 11, 1390020)
AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Verin paid me for testing the dervish crooks' mettle and let me keep one of their manacles. He told me that he may have further use of me in the future, so I should check back with him later.")
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Verin.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have told Verin about the durability of the dervishes, or lack thereof.")
+ UpdateQuestDescription(Quest, "Verin paid me for testing the dervish crooks' mettle and let me keep one of their manacles. He told me that he may have further use of me in the future, so I should check back with him later.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I've been considering the chattel that runs free in the Sprawl. You know ... those roustabouts who call themselves Guttersnipes. Ha! I want to know how much of a beating they can take before they're no longer ... ah ... useful. Yes. Go to the Sprawl and very slowly kill some of them. Return to me with your report, and I will pay you in coin.")
+ --Dialog.AddVoiceover("voiceover/english/colin_stoutfist/fprt_hood06/quests/colinstoutfist/colin_x1_accept.mp3",1343954066,3596296789)
+ PlayFlavor(QuestGiver, "","","tapfoot",0,0, Player)
+ Dialog.AddOption("I'll see how long they last. You better have that coin ready!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/ScaleYard/will_fight_for_fun.lua b/server/Quests/ScaleYard/will_fight_for_fun.lua
index d4220cb17..a691266a7 100755
--- a/server/Quests/ScaleYard/will_fight_for_fun.lua
+++ b/server/Quests/ScaleYard/will_fight_for_fun.lua
@@ -1,37 +1,39 @@
--[[
Script Name : will_fight_for_fun.lua
Script Purpose : Handles the quest, "Will Fight for Fun"
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 25.07.2022
- Script Notes :
+ Script Notes : Was called 'Will Fight for Fun' in pre-launch. Renamed 'Slaying the Giants' at launch.-Dorbin
Zone : Scale Yard
Quest Giver : Colin Stoutfist
Preceded by : Will Work for War
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I need to kill ten giantslayer thugs in the Sprawl.", 10, 100, "Colin told me to kill ten giantslayer thugs in the Sprawl.", 611, 1260013)
- AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
-end
-
-function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I killed the giantslayer thugs.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I killed the giantslayer thugs in the Sprawl.")
-
- AddQuestStepChat(Quest, 2, "I should return to Colin.", 1, "I should return to Colin Stoutfist in Scale Yard.", 11, 1390052)
- AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+ UpdateQuestZone(Quest,"The Sprawl")
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
- UpdateQuestDescription(Quest, "Colin Stoutfist had no reward for me. This was the last task...")
+ UpdateQuestStepDescription(Quest, 1, "I have killed the giantslayers.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've confronted the Giantslayers and taught them that it's not nice to steal coin or life, by slaying ten of their kind.")
+ UpdateQuestDescription(Quest, "I've killed a bunch of those thugs. To think they were once glorious Barbarians, and now all they are is just food for the maggots. It's a shame they chose to side with the wrong guys.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Be my guest! But I'll warn ya' ... if yer gonna stick your nose in this business, you'd better kill at least ten of 'em. Otherwise, Warchief Coldbrow will wonder why you even bothered. Be glorious in battle, friend!")
+ Dialog.AddVoiceover("voiceover/english/colin_stoutfist/fprt_hood06/quests/colinstoutfist/colin_x2_accept.mp3",138791727,2652552680)
+ PlayFlavor(QuestGiver, "","","agree",0,0, Player)
+ Dialog.AddOption("I'll show them their mistake!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -44,8 +46,6 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- Step1Complete(Quest, QuestGiver, Player)
- elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/ScaleYard/will_work_for_war.lua b/server/Quests/ScaleYard/will_work_for_war.lua
index a89b94697..03b027369 100755
--- a/server/Quests/ScaleYard/will_work_for_war.lua
+++ b/server/Quests/ScaleYard/will_work_for_war.lua
@@ -1,7 +1,7 @@
--[[
Script Name : will_work_for_war.lua
Script Purpose : Handles the quest, "Will Work for War"
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 25.07.2022
Script Notes :
@@ -10,7 +10,7 @@
Preceded by : None
Followed by : Will Fight for Fun
--]]
-
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to speak with Coldbrow in the Scale Yard.", 1, "I need to find and speak with this so-called Warchief.", 11, 1390036)
@@ -21,25 +21,48 @@ function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have spoken with Coldbrow.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have spoken to Dunn Coldbrow and was told to tell Colin to calm down.")
- AddQuestStepChat(Quest, 2, "I should speak to Mirin Zilishia.", 1, "I should speak to Mirin Zilishia in Sclae Yard.", 11, 1390006)
+ AddQuestStepChat(Quest, 2, "I should let Colin know that Dunn Coldbrow doesn't have any plans right now.", 1, "Colin's not going to be too happy when I let him know that there's no work for him.", 11, 1390052)
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
end
function Step2Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 2, "I have spoken with Mirin Zilishia.")
+ UpdateQuestStepDescription(Quest, 2, "I have returned to Colin Stoutfist.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "Colin has now asked me to speak with Mirin here to see if there's any work for him.")
+ AddQuestStepChat(Quest, 3, "I should speak to Mirin Zilishia.", 1, "I need to try to find this Mirin guy and let him know Colin's asking for work.", 11, 1390006)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have spoken with Mirin Zilishia.")
UpdateQuestTaskGroupDescription(Quest, 2, "I have spoken to Mirin Zilishia in Scale Yard.")
- AddQuestStepChat(Quest, 3, "I should return to Colin.", 1, "I should return to Colin Stoutfist here in Scale Yard.", 11, 1390052)
- AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+ AddQuestStepChat(Quest, 4, "I should let Colin know that Dunn Coldbrow doesn't have any plans right now.", 1, "Colin's not going to be too happy when I let him know that there's no work for him.", 11, 1390052)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have spoken with Mirin Zilishia.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have spoken to Mirin Zilishia in Scale Yard.")
+--Colin's not going to be too happy when I let him know that there's no work for him.
+ AddQuestStepChat(Quest, 5, "I need to speak with Colin in the Scale Yard.", 1, "Colin's not going to be too happy when I let him know that there's no work for him.", 11, 1390052)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have returned to Colin Stoutfist.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "Colin was quite disappointed when I told him about the lack of work.")
UpdateQuestDescription(Quest, "Colin Stoutfist is quite upset with the state of things in Scale Yard. It seems he has nothing to do, and began to make an unpleasant comment about his Warchief. He had the wisdom to stop mid-sentence.")
GiveQuestReward(Quest, Player)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Warchief Dunn Coldbrow is in his palace. I tell you, when we crush the last of those filthy orcs, their citadel will be ours! Then we barbarians will toss Lucan out on his big, bony butt, and roast his annoying iksar on spits! Mmm ... I hear iksar meat tastes just like tundrafowl.")
+ Dialog.AddVoiceover("voiceover/english/colin_stoutfist/fprt_hood06/quests/colinstoutfist/colin_x1_accept.mp3",1343954066,3596296789)
+ PlayFlavor(QuestGiver, "","","frustrated",0,0, Player)
+ Dialog.AddOption("I'll return once I've spoken with him.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -56,6 +79,10 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 2 then
Step2Complete(Quest, QuestGiver, Player)
elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/SouthQeynos/OutlyingQeynosCreatureCataloging.lua b/server/Quests/SouthQeynos/OutlyingQeynosCreatureCataloging.lua
index fa61f38ce..56cfa7c1c 100755
--- a/server/Quests/SouthQeynos/OutlyingQeynosCreatureCataloging.lua
+++ b/server/Quests/SouthQeynos/OutlyingQeynosCreatureCataloging.lua
@@ -3,7 +3,7 @@
Script Purpose : Handles the quest, "Outlying Qeynos Creature Cataloging"
Script Author : Shatou
Script Date : 1/9/2020
- Script Notes :
+ Script Notes : Updated for skill use and updates - Dorbin 9/12/2023
Zone : Catalog
Quest Giver : Outlying Qeynos Creature Catalog from Sage Indis Surion
@@ -34,52 +34,71 @@ local A_BOG_FAERIE_ID = 1980007
local A_BOG_FAERIE_ID_2 = 1980008
local A_BOG_FAERIE_ID_3 = 1980010
local A_BOG_FAERIE_ID_4 = 1980052
+local Catalogue = 42 --2550196
+local Catalogue2 = 2550196 --
function Init(Quest)
- AddQuestStepSpell(Quest, 1, "I must find an Oakmyst fairy.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, AN_OAKMYST_FAIRY_ID, AN_OAKMYST_FAIRY_ID_2, AN_OAKMYST_FAIRY_ID_3, AN_OAKMYST_FAIRY_ID_4)
+
+ UpdateQuestZone(Quest,"Multiple Zones")
+ AddQuestStep (Quest, 1, "I must find an Oakmyst fairy.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- AddQuestStepSpell(Quest, 2, "I must find a sunshimmer sprite.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_SUNSHIMMER_SPIRTE_ID, A_SUNSHIMMER_SPIRTE_ID_2, A_SUNSHIMMER_SPIRTE_ID_3)
+ AddQuestStep(Quest, 2, "I must find a sunshimmer sprite.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
- AddQuestStepSpell(Quest, 3, "I must find a badger cub.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_BADGER_CUB_ID)
+ AddQuestStep(Quest, 3, "I must find a badger cub.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
- AddQuestStepSpell(Quest, 4, "I must find a skittering scavenger.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_SKITTERING_SCAVENGER_ID)
+ AddQuestStep(Quest, 4, "I must find a ruins skulker.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
- AddQuestStepSpell(Quest, 5, "I must find a spectral student.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_SPECTRAL_STUDENT_ID)
+ AddQuestStep(Quest, 5, "I must find a Flamepaw loyalist.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
- AddQuestStepSpell(Quest, 6, "I must find a corrupted dryad.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_CORRUPTED_DRYAD_ID, A_CORRUPTED_DRYAD_ID_2)
+ AddQuestStep(Quest, 6, "I must find a sleepless one.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
- AddQuestStepSpell(Quest, 7, "I must find an alabaster golem.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, AN_ALABASTER_GOLEM_ID, AN_ALABASTER_GOLEM_ID_2)
+ AddQuestStep(Quest, 7, "I must find an alabaster golem.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
- AddQuestStepSpell(Quest, 8, "I must find a Dustpaw guard.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_DUSTPAW_GUARD_ID)
+ AddQuestStep(Quest, 8, "I must find a Dustpaw guard.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
- AddQuestStepSpell(Quest, 9, "I must find an albino python.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, AN_ALBINO_PYTHON_ID)
+ AddQuestStep(Quest, 9, "I must find an albino python.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
- AddQuestStepSpell(Quest, 10, "I must find a bog sludge.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_BOG_SLUDGE_ID)
+ AddQuestStep(Quest, 10, "I must find a bog sludge.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
- AddQuestStepSpell(Quest, 11, "I must find a marsh hatchling.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_MARSH_HATCHLING_ID)
+ AddQuestStep(Quest, 11, "I must find a marsh hatchling.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
- AddQuestStepSpell(Quest, 12, "I must find a bog faerie.", 1, 100, "I am tracking down several creatures and cataloging them.", 11, A_BOG_FAERIE_ID, A_BOG_FAERIE_ID_2, A_BOG_FAERIE_ID_3, A_BOG_FAERIE_ID_4)
+ AddQuestStep(Quest, 12, "I must find a bog faerie.", 1, 100, "I am tracking down several creatures and cataloging them.", 11)
AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+
end
function CheckProgress(Quest, QuestGiver, Player)
- if QuestStepIsComplete(Player, THIS_QUEST_ID, 1) and QuestStepIsComplete(Player, THIS_QUEST_ID, 2) and QuestStepIsComplete(Player, THIS_QUEST_ID, 3) and QuestStepIsComplete(Player, THIS_QUEST_ID, 4) and QuestStepIsComplete(Player, THIS_QUEST_ID, 5) and QuestStepIsComplete(Player, THIS_QUEST_ID, 6) and QuestStepIsComplete(Player, THIS_QUEST_ID, 7) and QuestStepIsComplete(Player, THIS_QUEST_ID, 8) and QuestStepIsComplete(Player, THIS_QUEST_ID, 9) and QuestStepIsComplete(Player, THIS_QUEST_ID, 10) and QuestStepIsComplete(Player, THIS_QUEST_ID, 11) then
+ if QuestStepIsComplete(Player, THIS_QUEST_ID, 1) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 2) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 3) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 4) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 5) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 6) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 7) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 8) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 9) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 10) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 11) and
+ QuestStepIsComplete(Player, THIS_QUEST_ID, 12) then
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestTaskGroupDescription(Quest, 1, "I have located all of the creatures I was looking for.")
UpdateQuestDescription(Quest, "I've successfully catalogued all the creatures in the Outlying Qeynos creature guide.")
GiveQuestReward(Quest, Player)
+ if HasItem(Player,1001109) then
+ RemoveItem(Player,1001109,1)
+ end
end
end
@@ -173,7 +192,7 @@ function Reload(Quest, QuestGiver, Player, Step)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ AddSpellBookEntry(Player, 2550196, 1) --CREATURE CATALOGUE
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/SouthQeynos/barbaric_chores.lua b/server/Quests/SouthQeynos/barbaric_chores.lua
index 07104f993..70ecc8345 100755
--- a/server/Quests/SouthQeynos/barbaric_chores.lua
+++ b/server/Quests/SouthQeynos/barbaric_chores.lua
@@ -11,9 +11,9 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Hunt white spiders in the Caves for undamaged venom sacs.", 3, 60, "I need to go to the Caves by mariner bell within the City of Qeynos and slay spiders for their venom sacs, but I must be careful not to damage them.", 109, 1970012,8260019)
+ AddQuestStepKill(Quest, 1, "Hunt white spiders in the Caves for undamaged venom sacs.", 3, 60, "I need to go to the Caves by mariner bell within the City of Qeynos and slay spiders for their venom sacs, but I must be careful not to damage them.", 109, 1970012,8260019,8340030,8340032,8340049,8340050,8340051)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- UpdateQuestZone(Quest,"Caves")
+ UpdateQuestZone(Quest,"Multiple Zones")
end
function Accepted(Quest, QuestGiver, Player)
diff --git a/server/Quests/SouthQeynos/corrupted_dryad_nuisance.lua b/server/Quests/SouthQeynos/corrupted_dryad_nuisance.lua
index 6b4d3809d..4ebb6e588 100755
--- a/server/Quests/SouthQeynos/corrupted_dryad_nuisance.lua
+++ b/server/Quests/SouthQeynos/corrupted_dryad_nuisance.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must slay three corrupted dryads.", 3, 100, "I must go into the Oakmyst Forest and slay three of the corrupted dryads that plague the area.", 611, 8300004)
@@ -17,7 +18,13 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ PlayFlavor(QuestGiver,"","","sniff", 0, 0, Player)
+ Dialog.AddDialog( "I love walking through the Oakmyst forest, but in recent times corrupt dryads have taken over the area. These cretins love to ruin my walks. If you could rid the world of these horrid creatures, it would be a noble task indeed.")
+ Dialog.AddVoiceover("voiceover/english/fredrick_losce/qey_south/fredricklosce001.mp3", 2839949411, 2971198506)
+ Dialog.AddOption("Gladly. I'll take care of these dryads.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/SouthQeynos/gathering_components.lua b/server/Quests/SouthQeynos/gathering_components.lua
index 421d0d081..c7c216edd 100755
--- a/server/Quests/SouthQeynos/gathering_components.lua
+++ b/server/Quests/SouthQeynos/gathering_components.lua
@@ -11,6 +11,7 @@
--]]
function Init(Quest)
+ UpdateQuestZone(Quest,"Peat Bog")
AddQuestStepKill(Quest, 1, "Hunt bog faeries in the Peat Bog.", 1, 33, "I must gather up the rare components Khalil'Mun needs for his potion. I will find them in the Peat Bog.", 110, 8290002,8290003,8290052,8290008,8290009,8290010,8290013,8290014,8290011,8290012,8290017,8290018,8290019,8290053,8290044)
AddQuestStepKill(Quest, 2, "Hunt bog slugs in the Peat Bog.", 1, 25, "I must gather up the rare components Khalil'Mun needs for his potion. I will find them in the Peat Bog.", 83, 8290005,8290006,8290031,8290027)
AddQuestStepKill(Quest, 3, "Hunt bog sludges in the Peat Bog.", 1, 33, "I must gather up the rare components Khalil'Mun needs for his potion. I will find them in the Peat Bog.", 178, 8290004)
@@ -55,9 +56,10 @@ end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, 5555, 1) and QuestStepIsComplete(Player, 5555, 2) and QuestStepIsComplete(Player, 5555, 3) then
- UpdateQuestTaskGroupDescription(Quest, 1, "I've gathered the components Khalil'Mun needs for his potion.")
- AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I've gathered the components Khalil'Mun needs for his potion.")
+ UpdateQuestZone(Quest,"South Qeynos")
AddQuestStepChat(Quest, 4, "I need return to Khalil'Mun.", 1, "Khalil'Mun is waiting for these ingredients in his shop in South Qeynos.", 10, 2310048)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
end
end
diff --git a/server/Quests/SouthQeynos/rabid_shriller_wings.lua b/server/Quests/SouthQeynos/rabid_shriller_wings.lua
index 163eee1b6..1bc54fd26 100755
--- a/server/Quests/SouthQeynos/rabid_shriller_wings.lua
+++ b/server/Quests/SouthQeynos/rabid_shriller_wings.lua
@@ -11,7 +11,7 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Hunt rabid shrillers in the Down Below.", 8, 100, "I must go into the Down Below and collect eight pairs of rabid shriller wings.", 140, 1990001)
+ AddQuestStepKill(Quest, 1, "Hunt rabid shrillers in the Down Below.", 8, 100, "I must go into the Down Below and collect eight pairs of rabid shriller wings.", 140, 8340035)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest,"The Down Below")
end
diff --git a/server/Quests/SouthQeynos/stop_the_mischievous_tricksters.lua b/server/Quests/SouthQeynos/stop_the_mischievous_tricksters.lua
index a921b5dbd..ea2ee2461 100755
--- a/server/Quests/SouthQeynos/stop_the_mischievous_tricksters.lua
+++ b/server/Quests/SouthQeynos/stop_the_mischievous_tricksters.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -18,7 +19,13 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ PlayFlavor(QuestGiver, "","", "agree", 0, 0,Player)
+ Dialog.AddDialog("There's always payment for services rendered to the city. You needn't worry about that! We encourage citizens to perform kind acts of their own will, but everyone needs to eat. Teach those unruly fairies a lesson and keep them away from the locals. Understand?")
+ Dialog.AddVoiceover("voiceover/english/lieutenant_ilgar/qey_south/lieutenantilgar001.mp3",3441933918, 932340693)
+ Dialog.AddOption("Yes sir!")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/StarcrestCommune/BuildingFawnsGarden.lua b/server/Quests/StarcrestCommune/BuildingFawnsGarden.lua
index c1c549e7f..ab0457959 100755
--- a/server/Quests/StarcrestCommune/BuildingFawnsGarden.lua
+++ b/server/Quests/StarcrestCommune/BuildingFawnsGarden.lua
@@ -50,7 +50,7 @@ end
function QuestStep4(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 1, "I've managed to gather everything for Fawn Starstone's garden.")
- AddQuestStepChat(Quest, 4, "Return to Fawn in Starcrest Commune.", 1, "I need to give these items to Fawn for her garden.", 0, 2530059)
+ AddQuestStepChat(Quest, 4, "Return to Fawn in Starcrest Commune.", 1, "I need to give these items to Fawn for her garden.", 0, 2340032)
AddQuestStepCompleteAction(Quest, 4, "quest_complete_gaveitemstoFawn")
end
diff --git a/server/Quests/StarcrestCommune/batwing_crunchies_for_jerben.lua b/server/Quests/StarcrestCommune/batwing_crunchies_for_jerben.lua
index 6d6e1965b..4b61d2f81 100755
--- a/server/Quests/StarcrestCommune/batwing_crunchies_for_jerben.lua
+++ b/server/Quests/StarcrestCommune/batwing_crunchies_for_jerben.lua
@@ -12,7 +12,7 @@
function Init(Quest)
UpdateQuestZone(Quest,"Caves")
- AddQuestStepKill(Quest, 1, "I must gather the wings from five albino bats in the Caves. The locals call these bats 'shale bats'.", 5, 30, "I need to gather up some bat wings for Jerben Sleepwell at the harbor in the Qeynos Province District. The bat wings can be found in the Caves, reachable by mariner bell within the City of Qeynos.", 140, 197001, 8260016,8260018,8260073,8260080)
+ AddQuestStepKill(Quest, 1, "I must gather the wings from five albino bats in the Caves. The locals call these bats 'shale bats'.", 5, 80, "I need to gather up some bat wings for Jerben Sleepwell at the harbor in the Qeynos Province District. The bat wings can be found in the Caves, reachable by mariner bell within the City of Qeynos.", 140, 197001, 8260016,8260018,8260073,8260080)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
diff --git a/server/Quests/StarcrestCommune/catacomb_rat_rummaging.lua b/server/Quests/StarcrestCommune/catacomb_rat_rummaging.lua
index 050cef031..e07b4f040 100755
--- a/server/Quests/StarcrestCommune/catacomb_rat_rummaging.lua
+++ b/server/Quests/StarcrestCommune/catacomb_rat_rummaging.lua
@@ -13,7 +13,7 @@ require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill and bring back four of any type of rat in the catacombs.", 4, 80, "I need to hunt down any four rats in the Down Below for a spectator at the King's Field game.", 127, 1990008, 1990005,1990010,1990096,1990056)
+ AddQuestStepKill(Quest, 1, "I must kill and bring back four of any type of rat in the catacombs.", 4, 100, "I need to hunt down any four rats in the Down Below for a spectator at the King's Field game.", 127, 8340033, 8340034, 8340043, 8340041)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
UpdateQuestZone(Quest, "Down Below")
end
diff --git a/server/Quests/StarcrestCommune/deposit_for_grekin.lua b/server/Quests/StarcrestCommune/deposit_for_grekin.lua
index fffd7f2b5..91c8d71cc 100755
--- a/server/Quests/StarcrestCommune/deposit_for_grekin.lua
+++ b/server/Quests/StarcrestCommune/deposit_for_grekin.lua
@@ -10,6 +10,7 @@
Preceded by : None
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -18,7 +19,13 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ Dialog.AddDialog("For starters, it is only a day's proceeds. Also, there are three guards between the banks and us. I'm pretty sure you would be caught if you tried to run. Aside from all that, you have a friendly face and I think I can trust you. Take this box to the bank and return with the receipt.")
+ Dialog.AddVoiceover("voiceover/english/merchant_grekin/qey_village02/merchantgrekin001.mp3", 2487079650,1001036096)
+ Dialog.AddOption("Okay. I will be back shortly with the receipt.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/SunkenCity/exacting_revenge_on_the_crabs.lua b/server/Quests/SunkenCity/exacting_revenge_on_the_crabs.lua
index fd8572612..ae6a1490d 100755
--- a/server/Quests/SunkenCity/exacting_revenge_on_the_crabs.lua
+++ b/server/Quests/SunkenCity/exacting_revenge_on_the_crabs.lua
@@ -12,12 +12,15 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill crabs", 30, 100, "I need to kill crabs in the Sunken City until my rage subsides. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 77, 1240007, 1240008, 1240037, 1240045)
+ AddQuestStepKill(Quest, 1, "Kill crabs", 30, 100, "I need to kill crabs in the Sunken City until my rage subsides. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 77, 1240007, 1240008, 1240037, 1240045,8410002,8410001,8410017)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player,3034,1) then
+ RemoveItem(Player,3034)
+ SendMessage(Player,"You stuff the claw crab in your quest satchle.")
+ end
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/SunkenCity/exotic_soups.lua b/server/Quests/SunkenCity/exotic_soups.lua
index af4198c1c..8e5e6dd6c 100755
--- a/server/Quests/SunkenCity/exotic_soups.lua
+++ b/server/Quests/SunkenCity/exotic_soups.lua
@@ -2,29 +2,29 @@
Script Name : Quests/SunkenCity/exotic_soups.lua
Script Purpose : Handles the quest, "Exotic Soups"
Script Author : Scatman
- Script Date : 2009.08.01 (15.7.2022 by torsten, this quests used to start in Longshadow Alley but I'll leave it here)
+ Script Date : 2009.08.01 (15.7.2022 by torsten, this quests used to start in Longshadow Alley) Dorbin - added dialog to accepted and moved back to Longshadow for classic.
Zone : Sunken City
Quest Giver: Tilzak N'Lim
Preceded by: None
Followed by: None
--]]
-
-local TilzakNLim = 1240026
-local DuskSharks = 1240025
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to collect a meaty shark fin", 1, 25, "I should start looking for the dusk sharks. I'll need a big enough fin to bring back to Tilzak.", 122, DuskSharks)
+ AddQuestStepKill(Quest, 1, "I need to collect a meaty shark fin", 10, 85, "I should start looking for the dusk sharks. I'll need a big enough fin to bring back to Tilzak.", 122, 1240025, 8410007 )
AddQuestStepCompleteAction(Quest, 1, "Step1_Complete_KilledSharks")
+ UpdateQuestZone(Quest,"Sunken City")
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- conversation = CreateConversation()
-
- PlayFlavor(QuestGiver, "voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/quests/tilzaknlim/tilzak_x1_accept.mp3", "", "", 16004203, 2050489897, Player)
- AddConversationOption(conversation, "I'll be back when I have them.", "dlg_3_3")
- StartConversation(conversation, QuestGiver, Player, "OH! You'll help me? Oh thank you so much, friend! I wish to make a nice souffle from the fins of the Dusk Sharks that roam the waters here in the Sunken City. I need a large fin in order to make this souffle. I will be eagerly anticipating your return!")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("OH! You'll help me? Oh thank you so much, friend! I wish to make a nice souffle from the fins of the Dusk Sharks that roam the waters here in the Sunken City. I need a large fin in order to make this souffle. I will be eagerly anticipating your return!")
+ Dialog.AddVoiceover("voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/quests/tilzaknlim/tilzak_x1_accept.mp3", 16004203, 2050489897)
+ PlayFlavor(QuestGiver, "", "", "happy", 0, 0, Player, 0)
+ Dialog.AddOption("I'll be back when I have them.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -33,8 +33,9 @@ end
function Step1_Complete_KilledSharks(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've collected the meaty shark fin.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have the shark fin Tilzak was asking for.")
+ UpdateQuestZone(Quest,"Longshadow Alley")
- AddQuestStepChat(Quest, 2, "I need to speak with Tilzak", 1, "I should return to Tilzak then get on with my business. I don't even know why I offered to help him with this stupid task.", 0, TilzakNLim)
+ AddQuestStepChat(Quest, 2, "I need to speak with Tilzak", 1, "I should return to Tilzak then get on with my business. I don't even know why I offered to help him with this stupid task.", 0, 1240026,1380131)
AddQuestStepCompleteAction(Quest, 2, "Quest_Complete")
end
diff --git a/server/Quests/SunkenCity/gerbards_coins.lua b/server/Quests/SunkenCity/gerbards_coins.lua
index 7871dca67..5b517dde2 100755
--- a/server/Quests/SunkenCity/gerbards_coins.lua
+++ b/server/Quests/SunkenCity/gerbards_coins.lua
@@ -9,19 +9,21 @@
Preceded by: None
Followed by: None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to find five pirate coins.", 5, 50, "I need to find five pirate coins.", 1240044, 1240035, 1240036)
+ AddQuestStepKill(Quest, 1, "I need to find five pirate coins.", 5, 75, "I need to find five pirate coins.", 1763, 1240044, 1240035, 1240036,8410004)
AddQuestStepCompleteAction(Quest, 1, "Step1_Complete_FoundCoins")
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- conversation = CreateConversation()
-
- PlayFlavor(QuestGiver, "voiceover/english/gerbard_the_snitch/fprt_adv01_sunken/gerbard_the_snitch002.mp3", "", "", 4172245160, 2238267271, Player)
- AddConversationOption(conversation, "Thanks, I'll search out some pirate coins.")
- StartConversation(conversation, QuestGiver, Player, "Where do you think they come from? They're pirate coins! Those undead buggers roam around where it's wet. I'd go get them myself, but I gambled my sword away in a sure bet.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Where do you think they come from? They're pirate coins! Those undead buggers roam around where it's wet. I'd go get them myself, but I gambled my sword away in a sure bet.")
+ Dialog.AddVoiceover("voiceover/english/gerbard_the_snitch/fprt_adv01_sunken/gerbard_the_snitch002.mp3", 4172245160, 2238267271)
+ PlayFlavor(QuestGiver,"","","scream",0,0,Player)
+ Dialog.AddOption("Thanks, I'll search out some pirate coins.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -29,9 +31,9 @@ end
function Step1_Complete_FoundCoins(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I found five pirate coins.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I found five pirate coins.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found the five pirate coins that Gerbard the Snitch needed.")
- AddQuestStepChat(Quest, 2, "I need to return to Gerbard.", 1, "I need to return to Gerbard.", 0, 1240021)
+ AddQuestStepChat(Quest, 2, "I need to return to Gerbard.", 1, "I need to return to Gerbard in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 1763, 1240021,8410014)
AddQuestStepCompleteAction(Quest, 2, "Quest_Complete")
end
diff --git a/server/Quests/SunkenCity/lukurs_antiques.lua b/server/Quests/SunkenCity/lukurs_antiques.lua
index b8df60924..5c1d5ebf7 100755
--- a/server/Quests/SunkenCity/lukurs_antiques.lua
+++ b/server/Quests/SunkenCity/lukurs_antiques.lua
@@ -16,19 +16,27 @@ local BloodMask
local ShadowedMask
local DawnMask
+require "SpawnScripts/Generic/DialogModule"
+
function Init(Quest)
AddQuestStepObtainItem(Quest, 1, "I need to find the Blood Mask.", 1, 100, "I need to find three ceremonial masks in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 878, BloodMask)
+ AddQuestStepObtainItem(Quest, 2, "I need to find the Shadowed Mask.", 1, 100, "I need to find three ceremonial masks in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 879, ShadowedMask)
+ AddQuestStepObtainItem(Quest, 3, "I need to find the Dawn Mask.", 1, 100, "I need to find three ceremonial masks in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 880, DawnMask)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ --BoxCheck(Quest,Player)
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
- conversation = CreateConversation()
-
- PlayFlavor(QuestGiver, "voiceover/english/optional1/lukur/fprt_adv01_sunken/lukur002.mp3", "", "", 2636400793, 1337735741, Player)
- AddConversationOption(conversation, "Thanks, I'll start searching the area.")
- StartConversation(conversation, QuestGiver, Player, "I need to add a few specific relics to my collection. Return when you fulfill my order.")
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I need to add a few specific relics to my collection. Return when you fulfill my order.")
+ Dialog.AddVoiceover("voiceover/english/optional1/lukur/fprt_adv01_sunken/lukur002.mp3", 2636400793, 1337735741)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("Thanks, I'll start searching the area.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -41,25 +49,28 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I found the Blood Mask.")
-
- AddQuestStepObtainItem(Quest, 2, "I need to find the Shadowed Mask.", 1, 100, "I need to find three ceremonial masks in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 879, ShadowedMask)
- AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ QuestCheck(Quest, QuestGiver, Player)
end
+
function Step2Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 2, "I found the Shadowed Mask.")
-
- AddQuestStepObtainItem(Quest, 3, "I need to find the Dawn Mask.", 1, 100, "I need to find three ceremonial masks in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 880, DawnMask)
- AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ QuestCheck(Quest, QuestGiver, Player)
end
function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 3, "I found the Dawn Mask.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,374,1) and QuestStepIsComplete(Player,374,2) and QuestStepIsComplete(Player,374,3) then
UpdateQuestTaskGroupDescription(Quest, 1, "I found three ceremonial masks.")
- AddQuestStepChat(Quest, 4, "I need to return to Lukur.", 1, "I need to return to Lukur in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 11, Lukur)
+ AddQuestStepChat(Quest, 4, "I need to return to Lukur.", 1, "I need to return to Lukur in the Sunken City. I can reach the Sunken City by using any of the bells in and around the City of Freeport.", 11, Lukur,8410015)
AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
end
+end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
diff --git a/server/Quests/TempleStreet/Muckworts_Quest.lua b/server/Quests/TempleStreet/Muckworts_Quest.lua
new file mode 100755
index 000000000..648610423
--- /dev/null
+++ b/server/Quests/TempleStreet/Muckworts_Quest.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/Muckworts_Quest.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.29 03:10:43
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Crantik.", 1, "I need to go find Crantik the Crazed. Muckwort said he's a troll, so I should be able to find him in Big Bend.", 11, 1340046)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Big Bend")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have spoken with Crantik.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "Crantik gave me a vial of murky slime which he claims that he made from his own body. I don't even want to think about what I'm holding in my hands.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Old Man Muckwort.", 1, "Now that I have the vial of... stuff... I should give it to Muckwort for my reward.", 178, 1360023)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("HAH! Not as angry as you'll be when I'm done with you! If you want the respect of your elders then go get me a vial of ... of something, got it? Pick it up from the troll who makes it. His name is Crantik and he lives in Big Bend. I'd do it, but my legs aren't what they used to be. Now get off my lawn! ")
+ Dialog.AddVoiceover("voiceover/english/old_man_muckwort/fprt_hood03/quests/oldmanmuckwort/muckwort_x1_accept.mp3", 3927245994, 1244079768)
+ PlayFlavor(QuestGiver,"","","chuckle",0,0,Player)
+ Dialog.AddOption("Fine! I'm going!")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I gave Muckwort the vial of... something.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I gave Muckwort the vial of... something.")
+
+ UpdateQuestDescription(Quest, "Muckwort gave me an old mug in exchange for my service. I think he plans on poisoning the area so that the gnomes and ratonga don't step on his lawn anymore.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TempleStreet/an_enchanting_evening_with_krysa.lua b/server/Quests/TempleStreet/an_enchanting_evening_with_krysa.lua
new file mode 100755
index 000000000..7dd90dee5
--- /dev/null
+++ b/server/Quests/TempleStreet/an_enchanting_evening_with_krysa.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/an_enchanting_evening_with_krysa.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.07 10:11:22
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Krysa
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Raban in Stonestair Byway.", 1, "I need to find Raban. She should be in Stonestair Byway.", 11, 1350037)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Stonestair Byway")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Raban.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have had a little conversation with Raban. It seems she's behind all of this.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I have to speak with Krysa.", 1, "I should let Krysa know that Raban has offered to continue casting these spells free of charge.", 11, 1360042)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Even though I don't have makeup, I still have the helps of a witch in the Erudite district. You go there for me, yes? When you get there, look for a woman named Raban. She is the witch who helps me. Tell her I brings her money if she makes Spezi and Krasa more ugly. Okay?")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/quests/krysa/krysa_x2_accept.mp3", 67608218, 4287928755)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("I'll try to find her in Stonestair.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Krysa.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have told Krysa that Raban has offered to cast the spells free of charge.")
+
+ UpdateQuestDescription(Quest, "Those three women have no idea how badly they're being played. Their vanity is so great that Raban the Erudite is playing them like little marionettes. It seems that Raban has been casting some type of special enchantment to make Krasa and Spezi ugly. I think it's best to not get involved at this point.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TempleStreet/frizi_figglesnips_ingredients.lua b/server/Quests/TempleStreet/frizi_figglesnips_ingredients.lua
new file mode 100755
index 000000000..5215e3ae5
--- /dev/null
+++ b/server/Quests/TempleStreet/frizi_figglesnips_ingredients.lua
@@ -0,0 +1,103 @@
+--[[
+ Script Name : Quests/TempleStreet/frizi_figglesnips_ingredients.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.07 01:11:46
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Frizi
+ Preceded by: None
+ Followed by:
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to find a glassy crab eye.", 1, 66, "I must find the ingredients that Frizi needs.", 83, 8410002,8410001,8410017)
+ AddQuestStepKill(Quest, 2, "I must find a shoreside adder fang.", 1, 66, "I must find the ingredients that Frizi needs.", 137, 8420018,8420020)
+ AddQuestStepKill(Quest, 3, "I must find a unbroken scorpion stinger.", 1, 66, "I must find the ingredients that Frizi needs.", 202, 8410010)
+ AddQuestStepKill(Quest, 4, "I must find an oversized rat stomach.", 1, 66, "I must find the ingredients that Frizi needs.", 109, 8430009,8430010,8430011,8430029,8430008,8400001,8400002,8400003,8400004)
+ UpdateQuestZone(Quest,"Multiple Zones")
+
+
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Let's see, I need a glassy crab eye and a scorpion stinger--you'll find both items in the Sunken City. I also need a shoreside adder fang from the Sprawl or Ruins. Finally, an enlarged rat stomach from... somewhere. Return to me after you gather these ingredients.")
+ Dialog.AddOption("I'll get to it.")
+ Dialog.Start()
+end
+
+
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have found a glassy crab eye.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have found a snake fang.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have found a dune scorpion stinger.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have found a oversized rat stomach.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+ function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5923, 1) and QuestStepIsComplete(Player, 5923, 2) and QuestStepIsComplete(Player, 5923, 3) and QuestStepIsComplete(Player, 5923, 4) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found all of ingredients Frizi needs.")
+ AddQuestStepChat(Quest, 5, "I need to speak to Frizi.", 1, "I need to deliver these ingredients to Frizi Figglesnip in her shop.", 11, 1360053)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+ UpdateQuestZone(Quest,"Temple Street")
+ end
+ end
+
+
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I've given Frizi the ingredients she asked for.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given Frizi the ingredients she had asked for.")
+
+ UpdateQuestDescription(Quest, "I gathered four ingredients for Frizi Figglesnip. When I returned them to her, she rewarded me with a pair of magical gloves.")
+ GiveQuestReward(Quest, Player)
+end
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/TempleStreet/frizis_stolen_books.lua b/server/Quests/TempleStreet/frizis_stolen_books.lua
new file mode 100755
index 000000000..864e26e10
--- /dev/null
+++ b/server/Quests/TempleStreet/frizis_stolen_books.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : Quests/TempleStreet/frizis_stolen_books.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.06 08:11:49
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I've offered to kill Dervish crooks.", 10, 100, "I've offered to kill ten Dervish crooks so that she can have her revenge. I've heard on the streets they can be found hanging out in the Sprawl.", 611, 8400010)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sprawl")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've killed Dervish crooks.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've taken care of the Dervish crooks like I told Frizi I would.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Frizi.", 1, "I should return to Frizi and let her know the Guttersnipes are dealt with.", 11, 1360053)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I appreciate the offer, but you're too late. The crooks who took them said they were going to use the pages to clean their ... backsides! Ooooh, it makes me so mad!! ... Kill them! YES! KILL them for me and I'll be more than happy. They ran off to the Sprawl. You'll find them wallowing in their own filth...")
+ PlayFlavor(QuestGiver,"","","grumble",0,0,Player)
+ Dialog.AddOption("Err... Sure. Good as dead.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Frizi.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've informed Frizi that the Guttersnipe crooks are dead.")
+
+ UpdateQuestDescription(Quest, "I've killed the Dervish for Frizi. That should be enough to pay them back for stealing her books. Maybe I'll kill some more to sweeten the deal.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/improving_the_design.lua b/server/Quests/TempleStreet/improving_the_design.lua
new file mode 100755
index 000000000..7b498699a
--- /dev/null
+++ b/server/Quests/TempleStreet/improving_the_design.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/improving_the_design.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.01 08:11:32
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Sparzit
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some undead pikemen and collect bone rot from them.", 10, 100, "I need to kill some undead pikemen in the Graveyard. I'll try to collect the samples after I've killed them.", 181, 8390024)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Graveyard")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have gathered the bone rot from the pikemen.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've managed to collect the samples of bone rot for Sparzit.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Sparzit in Temple Street.", 1, "This is the amount that Sparzit asked for, so I should return them to him. He is in Temple Street in Freeport, standing near the makeshift bar in the downstairs plaza.", 102, 1360041)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Wonderful! What I need is a time-released debilitating toxin ... which is precisely the active substance found in the decomposing osteonecrotic tissue of the undead! Good friend, go and find me some samples of \"bone rot\" from those Undead Pikemen. Bring the samples to me and I'll give you some coin.")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x2_accept.mp3", 2139375878, 1700119912)
+ PlayFlavor(QuestGiver,"","","happy",0,0,Player)
+ Dialog.AddOption("Err... \"Bone Rot\"? I'll see what I can do.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have given Sparzit the samples as he requested.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have given Sparzit the samples as he requested.")
+
+ UpdateQuestDescription(Quest, "Sparzit offered me some coin for my time that I spent collecting samples of bone rot for him.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/keys_for_sempronia.lua b/server/Quests/TempleStreet/keys_for_sempronia.lua
new file mode 100755
index 000000000..fb3864635
--- /dev/null
+++ b/server/Quests/TempleStreet/keys_for_sempronia.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/keys_for_sempronia.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.06 02:11:46
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill diseased ratonga until I find the one with the keys.", 1, 30, "I don't know which of the diseased ratonga took the keys, so I'll just have to kill them until I find the guy.", 11, 8430009,8430010,8430011)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Thieves Way")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've found the keys.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've found the old vault keys on the body of a diseased ratonga.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to talk with Sempronia the banker.", 1, "I should bring these keys back to Sempronia in the Temple Street district.", 1007, 1360020)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Perhaps there is. On the way to the bank this morning, I overheard a few ratonga talking about how one of their brethren had come down with a wasting disease. They went on to say that he was the one that stole the spare vault keys and plans on ransoming them back to the Freeport Reserve in exchange for a cure. I'd prefer the Reserve doesn't lose a single copper more over all of this. If you'd be so kind as to try to find this diseased ratonga in the sewers and bring back the keys, I'd be willing to pay you from my own money.")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/quests/semproniagallus/sempronia_x1_accept.mp3", 494673703, 1541325887)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("Sounds reasonable, especially the part where I get paid.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Sempronia.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've returned the old vault keys to Sempronia the banker in the Temple Street district.")
+
+ UpdateQuestDescription(Quest, "I've returned the old vault keys to Sempronia the banker in the Temple Street district.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/krasa_isnt_taking_it_anymore.lua b/server/Quests/TempleStreet/krasa_isnt_taking_it_anymore.lua
new file mode 100755
index 000000000..02e79f709
--- /dev/null
+++ b/server/Quests/TempleStreet/krasa_isnt_taking_it_anymore.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : Quests/TempleStreet/krasa_isnt_taking_it_anymore.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.07 05:11:51
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to Spezi.", 1, "I need to give Spezi the message that Krasa will keep Krysa's door unlocked tonight. I think she's going to kill her in her sleep.", 11,1360015)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have spoken to Spezi.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I gave Spezi the message. I'm pretty certain I don't want anything to do with this.")
+ AddQuestStepChat(Quest, 2, "I need to talk to Krasa.", 1, "I should let Krasa know that Spezi was given the message.", 11, 1360040)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Go finds ugly Spezi. Shes hates Krysa as much as I dos! Actuallys, she hates her even more than I dos! Tell Spezi I am leaving Krysa's doors open tonights. She'll know what to do! Yous tells me when you give the message, yes?")
+ Dialog.AddVoiceover("voiceover/english/barmaid_krasa/fprt_hood03/quests/krasa/krasa_x1_accept.mp3", 1302270028, 602595312)
+ PlayFlavor(QuestGiver,"","","point",0,0,Player)
+ Dialog.AddOption("Spezi will get the message!")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've spoken to Krasa.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've informed Krasa that Spezi took the information to heart.")
+
+
+ UpdateQuestDescription(Quest, "It seems Krasa has had a change of heart - at the last moment. Perhaps Krysa might actually live through the night.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TempleStreet/makeup_for_krysa.lua b/server/Quests/TempleStreet/makeup_for_krysa.lua
new file mode 100755
index 000000000..688150ba8
--- /dev/null
+++ b/server/Quests/TempleStreet/makeup_for_krysa.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/makeup_for_krysa.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.07 09:11:10
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Krysa
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Brashk near the docks.", 1, "I need to find Brashk here in Temple Street and get the makeup from him.", 11, 1360043)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've spoken with Brashk.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've spoken to Brashk, but he says he doesn't have any more makeup. Supposedly he got it from some mage in Stonestair Byway.")
+
+ AddQuestStepChat(Quest, 2, "I need to tell Krysa the bad news.", 1, "I should let Krysa that Brashk did not have any more makeup for her.", 11, 1360042)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I lost the makeup that makes my lips so pretty. I think my ugly sister tooks it from me, but she says she didn't. It could be that hag, Spezi ... hmmm ... Doesn't matter! I need more makeups but if I leave this bar, I make no money! Go to Brashk, he's a rubbish picker, and tell him I needs more makeup, okay? ")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/quests/krysa/krysa_x1_accept.mp3", 2773775534, 2917895269)
+ PlayFlavor(QuestGiver,"","","pout",0,0,Player)
+ Dialog.AddOption("I'll see if he has any.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I've spoken to Krysa.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have told Krysa about the fact that Brashk has no more makeup.")
+
+
+ UpdateQuestDescription(Quest, "I told Krysa that Brashk didn't have any of the makeup and she had a conniption fit. I never even got my free drink!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TempleStreet/netherot_name_calling.lua b/server/Quests/TempleStreet/netherot_name_calling.lua
new file mode 100755
index 000000000..bda9feb93
--- /dev/null
+++ b/server/Quests/TempleStreet/netherot_name_calling.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : Quests/TempleStreet/netherot_name_calling.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.31 07:10:40
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Armsdealer Shinska
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill two netherot chanters.", 1, 100, "I need to venture into the sewers and kill two netherot chanters.", 611, 8430025)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Thieves Way")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed the netherot chanters.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed two netherot chanters.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Shinska.", 1, "I should return to Shinska and let her know the netherot chanters are now dead.", 11, 1360012)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Ahh ... that is very good. The Shinska will remembers that you offered her helps. You go into the sewers and finds the Netherot Chanters. Kills the beasts. That will teach them not to say bad things about the Shinska. Comes back and I give you reward, yes?")
+ PlayFlavor(QuestGiver,"","","happy",0,0,Player)
+ Dialog.AddOption("The sewers? This better be worth it!")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Shinska.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've informed Shinska that the netherot chanters are dead.")
+
+ UpdateQuestDescription(Quest, "I've killed the netherot chanters for Shinska the arms dealer. She hopes that with a number of them dead, she'll be able to convince some other enchanters to make her weapons magical.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/not_since_the_invention_of_the_wheel.lua b/server/Quests/TempleStreet/not_since_the_invention_of_the_wheel.lua
new file mode 100755
index 000000000..b0bb65f30
--- /dev/null
+++ b/server/Quests/TempleStreet/not_since_the_invention_of_the_wheel.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : Quests/TempleStreet/not_since_the_invention_of_the_wheel.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.01 04:11:43
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Zninki Flatzazzle
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to check each one of these a vagrant squatters to find who stole the Bread Bisector.", 1, 22, "According to his other device, Zninki claims the squatters are in the city outskirts. I bet they've run to the Ruins.", 23, 8420023,8420066)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Ruins")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've found the Bread Bisector on one of the a vagrant squatters.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've managed to find the Bread Bisector, which looks awfully similar to a knife.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Zninki.I", 1, " need to return this device to Zninki Flatzazzle.", 23, 1360032)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Would you? That would be most satisfactory! Why yes, I like that idea very much. I shall eagerly await the return of my ingenious device – the Bread Bisector!")
+ PlayFlavor(QuestGiver,"","","happy",0,0,Player)
+ Dialog.AddOption("I'll see what I can do.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Zninki.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given Zninki the Bread Bisector, which he was rather pleased by.")
+
+ UpdateQuestDescription(Quest, "I've returned Zninki's Bread Bisector to him. He demonstrated the device to me, and I have to say I don't think I've ever seen any invention greater than that.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/qwergos_plan.lua b/server/Quests/TempleStreet/qwergos_plan.lua
new file mode 100755
index 000000000..0074ede1d
--- /dev/null
+++ b/server/Quests/TempleStreet/qwergos_plan.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : Quests/TempleStreet/qwergos_plan.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.30 03:10:53
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Merchant Qwergo
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Plordo somewhere in Temple Street.", 1, "Plordo is the gnome who has an Ignitty Rumble-ator... or something like that.", 11, 1360008)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have spoken with Plordo.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "Plordo claims he gave his last one to a person named Chrna.")
+ AddQuestStepChat(Quest, 2, "I need to speak with Chrna near the gates to South Freeport.", 1, "Chrna has Plordo's last Rumbleystick and is around here somewhere... I just need to find her.", 11, 1360007 )
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have spoken to Chrna.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Chrna gave me the Rumblebumbler... I should have asked her why it was ticking.")
+ AddQuestStepChat(Quest, 3, "I need to speak with Qwergo.", 1, "Now that I have the Ignitor Rumblestick, I should bring it back to Qwergo. I should also ask him why it's ticking.", 11, 1360026 )
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Wonderful, wonderful! Go at once to my supplier, Plordo Blotterdook, who plies his trade on the other side of Temple Street. He will happily procure for you one operational igniter rumblerod ... that is, if he has not detonated them all blowing open yet another wall within his home.")
+ Dialog.AddVoiceover("voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/quests/qwergotogglesmeet/qwergo_x1_accept.mp3", 1719061225, 3310642577)
+ PlayFlavor(QuestGiver,"","","happy",0,0,Player)
+ Dialog.AddOption("Assuming he didn't blow up, I'll find him.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I gave Qwergo his thingie that he wanted.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I gave Qwergo his thingie that he wanted.")
+
+ UpdateQuestDescription(Quest, "Qwergo has paid me for picking up a Rumblestick for him. He was busy playing with the buttons and strings on it, so I'm not too sure what it is used for.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TempleStreet/teeth_for_sparzit.lua b/server/Quests/TempleStreet/teeth_for_sparzit.lua
new file mode 100755
index 000000000..cff0ae0b6
--- /dev/null
+++ b/server/Quests/TempleStreet/teeth_for_sparzit.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/teeth_for_sparzit.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.29 06:07:27
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver: Sparzit
+ Preceded by: None
+ Followed by: None
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some snakes in the Sprawl until I find a pair of Perfect Snake Fangs.", 1, 33, "I need to kill snakes until I find a perfect set of fangs.", 102, 8400009,8400012)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sprawl")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've found some fangs.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've collected a pair of fangs from the snakes.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Sparzit in Temple Street.", 1, "This is the amount that Sparzit asked for, so I should return them to him. He is in Temple Street in Freeport, standing near the makeshift bar in the downstairs plaza.", 102, 1360041)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'm trying to make teeth for my snake, but the ones I make snap off after puncturing the victim's skin. A real asp, on the other hand, doesn't have this problem. I want to study the teeth of a real snake so I can enhance my design. You can help me by retrieving teeth from a Shoreside Asp. Thank, thank you ... I can't thank you enough!")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x1_accept.mp3", 1710457152, 3762147821)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("I'll find you some sturdy snake teeth. Try not to blow anything up.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've given Sparzit some fangs.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've returned to Sparzit snakes with his snake fangs.")
+
+ UpdateQuestDescription(Quest, "Sparzit was rather happy with the fangs I brought him. He gave me some coin for gathering the teeth for him.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/twergos_plan.lua b/server/Quests/TempleStreet/twergos_plan.lua
new file mode 100755
index 000000000..f7441bf3f
--- /dev/null
+++ b/server/Quests/TempleStreet/twergos_plan.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/twergos_plan.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.30 03:10:31
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill zombies in the Sunken City and collect their brains.", 10, 80, "I need to venture to the Sunken City and collect ten brains from zombies in the sunken city. I'll check each one to see if they still have a brain.", 109, 8410023,8410024,8410025,8410028,8410029,8410030)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"Sunken City")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I gathered the brains from the zombies.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've killed the zombies and am now holding ten squishy, rotting brains on my person.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to speak with Merchant Twergo.", 1, "I should bring these brains back to Twergo before they start to smell any more than they already do.", 5, 1360025)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("My current theory involves the use of preserved brains. At first, I experimented with the brains of some of my customers, but they weren't sufficiently preserved. Zombie brains, however, should be perfect! And there are wonderful specimens of zombies in the Sunken City. If you'll go there and get me ten zombie brains, I will pay you handsomely.")
+ Dialog.AddVoiceover("voiceover/english/merchant_twergo_togglesmeet/fprt_hood03/quests/twergotogglesmeet/twergo_x1_accept.mp3", 1761683922, 1170110378)
+ PlayFlavor(QuestGiver,"","","ponder",0,0,Player)
+ Dialog.AddOption("An odd request... but I do like to get paid.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've spoken with Twergo.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've handed over all of the zombie brains to this little gnome.")
+
+ UpdateQuestDescription(Quest, "Twergo paid me for the brains. I tried to convince him that he could use the device to rule the world, but he was adamant that it couldn't be used that way.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/vlekos_plan.lua b/server/Quests/TempleStreet/vlekos_plan.lua
new file mode 100755
index 000000000..1af84ef10
--- /dev/null
+++ b/server/Quests/TempleStreet/vlekos_plan.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/vlekos_plan.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.17 11:07:29
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some orcs and look for one of their swords.", 1, 22, "I should check the Ruins for exiled orcs. After I kill them, I'll search through their belongings for a sword.", 5, 8420025)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ UpdateQuestZone(Quest,"The Ruins")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found one of the orc's sword.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've managed to find one of the orc's sword.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I need to deliver this sword to Merchant Velko.", 1, "I need to get this sword to Vleko, so he can cause some \"accidents\", as he puts it.", 5, 1360019)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("You and me make a deal, got it? You get me a sword from one of the Orcs who hide out in the Ruin. You give me sword. Togglesmeets go to sleep. Togglesmeets no wake up and big guards find Orc sword. Oh no. Now Orcs take the blame. See?")
+ Dialog.AddVoiceover("voiceover/english/merchant_vleko/fprt_hood03/quests/vleko/vleko_x1_accept.mp3", 1617335271, 2473217432)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("Sounds perfect! It is a deal.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I've given Vleko the sword I found on the orc.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given Vleko the sword I found on the orc.")
+
+ UpdateQuestDescription(Quest, "Sparzit was rather happy with the fangs I brought him. He gave me some coin for gathering the teeth for him.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TempleStreet/vlepos_plan.lua b/server/Quests/TempleStreet/vlepos_plan.lua
new file mode 100755
index 000000000..b00a1d740
--- /dev/null
+++ b/server/Quests/TempleStreet/vlepos_plan.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : Quests/TempleStreet/vlepos_plan.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.30 11:10:47
+ Script Purpose :
+
+ Zone : TempleStreet
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to speak with Shinska.", 1, "Shinska should be around here somewhere. I need to think of a way to steal the weapon.", 11, 1360221)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have spoken with Shinska.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I stole the weapon right from under her rather large nose.")
+
+ AddQuestStepChat(Quest, 2, "I need to speak with Vlepo.", 1, "Now that I have the weapon, I should bring it back to Vlepo like he asked.", 284, 1360018 )
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Good. I pay you only after you finish job. Find the Shinska and take one of her weapons. When you have it, bring it back here. Be sneaky ... don't let the Shinska know what you are doing.")
+-- Dialog.AddVoiceover("voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/quests/qwergotogglesmeet/qwergo_x1_accept.mp3", 1719061225, 3310642577)
+ PlayFlavor(QuestGiver,"","","agree",0,0,Player)
+ Dialog.AddOption("She'll never know what happened.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have spoken to Vlepo.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have given Vlepo the weapon.")
+
+ UpdateQuestDescription(Quest, "Vlepo plans on taking the weapon I stole from Shinska and planting it in the Togglesmeets' stall. After that he'll call the guards, framing the gnomes for the theft. Whether it works or not, I've been paid for my time in coin and drink, which is all that matters.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheCommonlands/DoOrDieSaysIrizian.lua b/server/Quests/TheCommonlands/DoOrDieSaysIrizian.lua
index f3f9f98ba..14a6af547 100755
--- a/server/Quests/TheCommonlands/DoOrDieSaysIrizian.lua
+++ b/server/Quests/TheCommonlands/DoOrDieSaysIrizian.lua
@@ -20,9 +20,9 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
local conversation = CreateConversation()
+ PlayFlavor(QuestGiver, "voiceover/english/inquisitor_irizan/commonlands/quests/inquisitor_irizan/inquisitor_irizan004.mp3", "", "", 3630396908, 2916800485, Player)
AddConversationOption(conversation, "Crystal clear.")
StartConversation(conversation, QuestGiver, Player, "I'm pleased that we've come to an understanding so quickly. My request is quite simple. I need you to recover a few items for me. That's it. Merchant Edmond is your contact; he'll tell you what you need to do. Is this clear?")
- PlayFlavor(NPC, "voiceover/english/inquisitor_irizan/commonlands/quests/inquisitor_irizan/inquisitor_irizan004.mp3", "", "", 3630396908, 2916800485, Spawn)
end
diff --git a/server/Quests/TheDownBelow/an_ancient_scepter.lua b/server/Quests/TheDownBelow/an_ancient_scepter.lua
index 001ca63f0..eb6e3d27a 100755
--- a/server/Quests/TheDownBelow/an_ancient_scepter.lua
+++ b/server/Quests/TheDownBelow/an_ancient_scepter.lua
@@ -11,7 +11,7 @@
--]]
function Init(Quest)
- AddQuestStepChat(Quest, 1, "I need to put the scepter in a statue.", 1, "I must return the scepter to the statue it came from.", 620, 1990095)
+ AddQuestStep(Quest, 1, "I need to put the scepter in a statue.", 1, 100, "I must return the scepter to the statue it came from.", 620)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
diff --git a/server/Quests/TheDownBelow/an_intriguing_eye.lua b/server/Quests/TheDownBelow/an_intriguing_eye.lua
index e8e65092e..58b3c5c26 100755
--- a/server/Quests/TheDownBelow/an_intriguing_eye.lua
+++ b/server/Quests/TheDownBelow/an_intriguing_eye.lua
@@ -11,7 +11,7 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Slay Bloodsaber meddlers", 1, 30, "Writing on the book states that rat men, possibly the Bloodsabers of the Down Below carry information I need. I will hack through their ranks until I find a clue about the symbol.", 374, 1990027)
+ AddQuestStepKill(Quest, 1, "Slay Bloodsaber meddlers", 1, 30, "Writing on the book states that rat men, possibly the Bloodsabers of the Down Below carry information I need. I will hack through their ranks until I find a clue about the symbol.", 374, 8340019)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
@@ -30,7 +30,7 @@ end
function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I've killed Bloodsaber meddlers.")
UpdateQuestTaskGroupDescription(Quest, 1, "I slew Bloodsaber rat men until I found a clue.")
- if not HasItem(Player,1236) and GetQuestStep(Player,5366) == 2 then
+ if not HasItem(Player,1236) and GetQuestStepProgress(Player,5366,3) == 0 then
GiveQuestItem(Quest, Player, "I slew Bloodsaber rat men until I found a clue.", 1236)
end
AddQuestStep(Quest, 2, "Read the Bloodsaber note", 1, 100, "I should read the note I now carry in my inventory, the one I found on the Bloodsaber.", 11)
@@ -49,14 +49,14 @@ function Step3Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 3, "I've spoken to Gornit Penwiggle.")
UpdateQuestTaskGroupDescription(Quest, 3, "I spoke to Gornit Penwiggle about the coin.")
- AddQuestStepKill(Quest, 4, "Slay some coiled burrowers", 3, 100, "I need to fill the hunting list for Gornit Penwiggle. I should be able to find these critters in the Down Below.", 109, 1990009)
+ AddQuestStepKill(Quest, 4, "Slay some coiled burrowers", 3, 100, "I need to fill the hunting list for Gornit Penwiggle. I should be able to find these critters in the Down Below.", 109, 8340020)
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
end
function Step4Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 4, "I killed some coiled burrowers.")
- AddQuestStepKill(Quest, 5, "Slay some rabid shrillers", 4, 100, "I need to fill the hunting list for Gornit Penwiggle. I should be able to find these critters in the Down Below.", 178, 1990001)
+ AddQuestStepKill(Quest, 5, "Slay some rabid shrillers", 4, 100, "I need to fill the hunting list for Gornit Penwiggle. I should be able to find these critters in the Down Below.", 178, 8340035)
AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
end
@@ -88,7 +88,7 @@ function Step8Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 8, "I've spoken to Constable Arathur.")
UpdateQuestTaskGroupDescription(Quest, 7, "I spoke to Constable Arathur in the Qeynos Province District.")
- AddQuestStepKill(Quest, 9, "Slay a fallen noble.", 1, 100, "I need to slay a fallen noble in the deep depths of the Down Below.", 11, 1990017, 1990018)
+ AddQuestStepKill(Quest, 9, "Slay a fallen noble.", 1, 100, "I need to slay a fallen noble in the deep depths of the Down Below.", 11, 1990017, 8340026, 8340027)
AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
end
diff --git a/server/Quests/TheDownBelow/defiled_drem_drem.lua b/server/Quests/TheDownBelow/defiled_drem_drem.lua
index 609121f32..702e7f0e3 100755
--- a/server/Quests/TheDownBelow/defiled_drem_drem.lua
+++ b/server/Quests/TheDownBelow/defiled_drem_drem.lua
@@ -11,7 +11,7 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to find all of Drem Drem's bones in the Down Below.", 6, 100, "Drem Drem's bones have been strewn throughout the Down Below, I should collect them and lay him to rest.", 91, 1990027)
+ AddQuestStepKill(Quest, 1, "I need to find all of Drem Drem's bones in the Down Below.", 6, 100, "Drem Drem's bones have been strewn throughout the Down Below, I should collect them and lay him to rest.", 91, 1990027,1990102,1990103,8340048,8340029)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
diff --git a/server/Quests/TheDownBelow/far_seas_requisition_db0372.lua b/server/Quests/TheDownBelow/far_seas_requisition_db0372.lua
new file mode 100755
index 000000000..233cc55c6
--- /dev/null
+++ b/server/Quests/TheDownBelow/far_seas_requisition_db0372.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : Quests/TheDownBelow/far_seas_requisition_db0372.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.20 10:09:42
+ Script Purpose :
+
+ Zone : TheDownBelow
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some coiled burrowers.", 5, 100, "I must hunt down the creatures in The Down Below to fill the requisition.", 172, 8340020)
+ AddQuestStepKill(Quest, 2, "I must kill some crypt substances.", 4, 100, "I must hunt down the creatures in The Down Below to fill the requisition.", 145, 8340022)
+ AddQuestStepKill(Quest, 3, "I must kill some tomb foragers.", 3, 100, "I must hunt down the creatures in The Down Below to fill the requisition.", 99, 8340043)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5887, 1) and QuestStepIsComplete(Player, 5887, 2) and QuestStepIsComplete(Player, 5887, 3) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+ UpdateQuestZone(Quest,"Castleview")
+ AddQuestStepChat(Quest, 4, "I must go to Bartender Bulurg.", 1, "I must go to Castleview Hamlet to seek out the client of this order.", 11, 2360021)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some coiled burrowers.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some crypt substances.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have killed some tomb foragers.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I visited Bartender Bulurg.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the goods to Bartender Bulurg.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in Castleview Hamlet. I have been paid in full for this work, but the order was late.")
+ GiveQuestReward(Quest, Player)
+ if HasItem(Player,7081) then
+ RemoveItem(Player,7081,1)
+ end
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/TheDownBelow/far_seas_requisition_db0436.lua b/server/Quests/TheDownBelow/far_seas_requisition_db0436.lua
new file mode 100755
index 000000000..578e048b1
--- /dev/null
+++ b/server/Quests/TheDownBelow/far_seas_requisition_db0436.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : Quests/TheDownBelow/far_seas_requisition_db0436.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.21 03:09:17
+ Script Purpose :
+
+ Zone : TheDownBelow
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ AddQuestStepKill(Quest, 1, "I must kill some dust crawler hatchlings.", 5, 100, "I must hunt down the creatures in The Down Below to fill the requisition.", 97, 8340023)
+ AddQuestStepKill(Quest, 2, "I must kill some putrid vermin.", 5, 100, "I must hunt down the creatures in The Down Below to fill the requisition.", 172, 8340033)
+ AddQuestStepKill(Quest, 3, "I must kill one shriller.", 1, 100, "I must hunt down the creatures in The Down Below to fill the requisition.", 140, 8340042)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+
+end
+
+function CheckProgress(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player, 5888, 1) and QuestStepIsComplete(Player, 5888, 2) and QuestStepIsComplete(Player, 5888, 3) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have hunted down all the resources to fill the requisition.")
+ UpdateQuestZone(Quest,"Castleview")
+ AddQuestStepChat(Quest, 4, "I must go to Bartender Bulurg.", 1, "I must go to Castleview Hamlet to seek out the client of this order.", 11, 2360021)
+ AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
+ end
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed some dust crawler hatchlings.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have killed some putrid vermin.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have killed one shriller.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 4, "I visited Bartender Bulurg.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have delivered the goods to Bartender Bulurg.")
+
+ UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in Castleview Hamlet. I have been paid in full for this work, but the order was late.")
+ GiveQuestReward(Quest, Player)
+ if HasItem(Player,7081) then
+ RemoveItem(Player,7081,1)
+ end
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/TheDownBelow/goods_down_below.lua b/server/Quests/TheDownBelow/goods_down_below.lua
index f414856fd..4440935a4 100755
--- a/server/Quests/TheDownBelow/goods_down_below.lua
+++ b/server/Quests/TheDownBelow/goods_down_below.lua
@@ -15,28 +15,28 @@ function Init(Quest)
SetQuestFeatherColor(Quest, 3)
SetQuestRepeatable(Quest)
if RandomChoice == 1 then
- AddQuestStepKill(Quest, 1, "Get six malefic arachnid fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990020, 1990021)
- AddQuestStepKill(Quest, 2, "Get six venom spitter fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990029, 1990035)
- AddQuestStepKill(Quest, 3, "Get four crypt substances' slime.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 158, 1990003)
- AddQuestStepKill(Quest, 4, "Get four tomb rifter pest shells.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 162, 1990033)
+ AddQuestStepKill(Quest, 1, "Get six malefic arachnid fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990020, 1990021, 8340032)
+ AddQuestStepKill(Quest, 2, "Get six venom spitter fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990029, 1990035, 8340049)
+ AddQuestStepKill(Quest, 3, "Get four crypt substances' slime.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 158, 1990003, 8340022)
+ AddQuestStepKill(Quest, 4, "Get four tomb rifter pest shells.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 162, 1990033, 8340047)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
elseif RandomChoice == 2 then
- AddQuestStepKill(Quest, 1, "Get five coiled burrower skins.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 172, 1990009)
- AddQuestStepKill(Quest, 2, "Get five tomb forager skulls.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 91, 1990002, 1990005)
-AddQuestStepKill(Quest, 3, "Get four tomb rifter hatchling shells.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 162, 1990019, 1990031)
- AddQuestStepKill(Quest, 4, "Get six malefic arachnid fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990020, 1990021)
+ AddQuestStepKill(Quest, 1, "Get five coiled burrower skins.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 172, 1990009, 8340020)
+ AddQuestStepKill(Quest, 2, "Get five tomb forager skulls.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 91, 1990002, 1990005, 8340043)
+AddQuestStepKill(Quest, 3, "Get four tomb rifter hatchling shells.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 162, 1990019, 1990031, 8340046)
+ AddQuestStepKill(Quest, 4, "Get six malefic arachnid fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990020, 1990021, 8340032)
AddQuestStepCompleteAction(Quest, 1, "Step1_2Complete")
AddQuestStepCompleteAction(Quest, 2, "Step2_2Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3_2Complete")
AddQuestStepCompleteAction(Quest, 4, "Step4_4Complete")
elseif RandomChoice == 3 then
- AddQuestStepKill(Quest, 1, "Get four tomb rifter bleeder shells.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 162, 1990045, 1990046, 1990047, 1990044)
- AddQuestStepKill(Quest, 2, "Get five coiled burrower skins.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 172, 1990009)
- AddQuestStepKill(Quest, 3, "Get six venom spitter fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990029, 1990035)
- AddQuestStepKill(Quest, 4, "Get five tomb forager skulls.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 91, 1990002, 1990005)
+ AddQuestStepKill(Quest, 1, "Get four tomb rifter bleeder shells.", 4, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 162, 1990045, 1990046, 1990047, 1990044, 8340044, 8340045)
+ AddQuestStepKill(Quest, 2, "Get five coiled burrower skins.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 172, 1990009, 8340020)
+ AddQuestStepKill(Quest, 3, "Get six venom spitter fangs.", 6, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 163, 1990029, 1990035, 8340049)
+ AddQuestStepKill(Quest, 4, "Get five tomb forager skulls.", 5, 100, "I need to collect an assortment of beetle part; spider parts; and rotting humanoids while here in the Down Below.", 91, 1990002, 1990005, 8340043)
AddQuestStepCompleteAction(Quest, 1, "Step1_3Complete")
AddQuestStepCompleteAction(Quest, 2, "Step2_3Complete")
AddQuestStepCompleteAction(Quest, 3, "Step3_3Complete")
@@ -117,7 +117,7 @@ end
function CheckProgress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, 5376, 1) and QuestStepIsComplete(Player, 5376, 2) and QuestStepIsComplete(Player, 5376, 3) and QuestStepIsComplete(Player, 5376, 4) then
UpdateQuestTaskGroupDescription(Quest, 1, "I've gathered all of the items Falin wanted. I should bring them back to him now.")
- AddQuestStepChat(Quest, 5, "I need to return to merchant Falin Shaloon.", 1, "I need to return to merchant Failin Shaloon and give him all of his "supplies".", 11, 1990040)
+ AddQuestStepChat(Quest, 5, "I need to return to merchant Falin Shaloon.", 1, "I need to return to merchant Failin Shaloon and give him all of his "supplies".", 11, 8340002)
AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
end
diff --git a/server/Quests/TheDownBelow/working_the_down_below.lua b/server/Quests/TheDownBelow/working_the_down_below.lua
index fff420087..899adab2d 100755
--- a/server/Quests/TheDownBelow/working_the_down_below.lua
+++ b/server/Quests/TheDownBelow/working_the_down_below.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -16,35 +17,36 @@ function Init(Quest)
SetQuestFeatherColor(Quest, 3)
SetQuestRepeatable(Quest)
if RandomChoice == 1 then
- AddQuestStepKill(Quest, 1, "Get four forgotten soul rib cages.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 90, 1990032)
+ AddQuestStepKill(Quest, 1, "Get four forgotten soul rib cages.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 90, 8340029)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
- AddQuestStepKill(Quest, 2, "Get four tortured soul rib cages.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 90, 1990038)
+ AddQuestStepKill(Quest, 2, "Get four tortured soul rib cages.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 90, 8340048)
AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
- AddQuestStepKill(Quest, 3, "Get four venomous watcher fangs.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 163, 1990036)
+ AddQuestStepKill(Quest, 3, "Get four venomous watcher fangs.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 163, 8340051)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
elseif RandomChoice == 2 then
- AddQuestStepKill(Quest, 1, "Get four venomous keeper fangs.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 163, 1990037)
+ AddQuestStepKill(Quest, 1, "Get four venomous keeper fangs.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 163, 8340050)
AddQuestStepCompleteAction(Quest, 1, "Step1_1Complete")
- AddQuestStepKill(Quest, 2, "Get four frenzied watcher fangs.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 163, 1990039)
+ AddQuestStepKill(Quest, 2, "Get four frenzied watcher fangs.", 4, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 163, 8340030)
AddQuestStepCompleteAction(Quest, 2, "Step1_2Complete")
- AddQuestStepKill(Quest, 3, "Get five vials of venom from frenzied watchers.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 1990039)
+ AddQuestStepKill(Quest, 3, "Get five vials of venom from frenzied watchers.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 8340030)
AddQuestStepCompleteAction(Quest, 3, "Step1_3Complete")
elseif RandomChoice == 3 then
- AddQuestStepKill(Quest, 1, "Get five vials of venom from frenzied watchers.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 1990039)
+ AddQuestStepKill(Quest, 1, "Get five vials of venom from frenzied watchers.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 8340030)
AddQuestStepCompleteAction(Quest, 1, "Step3_1Complete")
- AddQuestStepKill(Quest, 2, "Get five vials of venom from rabid shrillers.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 1990001)
+ AddQuestStepKill(Quest, 2, "Get five vials of venom from rabid shrillers.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 8340035)
AddQuestStepCompleteAction(Quest, 2, "Step3_2Complete")
- AddQuestStepKill(Quest, 3, "Get five vials of venom from putrid vermin.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 1990008, 1990010)
+ AddQuestStepKill(Quest, 3, "Get five vials of venom from putrid vermin.", 5, 100, "I've agreed to help merchant Adair Barnes gather items she intends on selling to her buyers in the Down Below.", 178, 1990008, 1990010, 8340033)
AddQuestStepCompleteAction(Quest, 3, "Step3_3Complete")
end
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(QuestGiver, Player)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes003.mp3", "", "", 800334803, 2767782322, Spawn)
- AddConversationOption(conversation, "Got it.")
- StartConversation(conversation, QuestGiver, Player, "Good. Let me write down in your journal what I need you to get. Now hurry up, this stuff needs to stay fresh, got it?")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good. Let me write down in your journal what I need you to get. Now hurry up, this stuff needs to stay fresh, got it?")
+ Dialog.AddVoiceover("voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes003.mp3", 800334803, 2767782322)
+ Dialog.AddOption("Got it.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -105,7 +107,7 @@ end
function Progress(Quest, QuestGiver, Player)
if QuestStepIsComplete(Player, 5365, 1) and QuestStepIsComplete(Player, 5365, 2) and QuestStepIsComplete(Player, 5365, 3) then
UpdateQuestTaskGroupDescription(Quest, 2, "I've got all of the items merchant Barnes asked me to obtain. I should get them back to her as soon as possible.")
- AddQuestStepChat(Quest, 4, "I need to get this stuff to merchant Barnes.", 1, "I need to get these items back to merchant Barnes, here in the Down Below.", 11, 1990011)
+ AddQuestStepChat(Quest, 4, "I need to get this stuff to merchant Barnes.", 1, "I need to get these items back to merchant Barnes, here in the Down Below.", 11, 8340001)
AddQuestStepCompleteAction(Quest, 4, "QuestComplete")
end
end
diff --git a/server/Quests/TheElddarGrove/hawk_hunt.lua b/server/Quests/TheElddarGrove/hawk_hunt.lua
index 2ca1d0c18..ae6b1db78 100755
--- a/server/Quests/TheElddarGrove/hawk_hunt.lua
+++ b/server/Quests/TheElddarGrove/hawk_hunt.lua
@@ -17,7 +17,11 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ local conversation = CreateConversation()
+ PlayFlavor(QuestGiver, "", "", "agree", 0, 0, Player)
+ AddConversationOption(conversation, "I'll see what I can do.")
+ StartConversation(conversation, QuestGiver, Player, "If you find some feathers worth using, I might have something that interests you... I'll be here working with Nightbow for a while on other orders if you need me again.")
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/TheElddarGrove/nightbows_deposit.lua b/server/Quests/TheElddarGrove/nightbows_deposit.lua
index 888d2e20d..f7ac91093 100755
--- a/server/Quests/TheElddarGrove/nightbows_deposit.lua
+++ b/server/Quests/TheElddarGrove/nightbows_deposit.lua
@@ -20,8 +20,8 @@ function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
local conversation = CreateConversation()
PlayFlavor(QuestGiver, "voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow002.mp3", "", "agree", 2931514549, 74273653, Player)
- AddConversationOption(conversation, "I'll bring you back the recipt.")
- StartConversation(conversation, QuestGiver, Player, "A dwarf named Grisvane Stonearm will take the deposit. You need to peek over the Exchange's counter to find him. He's been doing the figures for this shop for nearly twenty years, and it just wouldn't do to go to someone else. Bring a recipt for the deposit when you're done please!")
+ AddConversationOption(conversation, "I'll bring you back the receipt.")
+ StartConversation(conversation, QuestGiver, Player, "A dwarf named Grisvane Stonearm will take the deposit. You need to peek over the Exchange's counter to find him. He's been doing the figures for this shop for nearly twenty years, and it just wouldn't do to go to someone else. Bring a receipt for the deposit when you're done please!")
end
diff --git a/server/Quests/TheElddarGrove/pelles_manuscript.lua b/server/Quests/TheElddarGrove/pelles_manuscript.lua
index adfe38139..e85fd972d 100755
--- a/server/Quests/TheElddarGrove/pelles_manuscript.lua
+++ b/server/Quests/TheElddarGrove/pelles_manuscript.lua
@@ -22,7 +22,7 @@ end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
Dialog.New(QuestGiver, Player)
- Dialog.AddDialog("Great news! Best I've had all day really. Now, make certain it is a human by the name of Rune Shimmerstar who recieves this. He's the only one at the Three Towers I'll trust! Hehe, never made it much of a habbit to put much faith in those magi-folk. You know, we had quite a number of adventures together, Rune and me! Quite a nice chap once you get to know him.")
+ Dialog.AddDialog("Great news! Best I've had all day, really. Now, make certain that it is a human by the name of Rune Shimmerstar who receives this! He's the only one over there at the Three Towers I'll trust! Never made it a habit to put much faith in those magey folk. You know, we had quite a few adventures together, Rune and me! Quite a nice chap once you get to know him, really.")
Dialog.AddVoiceover("voiceover/english/pelle_shinkicker/qey_elddar/pelleshinkicker003.mp3", 2052304892, 1411111467)
PlayFlavor(QuestGiver, "", "", "smile", 0, 0, Player)
Dialog.AddOption("I'll be back shortly.")
diff --git a/server/Quests/TheElddarGrove/recipe_for_duvo.lua b/server/Quests/TheElddarGrove/recipe_for_duvo.lua
index b7c14679d..9f84c12ff 100755
--- a/server/Quests/TheElddarGrove/recipe_for_duvo.lua
+++ b/server/Quests/TheElddarGrove/recipe_for_duvo.lua
@@ -22,7 +22,7 @@ function Accepted(Quest, QuestGiver, Player)
local conversation = CreateConversation()
PlayFlavor(QuestGiver, "voiceover/english/scribe_duvo/qey_elddar/scribeduvo001.mp3", "", "", 2070584741, 1381928487, Player)
AddConversationOption(conversation, "Okay! I'll find Penny for you.")
- StartConversation(conversation, QuestGiver, Player, "You must visit the Ironforge family and inquire about the recipie of Penny Goodhearth's. Miss Goodhearth promised me a recipie for the most scrumptious muffins, and I'm burried under a mountain of papers to scribe! Please pick up the recipie for me immediately!")
+ StartConversation(conversation, QuestGiver, Player, "You must visit the IronForge family and inquire about a recipe of Penny Goodhearth's. Miss Goodhearth promised me a recipe for the most scrumptious muffins, and I'm buried under a mound of papers to scribe! Please, pick up the recipe for me immediately. Now, be on your way!")
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/TheElddarGrove/unnatural_lesson.lua b/server/Quests/TheElddarGrove/unnatural_lesson.lua
index 982ba0c51..cbd737bd6 100755
--- a/server/Quests/TheElddarGrove/unnatural_lesson.lua
+++ b/server/Quests/TheElddarGrove/unnatural_lesson.lua
@@ -11,6 +11,7 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must kill six decaying skeletons.", 6, 100, "I need to find the mausoleum that rests on a small island just off Antonica near the gates of North Qeynos, and put to rest decaying skeleton's and risen protector's.", 611, 120450)
@@ -21,7 +22,13 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Too many unatural dangers thrive to name them in one sitting. You'd learn more of the undead if you served Qeynos in a civic manner. A mausoleum rests on a small island in Antonica near the north gates of Qeynos. Venture to the crypt and confront it's protector's decaying filthy skeletons. Put to rest a dozen of these unnatural guardians who walk the earth.")
+ Dialog.AddVoiceover("voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle003.mp3",166316836, 1644056019)
+ PlayFlavor(QuestGiver, "", "", "thank", 0, 0, Player)
+ Dialog.AddOption( "Alright. I'll return once I've dealt with a dozen of these undead.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/TheElddarGrove/visiting_the_windstalker_grave.lua b/server/Quests/TheElddarGrove/visiting_the_windstalker_grave.lua
index e550ebd48..1e75442ce 100755
--- a/server/Quests/TheElddarGrove/visiting_the_windstalker_grave.lua
+++ b/server/Quests/TheElddarGrove/visiting_the_windstalker_grave.lua
@@ -10,6 +10,7 @@
Followed by : None
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
AddQuestStepZoneLoc(Quest, 1, "I need to find Holly Windstalker's grave in Antonica.", 10, "I should go to Holly Windstalker's grave to see if there is any truth to the rumor.", 2339,-1854.52, -2.89, -624.46,12)
@@ -18,7 +19,13 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Ahh ... very well, you are a daring soul! To get to the grave, follow the aqueduct from Qeynos to Windstalker Village. The village is built around the waterwheel that keeps the aqueduct flowing. The duct passes through rock so you may lose sight of it for a time. Just continue around the mountain, and you'll see it on the other side.")
+ Dialog.AddVoiceover("voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle002.mp3",2384165847, 2428685999)
+ PlayFlavor(QuestGiver, "", "", "thank", 0, 0, Player)
+ Dialog.AddOption("Thank you. I'll follow those directions.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0378.lua b/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0378.lua
index 2f4d2de42..f20905749 100755
--- a/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0378.lua
+++ b/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0378.lua
@@ -48,6 +48,9 @@ function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in Starcrest Commune. I have been paid in full for this work, but the order was late.")
GiveQuestReward(Quest, Player)
+ if HasItem(Player,7076) then
+ RemoveItem(Player,7076,1)
+ end
end
function Reload(Quest, QuestGiver, Player, Step)
diff --git a/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0931.lua b/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0931.lua
index 811ced6b7..8f2b06d09 100755
--- a/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0931.lua
+++ b/server/Quests/TheForestRuins/far_seas_direct_requisition_frn0931.lua
@@ -55,6 +55,9 @@ function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestDescription(Quest, "I filled the Far Seas Requisition and delivered the goods to the client in Starcrest Commune. I have been paid in full for this work, but the order was late.")
GiveQuestReward(Quest, Player)
+ if HasItem(Player,7077) then
+ RemoveItem(Player,7077,1)
+ end
end
function Reload(Quest, QuestGiver, Player, Step)
diff --git a/server/Quests/TheForestRuins/forest_ruins_volunteer.lua b/server/Quests/TheForestRuins/forest_ruins_volunteer.lua
index 9419a7080..0aac40fb5 100755
--- a/server/Quests/TheForestRuins/forest_ruins_volunteer.lua
+++ b/server/Quests/TheForestRuins/forest_ruins_volunteer.lua
@@ -12,6 +12,7 @@
function Init(Quest)
+ UpdateQuestZone(Quest,"Forest Ruins")
local RandomChoice = MakeRandomInt(1, 6)
SetQuestFeatherColor(Quest, 3)
diff --git a/server/Quests/TheForestRuins/letter_for_hunter_forestdeep.lua b/server/Quests/TheForestRuins/letter_for_hunter_forestdeep.lua
index 851c42124..aa2f95b67 100755
--- a/server/Quests/TheForestRuins/letter_for_hunter_forestdeep.lua
+++ b/server/Quests/TheForestRuins/letter_for_hunter_forestdeep.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepChat(Quest, 1, "Deliver the letter to hunter Forestdeep", 1, "I need to deliver a letter to a hunter named Forestdeep in the Qeynos Province District.", 1223, 2370002)
+ AddQuestStepChat(Quest, 1, "Deliver the letter to hunter Forestdeep", 1, "I need to deliver a letter to a hunter named Forestdeep in Qeynos.", 1223, 2370002)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
UpdateQuestZone(Quest, "The Willow Wood")
end
diff --git a/server/Quests/TheLostVillageofKugup/a_history_lesson.lua b/server/Quests/TheLostVillageofKugup/a_history_lesson.lua
new file mode 100755
index 000000000..e1ac5e86d
--- /dev/null
+++ b/server/Quests/TheLostVillageofKugup/a_history_lesson.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : a_history_lesson.lua
+ Script Purpose : Handles the quest, "A History Lesson"
+ Script Author : Neatz09
+ Script Date : 11/22/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "Read the tome.", 1, 100, "I must read the tome and carefully study its words.", 195)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've read the tome.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've read the tome. I should go speak with Euurp.")
+
+ AddQuestStep(Quest, 2, "Pass the test.", 1, 100, "I should speak with Euurp to prove what I've learned about the Froglok people.", 11)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have passed the test.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have proven my knowledge.")
+
+ UpdateQuestDescription(Quest, "I've passed the test! My knowledge of the Frogloks is immense.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TheLostVillageofKugup/coldblooded_relations.lua b/server/Quests/TheLostVillageofKugup/coldblooded_relations.lua
new file mode 100755
index 000000000..900f514b6
--- /dev/null
+++ b/server/Quests/TheLostVillageofKugup/coldblooded_relations.lua
@@ -0,0 +1,69 @@
+--[[
+ Script Name : cold-blooded_relations....lua
+ Script Purpose : Handles the quest, "Cold-blooded Relations..."
+ Script Author : QuestParser (Replace this)
+ Script Date : 4/29/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+local Oemor = 1230003
+local Teiluj = 1230002
+function Init(Quest)
+ AddQuestStep(Quest, 1, "Gather some flowers.", 3, 100, "Teiluj asked me to gather some flowers to give to Oemor.", 1955)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "Great plan! I'll be back soon.")
+ StartConversation(conversation, QuestGiver, Player, "I have crafted a marvelous plan, indeed! Sweet Oemor's favorite flowers art now in bloom. I implore thee to take the pain of gathering a few and giving them to my dearest. Inform her that they are from me, then perhaps she will speak again to me!")
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've gathered the flowers.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've gathered the flowers.")
+
+ AddQuestStepChat(Quest, 2, "I must deliver the flowers to Oemor.", 1, "I need to deliver these flowers to Oemor and tell her how much Teiluj loves her.", 11, Oemor)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I delivered the flowers to Oemor.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've delivered the flowers and the message.")
+
+ AddQuestStepChat(Quest, 3, "Tell Teiluj the good news.", 1, "I need to go let Teiluj know that Oemor wants to see him so they can make up.", 11, Teiluj)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I talked to Teiluj. He seemed quite happy.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "I spoke with Teiluj and let him know that things went well.")
+
+ UpdateQuestDescription(Quest, "I picked the flowers and delivered them to Oemor. She promptly forgot why she was mad and forgave Teiluj.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheLostVillageofKugup/staffing_up.lua b/server/Quests/TheLostVillageofKugup/staffing_up.lua
new file mode 100755
index 000000000..8781bb07f
--- /dev/null
+++ b/server/Quests/TheLostVillageofKugup/staffing_up.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : staffing_up.lua
+ Script Purpose : Handles the quest, "Staffing Up"
+ Script Author : Neatz09
+ Script Date : 11/23/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+local Fruppen = 1230017
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "Find a strong tree branch.", 1, 100, "I am looking for a branch that will make a decent staff.", 618)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found a strong tree branch.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found a good branch.")
+ AddQuestStepChat(Quest, 2, "Give the branch to Fruppen.", 1, "I need to take this tree branch back to Fruppen.", 11, "Fruppen")
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I gave the branch to Fruppen.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've given the tree branch to Fruppen.")
+
+ UpdateQuestDescription(Quest, "I've found a strong tree branch and given it to Fruppen so he can practice to be like his brother.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheLostVillageofKugup/taking_out_the_trash.lua b/server/Quests/TheLostVillageofKugup/taking_out_the_trash.lua
new file mode 100755
index 000000000..62465918a
--- /dev/null
+++ b/server/Quests/TheLostVillageofKugup/taking_out_the_trash.lua
@@ -0,0 +1,58 @@
+--[[
+ Script Name : taking_out_the_trash.lua
+ Script Purpose : Handles the quest, "Taking Out the Trash"
+ Script Author : neatz09
+ Script Date : 5/5/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+local Pohpiks = 1230044
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "Find the trash bags and take them to the platform.", 5, 100, "I must collect the trash bags from the Froglok trash cans and take them to the trash platform.", 10)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Eww... trash.")
+ StartConversation(conversation, QuestGiver, Player, "Great, this should be simple. Just gather trash bags from the garbage boxes around the village and bring all the bags back over here to my target platform. Those should make a fine target!")
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've taken all the trash to the platform.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've brought all the garbage to the platform.")
+
+ AddQuestStepChat(Quest, 2, "Speak to Pohpiks.", 1, "I should let Pohpiks know his targets are ready.", 11, Pohpiks)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I spoke with Pohpiks.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I told Pohpiks that I've gathered the trash... here come the fireworks!")
+
+ UpdateQuestDescription(Quest, "I've gathered trash for Pohpiks to use as target practice.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheLostVillageofKugup/the_puzzled_tactician.lua b/server/Quests/TheLostVillageofKugup/the_puzzled_tactician.lua
new file mode 100755
index 000000000..d48751aa6
--- /dev/null
+++ b/server/Quests/TheLostVillageofKugup/the_puzzled_tactician.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : the_puzzled_tactician.lua
+ Script Purpose : Handles the quest, "The Puzzled Tactician"
+ Script Author : Neatz09
+ Script Date : 11/22/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : World Event
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "I must solve the puzzle.", 1, 100, "I must place the totems in the correct order. When I'm finished, I need to speak with Timrek.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I solved the puzzle!")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I've placed the totems in the correct order.")
+
+ UpdateQuestDescription(Quest, "I solved the logic puzzle for Timrek.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/TheLostVillageofKugup/uncovering_the_froglok_secret.lua b/server/Quests/TheLostVillageofKugup/uncovering_the_froglok_secret.lua
new file mode 100755
index 000000000..58ca39d8a
--- /dev/null
+++ b/server/Quests/TheLostVillageofKugup/uncovering_the_froglok_secret.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : uncovering_the_froglok_secret.lua
+ Script Purpose : Handles the quest, "Uncovering the Froglok Secret"
+ Script Author : Neatz09
+ Script Date : 12/11/2023
+ Script Notes : Auto generated with QuestParser.
+
+ Zone : Hallmark
+ Quest Giver :
+ Preceded by : None
+ Followed by : None
+--]]
+
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "Investigate the village.", 1, 100, "I must discover the secret of the village.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I completed the investigation.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have discovered the secret of the village.")
+
+ UpdateQuestDescription(Quest, "I've completed all of the tasks for the Froglok villagers and spoken with Chief Kaorf. The Chief gave me a Talisman that I can use to find the village again someday.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/Quests/ThePeatBog/the_path_of_the_sun_wolf_.lua b/server/Quests/ThePeatBog/the_path_of_the_sun_wolf_.lua
index 1b6b96d28..33eb50489 100755
--- a/server/Quests/ThePeatBog/the_path_of_the_sun_wolf_.lua
+++ b/server/Quests/ThePeatBog/the_path_of_the_sun_wolf_.lua
@@ -5,14 +5,14 @@
Script Purpose :
Zone : ThePeatBog
- Quest Giver:
+ Quest Giver: Book quest starter
Preceded by: None
Followed by:
--]]
function Init(Quest)
- AddQuestStepZoneLoc(Quest, 1, "Find the Qeynos drain.", 4, "Visit the Qeynos Drain to the north in the Peat Bog.", 11, 666.14, -32.67, 396.23,829)
+ AddQuestStepZoneLoc(Quest, 1, "Find the Qeynos drain.", 6, "Visit the Qeynos Drain to the north in the Peat Bog.", 11, 666.14, -32.67, 396.23,829)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
@@ -40,7 +40,7 @@ function Step2Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 2, "Entered the hollow tree at the pond.")
UpdateQuestTaskGroupDescription(Quest, 2, "I visited the hollow tree at the pond.")
- AddQuestStepZoneLoc(Quest, 3, "Go to the hollowed stump.", 5, "Travel to the south of the Bog and find the hollowed stump in a corner of rock.", 11, 768.09, -31.64, 627.86,829)
+ AddQuestStepZoneLoc(Quest, 3, "Go to the hollowed stump.", 7, "Travel to the south of the Bog and find the hollowed stump in a corner of rock.", 11, 768.09, -31.64, 627.86,829)
AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
end
@@ -56,7 +56,7 @@ function Step4Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 4, "Went to the Lone Stump.")
UpdateQuestTaskGroupDescription(Quest, 4, "Visited the ancient wood ring called the Lone Stump Ring and investigate the stump.")
- AddQuestStepZoneLoc(Quest, 5, "Go to the Deadend Niche.", 7, "Travel north a short distance from the Lone Stump Ring to find Deadend Niche.", 11, 757.73, -32.70, 489.06,829)
+ AddQuestStepZoneLoc(Quest, 5, "Go to the Deadend Niche.", 8, "Travel north a short distance from the Lone Stump Ring to find Deadend Niche.", 11, 757.73, -32.70, 489.06,829)
AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
end
diff --git a/server/Quests/TheRuins/an_axes_revenge_.lua b/server/Quests/TheRuins/an_axes_revenge_.lua
index b6d59fe5f..335c9593f 100755
--- a/server/Quests/TheRuins/an_axes_revenge_.lua
+++ b/server/Quests/TheRuins/an_axes_revenge_.lua
@@ -13,12 +13,16 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill orcs", 1, 100, "I feel the irresistible need to slay orcs in the Ruins! I can reach the Ruins by using any of the bells in and around the City of Freeport.", 91, 1270017, 1270005, 1270006, 1270014, 1270040, 1270007, 1270042, 1270022, 1270009, 1270045, 1270024, 1270025, 1270013, 1270041, 1270043, 1270030)
+ AddQuestStepKill(Quest, 1, "Kill orcs", 6, 100, "I feel the irresistible need to slay orcs in the Ruins! I can reach the Ruins by using any of the bells in and around the City of Freeport.", 91, 8420001, 8420002,8420003, 8420004, 8420005,8420006, 8420007,8420009,8420010, 8420011, 8420012, 8420013, 8420014, 8420027, 8420028, 8420029, 8420030, 8420031, 8420038, 8420039, 8420042, 8420043, 8420068, 8420069)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"Ruins")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player,1335,1) then
+ RemoveItem(Player,1335)
+ SendMessage(Player,"You place the carved orc axe in your quest satchle.")
+ end
end
function Declined(Quest, QuestGiver, Player)
diff --git a/server/Quests/TheRuins/reward_for_a_missing_music_box_.lua b/server/Quests/TheRuins/reward_for_a_missing_music_box_.lua
index ad82db8fb..1669f0d1f 100755
--- a/server/Quests/TheRuins/reward_for_a_missing_music_box_.lua
+++ b/server/Quests/TheRuins/reward_for_a_missing_music_box_.lua
@@ -15,10 +15,14 @@
function Init(Quest)
AddQuestStepChat(Quest, 1, "I need to find Lucilla Quietus.", 1, "I should find this Lucilla Quietus and offer to return the music box for a reward.", 1212, 1660054)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"South Freeport")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player, 1286,1) then
+ RemoveItem(Player, 1286)
+ SendMessage(Player,"You place the broken music box in your quest satchle.")
+ end
end
function Declined(Quest, QuestGiver, Player)
@@ -33,12 +37,10 @@ function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 1, "I found Lucilla Quietus.")
UpdateQuestTaskGroupDescription(Quest, 1, "I found Lucilla Quietus and talked a reward out of her.")
- if HasItem(Player, 1286) then
- RemoveItem(Player, 1286)
+
UpdateQuestDescription(Quest, "I found Lucilla and demanded a reward for the return of her stolen music box. She finally consented to pay and I gave her the music box. I wish I would have checked out the music box more thoroughly...
")
GiveQuestReward(Quest, Player)
end
-end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
diff --git a/server/Quests/TheSinkingSands/kallons_revenge.lua b/server/Quests/TheSinkingSands/kallons_revenge.lua
new file mode 100644
index 000000000..932213737
--- /dev/null
+++ b/server/Quests/TheSinkingSands/kallons_revenge.lua
@@ -0,0 +1,86 @@
+--[[
+ Script Name : Quests/TheSinkingSands/kallons_revenge.lua
+ Script Author : premierio015
+ Script Date : 2023.12.16 04:12:18
+ Script Purpose : qscript for Kallon's Vengeance quest
+ Zone : The Sinking Sands(DoF)
+ Quest Giver: Kallon Ebbtide
+ Preceded by: None
+ Followed by:
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I should locate a guide named Jaza in the crocodile hunter camp.", 1, "Kallon has asked me to find and slay the bandit that was responsible for his comrades' demise. I should check the crocodile hunter camp for a guide named Jaza.", 11, 730157)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Thank you! My comrades' spirits will be able to rest and this area might be safer. Fasul uses a guide at the hunter camp as bait for unwary travelers. Search around the crocodile hunters' camp for a man named Jaza. This man leads unwary travelers to Fasul's bandits. Play along, and find Fasul!")
+ Dialog.AddOption("I will do so, but first, may I hear more of your tales?")
+ Dialog.AddOption("I will find this Fasul and exact vengeance for you.")
+ Dialog.Start()
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I found Jaza and falsely agreed to let him guide me to Maj'Dul.")
+
+ AddQuestStepChat(Quest, 2, "Jaza wants to meet in the Oasis of Marr near the beginning of the trade route to Maj'Dul.", 1, "Kallon has asked me to find and slay the bandit that was responsible for his comrades' demise. I should check the crocodile hunter camp for a guide named Jaza.", 11, 730157)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I found Jaza by a large palm tree right at the northern edge of the Oasis of Marr.")
+
+ AddQuestStepKill(Quest, 3, "I should speak with Jaza and continue playing along with the ruse to hopefully lure out Fasul.", 1, 100, "Kallon has asked me to find and slay the bandit that was responsible for his comrades' demise. I should check the crocodile hunter camp for a guide named Jaza.", 11, 730485)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "Fasul and his bandits have been slain! I bet Kallon will be happy.")
+
+ AddQuestStepChat(Quest, 4, "I should have some final words with Jaza and end this legacy of betrayal.", 1, "Kallon has asked me to find and slay the bandit that was responsible for his comrades' demise. I should check the crocodile hunter camp for a guide named Jaza.", 11, 730157)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I relented and let Jaza live. I am confident he will legitimately help travelers now.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found and slain Fasul. I am looking forward to letting Kallon know the news.")
+
+ AddQuestStepChat(Quest, 5, "I need to return to Kallon at the docks and let him know that Fasul is dead.", 1, "Now that I have slain Fasul, I need to return to Kallon and tell him the good news.", 11, 730125)
+ AddQuestStepCompleteAction(Quest, 5, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 5, "I let Kallon know that his comrades have been avenged.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have informed Kallon of Fasul's death. He seemed relieved.")
+
+ UpdateQuestDescription(Quest, "I've avenged Kallon's comrades by slaying Fasul and terrifying Jaza into submission. Kallon can now rest easy and work towards getting back to his homeland.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
diff --git a/server/Quests/TheSprawl/balancing_the_gangs_.lua b/server/Quests/TheSprawl/balancing_the_gangs_.lua
index 8b66e94f9..2f41a222b 100755
--- a/server/Quests/TheSprawl/balancing_the_gangs_.lua
+++ b/server/Quests/TheSprawl/balancing_the_gangs_.lua
@@ -1,7 +1,7 @@
--[[
Script Name : balancing_the_gangs.lua
Script Purpose : Handles the quest, "Balancing the Gangs"
- Script Author : premierio015
+ Script Author : premierio015\\Dorbin
Script Date : 25.06.2021
Script Notes : Auto generated with QuestParser.
@@ -15,12 +15,15 @@
function Init(Quest)
SetQuestFeatherColor(Quest, 3)
SetQuestRepeatable(Quest)
- AddQuestStepKill(Quest, 1, "Kill Giantslayer thugs", 8, 100, "I should go rough up a few Giantslayer thugs in the Sprawl for being bullies. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 1260013)
+ AddQuestStepKill(Quest, 1, "Kill Giantslayer thugs", 8, 100, "I should go rough up a few Giantslayer thugs in the Sprawl for being bullies. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400015)
AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player, 2262) then
+ RemoveItem(Player, 2262)
+ SendMessage(Player,"You stuff the Guttersnipe note in your quest satchle.")
+end
end
function Declined(Quest, QuestGiver, Player)
@@ -37,9 +40,7 @@ function QuestComplete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 1, "I beat up 8 Giantslayer thugs in the Sprawl.")
UpdateQuestDescription(Quest, "I finished roughing up the Giantslayers. That should shift the power balance a little more to even around here.
")
GiveQuestReward(Quest, Player)
- if HasItem(Player, 2262) then
- RemoveItem(Player, 2262)
-end
+
end
function Reload(Quest, QuestGiver, Player, Step)
diff --git a/server/Quests/TheSprawl/shivos_arcane_rod.lua b/server/Quests/TheSprawl/shivos_arcane_rod.lua
new file mode 100755
index 000000000..bf973e1c9
--- /dev/null
+++ b/server/Quests/TheSprawl/shivos_arcane_rod.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Quests/TheSprawl/shivos_arcane_rod.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.15 04:11:25
+ Script Purpose :
+
+ Zone : TheSprawl
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I should show this rod to someone in Freeport.", 1, "I should show this rod to someone and see if they know what it does. I hear there's an extensive library in the City of Freeport. Maybe someone there would know.", 169, 1440034 )
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ UpdateQuestZone(Quest,"North Freeport")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ if HasItem(Player, 2292) then
+ RemoveItem(Player, 2292)
+ SendMessage(Player,"You place the magic rod in your quest satchle.")
+ end
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I returned the rod to Claudia Quart.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I returned the rod to Claudia Quart and received a reward.")
+
+ UpdateQuestDescription(Quest, "It turns out the rod was originally the possession of Claudia Quart. The Great Shivo stole it from her some time ago. I returned the rod to Claudia for a reward.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheSprawl/sprawl_giantslayer_sweep.lua b/server/Quests/TheSprawl/sprawl_giantslayer_sweep.lua
new file mode 100755
index 000000000..c2bf80258
--- /dev/null
+++ b/server/Quests/TheSprawl/sprawl_giantslayer_sweep.lua
@@ -0,0 +1,96 @@
+--[[
+ Script Name : Quests/TheSprawl/sprawl_giantslayer_sweep.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.04 02:12:31
+ Script Purpose :
+
+ Zone : TheSprawl
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ local RandomChoice = MakeRandomInt(1, 3)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ if RandomChoice == 1 then
+ AddQuestStepKill(Quest, 1, "Slay Giantslayer thugs", 6, 100, "I'm to teach the Giantslayers in the Sprawl to respect Freeport and fear the Overlord. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400015)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ elseif RandomChoice == 2 then
+ AddQuestStepKill(Quest, 1, "Slay Giantslayer brutes", 6, 100, "I'm to teach the Giantslayers in the Sprawl to respect Freeport and fear the Overlord. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400025)
+ AddQuestStepCompleteAction(Quest, 1, "Step2Complete")
+ elseif RandomChoice == 3 then
+ AddQuestStepKill(Quest, 1, "Slay Giantslayer bashers", 6, 100, "I'm to teach the Giantslayers in the Sprawl to respect Freeport and fear the Overlord. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400027)
+ AddQuestStepCompleteAction(Quest, 1, "Step3Complete")
+ end
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "I will do so.")
+ StartConversation(conversation, QuestGiver, Player, "There is a band of ruffians known as the Giantslayers. You will teach them to respect Freeport and fear the Overlord! Is that clear?")
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've dealt with the Giantslayer thugs.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've dealt with the Giantslayer brutes.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've dealt with the Giantslayer bashers.")
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+
+
+function CheckProgress(Quest, QuestGiver, Player)
+if QuestStepIsComplete(Player, 5933, 1) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "Class dismissed.")
+ AddQuestStepChat(Quest, 3, "Report to Liege Aquila", 1, "I should report back to Liege Aquila in the Sprawl. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 11, 8400018)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I spoke with Liege Aquila.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've spoken with Liege Aquila.")
+
+ UpdateQuestDescription(Quest, "There are a few less Giantslayers in the Sprawl that will disrespect Freeport. I have done as Liege Aquila had ordered. I should return to him only if I desire to continue doing this sort of work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ local RandomChoice = MakeRandomInt(1, 3)
+ if Step == 1 then
+ if RandomChoice == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif RandomChoice == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif RandomChoice == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ end
+ elseif Step == 2 then
+ CheckProgress(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheSprawl/sprawl_guttersnipe_sweep.lua b/server/Quests/TheSprawl/sprawl_guttersnipe_sweep.lua
new file mode 100755
index 000000000..bb5e0c943
--- /dev/null
+++ b/server/Quests/TheSprawl/sprawl_guttersnipe_sweep.lua
@@ -0,0 +1,87 @@
+--[[
+ Script Name : Quests/TheSprawl/sprawl_guttersnipe_sweep.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.04 04:12:27
+ Script Purpose :
+
+ Zone : TheSprawl
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ local RandomChoice = MakeRandomInt(1, 2)
+ SetQuestFeatherColor(Quest, 3)
+ SetQuestRepeatable(Quest)
+ if RandomChoice == 1 then
+ AddQuestStepKill(Quest, 1, "Slay Guttersnipe hooligans", 6, 100, "I'm supposed to knock these Dervishes in the Sprawl down a few notches. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400011)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ elseif RandomChoice == 2 then
+ AddQuestStepKill(Quest, 1, "Slay Guttersnipe crooks", 6, 100, "I'm supposed to knock these Dervishes in the Sprawl down a few notches. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 611, 8400010)
+ AddQuestStepCompleteAction(Quest, 1, "Step2Complete")
+ end
+end
+
+
+function Accepted(Quest, QuestGiver, Player)
+ FaceTarget(QuestGiver, Player)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "I will do so.")
+ StartConversation(conversation, QuestGiver, Player, "Glad to hear it. Defeat them and return to me for your payment.")
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I've dealt with the Guttersnipe.")
+
+ CheckProgress(Quest, QuestGiver, Player)
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I've dealt with the Guttersnipe.")
+CheckProgress(Quest, QuestGiver, Player)
+end
+
+
+function CheckProgress(Quest, QuestGiver, Player)
+if QuestStepIsComplete(Player, 5934, 1) then
+ UpdateQuestTaskGroupDescription(Quest, 1, "I'd say they've been cut down to size.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "Class dismissed.")
+ AddQuestStepChat(Quest, 3, "Report to Liege Aquila", 1, "I should report back to Liege Aquila in the Sprawl. I can reach the Sprawl by using any of the bells in and around the City of Freeport.", 11, 8400018)
+ AddQuestStepCompleteAction(Quest, 3, "QuestComplete")
+end
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 3, "I spoke with Liege Aquila.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I've spoken with Liege Aquila.")
+
+ UpdateQuestDescription(Quest, "I've taken care of the dervishes here in the Sprawl, just like Liege Aquila asked. I should return to him only if I desire to continue doing this sort of work.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ local RandomChoice = MakeRandomInt(1, 3)
+ if Step == 1 then
+ if RandomChoice == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif RandomChoice == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif RandomChoice == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ end
+ elseif Step == 2 then
+ CheckProgress(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/TheSprawl/will_fight_for_fun.lua b/server/Quests/TheSprawl/will_fight_for_fun.lua
new file mode 100755
index 000000000..649a28496
--- /dev/null
+++ b/server/Quests/TheSprawl/will_fight_for_fun.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Quests/TheSprawl/will_fight_for_fun.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.13 07:12:13
+ Script Purpose : This quest was designed to give an inactive/useless quest reward purpose from Scale Yard and a reason to kill Woodelves/halflings in The Sprawl.
+
+ Zone : TheSprawl
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "Kill any wood elves, halflings, and dwarves in The Sprawl", 12, 100, "I'm in the mood to clear out the Qeynosian riff-raff in The Sprawl. Let me see how beg for death as I end their miserable existance!", 91,8400031,8400029,8400030)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ if HasItem(Player, 1001111,1) then
+ RemoveItem(Player, 1001111)
+ SendMessage(Player,"You place the lock of smooth hair in your quest satchle.")
+ end
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have killed the Qeynosian troublemakers.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have killed the Qeynosian troublemakers. Their tears were reward enough.")
+ if HasItem(Player, 1001111) then
+ RemoveItem(Player, 1001111)
+ end
+ UpdateQuestDescription(Quest, "I've culled the Sprawl of a potential threat. Their tears were satisfying as I cut them down!")
+ GiveQuestReward(Quest, Player)
+ end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
+
+
diff --git a/server/Quests/TheWillowWood/scavenger_rats.lua b/server/Quests/TheWillowWood/scavenger_rats.lua
index 2e0cbe09e..74219419c 100755
--- a/server/Quests/TheWillowWood/scavenger_rats.lua
+++ b/server/Quests/TheWillowWood/scavenger_rats.lua
@@ -9,6 +9,7 @@
Preceded by: None
Followed by:
--]]
+require "SpawnScripts/Generic/DialogModule"
function Init(Quest)
@@ -18,11 +19,12 @@ function Init(Quest)
end
function Accepted(Quest, QuestGiver, Player)
- FaceTarget(NPC, Player)
- conversation = CreateConversation()
- AddConversationOption(conversation, "Farewell Salinia.")
- StartConversation(conversation, QuestGiver, Player, "Thank you for assisting us. If you slay only a few rats it will make a difference. Good luck on your hunt, adventurer")
- PlayFlavor(NPC, "", "", "thank", 0,0 , Player)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Thank you for assisting us. If you slay only a few rats it will make a difference. Good luck on your hunt, adventurer.")
+ PlayFlavor(QuestGiver, "", "", "thank", 0,0 , Player)
+ Dialog.AddOption("Farewell Salinia.")
+ Dialog.Start()
end
function Declined(Quest, QuestGiver, Player)
@@ -55,8 +57,7 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
Step1Complete(Quest, QuestGiver, Player)
- end
- if Step == 2 then
+ elseif Step == 2 then
QuestComplete(Quest, QuestGiver, Player)
end
end
diff --git a/server/Quests/ThievesWay/TheStolenChest.lua b/server/Quests/ThievesWay/TheStolenChest.lua
index e883188f0..8aa2b339d 100755
--- a/server/Quests/ThievesWay/TheStolenChest.lua
+++ b/server/Quests/ThievesWay/TheStolenChest.lua
@@ -14,12 +14,23 @@
local itemId = 2115
function Init(Quest)
AddQuestStepKill(Quest, 1, "I must kill one darkblade brigand.", 1, 100, "I must kill a darkblade brigand.", 11, 1540018,1540023)
- AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have killed one darkblade brigand.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have killed a darkblade brigand.")
+ UpdateQuestZone(Quest,"Beggar's Court")
+ AddQuestStepChat(Quest, 2, "I must find Anrean Velvinna.", 1, "I must find Anrean Velvinna in the Beggar's Court.", 611, 1360202,1360004)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
function Accepted(Quest, QuestGiver, Player)
while HasItem(Player, itemId, 1) do
RemoveItem(Player, itemId)
+ SendMessage(Player,"You place the locked chest in your quest satchle.")
end
end
@@ -33,15 +44,16 @@ end
function QuestComplete(Quest, QuestGiver, Player)
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
- UpdateQuestStepDescription(Quest, 1, "I have killed one darkblade brigand.")
- UpdateQuestTaskGroupDescription(Quest, 1, "I have killed a darkblade brigand.")
- RemoveItem(Player, ItemId)
+ UpdateQuestStepDescription(Quest, 1, "I have found Anrean Velvinna.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have found Anrean Velvinna.")
UpdateQuestDescription(Quest, "I found a bounty that promised a reward for the return of a stolen chest. After I recovered the chest from the Darkblade brigands, I returned it to Anrean Velvinna. She awarded me some money for returning the chest.")
GiveQuestReward(Quest, Player)
end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- QuestComplete(Quest, QuestGiver, Player)
- end
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
end
\ No newline at end of file
diff --git a/server/Quests/ThievesWay/chuggles_toolbox.lua b/server/Quests/ThievesWay/chuggles_toolbox.lua
index 41088875f..eb27da42c 100755
--- a/server/Quests/ThievesWay/chuggles_toolbox.lua
+++ b/server/Quests/ThievesWay/chuggles_toolbox.lua
@@ -11,18 +11,57 @@
--]]
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to find Chuggle's five tools and replace them in the toolbox. There's a good chance that they're down here in the Thieves' Way.", 5, 100, " I need to find a cogspindler on one of the union menders.", 1228, 1540008, 1540016, 1540046, 1540002, 1540021, 1540022, 1540024, 1540028, 1540072, 1540073, 1540029, 1540045, 1540000, 1540032)
+ AddQuestStepKill(Quest, 1, "I need to find a cogspindler on one of the union menders.", 1, 66, "I need to find Chuggle's five tools and replace them in the toolbox. There's a good chance that they're down here in the Thieves' Way.", 1228, 8430033)
+ AddQuestStepKill(Quest, 2, "I need to find a zaptwister on one of the Darkblade nobles.", 1, 70, "I need to find Chuggle's five tools and replace them in the toolbox. There's a good chance that they're down here in the Thieves' Way.", 1031, 8430006)
+ AddQuestStepKill(Quest, 3, "I need to find a sprocket wobbler on one of the diseased ratonga.", 1, 70, "I need to find Chuggle's five tools and replace them in the toolbox. There's a good chance that they're down here in the Thieves' Way.", 32, 8430010,8430009,8430011)
+ AddQuestStepKill(Quest, 4, "I need to find an octagonal bludgeoner from the corruptors.", 1, 70, "I need to find Chuggle's five tools and replace them in the toolbox. There's a good chance that they're down here in the Thieves' Way.", 634, 8430001)
+ AddQuestStepKill(Quest, 5, "I need to find a can of elbow grease from a fallen crusader.", 1, 70, "I need to find Chuggle's five tools and replace them in the toolbox. There's a good chance that they're down here in the Thieves' Way.", 943, 8430034)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
end
function Step1Complete(Quest, QuestGiver, Player)
- UpdateQuestStepDescription(Quest, 1, "I found all the tools that were missing from Chuggle's toolbox.")
- AddQuestStepChat(Quest, 2, "I need to speak with Chuggle Valvesplitter.", 1, "I have to return toolbox to Chuggle Valvesplitter." , 11, 1360021)
- AddQuestStepCompleteAction(Quest, 2, "quest_complete")
+ UpdateQuestStepDescription(Quest, 1, "I found a cogspindler.")
+ QuestCheck(Quest, QuestGiver, Player)
end
-function Accepted(Quest, QuestGiver, Player)
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I found a zaptwister.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I found a sprocket wobbler.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I found an octagonal bludgeoner.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I found a can of elbow grease.")
+ QuestCheck(Quest, QuestGiver, Player)
+end
+
+function QuestCheck(Quest, QuestGiver, Player)
+ if QuestStepIsComplete(Player,483,1) and QuestStepIsComplete(Player,483,2) and QuestStepIsComplete(Player,483,3) and QuestStepIsComplete(Player,483,4) and QuestStepIsComplete(Player,483,5)then
+ UpdateQuestStepDescription(Quest, 1, "I found all the tools that were missing from Chuggle's toolbox.")
+ UpdateQuestZone(Quest, "Temple Street")
+ AddQuestStepChat(Quest, 6, "I need to speak with Chuggle Valvesplitter.", 1, "I have to return toolbox to Chuggle Valvesplitter." , 11, 1360021)
+ AddQuestStepCompleteAction(Quest,6, "quest_complete")
+end
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ if HasItem(Player, 5014,1) then
+ RemoveItem(Player, 5014)
+ SendMessage(Player,"You place the toolbox in your quest satchle for later.")
+ end
end
function Declined(Quest, QuestGiver, Player)
@@ -31,13 +70,22 @@ end
function quest_complete(Quest, QuestGiver, Player)
UpdateQuestDescription(Quest, 3, "I have spoken with Chuggle Valvesplitter and returned the toolbox.")
- if HasItem(Player, 5014) then
- RemoveItem(Player, 5014)
- end
GiveQuestReward(Quest, Player)
end
function Reload(Quest, QuestGiver, Player, Step)
-
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
end
diff --git a/server/Quests/ThievesWay/darkblades_and_dirty_rats.lua b/server/Quests/ThievesWay/darkblades_and_dirty_rats.lua
index fbd426a73..e255a598d 100755
--- a/server/Quests/ThievesWay/darkblades_and_dirty_rats.lua
+++ b/server/Quests/ThievesWay/darkblades_and_dirty_rats.lua
@@ -13,7 +13,7 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "Kill Darkblade Brigands to recover a trinket.", 1, 10, "I need to slay the Darkblade Brigands in Thieves' Way to recover a trinket they stole.", 1042, 1540018, 1540023)
+ AddQuestStepKill(Quest, 1, "Kill Darkblade Brigands to recover a trinket.", 1, 10, "I need to slay the Darkblade Brigands in Thieves' Way to recover a trinket they stole.", 1042, 1540018, 1540023,8430003)
AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
diff --git a/server/Quests/ThievesWay/sewer_problem_a_gnome_solution.lua b/server/Quests/ThievesWay/sewer_problem_a_gnome_solution.lua
new file mode 100644
index 000000000..9eecbe588
--- /dev/null
+++ b/server/Quests/ThievesWay/sewer_problem_a_gnome_solution.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Quests/ThievesWay/sewer_problem_a_gnome_solution.lua
+ Script Author : dorbin
+ Script Date : 2024.01.27 02:01:04
+ Script Purpose :
+
+ Zone : ThievesWay
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+
+end
+
+function Accepted(Quest, QuestGiver, Player)
+
+end
+
+function Declined(Quest, QuestGiver, Player)
+
+end
+
+function quest_complete(Quest, QuestGiver, Player)
+
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+
+end
+
diff --git a/server/Quests/ThievesWay/the_failed_assassin.lua b/server/Quests/ThievesWay/the_failed_assassin.lua
index 4402cace2..13bbb7382 100755
--- a/server/Quests/ThievesWay/the_failed_assassin.lua
+++ b/server/Quests/ThievesWay/the_failed_assassin.lua
@@ -1,8 +1,8 @@
--[[
Script Name : the_failed_assassin.lua
Script Purpose : Handles the quest, "The Failed Assassin"
- Script Author : QuestParser (Replace this)
- Script Date : 04.07.2021
+ Script Author : Dorbin
+ Script Date : 11.15.2023
Script Notes : Auto generated with QuestParser.
Zone : Thieves' Way
@@ -13,12 +13,15 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I must kill Marius Darkblade.", 1, 100, "I must kill Lord Marius Darkblade and retrieve his head.", 611, 1540025)
- AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+ AddQuestStepKill(Quest, 1, "I must kill Marius Darkblade.", 1, 100, "I must kill Lord Marius Darkblade and retrieve his head.", 611, 8430018)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Accepted(Quest, QuestGiver, Player)
- -- Add dialog here for when the quest is accepted
+ if HasItem(Player, 2804) then
+ RemoveItem(Player, 2804)
+ SendMessage(Player,"You place the parchment in your quest satchle.")
+ end
end
function Declined(Quest, QuestGiver, Player)
@@ -29,19 +32,27 @@ function Deleted(Quest, QuestGiver, Player)
-- Remove any quest specific items here when the quest is deleted
end
-function QuestComplete(Quest, QuestGiver, Player)
+function Step1Complete(Quest, QuestGiver, Player)
+
-- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
UpdateQuestStepDescription(Quest, 1, "I have killed Marius Darkblade.")
UpdateQuestTaskGroupDescription(Quest, 1, "I have killed Marius Darkblade.")
- if HasItem(Player, 2804) then
- RemoveItem(Player, 2804)
- end
- UpdateQuestDescription(Quest, "I unwittingly killed an agent who was ordered by the Freeport Militia to assassinate Lord Darkblade. I have taken it upon myself to kill Lord Marius Darkblade in the agent's stead. Captain Molacus awarded me for the deed.")
+ UpdateQuestZone(Quest,"Temple Street")
+ AddQuestStepChat(Quest, 2, "I must find Captain Molacus in Temple Street.", 1, "I must find Captain Molacus in Temple Street and inform him of Marius' death.", 611, 1360202,1360004)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have found Captain Molacus.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "I have found Captain Molacus.")
+ UpdateQuestDescription(Quest, "I unwittingly killed an agent who was ordered by the Freeport Militia to assassinate Lord Darkblade. I have taken it upon myself to kill Lord Marius Darkblade in the agent's stead. Captain Molacus awarded me for the deed.")
GiveQuestReward(Quest, Player)
end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- QuestComplete(Quest, QuestGiver, Player)
- end
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
end
diff --git a/server/Quests/TimorousDeep/curious_ore.lua b/server/Quests/TimorousDeep/curious_ore.lua
index 6a7e13b83..9f6c9878a 100755
--- a/server/Quests/TimorousDeep/curious_ore.lua
+++ b/server/Quests/TimorousDeep/curious_ore.lua
@@ -2,11 +2,11 @@
Script Name : Quests/TimorousDeep/curious_ore.lua
Script Purpose : Handles the quest, "Curious Ore"
Script Author : Scatman
- Script Date : 2009.02.06
-
- Zone : Timorous Deep
- Quest Giver: Tykor Gi'Lok
- Preceded by: Poaching the Poachers (poaching_the_poachers.lua)
+ Script Date : 2009.02.06
+
+ Zone : Timorous Deep
+ Quest Giver: Tykor Gi'Lok
+ Preceded by: Poaching the Poachers (poaching_the_poachers.lua)
Followed by: Report to the Primary (report_to_the_primary.lua)
--]]
@@ -16,8 +16,7 @@ function Init(Quest)
-- curious ore
- AddQuestStepObtainItem(Quest, 1, "I need some samples of the ore the Haoaerans are mining to the west.", 3, 100, ".", 1086, 4401)
-
+ AddQuestStepObtainItem(Quest, 1, "I need some samples of the ore the Haoaerans are mining to the west.", 3, 100, "Tykor Gi'Lok would like me to collect some of the ore that the Haoaerans have been mining", 1086, 6198)
AddQuestStepCompleteAction(Quest, 1, "step1_complete_gotOre")
end
@@ -37,7 +36,7 @@ end
function step1_complete_gotOre(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have the ore samples.")
- AddQuestStepChat(Quest, 2, "I need to bring these ore samples back to Tykor Gi'Lok.", 1, ".", 1086, 2630018)
+ AddQuestStepChat(Quest, 2, "I need to bring these ore samples back to Tykor Gi'Lok.", 1, "Tykor Gi'Lok would like me to collect some of the ore that the Haoaerans have been mining.", 1086, 2630021)
AddQuestStepCompleteAction(Quest, 2, "quest_complete")
end
@@ -50,4 +49,4 @@ function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
step1_complete_gotOre(Quest, QuestGiver, Player)
end
-end
+end
diff --git a/server/Quests/TimorousDeep/disrupting_haoaeran_studies.lua b/server/Quests/TimorousDeep/disrupting_haoaeran_studies.lua
index ffd4206d3..7afaa56c5 100755
--- a/server/Quests/TimorousDeep/disrupting_haoaeran_studies.lua
+++ b/server/Quests/TimorousDeep/disrupting_haoaeran_studies.lua
@@ -2,11 +2,11 @@
Script Name : Quests/TimorousDeep/disrupting_haoaeran_studies.lua
Script Purpose : Handles the quest, "Disrupting Haoaeran Studies"
Script Author : Scatman
- Script Date : 2009.02.06
-
- Zone : Timorous Deep
- Quest Giver: Primary Conzuk Zum'Ha
- Preceded by: Report to the Primary (report_to_the_primary.lua)
+ Script Date : 2009.02.06
+
+ Zone : Timorous Deep
+ Quest Giver: Primary Conzuk Zum'Ha
+ Preceded by: Report to the Primary (report_to_the_primary.lua)
Followed by: Disrupting Haoaeran Rituals (disrupting_haoaeran_rituals.lua)
--]]
@@ -14,9 +14,9 @@
function Init(Quest)
- AddQuestStepKill(Quest, 1, "I need to kill the Haoaerans excavating the tunnel northwest across the sand.", 4, 100, "I need to travel to the cave to the west of Chrykori Village and kill the Haoaerans excavating the cave, and gather a sample of what they are digging up.", 611, 2630102, 2630103)
+ AddQuestStepKill(Quest, 1, "I need to kill the Haoaerans excavating the tunnel northwest across the sand.", 4, 100, "I need to travel to the cave to the west of Chrykori Village and kill the Haoaerans excavating the cave, and gather a sample of what they are digging up.", 611, 2630882, 2630881, 2630958)
-- inscribed pottery
- AddQuestStepObtainItem(Quest, 2, "I need a sample of whatever the Haoaerans are digging up.", 1, 100, "I need to travel to the cave to the west of Chrykori Village and kill the Haoaerans excavating the cave and gather a sample of what they are digging up.", 1085, 5836)
+ AddQuestStepObtainItem(Quest, 2, "I need a sample of whatever the Haoaerans are digging up.", 1, 100, "I need to travel to the cave to the west of Chrykori Village and kill the Haoaerans excavating the cave and gather a sample of what they are digging up.", 1085, 8346)
AddQuestStepCompleteAction(Quest, 1, "step1_complete_killedBirds")
AddQuestStepCompleteAction(Quest, 2, "step2_complete_gotOre")
@@ -54,7 +54,7 @@ end
function multiple_steps_complete(Quest, QuestGiver, Player)
UpdateQuestTaskGroupDescription(Quest, 1, "I have killed the Haoaerans and obtained a sample of what they're digging up.")
- AddQuestStepChat(Quest, 3, "I must speak with Primary Conzuk Zum'Ha in Chrykori Village.", 1, "I must show Primary Conzuk Zum'Ha in Chrykori Village these ore samples.", 0, 2630042)
+ AddQuestStepChat(Quest, 3, "I must speak with Primary Conzuk Zum'Ha in Chrykori Village.", 1, "I must show Primary Conzuk Zum'Ha in Chrykori Village these ore samples.", 0, 2630460)
AddQuestStepCompleteAction(Quest, 3, "quest_complete")
end
@@ -70,4 +70,4 @@ function Reload(Quest, QuestGiver, Player, Step)
elseif Step == 2 then
step2_complete_gotOre(Quest, QuestGiver, Player)
end
-end
+end
diff --git a/server/Quests/TimorousDeep/poaching_the_poachers.lua b/server/Quests/TimorousDeep/poaching_the_poachers.lua
index b723846e2..47818f9c6 100755
--- a/server/Quests/TimorousDeep/poaching_the_poachers.lua
+++ b/server/Quests/TimorousDeep/poaching_the_poachers.lua
@@ -2,54 +2,57 @@
Script Name : Quests/TimorousDeep/poaching_the_poachers.lua
Script Purpose : Handles the quest, "Poaching the Poachers"
Script Author : Scatman
- Script Date : 2009.02.06
-
- Zone : Timorous Deep
- Quest Giver: Tykor Gi'Lok
- Preceded by: None
+ Script Date : 2009.02.06
+
+ Zone : Timorous Deep
+ Quest Giver: Tykor Gi'Lok
+ Preceded by: None
Followed by: Curious Ore (curious_ore.lua)
--]]
+
function Init(Quest)
- -- Raptor-scaled Armguards
- -- Scaled Armguards
- -- Sunburnt Bracers
- -- Empowered Earring
- -- Geo-Parser's Sleeves
-
-
- AddQuestStepKill(Quest, 1, "I need to kill four Haoaeran poachers.", 4, 100, ".", 611, 2630017)
- AddQuestStepCompleteAction(Quest, 1, "step1_complete_killedPoachers")
-
+ AddQuestStepKill(Quest, 1, "I need to kill four Haoaeran poachers.", 4, 100, "Tykor Gi'Lok wants me to kill the Haoaeran poachers that are moving in.", 611, 2630020)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
end
function Accepted(Quest, QuestGiver, Player)
FaceTarget(QuestGiver, Player)
conversation = CreateConversation()
-
PlayFlavor(QuestGiver, "voiceover/english/rok_questvo/tykor_gi_lok/_exp04/exp04_rgn_timorous_deep/chrykori_tie/gilok/gilok001.mp3", "", "", 611409560, 797692345, Player)
AddConversationOption(conversation, "As good as done.")
StartConversation(conversation, QuestGiver, Player, "No hesitation, I like it. You will kill the poachers, and they will know Gi'Lok knows how to delegate.")
end
function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
end
-function step1_complete_killedPoachers(Quest, QuestGiver, Player)
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have slain the Haoaeran poachers.")
-
- AddQuestStepChat(Quest, 2, "I need to return to Tykor Gi'Lok.", 1, ".", 0, 2630018)
- AddQuestStepCompleteAction(Quest, 2, "quest_complete")
+
+ AddQuestStepChat(Quest, 2, "I need to return to Tykor Gi'Lok.", 1, "Tykor Gi'Lok wants me to kill the Haoaeran poachers that are moving in.", 11, 2630021)
+ AddQuestStepCompleteAction(Quest, 2, "QuestComplete")
end
-function quest_complete(Quest, QuestGiver, Player)
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 2, "I have spoken with Tykor Gi'Lok.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have slain the Haoaeran poachers for Tykor Gi'Lok.")
+
UpdateQuestDescription(Quest, "I have slain the Haoaeran poachers for Tykor Gi'Lok.")
GiveQuestReward(Quest, Player)
end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
- step1_complete_killedPoachers(Quest, QuestGiver, Player)
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ QuestComplete(Quest, QuestGiver, Player)
end
-end
+end
\ No newline at end of file
diff --git a/server/Quests/TimorousDeep/report_to_the_primary.lua b/server/Quests/TimorousDeep/report_to_the_primary.lua
index 19b77fa5c..9b7c742df 100755
--- a/server/Quests/TimorousDeep/report_to_the_primary.lua
+++ b/server/Quests/TimorousDeep/report_to_the_primary.lua
@@ -2,11 +2,11 @@
Script Name : Quests/TimorousDeep/report_to_the_primary.lua
Script Purpose : Handles the quest, "Report to the Primary"
Script Author : Scatman
- Script Date : 2009.02.06
-
- Zone : Timorous Deep
- Quest Giver: Tykor Gi'Lok
- Preceded by: Curious Ore (curious_ore.lua)
+ Script Date : 2009.02.06
+
+ Zone : Timorous Deep
+ Quest Giver: Tykor Gi'Lok
+ Preceded by: Curious Ore (curious_ore.lua)
Followed by: Disrupting Haoaeran Studies (disrupting_haoaeran_studies.lua)
--]]
@@ -19,7 +19,7 @@ function Init(Quest)
-- Zum'Ha's Armwraps
- AddQuestStepChat(Quest, 1, "I must speak with Primary Conzuk Zum'Ha in Chrykori Village, up the ramp to the north.", 1, ".", 0, 2630042)
+ AddQuestStepChat(Quest, 1, "I must speak with Primary Conzuk Zum'Ha in Chrykori Village, up the ramp to the north.", 1, "I must show Primary Conzuk Zum'Ha in Chrykori Village these ore samples.", 0, 2630460)
AddQuestStepCompleteAction(Quest, 1, "quest_complete")
end
@@ -42,4 +42,4 @@ function quest_complete(Quest, QuestGiver, Player)
end
function Reload(Quest, QuestGiver, Player, Step)
-end
+end
diff --git a/server/Quests/Unknown/qeynos_bard_gear__level_10.lua b/server/Quests/Unknown/qeynos_bard_gear__level_10.lua
new file mode 100755
index 000000000..55997be66
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_bard_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_bard_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:52
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Bard testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Bard testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Bard testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_brawler_gear__level_10.lua b/server/Quests/Unknown/qeynos_brawler_gear__level_10.lua
new file mode 100755
index 000000000..78e2401fc
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_brawler_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_brawler_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:53
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Brawler testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Brawler testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Brawler testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_cleric_gear__level_10.lua b/server/Quests/Unknown/qeynos_cleric_gear__level_10.lua
new file mode 100755
index 000000000..27f901b10
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_cleric_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_cleric_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:22
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Cleric testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Cleric testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Cleric testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_crusader_gear__level_10.lua b/server/Quests/Unknown/qeynos_crusader_gear__level_10.lua
new file mode 100755
index 000000000..737c4b94f
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_crusader_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_crusader_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:49
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Crusader testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Crusader testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Crusader testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_druid_gear__level_10.lua b/server/Quests/Unknown/qeynos_druid_gear__level_10.lua
new file mode 100755
index 000000000..1ac3d8a37
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_druid_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_druid_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:29
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Druid testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Druid testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Druid testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_enchanter_gear__level_10.lua b/server/Quests/Unknown/qeynos_enchanter_gear__level_10.lua
new file mode 100755
index 000000000..16fe0921c
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_enchanter_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_enchanter_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:52
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Enchanter testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Enchanter testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Enchanter testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_predator_gear__level_10.lua b/server/Quests/Unknown/qeynos_predator_gear__level_10.lua
new file mode 100755
index 000000000..3a3e0d83d
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_predator_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_predator_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:17
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Predator testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Predator testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Predator testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_rogue_gear__level_10.lua b/server/Quests/Unknown/qeynos_rogue_gear__level_10.lua
new file mode 100755
index 000000000..38a3d7cfa
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_rogue_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_rogue_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:43
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Rogue testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Rogue testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Rogue testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_shaman_gear__level_10.lua b/server/Quests/Unknown/qeynos_shaman_gear__level_10.lua
new file mode 100755
index 000000000..62ed9b3b2
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_shaman_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_shaman_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:08
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Shaman testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Shaman testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Shaman testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_sorcerer_gear__level_10.lua b/server/Quests/Unknown/qeynos_sorcerer_gear__level_10.lua
new file mode 100755
index 000000000..0408ea5f2
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_sorcerer_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_sorcerer_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:35
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Sorcerer testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Sorcerer testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Sorcerer testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_summoner_gear__level_10.lua b/server/Quests/Unknown/qeynos_summoner_gear__level_10.lua
new file mode 100755
index 000000000..94d401a49
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_summoner_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_summoner_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:28
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Summoner testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Summoner testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Summoner testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/Unknown/qeynos_warrior_gear__level_10.lua b/server/Quests/Unknown/qeynos_warrior_gear__level_10.lua
new file mode 100755
index 000000000..9901b64ed
--- /dev/null
+++ b/server/Quests/Unknown/qeynos_warrior_gear__level_10.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Quests/Unknown/qeynos_warrior_gear__level_10.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 12:06:00
+ Script Purpose : EMU gear pack for testing
+
+ Zone : Unknown
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+function Init(Quest)
+ AddQuestStepChat(Quest, 1, "I need to talk to the Shady Swashbuckler XVII.", 1, "I have a voucher for Level 10 testing gear I can turn in.", 75, 121873)
+ AddQuestStepCompleteAction(Quest, 1, "QuestComplete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 1, "I have claimed Level 10 Warrior testing gear.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I have claimed Level 10 Warrior testing gear.")
+
+ UpdateQuestDescription(Quest, "I have claimed Level 10 Warrior testing gear.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/VerminsSnye/the_story_of_the_rat_queen.lua b/server/Quests/VerminsSnye/the_story_of_the_rat_queen.lua
new file mode 100755
index 000000000..9ebe5bc87
--- /dev/null
+++ b/server/Quests/VerminsSnye/the_story_of_the_rat_queen.lua
@@ -0,0 +1,197 @@
+--[[
+ Script Name : Quests/VerminsSnye/the_story_of_the_rat_queen.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 03:09:33
+ Script Purpose :
+
+ Zone : VerminsSnye
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+
+function Init(Quest)
+ AddQuestStepKill(Quest, 1, "I need to kill 7 crumbling tomb guards.", 7, 100, "I'll find more pages of this book in Vermin's Snye.", 91, 2000012,2000020)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "I have killed 7 crumbling tomb guards.")
+
+ AddQuestStep(Quest, 2, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 3, "I need to kill 5 festering zombies.", 5, 100, "I'll find more pages of this book in Vermin's Snye.", 91, 2000011,2000018,2000027)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "I have killed 5 festering zombies.")
+
+ AddQuestStep(Quest, 4, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 5, "I need to kill 6 crumbling tomb guards.", 6, 100, "I'll find more pages of this book in Vermin's Snye.", 91, 2000012,2000020)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "I have killed 6 crumbling tomb guards.")
+
+ AddQuestStep(Quest, 6, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 7, "I need to kill 7 Bloodsaber proficients.", 7, 100, "I'll find more pages of this book in Vermin's Snye.", 91, 2000019)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "I have killed 7 Bloodsaber proficients.")
+
+ AddQuestStep(Quest, 8, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 8, "Step8Complete")
+end
+
+function Step8Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 8, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 9, "I need to kill 6 Bloodsaber adepts.", 6, 100, "I'll find more pages of this book in Vermin's Snye.", 91, 2000016)
+ AddQuestStepCompleteAction(Quest, 9, "Step9Complete")
+end
+
+function Step9Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 9, "I have killed 6 Bloodsaber adepts.")
+
+ AddQuestStep(Quest, 10, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 10, "Step10Complete")
+end
+
+function Step10Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 10, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 11, "I need to kill 5 Bloodsaber proficients.", 5, 100, "I'll find more pages of this book in Vermin's Snye.", 91, 2000019)
+ AddQuestStepCompleteAction(Quest, 11, "Step11Complete")
+end
+
+function Step11Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 11, "I have killed 5 Bloodsaber proficients.")
+
+ AddQuestStep(Quest, 12, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 12, "Step12Complete")
+end
+
+function Step12Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 12, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 13, "I need to kill 8 ravenous cubes.", 8, 100, "I'll find more pages of this book in Vermin's Snye.", 129, 2000005)
+ AddQuestStepCompleteAction(Quest, 13, "Step13Complete")
+end
+
+function Step13Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 13, "I have killed 8 ravenous cubes.")
+
+ AddQuestStep(Quest, 14, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 14, "Step14Complete")
+end
+
+function Step14Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 14, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 15, "I need to kill 5 ravenous cubes.", 5, 100, "I'll find more pages of this book in Vermin's Snye.", 129, 2000005)
+ AddQuestStepCompleteAction(Quest, 15, "Step15Complete")
+end
+
+function Step15Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 15, "I have killed 5 ravenous cubes.")
+
+ AddQuestStep(Quest, 16, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 16, "Step16Complete")
+end
+
+function Step16Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 16, "I have read the old book.")
+
+ AddQuestStepKill(Quest, 17, "I need to kill 10 large tomb vermin.", 10, 100, "I'll find more pages of this book in Vermin's Snye.", 101, 2000014)
+ AddQuestStepCompleteAction(Quest, 17, "Step17Complete")
+end
+
+function Step17Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 17, "I have killed 10 large tomb vermin.")
+
+ AddQuestStep(Quest, 18, "I should read the old book.", 1, 100, "I'll find more pages of this book in Vermin's Snye.", 11)
+ AddQuestStepCompleteAction(Quest, 18, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 18, "I have read the old book.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "I found the book's missing pages.")
+
+ UpdateQuestDescription(Quest, "An interesting tale, told from two different points of view. It's not clear whether the woman called the Rat Queen is insane; she sounds perfectly reasonable. I imagine the ratonga wouldn't find anything odd in her tale. Or her "tail." Hahaha!")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ Step8Complete(Quest, QuestGiver, Player)
+ elseif Step == 9 then
+ Step9Complete(Quest, QuestGiver, Player)
+ elseif Step == 10 then
+ Step10Complete(Quest, QuestGiver, Player)
+ elseif Step == 11 then
+ Step11Complete(Quest, QuestGiver, Player)
+ elseif Step == 12 then
+ Step12Complete(Quest, QuestGiver, Player)
+ elseif Step == 13 then
+ Step13Complete(Quest, QuestGiver, Player)
+ elseif Step == 14 then
+ Step14Complete(Quest, QuestGiver, Player)
+ elseif Step == 15 then
+ Step15Complete(Quest, QuestGiver, Player)
+ elseif Step == 16 then
+ Step16Complete(Quest, QuestGiver, Player)
+ elseif Step == 17 then
+ Step17Complete(Quest, QuestGiver, Player)
+ elseif Step == 18 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
diff --git a/server/Quests/WillowWood/snake_slaying.lua b/server/Quests/WillowWood/snake_slaying.lua
index 8d746cfdd..d13f1ded4 100755
--- a/server/Quests/WillowWood/snake_slaying.lua
+++ b/server/Quests/WillowWood/snake_slaying.lua
@@ -33,7 +33,7 @@ function Step1_Complete_KilledSnakes(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have killed some rock adders.")
UpdateQuestZone(Quest, "Willow Wood")
- AddQuestStepChat(Quest, 2, "I should return to Hunter Vannil.", 1, "I need to kill eight rock adders in the Forest Ruins.", 0, 2370032)
+ AddQuestStepChat(Quest, 2, "I should return to Hunter Vannil.", 1, "I should return to Hunter Vannil atop the cliff in The Willow Wood.", 0, 2370032)
AddQuestStepCompleteAction(Quest, 2, "Quest_Complete")
end
@@ -47,5 +47,7 @@ end
function Reload(Quest, QuestGiver, Player, Step)
if Step == 1 then
Step1_Complete_KilledSnakes(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Quest_Complete(Quest, QuestGiver, Player)
end
end
\ No newline at end of file
diff --git a/server/Quests/WillowWood/tribute_flowers.lua b/server/Quests/WillowWood/tribute_flowers.lua
index e54fad0e3..c92945f69 100755
--- a/server/Quests/WillowWood/tribute_flowers.lua
+++ b/server/Quests/WillowWood/tribute_flowers.lua
@@ -32,7 +32,7 @@ end
function Step1_Complete_GotFlowers(Quest, QuestGiver, Player)
UpdateQuestStepDescription(Quest, 1, "I have picked the flowers.")
- AddQuestStepChat(Quest, 2, "I need to take these flowers Aelis in the Willow Wood.", 1, "I need to collect some flowers for Davyn's tribute and return them to Aelis.", 0, 2370038)
+ AddQuestStepChat(Quest, 2, "I need to take these flowers to Aelis in the Willow Wood.", 1, "I need to collect some flowers for Davyn's tribute and return them to Aelis.", 0, 2370038)
AddQuestStepCompleteAction(Quest, 2, "Step2_Complete_TalkedToAelis")
end
diff --git a/server/Quests/WorldEvent/the_missing.lua b/server/Quests/WorldEvent/the_missing.lua
new file mode 100755
index 000000000..8cc6766a7
--- /dev/null
+++ b/server/Quests/WorldEvent/the_missing.lua
@@ -0,0 +1,113 @@
+--[[
+ Script Name : Quests/WorldEvent/the_missing.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:58
+ Script Purpose :
+
+ Zone : WorldEvent
+ Quest Giver:
+ Preceded by: None
+ Followed by:
+--]]
+
+function Init(Quest)
+ AddQuestStep(Quest, 1, "Track down Giidib. He and Frup separated on the southern beaches of Antonica.", 1, 100, "Track down Giidib. It's very likely his path could be picked up from one of the southern beaches in Antonica.", 11)
+ AddQuestStepCompleteAction(Quest, 1, "Step1Complete")
+end
+
+function Accepted(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is accepted
+end
+
+function Declined(Quest, QuestGiver, Player)
+ -- Add dialog here for when the quest is declined
+end
+
+function Deleted(Quest, QuestGiver, Player)
+ -- Remove any quest specific items here when the quest is deleted
+end
+
+function Step1Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 1, "It looks like Giidib managed to make it off of the beach.")
+ UpdateQuestTaskGroupDescription(Quest, 1, "It looks like Giidib has managed to make it off of the beach and into the forest above.")
+
+ AddQuestStep(Quest, 2, "Continue to track down Giidib.", 1, 100, "Continue to track Giidib until you are able to locate him.", 11)
+ AddQuestStepCompleteAction(Quest, 2, "Step2Complete")
+end
+
+function Step2Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 2, "The froglok tracks continue on to the northwest.")
+ UpdateQuestTaskGroupDescription(Quest, 2, "Giidib's path led up to a broken log. His tracks lead off to the northwest.")
+
+ AddQuestStep(Quest, 3, "Continue to track down Giidib.", 1, 100, "Continue to track Giidib until you are able to locate him.", 11)
+ AddQuestStepCompleteAction(Quest, 3, "Step3Complete")
+end
+
+function Step3Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 3, "The froglok tracks continue back to the east.")
+ UpdateQuestTaskGroupDescription(Quest, 3, "Giidib looks like he stopped here at a rock to take a rest for a bit. The tracks continue back to the east.")
+
+ AddQuestStep(Quest, 4, "Continue to track down Giidib.", 1, 100, "Continue to track Giidib until you are able to locate him.", 11)
+ AddQuestStepCompleteAction(Quest, 4, "Step4Complete")
+end
+
+function Step4Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 4, "The froglok tracks continue up to the north.")
+ UpdateQuestTaskGroupDescription(Quest, 4, "Giidib's webbed footprints stop behind this log. It looks like he may have been trying to hide from something... or someone... The tracks continue up to the north.")
+
+ AddQuestStep(Quest, 5, "Continue to track down Giidib.", 1, 100, "Continue to track Giidib until you are able to locate him.", 11)
+ AddQuestStepCompleteAction(Quest, 5, "Step5Complete")
+end
+
+function Step5Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 5, "The froglok tracks veer back to the southwest.")
+ UpdateQuestTaskGroupDescription(Quest, 5, "Some sort of scuffle broke out here. The tracks indicate that someone may have come upon Giidib and ambushed him. Broken branches in the tree limbs indicate that Giidib may have hopped into the upper branches to escape. The tracks veer back to the southwest.")
+
+ AddQuestStep(Quest, 6, "Continue to track down Giidib.", 1, 100, "Continue to track Giidib until you are able to locate him.", 11)
+ AddQuestStepCompleteAction(Quest, 6, "Step6Complete")
+end
+
+function Step6Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 6, "The froglok tracks end at this rock.")
+ UpdateQuestTaskGroupDescription(Quest, 6, "Injured and bleeding, Giidib looks like he managed to make it to this pond area. It's unlikely he could have made it much further, he must be around here somewhere.")
+
+ AddQuestStep(Quest, 7, "Interact with Giidib and lead him back to the nearest guard tower.", 1, 100, "I found Giidib, but he is seriously injured. I must lead him to the nearest guard tower and try to seek medical help for him.", 11)
+ AddQuestStepCompleteAction(Quest, 7, "Step7Complete")
+end
+
+function Step7Complete(Quest, QuestGiver, Player)
+ UpdateQuestStepDescription(Quest, 7, "Giidib was unable to survive upon reaching the guard tower.")
+ UpdateQuestTaskGroupDescription(Quest, 7, "Giidib's death just outside the tower is tragic to be sure, but now Frup may be in danger.")
+
+ AddQuestStepChat(Quest, 8, "Speak with Frup", 1, "Inform Frup Groaak of Giidib's death.", 11, 2360014,6600441 )
+ AddQuestStepCompleteAction(Quest, 8, "QuestComplete")
+end
+
+function QuestComplete(Quest, QuestGiver, Player)
+ -- The following UpdateQuestStepDescription and UpdateTaskGroupDescription are not needed, parser adds them for completion in case stuff needs to be moved around
+ UpdateQuestStepDescription(Quest, 8, "Frup has been informed of Giidib's death.")
+ UpdateQuestTaskGroupDescription(Quest, 8, "Frup Groaak will need a while to think about the information I've given him.")
+
+ UpdateQuestDescription(Quest, "Though I tried to get Giidib to safety, the assassin's poison had already done its work. Upon arriving at the tower, he collapsed and died. If I read Frup correctly, it seems he may think there is something larger behind this attack.")
+ GiveQuestReward(Quest, Player)
+end
+
+function Reload(Quest, QuestGiver, Player, Step)
+ if Step == 1 then
+ Step1Complete(Quest, QuestGiver, Player)
+ elseif Step == 2 then
+ Step2Complete(Quest, QuestGiver, Player)
+ elseif Step == 3 then
+ Step3Complete(Quest, QuestGiver, Player)
+ elseif Step == 4 then
+ Step4Complete(Quest, QuestGiver, Player)
+ elseif Step == 5 then
+ Step5Complete(Quest, QuestGiver, Player)
+ elseif Step == 6 then
+ Step6Complete(Quest, QuestGiver, Player)
+ elseif Step == 7 then
+ Step7Complete(Quest, QuestGiver, Player)
+ elseif Step == 8 then
+ QuestComplete(Quest, QuestGiver, Player)
+ end
+end
\ No newline at end of file
diff --git a/server/RegionScripts/exp04_dun_chardok/char_p10_crossbridge_pit01_region.lua b/server/RegionScripts/exp04_dun_chardok/char_p10_crossbridge_pit01_region.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp04_dun_droga_nurga/naj_lavaregion_damage.lua b/server/RegionScripts/exp04_dun_droga_nurga/naj_lavaregion_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp04_dun_veeshans_peak/exp04_veeshans_greenfog_damage.lua b/server/RegionScripts/exp04_dun_veeshans_peak/exp04_veeshans_greenfog_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp04_dun_veeshans_peak/exp04_veeshans_lavafog_damage.lua b/server/RegionScripts/exp04_dun_veeshans_peak/exp04_veeshans_lavafog_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_befallen_asylum/death.lua b/server/RegionScripts/exp05_dun_befallen_asylum/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_befallen_forsaken/death.lua b/server/RegionScripts/exp05_dun_befallen_forsaken/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_najena_atheneum/death.lua b/server/RegionScripts/exp05_dun_najena_atheneum/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_najena_atheneum/naj_lavaregion_damage.lua b/server/RegionScripts/exp05_dun_najena_atheneum/naj_lavaregion_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_najena_hollow/naj_lavaregion_damage.lua b/server/RegionScripts/exp05_dun_najena_hollow/naj_lavaregion_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_void_anchor/death.lua b/server/RegionScripts/exp05_dun_void_anchor/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_void_palace/death.lua b/server/RegionScripts/exp05_dun_void_palace/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp05_dun_void_palace_crafter/death.lua b/server/RegionScripts/exp05_dun_void_palace_crafter/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_erudin_erudin02/death.lua b/server/RegionScripts/exp06_dun_erudin_erudin02/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_erudin_erudin03/death.lua b/server/RegionScripts/exp06_dun_erudin_erudin03/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_thehole/death.lua b/server/RegionScripts/exp06_dun_thehole/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_thehole_raid/death.lua b/server/RegionScripts/exp06_dun_thehole_raid/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_thehole_wing1/death.lua b/server/RegionScripts/exp06_dun_thehole_wing1/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_thehole_wing2/death.lua b/server/RegionScripts/exp06_dun_thehole_wing2/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_dun_thehole_wing3/death.lua b/server/RegionScripts/exp06_dun_thehole_wing3/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_rgn_odus_north/death.lua b/server/RegionScripts/exp06_rgn_odus_north/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp06_rgn_odus_south/death.lua b/server/RegionScripts/exp06_rgn_odus_south/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_crystalcavern/death.lua b/server/RegionScripts/exp07_dun_crystalcavern/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_drunder_sullon_spire/death.lua b/server/RegionScripts/exp07_dun_drunder_sullon_spire/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_drunder_tallon_stronghold/death.lua b/server/RegionScripts/exp07_dun_drunder_tallon_stronghold/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_drunder_vallon_tower/death.lua b/server/RegionScripts/exp07_dun_drunder_vallon_tower/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_kael_drakkel/death.lua b/server/RegionScripts/exp07_dun_kael_drakkel/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_kael_drakkel_hub/death.lua b/server/RegionScripts/exp07_dun_kael_drakkel_hub/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_kael_throne/death.lua b/server/RegionScripts/exp07_dun_kael_throne/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_kraytocs_fortress/death.lua b/server/RegionScripts/exp07_dun_kraytocs_fortress/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_plane_of_war/death.lua b/server/RegionScripts/exp07_dun_plane_of_war/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_velks_forgotten_pools/death.lua b/server/RegionScripts/exp07_dun_velks_forgotten_pools/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp07_dun_velks_the_ascent/death.lua b/server/RegionScripts/exp07_dun_velks_the_ascent/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp08_dun_skyshrine_top01/death.lua b/server/RegionScripts/exp08_dun_skyshrine_top01/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp08_dun_skyshrine_top01_final/death.lua b/server/RegionScripts/exp08_dun_skyshrine_top01_final/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp09_dun_drinals_ferry/death.lua b/server/RegionScripts/exp09_dun_drinals_ferry/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp09_dun_temple_of_faceless/death.lua b/server/RegionScripts/exp09_dun_temple_of_faceless/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp09_dun_throne_of_fear/death.lua b/server/RegionScripts/exp09_dun_throne_of_fear/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp09_dun_wurmbones_end/death.lua b/server/RegionScripts/exp09_dun_wurmbones_end/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp09_dun_wurmbones_end_x2/death.lua b/server/RegionScripts/exp09_dun_wurmbones_end_x2/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp09_rgn_eidolon_jungle/death.lua b/server/RegionScripts/exp09_rgn_eidolon_jungle/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp10_dun_nexus/death.lua b/server/RegionScripts/exp10_dun_nexus/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp10_dun_nexus2/death.lua b/server/RegionScripts/exp10_dun_nexus2/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp10_dun_shissarraid01/death.lua b/server/RegionScripts/exp10_dun_shissarraid01/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp10_dun_shissarstratum01/death.lua b/server/RegionScripts/exp10_dun_shissarstratum01/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp10_dun_shissartemple01_forgotten/death.lua b/server/RegionScripts/exp10_dun_shissartemple01_forgotten/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp10_dun_temple_of_veeshan/death.lua b/server/RegionScripts/exp10_dun_temple_of_veeshan/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp11_dun_pirate_cove/death.lua b/server/RegionScripts/exp11_dun_pirate_cove/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/exp11_dun_pirate_cove_03/death.lua b/server/RegionScripts/exp11_dun_pirate_cove_03/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/freeport_combined/death.lua b/server/RegionScripts/freeport_combined/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/home_panda/death.lua b/server/RegionScripts/home_panda/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/home_relictinker/death.lua b/server/RegionScripts/home_relictinker/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/lavastorm/ls_lavaregion_damage.lua b/server/RegionScripts/lavastorm/ls_lavaregion_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/lavastorm_epic02_gulch/ls_lavaregion_damage.lua b/server/RegionScripts/lavastorm_epic02_gulch/ls_lavaregion_damage.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/neriak/death.lua b/server/RegionScripts/neriak/death.lua
old mode 100644
new mode 100755
diff --git a/server/RegionScripts/solusekseye/ls_lavaregion_damage.lua b/server/RegionScripts/solusekseye/ls_lavaregion_damage.lua
old mode 100644
new mode 100755
diff --git a/server/SpawnScripts/A Meeting of the Minds/Borxx.lua b/server/SpawnScripts/A Meeting of the Minds/Borxx.lua
index a0fc5ec1d..49353db64 100755
--- a/server/SpawnScripts/A Meeting of the Minds/Borxx.lua
+++ b/server/SpawnScripts/A Meeting of the Minds/Borxx.lua
@@ -16,19 +16,6 @@ function aggro(NPC, Spawn)
AddTimer(NPC, math.random(1500,2500), "spellLoop")
end
-function spellLoop(NPC, Spawn) -- referred from aggro. Loopback function for spellcasts.
- AddTimer(NPC, math.random(1500,2500), "spellChoice")
-end
-
-function spellChoice(NPC, Spawn) -- select a spell from table.
- local hated = GetMostHated(NPC)
- if hated ~= nil then
- FaceTarget(NPC, hated)
- -- CastSpell(hated, spells[math.random(#spells)], 3, NPC)
- end
- AddTimer(NPC, math.random(1500, 2500), "spellLoop")
-end
-
function borxxConvo1(NPC, Spawn)
local overlord = GetSpawn(NPC, 5560003)
FaceTarget(NPC, overlord)
diff --git a/server/SpawnScripts/ADecrepitCrypt/KyrinSteelbone.lua b/server/SpawnScripts/ADecrepitCrypt/KyrinSteelbone.lua
new file mode 100644
index 000000000..3015da06b
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/KyrinSteelbone.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/KyrinSteelbone.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/LucasSteelbone.lua b/server/SpawnScripts/ADecrepitCrypt/LucasSteelbone.lua
new file mode 100644
index 000000000..73f76ed87
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/LucasSteelbone.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/LucasSteelbone.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:55
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/LyniaSteelbone.lua b/server/SpawnScripts/ADecrepitCrypt/LyniaSteelbone.lua
new file mode 100644
index 000000000..adf7a03bb
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/LyniaSteelbone.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/LyniaSteelbone.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 06:02:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/MarcusSteelbone.lua b/server/SpawnScripts/ADecrepitCrypt/MarcusSteelbone.lua
new file mode 100644
index 000000000..34cfcec00
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/MarcusSteelbone.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/MarcusSteelbone.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 06:02:21
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/PalinusSteelbonetheThird.lua b/server/SpawnScripts/ADecrepitCrypt/PalinusSteelbonetheThird.lua
new file mode 100644
index 000000000..31fe50e19
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/PalinusSteelbonetheThird.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/PalinusSteelbonetheThird.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:49
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/aSteelboneAncestor.lua b/server/SpawnScripts/ADecrepitCrypt/aSteelboneAncestor.lua
new file mode 100644
index 000000000..3378acb59
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/aSteelboneAncestor.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/aSteelboneAncestor.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/acaravanguard.lua b/server/SpawnScripts/ADecrepitCrypt/acaravanguard.lua
new file mode 100644
index 000000000..9cee927ea
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/acaravanguard.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/acaravanguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/acaravanguardPatrol.lua b/server/SpawnScripts/ADecrepitCrypt/acaravanguardPatrol.lua
new file mode 100644
index 000000000..da118ca86
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/acaravanguardPatrol.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/acaravanguardPatrol.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 07:02:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1.28, -1.04, 10.07, 2, 0)
+ MovementLoopAddLocation(NPC, 0.45, -1.04, -23.23, 2, 6)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/acaravanmoneylender.lua b/server/SpawnScripts/ADecrepitCrypt/acaravanmoneylender.lua
new file mode 100644
index 000000000..7d56104f5
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/acaravanmoneylender.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/acaravanmoneylender.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/acaravanmoneylenderPatrol.lua b/server/SpawnScripts/ADecrepitCrypt/acaravanmoneylenderPatrol.lua
new file mode 100644
index 000000000..59264edca
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/acaravanmoneylenderPatrol.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/acaravanmoneylenderPatrol.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 06:02:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 0.45, -1.04, -23.23, 2, 0)
+ MovementLoopAddLocation(NPC, 1.28, -1.04, 10.07, 2, 6)
+end
diff --git a/server/SpawnScripts/ADecrepitCrypt/acaravannegotiator.lua b/server/SpawnScripts/ADecrepitCrypt/acaravannegotiator.lua
new file mode 100644
index 000000000..d2cfbebe6
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/acaravannegotiator.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/acaravannegotiator.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ADecrepitCrypt/acaravantrafficker.lua b/server/SpawnScripts/ADecrepitCrypt/acaravantrafficker.lua
new file mode 100644
index 000000000..4134b2669
--- /dev/null
+++ b/server/SpawnScripts/ADecrepitCrypt/acaravantrafficker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ADecrepitCrypt/acaravantrafficker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 05:02:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Addison.lua b/server/SpawnScripts/Antonica/Addison.lua
index 8eee196b9..4edd21001 100755
--- a/server/SpawnScripts/Antonica/Addison.lua
+++ b/server/SpawnScripts/Antonica/Addison.lua
@@ -6,23 +6,23 @@
:
--]]
-require("SpawnScripts/Generic/GenericVoiceOvers")
function spawn(NPC)
end
function hailed(NPC, Spawn)
- GenericHail(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local choice = MakeRandomInt(1, 2)
+ choice = math.random(1,4)
+
if choice == 1 then
- PlayFlavor(NPC, "", "Hello, friend. Welcome to my shop.", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/merchant/human_merchant_service_good_1_hail_gm_e4fa2bd8.mp3", "Confound it! Where did I put that ledger? It must be around here somewhere!", "confused", 983188064, 3043413352, Spawn)
elseif choice == 2 then
- PlayFlavor(NPC, "", "If I know you adventuring types, you'll need one of these.", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/merchant/human_merchant_service_good_1_hail_gm_45d92a75.mp3", "Welcome! What can I help you with?", "bow", 892528408, 239693863, Spawn)
elseif choice == 3 then
- PlayFlavor(NPC, "", "Good day, adventurer. Care to take a look at my merchandise?", "", 1689589577, 4560189, Spawn)
-end
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/merchant/human_merchant_service_good_1_hail_gm_ae84abf9.mp3", "Go on, take a look at the stock. You'll never beat this price in the city. I guarantee it!", "wink", 903813734, 2512856176, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/merchant/human_merchant_service_good_1_hail_gm_24322c5d.mp3", "Greetings, friend traveler! We have the finest supplies to fill your adventuring needs.", "smile", 2541554579, 2951095822, Spawn)
+ end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/AdvisorPandrus.lua b/server/SpawnScripts/Antonica/AdvisorPandrus.lua
new file mode 100755
index 000000000..9483f0896
--- /dev/null
+++ b/server/SpawnScripts/Antonica/AdvisorPandrus.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/Antonica/AdvisorPandrus.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.02 09:02:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function waypoints(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 35, -35, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/AglaemantistheColdwindTerror.lua b/server/SpawnScripts/Antonica/AglaemantistheColdwindTerror.lua
new file mode 100644
index 000000000..c61e9af61
--- /dev/null
+++ b/server/SpawnScripts/Antonica/AglaemantistheColdwindTerror.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Antonica/AglaemantistheColdwindTerror.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.11 04:03:29
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Anguis.lua b/server/SpawnScripts/Antonica/Anguis.lua
new file mode 100644
index 000000000..e0e080308
--- /dev/null
+++ b/server/SpawnScripts/Antonica/Anguis.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Antonica/Anguis.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.28 09:02:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = math.floor(GetStr(NPC)/10)
+ HPRegenMod = math.floor(GetSta(NPC)/10)
+ PwRegenMod = math.floor(GetStr(NPC)/10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(205 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(355 + dmgMod))
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 125 + HPRegenMod)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 75 + PwRegenMod)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/AnimatorRotpaw.lua b/server/SpawnScripts/Antonica/AnimatorRotpaw.lua
new file mode 100644
index 000000000..0918cd205
--- /dev/null
+++ b/server/SpawnScripts/Antonica/AnimatorRotpaw.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/AnimatorRotpaw.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.13 12:03:50
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(90 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/AntonicanStag.lua b/server/SpawnScripts/Antonica/AntonicanStag.lua
index 97c0fe4aa..df90cad07 100755
--- a/server/SpawnScripts/Antonica/AntonicanStag.lua
+++ b/server/SpawnScripts/Antonica/AntonicanStag.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 9
- local hp1 = 2730
- local power1 = 1205
- local difficulty2 = 9
- local hp2 = 3150
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/Antonica/Blackbark.lua b/server/SpawnScripts/Antonica/Blackbark.lua
new file mode 100755
index 000000000..70a8db26b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/Blackbark.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Antonica/Blackbark.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.04 01:02:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/BlartonBlumble.lua b/server/SpawnScripts/Antonica/BlartonBlumble.lua
index b6840783d..c764991e4 100755
--- a/server/SpawnScripts/Antonica/BlartonBlumble.lua
+++ b/server/SpawnScripts/Antonica/BlartonBlumble.lua
@@ -14,25 +14,13 @@ local FishingForBait = 5339
local PracticalJokeOnBlarton = 5355
function spawn(NPC)
+ ProvidesQuest(NPC,Lucky)
+ ProvidesQuest(NPC,FishingHoleHunt)
+ ProvidesQuest(NPC,TheOneThatGotAway)
SetPlayerProximityFunction(NPC, 15, "InRange", Spawn)
end
function InRange(NPC, Spawn)
-if not HasCompletedQuest(Spawn, Lucky) then
-ProvidesQuest(NPC, Lucky)
-elseif HasCompletedQuest(Spawn, Lucky) then
-ProvidesQuest(NPC, FishingHoleHunt)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-elseif HasCompletedQuest(Spawn, FishingHoleHunt) then
-ProvidesQuest(NPC, TheOneThatGotAway)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-elseif HasCompletedQuest(Spawn, TheOneThatGotAway) then
-ProvidesQuest(NPC, FishingForBait)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-end
end
function respawn(NPC)
@@ -52,7 +40,9 @@ function hailed(NPC, Spawn)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1040.mp3", "", "", 0, 0, Spawn)
end
- if not HasQuest(Spawn, Lucky) and not HasCompletedQuest(Spawn, Lucky) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
+ if GetQuestStep(Spawn, PracticalJokeOnBlarton) == 1 then
+ SIDEQUEST_OPTION(NPC, Spawn)
+ elseif not HasQuest(Spawn, Lucky) and not HasCompletedQuest(Spawn, Lucky) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
Option1(NPC, Spawn)
elseif GetQuestStep(Spawn, Lucky) == 1 or GetQuestStep(Spawn, FishingHoleHunt) == 1 or GetQuestStep(Spawn, FishingHoleHunt) == 2 or GetQuestStep(Spawn, FishingHoleHunt) == 3 or GetQuestStep(Spawn, FishingHoleHunt) == 4 or GetQuestStep(Spawn, FishingHoleHunt) == 5 or GetQuestStep(Spawn, FishingHoleHunt) == 6 or GetQuestStep(Spawn, TheOneThatGotAway) == 1 or GetQuestStep(Spawn, FishingForBait) == 1 and not HasQuest(Spawn, PracticalJokeOnBlarton) then
Quest_Progress(NPC, Spawn)
@@ -62,18 +52,17 @@ function hailed(NPC, Spawn)
Option2(NPC, Spawn)
elseif GetQuestStep(Spawn, FishingHoleHunt) == 7 and not HasQuest(Spawn, PracticalJokeOnBlarton) then
Quest2_Complete(NPC, Spawn)
- elseif HasCompletedQuest(Spawn, Lucky) and HasCompletedQuest(Spawn, FishingHoleHunt) and not HasQuest(Spawn, TheOneThatGotAway) and not HasCompletedQuest(Spawn, TheOneThatGotAway) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
+ elseif HasCompletedQuest(Spawn, Lucky) and HasCompletedQuest(Spawn, FishingHoleHunt) and not HasQuest(Spawn, TheOneThatGotAway) and not HasCompletedQuest(Spawn, TheOneThatGotAway) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
Option4(NPC, Spawn)
- elseif GetQuestStep(Spawn, TheOneThatGotAway) == 2 then
+ elseif GetQuestStep(Spawn, TheOneThatGotAway) == 2 then
Quest3_Complete(NPC, Spawn)
- elseif HasCompletedQuest(Spawn, Lucky) and HasCompletedQuest(Spawn, FishingHoleHunt) and HasCompletedQuest(Spawn, TheOneThatGotAway) and not HasQuest(Spawn, FishingForBait) and not HasCompletedQuest(Spawn, FishingForBait) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
+ elseif HasCompletedQuest(Spawn, Lucky) and HasCompletedQuest(Spawn, FishingHoleHunt) and HasCompletedQuest(Spawn, TheOneThatGotAway) and not HasQuest(Spawn, FishingForBait) and not HasCompletedQuest(Spawn, FishingForBait) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
Option6(NPC, Spawn)
- elseif GetQuestStep(Spawn, FishingForBait) == 2 and not GetQuestStep(Spawn, PracticalJokeOnBlarton) == 1 then
+ elseif GetQuestStep(Spawn, FishingForBait) == 2 and not GetQuestStep(Spawn, PracticalJokeOnBlarton) == 1 then
Quest4_Complete(NPC, Spawn)
- elseif HasCompletedQuest(Spawn, Lucky) and HasCompletedQuest(Spawn, FishingHoleHunt) and HasCompletedQuest(Spawn, TheOneThatGotAway) and HasCompletedQuest(Spawn, FishingForBait) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
+ elseif HasCompletedQuest(Spawn, Lucky) and HasCompletedQuest(Spawn, FishingHoleHunt) and HasCompletedQuest(Spawn, TheOneThatGotAway) and HasCompletedQuest(Spawn, FishingForBait) and not HasQuest(Spawn, PracticalJokeOnBlarton) then
PlayFlavor(NPC, "", "Thank you so much for all of your help! I can't wait to get back to fishing again.", "", 0, 0, Spawn)
- elseif GetQuestStep(Spawn, PracticalJokeOnBlarton) == 1 then
- SIDEQUEST_OPTION(NPC, Spawn)
+
elseif GetTempVariable(NPC, "Drunk") == "true" then
PlayFlavor(NPC, "", "...", "", 0, 0, Spawn)
end
diff --git a/server/SpawnScripts/Antonica/BreezaHarmet.lua b/server/SpawnScripts/Antonica/BreezaHarmet.lua
index bc5e91441..602d181c4 100755
--- a/server/SpawnScripts/Antonica/BreezaHarmet.lua
+++ b/server/SpawnScripts/Antonica/BreezaHarmet.lua
@@ -5,46 +5,54 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local ExploringTheChessboard = 5348
function spawn(NPC)
ProvidesQuest(NPC, ExploringTheChessboard)
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/breeza_harmet/antonica/breezaharmet000.mp3", "", "", 3595319695, 2394703279, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello, traveler! I'm sorry about the mess. I'm carving a set of chess pieces, but I'm almost finished. Please, I'll only be a few minutes. Won't you listen to my story of the chessboard of Stormguard? I must know if it's only a story or if it bears any truth!")
+ Dialog.AddVoiceover("voiceover/english/breeza_harmet/antonica/breezaharmet000.mp3", 3595319695, 2394703279)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
if not HasQuest(Spawn, ExploringTheChessboard) and not HasCompletedQuest(Spawn, ExploringTheChessboard) then
- AddConversationOption(conversation, "They are beautiful pieces. Is it the game or the carving of wood that you like more?", "Option1")
+ Dialog.AddOption("They are beautiful pieces. Is it the game or the carving of wood that you like more?", "Dialog4")
elseif GetQuestStep(Spawn, ExploringTheChessboard) == 2 then
- AddConversationOption(conversation, "I have explored within Stormhold and I can tell you that the chessboard banquet hall does still exist.", "Option2")
+ Dialog.AddOption("I have explored within Stormhold and I can tell you that the chessboard banquet hall does still exist.", "Dialog5")
end
- AddConversationOption(conversation, "I see. Well, I will let you finish up your project in peace. ")
- StartConversation(conversation, NPC, Spawn, "Hello, traveler! I'm sorry about the mess. I'm carving a set of chess pieces, but I'm almost finished. Please, I'll only be a few minutes. Won't you listen to my story of the chessboard of Stormguard? I must know if it's only a story or if it bears any truth!")
+ Dialog.AddOption("I see. Well, I will let you finish up your project in peace. ")
+ Dialog.Start()
end
-function Option1(NPC, Spawn)
+function Dialog4(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/breeza_harmet/antonica/breezaharmet001.mp3", "", "", 3045154578, 2506070034, Spawn)
- AddConversationOption(conversation, "Maybe you will be able to see it some day.", "offer")
- StartConversation(conversation, NPC, Spawn, "I love carving and shaping the wood, but I enjoy the game even more. It's nice to sit in the warm sun playing chess with a friend. And talking about real queens and knights! Which reminds me ... Did you know that the Knights of Thunder played chess, too? I heard stories that they hold their banquets upon a giant chessboard! Oh, that'd be wonderful to see!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I love carving and shaping the wood, but I enjoy the game even more. It's nice to sit in the warm sun playing chess with a friend. And talking about real queens and knights! Which reminds me ... Did you know that the Knights of Thunder played chess, too? I heard stories that they hold their banquets upon a giant chessboard! Oh, that'd be wonderful to see!")
+ Dialog.AddVoiceover("voiceover/english/breeza_harmet/antonica/breezaharmet001.mp3", 3045154578, 2506070034)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("Maybe you will be able to see it some day.", "offer")
+ Dialog.AddOption("Sounds like a fantasy... and I must be going.")
+ Dialog.Start()
end
-function Option2(NPC, Spawn)
+function Dialog5(NPC, Spawn)
SetStepComplete(Spawn, ExploringTheChessboard, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/breeza_harmet/antonica/breezaharmet003.mp3", "", "", 518518991, 634971827, Spawn)
- AddConversationOption(conversation, "I hope you are able to see it for yourself one day.")
- StartConversation(conversation, NPC, Spawn, "It does?! You saw it? I imagine it was a grand sight! Thank you for confirming the legend for me. It's good to know I wasn't spreading a false rumor!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It does?! You saw it? I imagine it was a grand sight! Thank you for confirming the legend for me. It's good to know I wasn't spreading a false rumor!")
+ PlayFlavor(NPC, "", "", "speaknoevil", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/breeza_harmet/antonica/breezaharmet003.mp3", 518518991, 634971827)
+ Dialog.AddOption("I hope you are able to see it for yourself one day.")
+ Dialog.Start()
end
-
-
function offer(NPC, Spawn)
OfferQuest(NPC, Spawn, ExploringTheChessboard)
end
diff --git a/server/SpawnScripts/Antonica/CaptainBeltho.lua b/server/SpawnScripts/Antonica/CaptainBeltho.lua
index 1af045be5..c12937800 100755
--- a/server/SpawnScripts/Antonica/CaptainBeltho.lua
+++ b/server/SpawnScripts/Antonica/CaptainBeltho.lua
@@ -5,7 +5,7 @@
Script Date : 2019.03.19
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-
+require "SpawnScripts/Generic/PlayerHistory"
local Gnoll = 471
function spawn(NPC)
@@ -23,6 +23,12 @@ function LeaveRange(NPC, Spawn)
end
function hailed(NPC, Spawn)
+ SetPlayerHistory(Spawn, 8, 0)
+ if GetPlayerHistory(Spawn, 8) == nil then
+ Say(Spawn, "ur player history is nil")
+ elseif GetPlayerHistory(Spawn, 8) then
+ Say(Spawn, "ur player history is not nil")
+ end
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
diff --git a/server/SpawnScripts/Antonica/CaptainEitoa.lua b/server/SpawnScripts/Antonica/CaptainEitoa.lua
index 9c03ac582..d9bcebf5a 100755
--- a/server/SpawnScripts/Antonica/CaptainEitoa.lua
+++ b/server/SpawnScripts/Antonica/CaptainEitoa.lua
@@ -3,9 +3,10 @@
Script Purpose : Captain Eitoa
Script Author : geordie0511
Script Date : 2019.03.19
- Script Notes : Auto-Generated Conversation from PacketParser Data
- NOTE: NEEDS DIALOG RESTRUCTURED. DIALOG FLOW IS NOT ACCURATE.
+ Script Notes : Updated format/entire dialog/quest flags - Dorbin 5/10/23
+ NOTE: MISSING DIALOG FOR Quest 472
--]]
+require "SpawnScripts/Generic/DialogModule"
local Keep = 470
local Gnoll = 471
@@ -14,58 +15,42 @@ local Captain = 472
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange")
waypoints(NPC)
+ ProvidesQuest(NPC,Keep)
+ ProvidesQuest(NPC,Gnoll)
+ ProvidesQuest(NPC,Captain)
end
function respawn(NPC)
spawn(NPC)
end
-function InRange(NPC, Spawn)
- if not HasQuest(Spawn, Keep) and not HasCompletedQuest(Spawn, Keep) then
- ProvidesQuest(NPC, Keep)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-elseif HasCompletedQuest(Spawn, Keep) then
- ProvidesQuest(NPC, Gnoll)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-elseif HasCompletedQuest(Spawn, Gnoll) then
- ProvidesQuest(NPC, Captain)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-end
- end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,11) <0 then --QEYNOS FACTION CHECK
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa000.mp3", "", "", 1089362944, 4215517300, Spawn)
- if GetQuestStep(Spawn, Keep) == 2 then
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa003.mp3", "", "", 1980389994, 2821940048, Spawn)
- AddConversationOption(conversation, "I was happy to be of assistance.")
- StartConversation(conversation, NPC, Spawn, "Good. I worry about our outposts, especially the ones that... well, let's just say I'm relieved. At any rate, here's a bit of coin from the city's coffers. Qeynos thanks you for your service.")
- SetStepComplete(Spawn, Keep, 2)
- elseif GetQuestStep(Spawn, Gnoll) == 4 then
- AddConversationOption(conversation, "Beltho's report, as you requested.", "dlg_18_1")
- AddConversationOption(conversation, "Ok, thanks anyway.")
- StartConversation(conversation, NPC, Spawn, "I wouldn't mind chatting with you in Irontoe's East, but here I've got work to do.")
- elseif GetQuestStep(Spawn, Captain) == 2 then
- SetStepComplete(Spawn, Captain, 2)
- elseif HasCompletedQuest(Spawn, Keep) == false and HasQuest(Spawn, Keep) == false then
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa001.mp3", "", "", 1114858162, 289977028, Spawn)
- AddConversationOption(conversation, "It is the least I can do for Qeynos.", "dlg_2_2")
- AddConversationOption(conversation, "That sounds a bit too far for me.")
- StartConversation(conversation, NPC, Spawn, "There is something you can do. I've posted a guard at the Keep of the Ardent Needle, and he hasn't been reporting to me as often as I'd like. Would you go inspect the keep and make sure everything is in order?")
- elseif HasCompletedQuest(Spawn, Gnoll) == false and HasQuest(Spawn, Gnoll) == false and HasCompletedQuest(Spawn, Keep) then
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa004.mp3", "", "", 14052338, 3802502153, Spawn)
- AddConversationOption(conversation, "I suppose I can do that.", "dlg_4_2")
- AddConversationOption(conversation, "Let someone else deal with it, I'm not interested.")
- StartConversation(conversation, NPC, Spawn, "I do. I need someone to check with Captain Beltho at Gnollslayer Keep and return with his report about the gnolls. I hope he's made progress since the last one.")
- elseif HasCompletedQuest(Spawn, Captain) == false and HasQuest(Spawn, Captain) == false and HasCompletedQuest(Spawn, Gnoll) then
- OfferQuest(NPC, Spawn, Captain)
- end
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I wouldn't mind chatting with you in Irontoe's East, but here I've got work to do.")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa000.mp3", 1089362944, 4215517300)
+
+ if CanReceiveQuest(Spawn, Keep) then
+ Dialog.AddOption("Then perhaps I could be of service. ", "Keep1")
+ elseif GetQuestStep(Spawn, Keep) == 2 then
+ Dialog.AddOption("I've been to the Keep, everything looked normal.", "Keep2")
+ end
+
+ if CanReceiveQuest(Spawn, Gnoll) then
+ Dialog.AddOption("Have you any further need of my services?", "Gnoll1")
+ elseif GetQuestStep(Spawn, Gnoll) == 4 then
+ Dialog.AddOption("Beltho's report, as you requested..", "Gnoll2")
+ end
+
+ Dialog.AddOption("Ok, thanks anyway.")
+ Dialog.Start()
+ end
end
function Quest1(NPC, Spawn)
@@ -78,45 +63,63 @@ end
--------------- Keep
-function dlg_2_2(NPC, Spawn)
+function Keep1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There is something you can do. I've posted a guard at the Keep of the Ardent Needle, and he hasn't been reporting to me as often as I'd like. Would you go inspect the keep and make sure everything is in order?")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa001.mp3", 1114858162, 289977028)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ Dialog.AddOption("It is the least I can do for Qeynos.", "Quest1")
+ Dialog.AddOption("That sounds a bit too far for me.")
+ Dialog.Start()
+end
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa002.mp3", "", "", 2766073172, 817198256, Spawn)
- AddConversationOption(conversation, "I'll return after I've performed the inspection.", "Quest1")
- StartConversation(conversation, NPC, Spawn, "Go then. You'll find the Keep on the north side of the ridge, just this side of the Tower of the Oracles. It's one of the few keeps in pristine condition.")
+function Keep1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good. I worry about our outposts, especially the ones that... well, let's just say I'm relieved. At any rate, here's a bit of coin from the city's coffers. Qeynos thanks you for your service.")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa003.mp3", 1980389994, 2821940048)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("I was happy to be of assistance.")
+ Dialog.Start()
+ SetStepComplete(Spawn, Keep, 2)
end
--------------- Quest2
-function dlg_4_2(NPC, Spawn)
+function Gnoll1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa005.mp3", "", "", 1672181328, 1405369900, Spawn)
- AddConversationOption(conversation, "I'll return when I'm finished.", "Quest2")
- StartConversation(conversation, NPC, Spawn, "It's a fair distance, but not hard to find. Take the south path around the mountain range that splits Antonica. Once you cross the bridge at the far side of the valley, follow the river a hundred cogs or so, then turn east until you see a small keep with a moat. Captain Beltho should be there. If he's not, I'll want to know why he's not at his post.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I do. I need someone to check with Captain Beltho at Gnollslayer Keep and return with his report about the gnolls. I hope he's made progress since the last one.")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa004.mp3", 14052338, 3802502153)
+ if CanReceiveQuest(Spawn, Gnoll) then
+ Dialog.AddOption("I suppose I can do that.", "Dialog5")
+ end
+ Dialog.AddOption("Let someone else deal with it, I'm not interested.")
+ Dialog.Start()
end
----- Gnoll
+---- Gnoll2
-function dlg_18_1(NPC, Spawn)
+function Gnoll2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa006.mp3", "", "", 3813922311, 2543607309, Spawn)
- AddConversationOption(conversation, "I suppose I was lucky to some extent. ", "dlg_18_2")
- StartConversation(conversation, NPC, Spawn, "Give me a moment to read over this... Finally, some real progress! Beltho mentions your involvement with finding the hidden entrance to the gnoll lair. Well done!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Give me a moment to read over this... Finally, some real progress! Beltho mentions your involvement with finding the hidden entrance to the gnoll lair. Well done!")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa006.mp3", 3813922311, 2543607309)
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddOption("I suppose I was lucky to some extent. ", "Dialog1")
+ Dialog.Start()
end
-function dlg_18_2(NPC, Spawn)
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/captain_eitoa/antonica/captaineitoa007.mp3", "", "", 193114966, 1655403283, Spawn)
- AddConversationOption(conversation, "Thank you very much. Once again, I am happy to have been of service.")
- StartConversation(conversation, NPC, Spawn, "Don't underplay your skills. Without your help, Beltho would still be searching for the hidden entrance to the lair. Take this signet ring as a mark of my gratitude and trust.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Don't underplay your skills. Without your help, Beltho would still be searching for the hidden entrance to the lair. Take this signet ring as a mark of my gratitude and trust.")
+ Dialog.AddVoiceover("voiceover/english/captain_eitoa/antonica/captaineitoa007.mp3", 193114966, 1655403283)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("Thank you very much. Once again, I am happy to have been of service.")
+ Dialog.Start()
SetStepComplete(Spawn, Gnoll, 4)
end
diff --git a/server/SpawnScripts/Antonica/CaptainGaebrail.lua b/server/SpawnScripts/Antonica/CaptainGaebrail.lua
new file mode 100644
index 000000000..6dcf93a0f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/CaptainGaebrail.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/CaptainGaebrail.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.13 12:03:15
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ChiefKeizall.lua b/server/SpawnScripts/Antonica/ChiefKeizall.lua
new file mode 100644
index 000000000..531fddb7f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ChiefKeizall.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ChiefKeizall.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.13 12:03:47
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ConallLancebreaker.lua b/server/SpawnScripts/Antonica/ConallLancebreaker.lua
index b4ff3c517..93dbccfd4 100755
--- a/server/SpawnScripts/Antonica/ConallLancebreaker.lua
+++ b/server/SpawnScripts/Antonica/ConallLancebreaker.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/CorporalBatton.lua b/server/SpawnScripts/Antonica/CorporalBatton.lua
index e39c79ec2..1108b135e 100755
--- a/server/SpawnScripts/Antonica/CorporalBatton.lua
+++ b/server/SpawnScripts/Antonica/CorporalBatton.lua
@@ -20,25 +20,30 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- if GetQuestStep(Spawn, PeckettsPatrol) == 6 then
- Dialog.AddOption("Coldwind Point Garrison reporting.", "Option1")
- end
Dialog.AddDialog("I am afraid I must ask you to move along, citizen. This is a place of duty, not chatter.")
Dialog.AddVoiceover("voiceover/english/corporal_batton/mudlib/vdl/quests/antonica/corporalbatton000.mp3", 3155813947, 2657899917)
- Dialog.AddOption("Excuse my interruption, guard.")
-
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ if GetQuestStep(Spawn, PeckettsPatrol) == 6 then
+ Dialog.AddOption("Coldwind Point Garrison reporting.", "Option1")
+ end
+ Dialog.AddOption("Excuse my interruption, guard.")
Dialog.Start()
-
end
function Option1(NPC, Spawn)
SetStepComplete(Spawn, PeckettsPatrol, 6)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddVoiceover("voiceover/english/corporal_batton/antonica/corporalbatton001.mp3", 77618874, 84026675)
- Dialog.AddOption("For Qeynos!")
Dialog.AddDialog("Nothing to report here militiaman. Before you proceed with your patrol the General has asked that you patrol Crater Pond also. You'll find Crater Pond just east of the South Gate of Qeynos.")
+ Dialog.AddVoiceover("voiceover/english/corporal_batton/antonica/corporalbatton001.mp3", 77618874, 84026675)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("For Qeynos!","Salute")
Dialog.Start()
end
+function Salute(NPC,Spawn)
+ PlayFlavor(NPC,"","","salute",0,0,Spawn)
+end
+
+
diff --git a/server/SpawnScripts/Antonica/CorporalPeckett.lua b/server/SpawnScripts/Antonica/CorporalPeckett.lua
index 96465f8f7..f6397dd9e 100755
--- a/server/SpawnScripts/Antonica/CorporalPeckett.lua
+++ b/server/SpawnScripts/Antonica/CorporalPeckett.lua
@@ -22,6 +22,7 @@ function hailed(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Hail, adventurer. I must warn you that Coldwind Point is not the safest place. Most of the garrison is on the march and the gnolls have been sighted nearby. I cannot guarantee your safety.")
Dialog.AddVoiceover("voiceover/english/corporal_peckett/antonica/corporalpeckett000.mp3", 1322495237, 1823181494)
+ PlayFlavor(NPC,"","","attention",0,0,Spawn)
if GetQuestStep(Spawn, PeckettsPatrol) == 1 then
Dialog.AddOption("I hear you are in need of a militia. ", "Option1")
elseif GetQuestStep(Spawn, PeckettsPatrol) == 14 then
@@ -49,10 +50,20 @@ function Option2(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Then you must patrol this sector. Follow my notes to reach each patrol point. Once you have completed your rounds you may return to me for your pay. ")
Dialog.AddVoiceover("voiceover/english/corporal_peckett/antonica/corporalpeckett002.mp3", 1614024059, 542530014)
- Dialog.AddOption("For Qeynos!")
+ Dialog.AddOption("For Qeynos!","Salute")
Dialog.Start()
end
+function Salute(NPC,Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn,"","","attention",0,0,NPC)
+ AddTimer(NPC,1500,"Salute2",1,Spawn)
+end
+
+function Salute(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","attention",0,0,Spawn)
+end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/Crucibletablewithsmoke.lua b/server/SpawnScripts/Antonica/Crucibletablewithsmoke.lua
new file mode 100755
index 000000000..2af7f0629
--- /dev/null
+++ b/server/SpawnScripts/Antonica/Crucibletablewithsmoke.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : SpawnScripts/Antonica/Crucibletablewithsmoke.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.20 12:05:10
+ Script Purpose :
+ :
+--]]
+local Quest = 5841
+
+function spawn(NPC)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ if IsInCombat(Spawn)== true then
+ SendMessage(Spawn,"You are in combat!","red")
+ else
+ if GetQuestStep(Spawn,Quest)==4 or GetQuestStep(Spawn,Quest)==5 then
+ Dialog1(NPC,Spawn)
+ else
+ AddConversationOption(con, "[Leave the table and trinkets alone...]")
+ StartDialogConversation(con, 1, NPC, Spawn, "Foul smelling concotions and small trinkets litter the table. The Darkpaw gnolls are obviously dabbling in magic you are unfamiliar with.")
+ end
+ end
+end
+end
+
+function Dialog1(NPC,Spawn)
+ local con = CreateConversation()
+ if not QuestStepIsComplete(Spawn,Quest,5) then
+ AddConversationOption(con, "[Look for something to dispell enchantments.]", "Dialog2")
+ end
+ AddConversationOption(con, "[Leave the table and trinkets alone...]")
+ StartDialogConversation(con, 1, NPC, Spawn, "Foul smelling concotions and small trinkets litter the table. The Darkpaw gnolls are obviously dabbling in magic you are unfamiliar with.")
+end
+
+function Dialog2(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[Grab the wand.]","offer")
+ AddConversationOption(con, "[Leave the table and trinkets alone...]")
+ StartDialogConversation(con, 1, NPC, Spawn, "You spot a crude wand next to some twitching hay. Perhaps this is one of the devices used by the Darkpaw to enchant scarecrows that terrorize local farmlands. It might work to disenchant something as well...")
+end
+
+function offer(NPC, Spawn)
+ local con = CreateConversation()
+ if not QuestStepIsComplete(Spawn,Quest,5) then
+ SetStepComplete(Spawn,Quest,5)
+ end
+ AddConversationOption(con, "[Leave the rest of the trinkets alone.]")
+ StartDialogConversation(con, 1, NPC, Spawn, "An audible ZAP can be heard as you lift the wand off the table.")
+ PlaySound(Spawn,"sounds/spells/lightning_burst/lb_volt_03.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ ApplySpellVisual(NPC,18)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Dancer.lua b/server/SpawnScripts/Antonica/Dancer.lua
index d45f400c2..a2d17d878 100755
--- a/server/SpawnScripts/Antonica/Dancer.lua
+++ b/server/SpawnScripts/Antonica/Dancer.lua
@@ -1,28 +1,21 @@
--[[
Script Name : SpawnScripts/Antonica/Dancer.lua
Script Purpose : Dancer
- Script Author : premierio015
- Script Date : 09.05.2022
+ Script Author : premierio015,Dorbin
+ Script Date : 09.05.2022 - Updated using Dialog Module - Dorbin 05/12/2023
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local AFrontiersladysTask = 5528
local BattleWithTheTimberclaws = 5530
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange")
+ProvidesQuest(NPC, BattleWithTheTimberclaws)
+ProvidesQuest(NPC, AFrontiersladysTask)
end
-function InRange(NPC, Spawn)
-if not HasQuest(Spawn, AFrontiersladysTask) and not HasCompletedQuest(Spawn, AFrontiersladysTask) then
-ProvidesQuest(NPC, AFrontiersladysTask)
-elseif HasCompletedQuest(Spawn, AFrontiersladysTask) then
-ProvidesQuest(NPC, BattleWithTheTimberclaws)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-end
- end
function respawn(NPC)
spawn(NPC)
@@ -30,51 +23,61 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona000.mp3", "", "", 2049178803, 173582214, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You must be an adventurer who's new to these parts. Who else would brave the wilds so far from the watchful eye of the Qeynos Guard?")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona000.mp3", 2049178803, 173582214)
if not HasQuest(Spawn, AFrontiersladysTask) and not HasCompletedQuest(Spawn, AFrontiersladysTask) then
- AddConversationOption(conversation, "I am a bit of an adventurer and a bit of an explorer.", "Option1")
+ Dialog.AddOption("I am a bit of an adventurer and a bit of an explorer.", "Option1")
elseif GetQuestStep(Spawn, AFrontiersladysTask) == 2 then
- AddConversationOption(conversation, "Sighard gave me this special arrow.", "Option2")
+ Dialog.AddOption("Sighard gave me this special arrow.", "Option2")
elseif GetQuestStep(Spawn, AFrontiersladysTask) == 4 or HasCompletedQuest(Spawn, AFrontiersladysTask) and not HasQuest(Spawn, BattleWithTheTimberclaws) and not HasCompletedQuest(Spawn, BattleWithTheTimberclaws) then
- AddConversationOption(conversation, "The arrow is in the training dummy.", "Option4")
- elseif HasQuest(Spawn, BattleWithTheTimberclaws) then
- AddConversationOption(conversation, "You so quickly forget the world's greatest adventurer.", "Option6")
- elseif GetQuestStep(Spawn, BattleWithTheTimberclaws) == 2 then
- AddConversationOption(conversation, "I tried my best, but their numbers are strong.", "Option7")
+ Dialog.AddOption("The arrow is in the training dummy.", "Option4")
end
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "You must be an adventurer who's new to these parts. Who else would brave the wilds so far from the watchful eye of the Qeynos Guard?")
+ if GetQuestStep(Spawn, BattleWithTheTimberclaws) == 2 then
+ Dialog.AddOption("I tried my best, but their numbers are strong.", "Option7")
+ end
+ if HasQuest(Spawn, BattleWithTheTimberclaws) then
+ Dialog.AddOption("You so quickly forget the world's greatest adventurer.", "Option6")
+ end
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona001.mp3", "", "", 3474200771, 3431607508, Spawn)
- AddConversationOption(conversation, "I am always available to assist a frontiersman.", "offer")
- AddConversationOption(conversation, "I cannot assist. Farewell.")
- StartConversation(conversation, NPC, Spawn, "Adventurer ... explorer ... how would you like to be a courier too?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Adventurer ... explorer ... how would you like to be a courier too?")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona001.mp3", 3474200771, 3431607508)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ if CanReceiveQuest(Spawn,AFrontiersladysTask) then
+ Dialog.AddOption("I am always available to assist a frontiersman.", "offer")
+ end
+ Dialog.AddOption("I cannot assist. Farewell.")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
SetStepComplete(Spawn, AFrontiersladysTask, 2)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona003.mp3", "", "", 1306460538, 3525298419, Spawn)
- AddConversationOption(conversation, "What is this arrow?", "Option3")
- AddConversationOption(conversation, "I shall do as requested.")
StartConversation(conversation, NPC, Spawn, "Now, can you take that arrow and apply it to a training dummy in Archer Woods? Search for the dummy with the symbol of a golden tree and green arrow.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Now, can you take that arrow and apply it to a training dummy in Archer Woods? Search for the dummy with the symbol of a golden tree and green arrow.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona003.mp3", 1306460538, 3525298419)
+ Dialog.AddOption("What is this arrow?", "Option3")
+ Dialog.AddOption("I shall do as requested.")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona004.mp3", "", "", 2295000938, 2111794040, Spawn)
- AddConversationOption(conversation, "I understand.")
- StartConversation(conversation, NPC, Spawn, "The arrow is a special marker for some friends of mine.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The arrow is a special marker for some friends of mine.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona004.mp3", 2295000938, 2111794040)
+ Dialog.AddOption("I understand.")
+ Dialog.Start()
end
@@ -83,55 +86,66 @@ function Option4(NPC, Spawn)
SetStepComplete(Spawn, AFrontiersladysTask, 4)
end
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona005.mp3", "", "", 3454016717, 1472655172, Spawn)
- AddConversationOption(conversation, "I did not see any Trusaris.", "Option5")
- AddConversationOption(conversation, "Farewell.")
- StartConversation(conversation, NPC, Spawn, "Thank you, courier. I trust you have done as I requested. If not, Trusaris will tell me. He sees all in Archer Woods, including your every step.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Thank you, courier. I trust you have done as I requested. If not, Trusaris will tell me. He sees all in Archer Woods, including your every step.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona005.mp3", 3454016717, 1472655172)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I did not see any Trusaris.", "Option5")
+ Dialog.AddOption("Farewell.")
+ Dialog.Start()
end
function Option5(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona006.mp3", "", "", 4166511705, 1130362343, Spawn)
- AddConversationOption(conversation, "I will help clear his home.", "offer2")
- StartConversation(conversation, NPC, Spawn, "Trusaris is the great oak of Archer Woods. He has lived in these hills for many ages. He has seen much grief in his lifetime. Now gnolls are taking over what is left of his home.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Trusaris is the great oak of Archer Woods. He has lived in these hills for many ages. He has seen much grief in his lifetime. Now gnolls are taking over what is left of his home.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona006.mp3", 4166511705, 1130362343)
+ if CanReceiveQuest(Spawn,BattleWithTheTimberclaws) then
+ Dialog.AddOption("I will help clear his home.", "offer2")
+ end
+ Dialog.AddOption("Fascinating. Perhaps you will find someone to help. I must find adventure elsewhere.")
+ Dialog.Start()
end
function Option6(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona008.mp3", "", "", 3282299207, 1917374337, Spawn)
- AddConversationOption(conversation, "They will know me when I rid the woods of them!")
- StartConversation(conversation, NPC, Spawn, "Forget the world's greatest? I think not, but your name may have slipped my mind. Ha! Fear not, my brave courier. The gnolls of Archer Woods are the only ones near here that have yet to know your name.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Forget the world's greatest? I think not, but your name may have slipped my mind. Ha! Fear not, my brave courier. The gnolls of Archer Woods are the only ones near here that have yet to know your name.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona008.mp3", 3282299207, 1917374337)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("They will know me when I rid the woods of them!")
+ Dialog.Start()
end
function Option7(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona010.mp3", "", "", 3182250399, 3459878429, Spawn)
- AddConversationOption(conversation, "Thank you, Dancer.", "Option8")
- StartConversation(conversation, NPC, Spawn, "Your best is all that we ask. I shall reward you for servicing what remains of Archer Woods. I shall mention your name among my friends.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Your best is all that we ask. I shall reward you for servicing what remains of Archer Woods. I shall mention your name among my friends.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona010.mp3", 3182250399, 3459878429)
+ Dialog.AddOption("Thank you, Dancer.", "Option8")
+ Dialog.Start()
end
function Option8(NPC, Spawn)
SetStepComplete(Spawn, BattleWithTheTimberclaws, 2)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona011.mp3", "", "", 2906971481, 4178549824, Spawn)
- AddConversationOption(conversation, "Is your name really Dancer?", "Option9")
- AddConversationOption(conversation, "Thank you, Dancer.")
- StartConversation(conversation, NPC, Spawn, "By the way, courier, Sighard asked me about you. He wishes to speak with you.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("By the way, courier, Sighard asked me about you. He wishes to speak with you.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona011.mp3", 2906971481, 4178549824)
+ Dialog.AddOption("Is your name really Dancer?", "Option9")
+ Dialog.AddOption("Thank you, Dancer.")
+ Dialog.Start()
end
function Option9(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/verona/antonica/verona007.mp3", "", "", 1777708143, 1227602978, Spawn)
- AddConversationOption(conversation, "Farewell, Dancer.")
- StartConversation(conversation, NPC, Spawn, "There was a dark time in my life when dancing was not a thing of joy, but a subjugated torment. It is a time I choose not to recall. But Dancer is my name among my new circle of friends, friends you may some day meet.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There was a dark time in my life when dancing was not a thing of joy, but a subjugated torment. It is a time I choose not to recall. But Dancer is my name among my new circle of friends, friends you may some day meet.")
+ Dialog.AddVoiceover("voiceover/english/verona/antonica/verona007.mp3", 1777708143, 1227602978)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("Farewell, Dancer.")
+ Dialog.Start()
end
function offer(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/DarmenSproutmore.lua b/server/SpawnScripts/Antonica/DarmenSproutmore.lua
index 93dba59ce..c2b0a375c 100755
--- a/server/SpawnScripts/Antonica/DarmenSproutmore.lua
+++ b/server/SpawnScripts/Antonica/DarmenSproutmore.lua
@@ -5,6 +5,7 @@
Script Date : 08/29/2019
Script Notes : Auto-Generated from a chat log using SpawnScriptDesigner
--]]
+require "SpawnScripts/Generic/DialogModule"
local HowDidTheirGardenGrow = 5361
@@ -18,49 +19,52 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/darmen_sproutmore/antonica/darmensproutmore000.mp3", "", "", 2138797897, 3113209185)
- if not HasQuest(Spawn, HowDidTheirGardenGrow) and not HasCompletedQuest(Spawn, HowDidTheirGardenGrow) then
- AddConversationOption(conversation, "Your daisies look very nice. You must be a fine gardener.", "Option1")
- elseif GetQuestStep(Spawn, HowDidTheirGardenGrow) == 2 then
- AddConversationOption(conversation, "The Knights of Thunder had an atrium underground. ", "Option3")
- end
- AddConversationOption(conversation, "I must be off. Good day to you. ")
- StartConversation(conversation, NPC, Spawn, "Hail to you, adventurer! Mind your feet, and don't step on my dear little flowers! Just coming into bloom, they are.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hail to you, adventurer! Mind your feet, and don't step on my dear little flowers! Just coming into bloom, they are.")
+ Dialog.AddVoiceover("voiceover/english/darmen_sproutmore/antonica/darmensproutmore000.mp3", 2138797897, 3113209185)
+ PlayFlavor(NPC, "", "", "curtsey", 0, 0,Spawn)
+ if CanReceiveQuest(Spawn, HowDidTheirGardenGrow) then
+ Dialog.AddOption("Your daisies look very nice. You must be a fine gardener.", "Option1")
+ elseif GetQuestStep(Spawn, HowDidTheirGardenGrow)==2 then
+ Dialog.AddOption("The Knights of Thunder had an atrium underground. ", "Option3")
+ end
+ Dialog.AddOption("I must be off. Good day to you. ")
+ Dialog.Start()
end
-
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/darmen_sproutmore/antonica/darmensproutmore001.mp3", "", "", 3489573816, 2242982097, Spawn)
- AddConversationOption(conversation, "What Knights of Thunder?", "Option2")
- StartConversation(conversation, NPC, Spawn, "Thank you! Gardening is my life. I love tending the small, green things of the earth. Why, some of these sprouts shall be tall trees one day. And, many of my plants, will soon feed the people of Qeynos. Hmm ... makes one wonder, though. What do you suppose fed those Knights of Thunder so long ago?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Thank you! Gardening is my life. I love tending the small, green things of the earth. Why, some of these sprouts shall be tall trees one day. And, many of my plants, will soon feed the people of Qeynos. Hmm ... makes one wonder, though. What do you suppose fed those Knights of Thunder so long ago?")
+ Dialog.AddVoiceover("voiceover/english/darmen_sproutmore/antonica/darmensproutmore001.mp3", 3489573816, 2242982097)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0,Spawn)
+ Dialog.AddOption("What Knights of Thunder?", "Option2")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/darmen_sproutmore/antonica/darmensproutmore002.mp3", "", "", 2498400696, 3478793084, Spawn)
- AddConversationOption(conversation, "I may explore Stormhold some day. If I find out how, I'll be sure to let you know.", "offer")
- AddConversationOption(conversation, "Maybe someday some brave explorer will find the answer. ")
- StartConversation(conversation, NPC, Spawn, "Oh, come now! Surely you have heard the rumors that some explorers believe they found the location of the legendary Stormhold? ... The ancient fortress of the Knights of Thunder? Personally, I think those \"explorers\" were crypt raiders, but what do I know? Plants. That's what I know. And no one ever saw the Knights of Thunder growing their own plants ... or hauling supply wagons out of Qeynos for that matter. So, how do you suppose they fed themselves? Hmm?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, come now! Surely you have heard the rumors that some explorers believe they found the location of the legendary Stormhold? ... The ancient fortress of the Knights of Thunder? Personally, I think those \"explorers\" were crypt raiders, but what do I know? Plants. That's what I know. And no one ever saw the Knights of Thunder growing their own plants ... or hauling supply wagons out of Qeynos for that matter. So, how do you suppose they fed themselves? Hmm?")
+ Dialog.AddVoiceover("voiceover/english/darmen_sproutmore/antonica/darmensproutmore002.mp3", 2498400696, 3478793084)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0,Spawn)
+ Dialog.AddOption("I may explore Stormhold some day. If I find out how, I'll be sure to let you know.", "offer")
+ Dialog.AddOption("Maybe someday some brave explorer will find the answer. ")
+ Dialog.Start()
end
-
-
function Option3(NPC, Spawn)
SetStepComplete(Spawn, HowDidTheirGardenGrow, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/darmen_sproutmore/antonica/darmensproutmore004.mp3", "", "", 3378309886, 1783566743, Spawn)
- AddConversationOption(conversation, "Aye, it is.")
- StartConversation(conversation, NPC, Spawn, "An atrium? How marvelous! They must've grown their food plants in the atrium. Karana could've used his power to enchant the dark space with sunlight and water ... even under the ground. Amazing, isn't it?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("An atrium? How marvelous! They must've grown their food plants in the atrium. Karana could've used his power to enchant the dark space with sunlight and water ... even under the ground. Amazing, isn't it?")
+ Dialog.AddVoiceover("voiceover/english/darmen_sproutmore/antonica/darmensproutmore004.mp3", 3378309886, 1783566743)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0,Spawn)
+ Dialog.AddOption("Aye, it is.")
+ Dialog.Start()
end
-
-
function offer(NPC, Spawn)
OfferQuest(NPC, Spawn, HowDidTheirGardenGrow)
end
diff --git a/server/SpawnScripts/Antonica/Duffy.lua b/server/SpawnScripts/Antonica/Duffy.lua
index 437ac99b8..8e8f61eb7 100755
--- a/server/SpawnScripts/Antonica/Duffy.lua
+++ b/server/SpawnScripts/Antonica/Duffy.lua
@@ -1,12 +1,13 @@
--[[
Script Name : Duffy.lua
Script Purpose : Duffy
- Script Author : Jabantiz
- Script Date : 08/29/2019
- Script Notes : Auto-Generated from a chat log using SpawnScriptDesigner
+ Script Author : Dorbin
+ Script Date : 05/11/2023
+ Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
+local Sayer = 5812
function spawn(NPC)
end
@@ -21,16 +22,21 @@ function hailed(NPC, Spawn)
Dialog.AddDialog("Take a look around. Never have you seen such finely crafted or wondrous artifacts for sale ... for such little coin!")
Dialog.AddVoiceover("voiceover/english/merchant_duffy/antonica/merchantduffy000.mp3", 2930671172, 614117388)
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
+ if GetQuestStep(Spawn, Sayer) == 1 then
+ Dialog.AddOption("Delivery from Sayer's Outfitters. ", "Dialog1")
+ end
Dialog.AddOption("I'll just look about. ")
-
Dialog.Start()
+end
- --[[ Say() from this NPC
-
-
- Orphaned PlayFlavors
- PlayFlavor(NPC, "voiceover/english/merchant_duffy/antonica/merchantduffy001.mp3", "", "", 3538554208, 285621501, Spawn)
-
- --]]
-
+function Dialog1(NPC, Spawn)
+ SetStepComplete(Spawn, Sayer, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("'Bout time my salted lizards made it from the Steppes. I thought for sure old Sayer would forget me. ")
+ Dialog.AddVoiceover("voiceover/english/merchant_duffy/antonica/merchantduffy001.mp3", 3538554208, 285621501)
+ PlayFlavor(NPC,"","","thanks",0,0,Spawn)
+ Dialog.AddOption("Farewell. ")
+ Dialog.Start()
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/DuryBuntan.lua b/server/SpawnScripts/Antonica/DuryBuntan.lua
index dd2b2d37b..c8ae3276c 100755
--- a/server/SpawnScripts/Antonica/DuryBuntan.lua
+++ b/server/SpawnScripts/Antonica/DuryBuntan.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/Edwards.lua b/server/SpawnScripts/Antonica/Edwards.lua
index 633534f92..825781285 100755
--- a/server/SpawnScripts/Antonica/Edwards.lua
+++ b/server/SpawnScripts/Antonica/Edwards.lua
@@ -6,23 +6,18 @@
:
--]]
-require("SpawnScripts/Generic/GenericVoiceOvers")
function spawn(NPC)
end
function hailed(NPC, Spawn)
- GenericHail(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local choice = MakeRandomInt(1, 2)
+ local choice = MakeRandomInt(1,2)
if choice == 1 then
- PlayFlavor(NPC, "", "Hello, friend. Welcome to my shop.", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/merchant/human_merchant_service_good_1_hail_gf_e4fa2bd8.mp3", "Confound it! Where did I put that ledger? It must be around here somewhere!", "confused", 2588954321, 88153469, Spawn)
elseif choice == 2 then
- PlayFlavor(NPC, "", "If I know you adventuring types, you'll need one of these.", "", 1689589577, 4560189, Spawn)
- elseif choice == 3 then
- PlayFlavor(NPC, "", "Good day, adventurer. Care to take a look at my merchandise?", "", 1689589577, 4560189, Spawn)
-end
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/merchant/human_merchant_service_good_1_hail_gf_ae84abf9.mp3", "Go on, take a look at the stock. You'll never beat this price in the city. I guarantee it!", "wink", 1667555721, 2696093362, Spawn)
+ end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/FarmerGerrit.lua b/server/SpawnScripts/Antonica/FarmerGerrit.lua
new file mode 100755
index 000000000..e208332a8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/FarmerGerrit.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Antonica/FarmerGerrit.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.17 02:09:44
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1052.mp3", "These farms help Qeynos get the food it needs to help function. It's a hard life sometimes, but well worth it.", "agree", 0, 0, Spawn, 0)
+end
diff --git a/server/SpawnScripts/Antonica/FarmerHelver.lua b/server/SpawnScripts/Antonica/FarmerHelver.lua
index 4e51a28ec..d023b78c6 100755
--- a/server/SpawnScripts/Antonica/FarmerHelver.lua
+++ b/server/SpawnScripts/Antonica/FarmerHelver.lua
@@ -17,5 +17,5 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- PlayFlavor(NPC, "", "These farms provide a lot of necessary food to Qeynos. It's a lot of work, but it is rewarding.", "agree", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1052.mp3", "These farms provide a lot of necessary food to Qeynos. It's a lot of work, but it is rewarding.", "agree", 0, 0, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Flores.lua b/server/SpawnScripts/Antonica/Flores.lua
index 1c08ffaa3..f81c37c3e 100755
--- a/server/SpawnScripts/Antonica/Flores.lua
+++ b/server/SpawnScripts/Antonica/Flores.lua
@@ -1,59 +1,79 @@
--[[
Script Name : SpawnScripts/Antonica/Flores.lua
Script Purpose : Flores
- Script Author : Jabantiz, premierio015
+ Script Author : Jabantiz, premierio015,Dorbin
Script Date : 08/29/2019
- Script Notes : Auto-Generated from a chat log using SpawnScriptDesigner
+ Script Notes : Updated Dialog Module - Dorbin 05/11/2023
--]]
+require "SpawnScripts/Generic/DialogModule"
local DeliveriesForFlores = 5333 -- Deliveries For Flores Quest
function spawn(NPC)
ProvidesQuest(NPC, DeliveriesForFlores)
+ SetPlayerProximityFunction(NPC, 13, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,11)<0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+elseif CanReceiveQuest(Spawn,DeliveriesForFlores) then
+ PlayFlavor(NPC, "", "", "wave", 0, 0, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_flores/antonica/merchantflores000.mp3", "", "", 149465216, 3128258097)
- if not HasQuest(Spawn, DeliveriesForFlores) and not HasCompletedQuest(Spawn, DeliveriesForFlores) then
- AddConversationOption(conversation, "I'm looking for work. Do you have any tasks that need done? ", "Option1")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Step right up! My wares stand up to any found in the city! Made by the finest Qeynosian crafters, they are!")
+ Dialog.AddVoiceover("voiceover/english/merchant_flores/antonica/merchantflores000.mp3", 149465216, 3128258097)
+ PlayFlavor(NPC, "", "", "beckon", 0, 0, Spawn)
+ if CanReceiveQuest(Spawn, DeliveriesForFlores) then
+ Dialog.AddOption("I'm looking for work. Do you have any tasks that need done? ", "Option1")
elseif GetQuestStep(Spawn, DeliveriesForFlores) == 3 then
- AddConversationOption(conversation, "I'm back with the pouches.", "Option2")
- end
- AddConversationOption(conversation, "I don't need anything right now, thanks.")
- StartConversation(conversation, NPC, Spawn, "Step right up! My wares stand up to any found in the city! Made by the finest Qeynosian crafters, they are!")
+ Dialog.AddOption("I'm back with the pouches.", "Option2")
+ end
+ Dialog.AddOption("I don't need anything right now, thanks.")
+ Dialog.Start()
+
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_flores/antonica/merchantflores001.mp3", "", "", 4230827236, 573418930, Spawn)
- AddConversationOption(conversation, "Does it pay well? Sounds like a pretty decent hike.", "offer")
- AddConversationOption(conversation, "No thanks. The far reaches sounds further than I'm willing to go.")
- StartConversation(conversation, NPC, Spawn, "I certainly do. I need to deliver supplies to a couple of my merchants out in the far reaches of Antonica. Business is so good right now that I hate to close up shop. How would you like to deliver their supplies?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I certainly do. I need to deliver supplies to a couple of my merchants out in the far reaches of Antonica. Business is so good right now that I hate to close up shop. How would you like to deliver their supplies?")
+ Dialog.AddVoiceover("voiceover/english/merchant_flores/antonica/merchantflores001.mp3", 4230827236, 573418930)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Does it pay well? Sounds like a pretty decent hike.", "offer")
+ Dialog.AddOption("No thanks. The far reaches sounds further than I'm willing to go.")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_flores/antonica/merchantflores003.mp3", "", "", 741997082, 1076579882, Spawn)
- AddConversationOption(conversation, "Here you are. ", "Option3")
- StartConversation(conversation, NPC, Spawn, "So you are! Well done. Let me take a look at those pouches, and I'll see how much I can afford to pay you.")
-end
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So you are! Well done. Let me take a look at those pouches, and I'll see how much I can afford to pay you.")
+ Dialog.AddVoiceover("voiceover/english/merchant_flores/antonica/merchantflores003.mp3", 741997082, 1076579882)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Here you are. ", "Option3")
+ Dialog.Start()end
function Option3(NPC, Spawn)
SetStepComplete(Spawn, DeliveriesForFlores, 3)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_flores/antonica/merchantflores004.mp3", "", "", 2648431364, 4291369549, Spawn)
- AddConversationOption(conversation, "Not at the moment thanks. Perhaps I'll return later to see if you need any further assistance. ")
- StartConversation(conversation, NPC, Spawn, "Splendid! The merchants are doing very well. Here's your share. Now, why don't you use your reward to buy my fine merchandise?")
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddDialog("Splendid! The merchants are doing very well. Here's your share. Now, why don't you use your reward to buy my fine merchandise?")
+ Dialog.AddVoiceover("voiceover/english/merchant_flores/antonica/merchantflores004.mp3", 2648431364, 4291369549)
+ Dialog.AddOption("Not at the moment thanks. Perhaps I'll return later to see if you need any further assistance. ")
+ Dialog.Start()
end
diff --git a/server/SpawnScripts/Antonica/Geddard.lua b/server/SpawnScripts/Antonica/Geddard.lua
index 6d4b0fe0b..6670d186e 100755
--- a/server/SpawnScripts/Antonica/Geddard.lua
+++ b/server/SpawnScripts/Antonica/Geddard.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local DeliveriesForFlores = 5333 -- Deliveries For Flores Quest
@@ -14,22 +15,25 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/merchant_geddard/antonica/merchantgeddard000.mp3", "", "", 1542141863, 1883255955, Spawn)
- conversation = CreateConversation()
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome to Gnollslayer Keep! I'm Geddard, the only merchant for leagues. If I don't got it, you don't need it! What'll it be for you today?")
+ Dialog.AddVoiceover("voiceover/english/merchant_geddard/antonica/merchantgeddard000.mp3", 1542141863, 1883255955)
if GetQuestStep(Spawn, DeliveriesForFlores) == 2 then
- AddConversationOption(conversation, "I'm here to deliver a crate of supplies from Flores.", "Option1")
+ Dialog.AddOption("I'm here to deliver a crate of supplies from Flores.", "Option1")
end
- AddConversationOption(conversation, "Nothing right now thanks.")
- StartConversation(conversation, NPC, Spawn, "Welcome to Gnollslayer Keep! I'm Geddard, the only merchant for leagues. If I don't got it, you don't need it! What'll it be for you today?")
+ Dialog.AddOption("Nothing right now thanks.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
SetStepComplete(Spawn, DeliveriesForFlores, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_geddard/antonica/merchantgeddard001.mp3", "", "", 3026041322, 2122466947, Spawn)
- AddConversationOption(conversation, "I will, take care! Good luck with your sales.")
- StartConversation(conversation, NPC, Spawn, "Why didn't you say so? Let me see what you've brought...excellent! I'll take that crate you're carrying. And here's the pouch for Flores. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Why didn't you say so? Let me see what you've brought...excellent! I'll take that crate you're carrying. And here's the pouch for Flores. ")
+ Dialog.AddVoiceover("voiceover/english/merchant_geddard/antonica/merchantgeddard001.mp3", 3026041322, 2122466947)
+ PlayFlavor(NPC, "", "", "wink", 0, 0, Spawn)
+ Dialog.AddOption("I will, take care! Good luck with your sales.")
+ Dialog.Start()
end
diff --git a/server/SpawnScripts/Antonica/GhostofVhalen.lua b/server/SpawnScripts/Antonica/GhostofVhalen.lua
new file mode 100755
index 000000000..c1bc521fc
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GhostofVhalen.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GhostofVhalen.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.01 06:04:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "I stand vigilant to ring the bells in warning for the city of Qeynos.", "", 1689589577, 4560189, Spawn)
+end
+
+function aggro(NPC, Spawn)
+local random = MakeRandomInt(1, 3)
+if random == 1 then
+PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gm_3e2a680d.mp3", "You cannot run from death, mortal!", "", 3726501132, 2641272181, Spawn)
+elseif random == 2 then
+PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gm_11cb6bf8.mp3", "Mortal agony is nothing compared to the torment that awaits you!", "", 2544751499, 3488336081, Spawn)
+else
+PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gm_8a0dd99d.mp3", "I will show you the true pain of death!", "", 2563182730, 2699265972, Spawn)
+end
+end
+
+function death(NPC, Spawn)
+PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_death_gm_18bd9c56.mp3", "You will see us again in your nightmares!", "", 3496984483, 236189449
+, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GriffonStationIdle.lua b/server/SpawnScripts/Antonica/GriffonStationIdle.lua
new file mode 100755
index 000000000..a6efbc451
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GriffonStationIdle.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GriffonStationIdle.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.28 12:08:06
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "combat_idle")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GrolvenChiptooth.lua b/server/SpawnScripts/Antonica/GrolvenChiptooth.lua
index 5fded70cd..ad4ade4fa 100755
--- a/server/SpawnScripts/Antonica/GrolvenChiptooth.lua
+++ b/server/SpawnScripts/Antonica/GrolvenChiptooth.lua
@@ -7,7 +7,11 @@
--]]
function spawn(NPC)
- waypoints(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(70 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(110 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
end
function Garbled(NPC,Spawn)
diff --git a/server/SpawnScripts/Antonica/GuardAldritch.lua b/server/SpawnScripts/Antonica/GuardAldritch.lua
new file mode 100644
index 000000000..15426abb7
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardAldritch.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardAldritch.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.18 03:03:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardCamden.lua b/server/SpawnScripts/Antonica/GuardCamden.lua
new file mode 100755
index 000000000..4ac98c0b7
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardCamden.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardCamden.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:58
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardChaffey.lua b/server/SpawnScripts/Antonica/GuardChaffey.lua
new file mode 100755
index 000000000..2c7146f2d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardChaffey.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardChaffey.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:57
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardCoffrey.lua b/server/SpawnScripts/Antonica/GuardCoffrey.lua
new file mode 100755
index 000000000..fa20a570e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardCoffrey.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardCoffrey.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:10
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardJarvis.lua b/server/SpawnScripts/Antonica/GuardJarvis.lua
new file mode 100755
index 000000000..fddbdf779
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardJarvis.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardJarvis.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:23
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardKaplan.lua b/server/SpawnScripts/Antonica/GuardKaplan.lua
new file mode 100755
index 000000000..ed361fbb9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardKaplan.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardKaplan.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:35
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardLambton.lua b/server/SpawnScripts/Antonica/GuardLambton.lua
new file mode 100755
index 000000000..22402200b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardLambton.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardLambton.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:49
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardLaughton.lua b/server/SpawnScripts/Antonica/GuardLaughton.lua
new file mode 100755
index 000000000..db0f2f5a9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardLaughton.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardLaughton.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:07
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardRitter.lua b/server/SpawnScripts/Antonica/GuardRitter.lua
new file mode 100755
index 000000000..2480d1b0b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardRitter.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardRitter.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:19
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardThompson.lua b/server/SpawnScripts/Antonica/GuardThompson.lua
new file mode 100755
index 000000000..00ba4a11e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardThompson.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardThompson.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:32
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/GuardWaters.lua b/server/SpawnScripts/Antonica/GuardWaters.lua
new file mode 100755
index 000000000..195128422
--- /dev/null
+++ b/server/SpawnScripts/Antonica/GuardWaters.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/GuardWaters.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 11:05:11
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/HaddekVimki.lua b/server/SpawnScripts/Antonica/HaddekVimki.lua
index 1fb207f66..5dcc654ea 100755
--- a/server/SpawnScripts/Antonica/HaddekVimki.lua
+++ b/server/SpawnScripts/Antonica/HaddekVimki.lua
@@ -20,7 +20,7 @@ function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", Spawn)
end
-function InRange(NPC, Spawn)
+--[[function InRange(NPC, Spawn)
if not HasCompletedQuest(Spawn, RunningOutOfBeer) then
ProvidesQuest(NPC, RunningOutOfBeer)
elseif HasCompletedQuest(Spawn, RunningOutOfBeer) then
@@ -36,7 +36,7 @@ ProvidesQuest(NPC, PracticalJokeOnBlarton)
SetInfoFlag(NPC)
SetVisualFlag(NPC)
end
- end
+end]]--
function respawn(NPC)
spawn(NPC)
@@ -44,15 +44,15 @@ end
function hailed(NPC, Spawn)
local choice = MakeRandomInt(1, 4)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1060.mp3", "", "", 0, 0, Spawn)
- elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1060.mp3", "", "", 0, 0, Spawn)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1060.mp3", "", "", 0, 0, Spawn)
- elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
- end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1060.mp3", "", "", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1060.mp3", "", "", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1060.mp3", "", "", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ end
FaceTarget(NPC, Spawn)
local conversation = CreateConversation()
if not HasQuest(Spawn, RunningOutOfBeer) and not HasCompletedQuest(Spawn, RunningOutOfBeer) then
diff --git a/server/SpawnScripts/Antonica/HighwaymanAmbush.lua b/server/SpawnScripts/Antonica/HighwaymanAmbush.lua
new file mode 100755
index 000000000..d29342142
--- /dev/null
+++ b/server/SpawnScripts/Antonica/HighwaymanAmbush.lua
@@ -0,0 +1,422 @@
+--[[
+ Script Name : SpawnScripts/Antonica/HighwaymanAmbush.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.02 03:05:41
+ Script Purpose : Handles 3 spawning highwaymen groups in Antonica that Ambush Players
+ Proximity Trigger ->
+ Randomizes race/models and changes 3 exsisting groups of 4 into attackable agro spawns ->
+ Timer starts for despawn ->
+ Despawn is triggered if groups are not in combat ->
+ Spawn cast Stealth and despawn shortly after.
+ [Respawn of Trigger and Invisisble groups allows for re-trigger]
+ :
+--]]
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 12, "InRange", "LeaveRange")
+ local zone = GetZone(NPC)
+if GetSpawnByLocationID(zone, 133784732) == nil and GetSpawnLocationID(NPC)== 133784683 then
+ SpawnByLocationID(zone,133784732)
+end
+end
+
+function InRange(NPC, Spawn) --PROXIMITY TRIGGER
+ local zone = GetZone(NPC)
+ local Group1HWmanA = GetSpawnByLocationID(zone, 133784689)
+ local Group1HWmanB = GetSpawnByLocationID(zone, 133784686)
+ local Group1HWmanC = GetSpawnByLocationID(zone, 133784687)
+ local Group1HWmanD = GetSpawnByLocationID(zone, 133784688)
+
+ local Group2HWmanA = GetSpawnByLocationID(zone, 133784693)
+ local Group2HWmanB = GetSpawnByLocationID(zone, 133784690)
+ local Group2HWmanC = GetSpawnByLocationID(zone, 133784691)
+ local Group2HWmanD = GetSpawnByLocationID(zone, 133784692)
+
+ local Group3HWmanA = GetSpawnByLocationID(zone, 133784697)
+ local Group3HWmanB = GetSpawnByLocationID(zone, 133784694)
+ local Group3HWmanC = GetSpawnByLocationID(zone, 133784695)
+ local Group3HWmanD = GetSpawnByLocationID(zone, 133784696)
+ if GetSpawnByLocationID(zone, 133784732) ~= nil and
+ Group1HWmanA ~=nil and
+ Group1HWmanB ~=nil and
+ Group1HWmanC ~=nil and
+ Group1HWmanD ~=nil and
+ Group2HWmanA ~=nil and
+ Group2HWmanB ~=nil and
+ Group2HWmanC ~=nil and
+ Group2HWmanD ~=nil and
+ Group3HWmanA ~=nil and
+ Group3HWmanB ~=nil and
+ Group3HWmanC ~=nil and
+ Group3HWmanD ~=nil
+ then
+ Despawn(GetSpawnByLocationID(zone, 133784732))
+if IsPlayer(Spawn)== true and IsAlive(Group1HWmanA) == true and IsAlive(Group1HWmanB) == true and IsAlive(Group1HWmanC) == true and IsAlive(Group1HWmanD) == true then
+ AddTimer(NPC,2000,"Group1Pop",1, Spawn)
+end
+if IsPlayer(Spawn)== true and IsAlive(Group2HWmanA) == true and IsAlive(Group2HWmanB) == true and IsAlive(Group2HWmanC) == true and IsAlive(Group2HWmanD) == true then
+ AddTimer(NPC,2000,"Group2Pop",1, Spawn)
+end
+if IsPlayer(Spawn)== true and IsAlive(Group3HWmanA) == true and IsAlive(Group3HWmanB) == true and IsAlive(Group3HWmanC) == true and IsAlive(Group3HWmanD) == true then
+ AddTimer(NPC,2000,"Group3Pop",1, Spawn)
+end
+ AddTimer(NPC,MakeRandomInt(720000,900000),"AliveCheck") --12 to 15 min despawn
+
+end
+end
+
+function Group1Pop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Group1HWmanA = GetSpawnByLocationID(zone, 133784689)
+ local Group1HWmanB = GetSpawnByLocationID(zone, 133784686)
+ local Group1HWmanC = GetSpawnByLocationID(zone, 133784687)
+ local Group1HWmanD = GetSpawnByLocationID(zone, 133784688)
+ if IsInCombat(Group1HWmanA) == false then
+ RaceSet(Group1HWmanA)
+end
+ if IsInCombat(Group1HWmanB) == false then
+ RaceSet(Group1HWmanB)
+end
+ if IsInCombat(Group1HWmanC) == false then
+ RaceSet(Group1HWmanC)
+end
+ if IsInCombat(Group1HWmanD) == false then
+ RaceSet(Group1HWmanD)
+end
+end
+
+function Group2Pop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Group2HWmanA = GetSpawnByLocationID(zone, 133784693)
+ local Group2HWmanB = GetSpawnByLocationID(zone, 133784690)
+ local Group2HWmanC = GetSpawnByLocationID(zone, 133784691)
+ local Group2HWmanD = GetSpawnByLocationID(zone, 133784692)
+ if IsInCombat(Group2HWmanA) == false then
+ RaceSet(Group2HWmanA)
+end
+ if IsInCombat(Group2HWmanB) == false then
+ RaceSet(Group2HWmanB)
+end
+ if IsInCombat(Group2HWmanC) == false then
+ RaceSet(Group2HWmanC)
+end
+ if IsInCombat(Group2HWmanD) == false then
+ RaceSet(Group2HWmanD)
+end
+end
+
+ function Group3Pop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Group3HWmanA = GetSpawnByLocationID(zone, 133784697)
+ local Group3HWmanB = GetSpawnByLocationID(zone, 133784694)
+ local Group3HWmanC = GetSpawnByLocationID(zone, 133784695)
+ local Group3HWmanD = GetSpawnByLocationID(zone, 133784696)
+ if IsInCombat(Group3HWmanA) == false then
+ RaceSet(Group3HWmanA)
+end
+ if IsInCombat(Group3HWmanB) == false then
+ RaceSet(Group3HWmanB)
+end
+ if IsInCombat(Group3HWmanC) == false then
+ RaceSet(Group3HWmanC)
+end
+ if IsInCombat(Group3HWmanD) == false then
+ RaceSet(Group3HWmanD)
+end
+end
+
+function RaceSet(NPC) --RANDOMIZES RACE APPEARANCES BETWEEN BARBARIAN, HALFELF, & HUMAN
+--[[ RaceChoice = GetRace(NPC)
+
+ if RaceChoice ==0 then
+ if GetGender(NPC)==1 then
+ SpawnSet(NPC,"model_type",MakeRandomInt(1467,1471))
+ else
+ SpawnSet(NPC,"model_type",MakeRandomInt(1462,1466))
+ end
+ elseif RaceChoice == 6 then
+ if GetGender(NPC)==1 then
+ SpawnSet(NPC,"model_type",78)
+ else
+ SpawnSet(NPC,"model_type",79)
+ end
+ elseif RaceChoice == 9 then
+ if GetGender(NPC)==1 then
+ SpawnSet(NPC,"model_type",134)
+ else
+ SpawnSet(NPC,"model_type",132)
+ end ]]--
+
+ local RaceChoice = MakeRandomInt(1,5)
+ if RaceChoice ==1 then
+ SpawnSet(NPC,"race",0)
+ if GetGender(NPC)==1 then
+ SpawnSet(NPC,"model_type",MakeRandomInt(1467,1471))
+ else
+ SpawnSet(NPC,"model_type",MakeRandomInt(1462,1466))
+ end
+ elseif RaceChoice == 2 or RaceChoice == 3 then
+ SpawnSet(NPC,"race",6)
+ if GetGender(NPC)==1 then
+ SpawnSet(NPC,"model_type",78)
+ else
+ SpawnSet(NPC,"model_type",79)
+ end
+ elseif RaceChoice == 4 or RaceChoice == 5 then
+ SpawnSet(NPC,"race",9)
+ if GetGender(NPC)==1 then
+ SpawnSet(NPC,"model_type",134)
+ else
+ SpawnSet(NPC,"model_type",132)
+ end
+
+ end --HANDLES SPAWN ANIMATIONS & ATTACKABLE FLAGGING
+ CastSpell(NPC,41)
+ AddTimer(NPC,1000,"Crouch")
+ AddTimer(NPC,2300,"Uncrouch")
+ SpawnSet(NPC,"faction",1)
+ SpawnSet(NPC,"show_name",1)
+ SpawnSet(NPC,"show_level",1)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"targetable",1)
+ SpawnSet(NPC,"show_command_icon",1)
+ SpawnSet(NPC,"collision_radius",30)
+ SpawnSet(NPC,"initial_state",16512)
+
+end
+
+
+function Crouch(NPC,Spawn)
+ CastSpell(NPC,41)
+ SpawnSet(NPC,"visual_sate",220)
+end
+
+function Uncrouch(NPC,Spawn)
+ SpawnSet(NPC,"visual_sate",0)
+end
+
+function AliveCheck(NPC,Spawn) --CHECKS FOR GROUPS AFTER 15 MIN OF SPAWN. IF NOT IN COMBAT/STILL EXISTS/STILL ALIVE, HIGHWAYMEN HIDE/Despawn AND ENCOUNTER RESETS
+
+ local zone = GetZone(NPC)
+ local Group1HWmanA = GetSpawnByLocationID(zone, 133784689)
+ local Group1HWmanB = GetSpawnByLocationID(zone, 133784686)
+ local Group1HWmanC = GetSpawnByLocationID(zone, 133784687)
+ local Group1HWmanD = GetSpawnByLocationID(zone, 133784688)
+
+ local Group2HWmanA = GetSpawnByLocationID(zone, 133784693)
+ local Group2HWmanB = GetSpawnByLocationID(zone, 133784690)
+ local Group2HWmanC = GetSpawnByLocationID(zone, 133784691)
+ local Group2HWmanD = GetSpawnByLocationID(zone, 133784692)
+
+ local Group3HWmanA = GetSpawnByLocationID(zone, 133784697)
+ local Group3HWmanB = GetSpawnByLocationID(zone, 133784694)
+ local Group3HWmanC = GetSpawnByLocationID(zone, 133784695)
+ local Group3HWmanD = GetSpawnByLocationID(zone, 133784696)
+
+if IsInCombat(Group1HWmanA) == false and Group1HWmanA ~= nil and IsAlive(Group1HWmanA) == true or IsAlive(Group1HWmanA) == false or Group1HWmanA == nil then
+ if IsInCombat(Group1HWmanB) == false and Group1HWmanB ~= nil and IsAlive(Group1HWmanB) == true or IsAlive(Group1HWmanB) == false or Group1HWmanB == nil then
+ if IsInCombat(Group1HWmanC) == false and Group1HWmanC ~= nil and IsAlive(Group1HWmanC) == true or IsAlive(Group1HWmanC) == false or Group1HWmanC == nil then
+ if IsInCombat(Group1HWmanD) == false and Group1HWmanD ~= nil and IsAlive(Group1HWmanD) == true or IsAlive(Group1HWmanD) == false or Group1HWmanD == nil then
+
+if IsInCombat(Group2HWmanA) == false and Group2HWmanA ~= nil and IsAlive(Group2HWmanA) == true or IsAlive(Group2HWmanA) == false or Group2HWmanA == nil then
+ if IsInCombat(Group2HWmanB) == false and Group2HWmanB ~= nil and IsAlive(Group2HWmanB) == true or IsAlive(Group2HWmanB) == false or Group2HWmanB == nil then
+ if IsInCombat(Group2HWmanC) == false and Group2HWmanC ~= nil and IsAlive(Group2HWmanC) == true or IsAlive(Group2HWmanC) == false or Group2HWmanC == nil then
+ if IsInCombat(Group2HWmanD) == false and Group2HWmanD ~= nil and IsAlive(Group2HWmanD) == true or IsAlive(Group2HWmanD) == false or Group2HWmanD == nil then
+
+if IsInCombat(Group3HWmanA) == false and Group3HWmanA ~= nil and IsAlive(Group3HWmanA) == true or IsAlive(Group3HWmanA) == false or Group3HWmanA == nil then
+ if IsInCombat(Group3HWmanB) == false and Group3HWmanB ~= nil and IsAlive(Group3HWmanB) == true or IsAlive(Group3HWmanB) == false or Group3HWmanB == nil then
+ if IsInCombat(Group3HWmanC) == false and Group3HWmanC ~= nil and IsAlive(Group3HWmanC) == true or IsAlive(Group3HWmanC) == false or Group3HWmanC == nil then
+ if IsInCombat(Group3HWmanD) == false and Group3HWmanD ~= nil and IsAlive(Group3HWmanD) == true or IsAlive(Group3HWmanD) == false or Group3HWmanD == nil then
+
+
+ LeavingCrouch(NPC)--STARTS DESPAWN
+ --LeavingCrouch(NPC,Spawn)
+
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+else
+AddTimer(NPC,300000,"AliveCheck")
+end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+else
+AddTimer(NPC,300000,"AliveCheck")
+end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+ else
+ AddTimer(NPC,300000,"AliveCheck")
+ end
+end
+end
+
+
+
+
+function LeavingCrouch(NPC) --DESPAWNING ANIMATIONS OF HIGHWAYMEN
+ local zone = GetZone(NPC)
+ local Group1HWmanA = GetSpawnByLocationID(zone, 133784689)
+ local Group1HWmanB = GetSpawnByLocationID(zone, 133784686)
+ local Group1HWmanC = GetSpawnByLocationID(zone, 133784687)
+ local Group1HWmanD = GetSpawnByLocationID(zone, 133784688)
+
+ local Group2HWmanA = GetSpawnByLocationID(zone, 133784693)
+ local Group2HWmanB = GetSpawnByLocationID(zone, 133784690)
+ local Group2HWmanC = GetSpawnByLocationID(zone, 133784691)
+ local Group2HWmanD = GetSpawnByLocationID(zone, 133784692)
+
+ local Group3HWmanA = GetSpawnByLocationID(zone, 133784697)
+ local Group3HWmanB = GetSpawnByLocationID(zone, 133784694)
+ local Group3HWmanC = GetSpawnByLocationID(zone, 133784695)
+ local Group3HWmanD = GetSpawnByLocationID(zone, 133784696)
+ if Group1HWmanA ~=nil then
+ CastSpell(Group1HWmanA,320022)
+ PlayFlavor(Group1HWmanA,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group1HWmanB ~=nil then
+ CastSpell(Group1HWmanB,320022)
+ PlayFlavor(Group1HWmanB,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group1HWmanC ~=nil then
+ CastSpell(Group1HWmanC,320022)
+ PlayFlavor(Group1HWmanC,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group1HWmanD ~=nil then
+ CastSpell(Group1HWmanD,320022)
+ PlayFlavor(Group1HWmanD,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group2HWmanA ~=nil then
+ CastSpell(Group2HWmanA,320022)
+ PlayFlavor(Group2HWmanA,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group2HWmanB ~=nil then
+ CastSpell(Group2HWmanB,320022)
+ PlayFlavor(Group2HWmanB,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group2HWmanC ~=nil then
+ CastSpell(Group2HWmanC,320022)
+ PlayFlavor(Group2HWmanC,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group2HWmanD ~=nil then
+ CastSpell(Group2HWmanD,320022)
+ PlayFlavor(Group2HWmanD,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group3HWmanA ~=nil then
+ CastSpell(Group3HWmanA,320022)
+ PlayFlavor(Group3HWmanA,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group3HWmanB ~=nil then
+ CastSpell(Group3HWmanB,320022)
+ PlayFlavor(Group3HWmanB,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group3HWmanC ~=nil then
+ CastSpell(Group3HWmanC,320022)
+ PlayFlavor(Group3HWmanC,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+ if Group3HWmanD ~=nil then
+ CastSpell(Group3HWmanD,320022)
+ PlayFlavor(Group3HWmanD,"","","duck",0,0)
+ AddTimer(NPC,2200,"Despawning")
+ end
+
+end
+
+
+function Despawning(NPC,Spawn) --DESPAWNING OF HIGHWAYMEN
+ local zone = GetZone(NPC)
+ local Group1HWmanA = GetSpawnByLocationID(zone, 133784689)
+ local Group1HWmanB = GetSpawnByLocationID(zone, 133784686)
+ local Group1HWmanC = GetSpawnByLocationID(zone, 133784687)
+ local Group1HWmanD = GetSpawnByLocationID(zone, 133784688)
+
+ local Group2HWmanA = GetSpawnByLocationID(zone, 133784693)
+ local Group2HWmanB = GetSpawnByLocationID(zone, 133784690)
+ local Group2HWmanC = GetSpawnByLocationID(zone, 133784691)
+ local Group2HWmanD = GetSpawnByLocationID(zone, 133784692)
+
+ local Group3HWmanA = GetSpawnByLocationID(zone, 133784697)
+ local Group3HWmanB = GetSpawnByLocationID(zone, 133784694)
+ local Group3HWmanC = GetSpawnByLocationID(zone, 133784695)
+ local Group3HWmanD = GetSpawnByLocationID(zone, 133784696)
+
+ if Group1HWmanA ~=nil then
+ Despawn(Group1HWmanA)
+ end
+ if Group1HWmanB ~=nil then
+ Despawn(Group1HWmanB)
+ end
+ if Group1HWmanC ~=nil then
+ Despawn(Group1HWmanC)
+ end
+ if Group1HWmanD ~=nil then
+ Despawn(Group1HWmanD)
+ end
+ if Group2HWmanA ~=nil then
+ Despawn(Group2HWmanA)
+ end
+ if Group2HWmanB ~=nil then
+ Despawn(Group2HWmanB)
+ end
+ if Group2HWmanC ~=nil then
+ Despawn(Group2HWmanC)
+ end
+ if Group2HWmanD ~=nil then
+ Despawn(Group2HWmanD)
+ end
+ if Group3HWmanA ~=nil then
+ Despawn(Group3HWmanA)
+ end
+ if Group3HWmanB ~=nil then
+ Despawn(Group3HWmanB)
+ end
+ if Group3HWmanC ~=nil then
+ Despawn(Group3HWmanC)
+ end
+ if Group3HWmanD ~=nil then
+ Despawn(Group3HWmanD)
+ end
+ AddTimer(NPC,2000,"FinalDespawn")
+end
+
+function FinalDespawn(NPC)
+ local zone = GetZone(NPC)
+if GetSpawnByLocationID(zone, 133784683) ~= nil then
+Despawn(GetSpawnByLocationID(zone, 133784683))
+end
+if GetSpawnByLocationID(zone, 133784684) ~= nil then
+Despawn(GetSpawnByLocationID(zone, 133784684))
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/HighwaymanHighMagic.lua b/server/SpawnScripts/Antonica/HighwaymanHighMagic.lua
index f2bbf4757..11e5f9784 100755
--- a/server/SpawnScripts/Antonica/HighwaymanHighMagic.lua
+++ b/server/SpawnScripts/Antonica/HighwaymanHighMagic.lua
@@ -5,45 +5,19 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1315
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+ human(NPC)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
-function death(NPC, Spawn)
-if GetRace(NPC) == 6 and GetGender(NPC) == 1 then -- HALF ELF MALE
-PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn)
-end
-end
-
-function aggro(NPC, Spawn)
-if GetRace(NPC) == 6 and GetGender(NPC) == 1 then -- HALF ELF MALE
-PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618, Spawn)
-end
-end
function respawn(NPC)
spawn(NPC)
diff --git a/server/SpawnScripts/Antonica/HighwaymanHighMelee.lua b/server/SpawnScripts/Antonica/HighwaymanHighMelee.lua
index b0f5da39a..a6f365bdc 100755
--- a/server/SpawnScripts/Antonica/HighwaymanHighMelee.lua
+++ b/server/SpawnScripts/Antonica/HighwaymanHighMelee.lua
@@ -5,43 +5,13 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1290
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1930
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-end
-
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-function death(NPC, Spawn)
-if GetRace(NPC) == 6 and GetGender(NPC) == 1 then -- HALF ELF MALE
-PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn)
-end
-end
-
-function aggro(NPC, Spawn)
-if GetRace(NPC) == 6 and GetGender(NPC) == 1 then -- HALF ELF MALE
-PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618, Spawn)
-end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+ barbarian(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/HistorianRotpaw.lua b/server/SpawnScripts/Antonica/HistorianRotpaw.lua
new file mode 100755
index 000000000..96ebded7b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/HistorianRotpaw.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/Antonica/HistorianRotpaw.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.17 05:05:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What is it you need? What can be so important as to interrupt my day?")
+ Dialog.AddVoiceover("voiceover/english/historian_rotpaw/antonica/historianrotpaw000.mp3", 3279676330, 2004493668)
+ Dialog.AddOption("I will leave you alone.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/HollyWindstalker.lua b/server/SpawnScripts/Antonica/HollyWindstalker.lua
index 449a00689..760a811f1 100755
--- a/server/SpawnScripts/Antonica/HollyWindstalker.lua
+++ b/server/SpawnScripts/Antonica/HollyWindstalker.lua
@@ -5,10 +5,15 @@
Script Date : 2019.01.15
Script Notes : Auto-Generated Conversation from PacketParser Data
Notes: Updated w/ Holly's 20+ min pathing script. 2022.08.26 Dorbin
+ Updated w/ autoattack damage. LordPazuzu 1/12/24
--]]
function spawn(NPC)
- waypoints(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ AddTimer(NPC, 10000, "waypoints")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/Hubbard.lua b/server/SpawnScripts/Antonica/Hubbard.lua
index 7a9ffef55..48cbf6b96 100755
--- a/server/SpawnScripts/Antonica/Hubbard.lua
+++ b/server/SpawnScripts/Antonica/Hubbard.lua
@@ -7,9 +7,11 @@
--]]
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/HwalRucksif.lua b/server/SpawnScripts/Antonica/HwalRucksif.lua
index 5b9044f4d..e501b8007 100755
--- a/server/SpawnScripts/Antonica/HwalRucksif.lua
+++ b/server/SpawnScripts/Antonica/HwalRucksif.lua
@@ -6,42 +6,76 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+local TheseBootsWereMadeFor = 5805 -- These Boots Were Made For QUEST ID
function spawn(NPC)
SetPlayerProximityFunction(NPC, 15, "InRange", "", Spawn)
-
+ ProvidesQuest(NPC, TheseBootsWereMadeFor)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-Dialog23(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+if HasQuest(Spawn,5766) and GetQuestStepProgress(Spawn,5766,6) == 0 then --WELCOME TO QEYNOS,CITIZEN
+ SetStepComplete(Spawn,5766,6)
end
+if not HasQuest(Spawn, TheseBootsWereMadeFor) or GetQuestStep(Spawn, TheseBootsWereMadeFor, 8) or GetQuestStep(Spawn, TheseBootsWereMadeFor, 10) or GetQuestStep(Spawn, TheseBootsWereMadeFor, 11) or GetQuestStep(Spawn, TheseBootsWereMadeFor, 12) or HasCompletedQuest(Spawn, TheseBootsWereMadeFor) then
+Dialog1(NPC, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 1 or GetQuestStep(Spawn, TheseBootsWereMadeFor) == 2 then
+PlayFlavor(NPC, "voiceover/english/hwal_rucksif/antonica/quest/quest_hwal_rucksif_need_materials_60f2a69b.mp3", "Got my material? Doesn't look like it.", "sigh", 1237617987, 3622122831, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 3 then
+Dialog2(NPC, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 4 or GetQuestStep(Spawn, TheseBootsWereMadeFor) == 5 or GetQuestStep(Spawn, TheseBootsWereMadeFor) == 6 then
+PlayFlavor(NPC, "voiceover/english/hwal_rucksif/antonica/quest/quest_hwal_rucksif_eitoa_components_6fc1205.mp3", "Come back when you've found the components for Captain Eitoa's sword.", "shrug", 438547110, 205957881, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 7 then
+Dialog7(NPC, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 9 then
+Dialog10(NPC, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 11 then
+Dialog16(NPC, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 16 then
+Dialog22(NPC, Spawn)
+end
+ end
+
function InRange(NPC, Spawn)
+if CanReceiveQuest(Spawn, TheseBootsWereMadeFor) then
PlayFlavor(NPC, "voiceover/english/hwal_rucksif/antonica/quest/quest_hwal_rucksif_callout_30d20c93.mp3", "Ho, there! You wouldn't mind helping out a hard working dwarf, would ya?", "hello", 596769271, 2784563151, Spawn)
+ end
end
function respawn(NPC)
spawn(NPC)
end
-
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Now, now, no need to be rude about it! They're quite a fine pair of dwarven boots! But I'll need something to replace 'em. Hah ha! I've got just the thing!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif021.mp3", 3908614762, 554555549)
- Dialog.AddOption("[groan] Why does this sound bad for me?", "Dialog11")
+ Dialog.AddDialog("Ya see, I've been tasked with gettin' a whole bunch of fine weapons made for the sentries out here, and me achin' back is already at its limit. Argh! These boots chafe something awful!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif002.mp3", 4019058614, 2305053500)
+ Dialog.AddEmote("hello")
+ if CanReceiveQuest(Spawn, TheseBootsWereMadeFor) then
+ Dialog.AddOption("I might be able to help you", "offer")
+ end
+ Dialog.AddOption("No thanks, I lost my work ethic a while back.")
Dialog.Start()
end
+function offer(NPC, Spawn)
+OfferQuest(NPC, Spawn, TheseBootsWereMadeFor)
+end
+
+
+
+
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("He's the quiet sort, doesn't really get out to bother anyone these days. Oh, sure, he used to be a real terror out here in Antonica, but he's gotten quiet in his old age. Spends most of his time moaning and groaning underneath that bard's tower.")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif016.mp3", 1645899542, 3940230430)
- Dialog.AddOption("I guess I'll see what I can do.", "Dialog26")
+ Dialog.AddDialog("Ahh, you're back! My now, that's a serious load of iron and wood!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif004.mp3", 1212942996, 3121543539)
+ Dialog.AddEmote("applaud")
+ Dialog.AddOption("Mmmffff! Take it, quick!", "Dialog3")
Dialog.Start()
end
@@ -50,83 +84,34 @@ function Dialog3(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Easy now! Don't go dropping it all over! I'll just have to pick it up later!")
Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif005.mp3", 2215806706, 569080202)
- Dialog.AddOption("It's heavy!", "Dialog24")
+ Dialog.AddEmote("boggle")
+ Dialog.AddOption("It's heavy!", "Dialog4")
Dialog.Start()
end
function Dialog4(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Oh, now where's the fun in that, eh? I suppose you're expecting some sort of reward. Adventurers are always thinking about what they get for helpin' someone. I think it's a law of nature!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif019.mp3", 2615861284, 4010544627)
- Dialog.AddOption("Well, it would be appreciated...", "Dialog19")
+ Dialog.AddDialog("Har har har! Don't tell me that! I have to do this all day long! The forge is a cruel mistress, but she rewards well!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif006.mp3", 342444773, 1889970866)
+ Dialog.AddEmote("chuckle")
+ Dialog.AddOption("I'll take some of that reward!", "Dialog5")
Dialog.Start()
end
function Dialog5(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Much thanks to ya, stranger! I'm not sure I could finish the job without your help! I need plenty of iron and wood for these weapons. It's a lot of work, but I'm sure that together we can get it done in half the time that it'd take me to do it alone!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif003.mp3", 584697893, 4066288386)
- Dialog.AddOption("It'd better be worth my time, dwarf.")
+ Dialog.AddDialog("I've got some coin for ya, but how about I enlist you to help with another task? What's that? Yes? Great!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif007.mp3", 2431845223, 2233032287)
+ Dialog.AddEmote("stare")
+ Dialog.AddOption("Obviously your back isn't the only thing that's going. ", "Dialog6")
+ Dialog.AddOption("Well, yes, I suppose I can help. ", "Dialog6")
Dialog.Start()
end
function Dialog6(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Now, now, that's no way to talk! Bring the stuff to Minty, and I'll give you my boots when you get back.")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif023.mp3", 1586655326, 3399089635)
- Dialog.AddOption("Fine, I guess there's not much I can say about that...")
- Dialog.Start()
-end
-
-function Dialog7(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Ahh, you're back! My now, that's a serious load of iron and wood!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif004.mp3", 1212942996, 3121543539)
- Dialog.AddOption("Mmmffff! Take it, quick!", "Dialog3")
- Dialog.Start()
-end
-
-function Dialog8(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Oh, so you've heard of the ol' Rucksif curse! Jolly good! I just need ya to totter off and see if ya can lay him to rest properly.")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif015.mp3", 1437826389, 2209485957)
- Dialog.AddOption("I've never heard of a ghost around here before...", "Dialog2")
- Dialog.Start()
-end
-
-function Dialog9(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Speaking of work, all this smithing is thirsty business! You wouldn't mind helping me curb a guilty pleasure, would you? Noooo, of course you wouldn't!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif010.mp3", 3100412846, 461623462)
- Dialog.AddOption("I'm almost afraid to ask...", "Dialog16")
- Dialog.Start()
-end
-
-function Dialog10(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Oh, I think you'll like the ol' Rucksif boots well enough, mark my words! It's been an honor knowing such a fine and upstanding adventurer. I'd shake your hand, but I'm afraid mine's all sooty.")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif025.mp3", 1217158698, 2375616433)
- Dialog.AddOption("These are... really... err... amazing boots!")
- Dialog.Start()
-end
-
-function Dialog11(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Buck up! It's only a quick thing! I needed a new pair o' boots anyway! A good friend of mine, Minty Frostbeard, is likely the finest Dwarven tailor you'll ever meet. She gave me a list of things to gather a while back, but I haven't gotten around to it.")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif022.mp3", 3066848429, 3653191715)
- Dialog.AddOption("I'm not sure I like where this is going...", "Dialog6")
- Dialog.Start()
-end
-
-function Dialog12(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 3)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("The captain of the guards requested I forge a rather special sword, and I'm having a slight problem finding the materials I need. That's a dandy little book you've got there; I'll just write down what I need.")
@@ -135,34 +120,27 @@ function Dialog12(NPC, Spawn)
Dialog.Start()
end
-function Dialog13(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Whoa, and here I thought you might have some trouble!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif018.mp3", 732409035, 4138837447)
- Dialog.AddOption("You know, you really could have warned me that he'd put up a fight.", "Dialog4")
- Dialog.Start()
-end
-function Dialog14(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Ya see, I've been tasked with gettin' a whole bunch of fine weapons made for the sentries out here, and me achin' back is already at its limit. Argh! These boots chafe something awful!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif002.mp3", 4019058614, 2305053500)
- Dialog.AddOption("No thanks, I lost my work ethic a while back.")
- Dialog.Start()
-end
-
-function Dialog15(NPC, Spawn)
+function Dialog7(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Very nice, indeed! These samples will make a wonderful sword. I'm sure that Eitoa will be pleased once I get a chance to make it for her.")
Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif009.mp3", 612576791, 3127535606)
- Dialog.AddOption("I hope so, that was a lot of work.", "Dialog9")
+ Dialog.AddOption("I hope so, that was a lot of work.", "Dialog8")
Dialog.Start()
end
-function Dialog16(NPC, Spawn)
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Speaking of work, all this smithing is thirsty business! You wouldn't mind helping me curb a guilty pleasure, would you? Noooo, of course you wouldn't!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif010.mp3", 3100412846, 461623462)
+ Dialog.AddOption("I'm almost afraid to ask...", "Dialog9")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 7)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Don't be! It's not traditional, and it's hard to come by, but I could really go for a Blackburrow Stout! Now, back to the forge!")
@@ -171,91 +149,58 @@ function Dialog16(NPC, Spawn)
Dialog.Start()
end
-function Dialog17(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Much thanks to ya, stranger! I'm not sure I could finish the job without your help! I need plenty of iron and wood for these weapons. It's a lot of work, but I'm sure that together we can get it done in half the time that it'd take me to do it alone!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif003.mp3", 584697893, 4066288386)
- Dialog.AddOption("Happy to help out with this.")
- Dialog.Start()
-end
-function Dialog18(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("You've been trustworthy thus far. I think you'd be perfect to help me out with my dear old granddad.")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif013.mp3", 50142058, 1032335681)
- Dialog.AddOption("Oh no, I draw the line at convalescent care!", "Dialog21")
- Dialog.Start()
-end
-
-function Dialog19(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I don't have much, just the boots on my feet ... and my forge of course. I'm not givin' up my forge, ya hear!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif020.mp3", 2118687776, 743391925)
- Dialog.AddOption("So the only thing you have left is your set of old, smelly boots?", "Dialog1")
- Dialog.Start()
-end
-
-function Dialog20(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Ya see, I've been tasked with gettin' a whole bunch of fine weapons made for the sentries out here, and me achin' back is already at its limit. Argh! These boots chafe something awful!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif002.mp3", 4019058614, 2305053500)
- Dialog.AddOption("I might be able to help you.", "Dialog5")
- Dialog.AddOption("No thanks, I lost my work ethic a while back.")
- Dialog.Start()
-end
-
-function Dialog21(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Don't be silly. He's been dead for more than a century! But ... well ... ya see... there's this family curse that goes back every other generation for the past ... oh Ro's flame, I don't know how many years, but a long dang time!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif014.mp3", 2209750474, 3589103244)
- Dialog.AddOption("Now you're going to tell me he's some sort of ghost?", "Dialog8")
- Dialog.Start()
-end
-
-function Dialog22(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I've got some coin for ya, but how about I enlist you to help with another task? What's that? Yes? Great!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif007.mp3", 2431845223, 2233032287)
- Dialog.AddOption("Obviously your back isn't the only thing that's going. ", "Dialog12")
- Dialog.AddOption("Well, yes, I suppose I can help. ", "Dialog12")
- Dialog.Start()
-end
-
-function Dialog23(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Ahh, too much to do here! There's no way I can get it all done!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif001.mp3", 3472595051, 2956823529)
- Dialog.AddOption("Anything I can help with?","Dialog20")
- Dialog.AddOption("All right.")
- Dialog.Start()
-end
-
-function Dialog24(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Har har har! Don't tell me that! I have to do this all day long! The forge is a cruel mistress, but she rewards well!")
- Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif006.mp3", 342444773, 1889970866)
- Dialog.AddOption("I'll take some of that reward!", "Dialog22")
- Dialog.Start()
-end
-
-function Dialog25(NPC, Spawn)
+function Dialog10(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Well done! Nothing hits the spot like a good keg o' the Stout!")
Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif012.mp3", 4272911909, 2566231204)
- Dialog.AddOption("If you say so... I wouldn't touch that gnoll-filth with a ten foot polearm!", "Dialog18")
+ Dialog.AddEmote("applaud")
+ Dialog.AddOption("If you say so... I wouldn't touch that gnoll-filth with a ten foot polearm!", "Dialog11")
Dialog.Start()
end
-function Dialog26(NPC, Spawn)
+
+function Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You've been trustworthy thus far. I think you'd be perfect to help me out with my dear old granddad.")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif013.mp3", 50142058, 1032335681)
+ Dialog.AddOption("Oh no, I draw the line at convalescent care!", "Dialog12")
+ Dialog.Start()
+end
+
+
+function Dialog12(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Don't be silly. He's been dead for more than a century! But ... well ... ya see... there's this family curse that goes back every other generation for the past ... oh Ro's flame, I don't know how many years, but a long dang time!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif014.mp3", 2209750474, 3589103244)
+ Dialog.AddOption("Now you're going to tell me he's some sort of ghost?", "Dialog13")
+ Dialog.Start()
+end
+
+function Dialog13(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, so you've heard of the ol' Rucksif curse! Jolly good! I just need ya to totter off and see if ya can lay him to rest properly.")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif015.mp3", 1437826389, 2209485957)
+ Dialog.AddOption("I've never heard of a ghost around here before...", "Dialog14")
+ Dialog.Start()
+end
+
+
+function Dialog14(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("He's the quiet sort, doesn't really get out to bother anyone these days. Oh, sure, he used to be a real terror out here in Antonica, but he's gotten quiet in his old age. Spends most of his time moaning and groaning underneath that bard's tower.")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif016.mp3", 1645899542, 3940230430)
+ Dialog.AddOption("I guess I'll see what I can do.", "Dialog15")
+ Dialog.Start()
+end
+
+function Dialog15(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 9)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("That's the spirit! Give him my best. Brell guide his path!")
@@ -264,12 +209,81 @@ function Dialog26(NPC, Spawn)
Dialog.Start()
end
-function Dialog27(NPC, Spawn)
+function Dialog16(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Whoa, and here I thought you might have some trouble!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif018.mp3", 732409035, 4138837447)
+ Dialog.AddOption("You know, you really could have warned me that he'd put up a fight.", "Dialog17")
+ Dialog.Start()
+end
+
+function Dialog17(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, now where's the fun in that, eh? I suppose you're expecting some sort of reward. Adventurers are always thinking about what they get for helpin' someone. I think it's a law of nature!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif019.mp3", 2615861284, 4010544627)
+ Dialog.AddOption("Well, it would be appreciated...", "Dialog18")
+ Dialog.Start()
+end
+
+
+function Dialog18(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I don't have much, just the boots on my feet ... and my forge of course. I'm not givin' up my forge, ya hear!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif020.mp3", 2118687776, 743391925)
+ Dialog.AddOption("So the only thing you have left is your set of old, smelly boots?", "Dialog19")
+ Dialog.Start()
+end
+
+function Dialog19(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Now, now, no need to be rude about it! They're quite a fine pair of dwarven boots! But I'll need something to replace 'em. Hah ha! I've got just the thing!")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif021.mp3", 3908614762, 554555549)
+ Dialog.AddOption("[groan] Why does this sound bad for me?", "Dialog20")
+ Dialog.Start()
+end
+
+
+function Dialog20(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Buck up! It's only a quick thing! I needed a new pair o' boots anyway! A good friend of mine, Minty Frostbeard, is likely the finest Dwarven tailor you'll ever meet. She gave me a list of things to gather a while back, but I haven't gotten around to it.")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif022.mp3", 3066848429, 3653191715)
+ Dialog.AddOption("I'm not sure I like where this is going...", "Dialog21")
+ Dialog.Start()
+end
+
+function Dialog21(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 11)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Now, now, that's no way to talk! Bring the stuff to Minty, and I'll give you my boots when you get back.")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif023.mp3", 1586655326, 3399089635)
+ Dialog.AddOption("Fine, I guess there's not much I can say about that...")
+ Dialog.Start()
+end
+
+function Dialog22(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Ahh, well done! I trust Minty is well? These boots are a testament to her prowess with the needle!")
Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif024.mp3", 746062436, 1532463336)
- Dialog.AddOption("Should have kept those for myself!", "Dialog10")
+ Dialog.AddOption("Should have kept those for myself!", "Dialog23")
Dialog.Start()
end
+
+function Dialog23(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 16)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, I think you'll like the ol' Rucksif boots well enough, mark my words! It's been an honor knowing such a fine and upstanding adventurer. I'd shake your hand, but I'm afraid mine's all sooty.")
+ Dialog.AddVoiceover("voiceover/english/hwal_rucksif/antonica/hwal_rucksif025.mp3", 1217158698, 2375616433)
+ Dialog.AddOption("These are... really... err... amazing boots!")
+ Dialog.Start()
+end
+
+
diff --git a/server/SpawnScripts/Antonica/IgnarSteadirt.lua b/server/SpawnScripts/Antonica/IgnarSteadirt.lua
index f1c06fbaa..940753970 100755
--- a/server/SpawnScripts/Antonica/IgnarSteadirt.lua
+++ b/server/SpawnScripts/Antonica/IgnarSteadirt.lua
@@ -5,6 +5,7 @@
Script Date : 08/29/2019
Script Notes : Voiceovers added - 6/10/2022 Dorbin
--]]
+require "SpawnScripts/Generic/DialogModule"
local LordGrimrotsScythe = 5522
@@ -38,186 +39,216 @@ function hailed(NPC, Spawn)
end
function Option0(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_001.mp3", "", "", 3940456845, 1439505698, Spawn)
- AddConversationOption(conversation, "Is that why you are here?", "Option1")
- AddConversationOption(conversation, "Well, not me. At least, not right now.", "refuse")
- StartConversation(conversation, NPC, Spawn, "The great Qeynos Claymore -- folks come from all over to pray here.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The great Qeynos Claymore -- folks come from all over to pray here.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_001.mp3", 3940456845, 1439505698)
+ Dialog.AddOption("Is that why you are here?", "Option1")
+ Dialog.AddOption("Well, not me. At least, not right now.","refuse")
+ Dialog.Start()
end
function Reports_Progress(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_020.mp3", "", "", 3807663927, 1877102207, Spawn)
- local conversation = CreateConversation()
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Got all three reports for me, eh?")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_020.mp3", 3807663927, 1877102207)
if GetQuestStep(Spawn, LordGrimrotsScythe) == 4 or GetQuestStep(Spawn, LordGrimrotsScythe) == 5 then
- AddConversationOption(conversation, "Yes, I've spoken with your three knights.", "Option5")
- end
- AddConversationOption(conversation, "Not yet, I'll be back when I've spoken to all three knights.")
- StartConversation(conversation, NPC, Spawn, "Got all three reports for me, eh?")
+ Dialog.AddOption("Yes, I've spoken with your three knights.", "Option5")
+ end
+ Dialog.AddOption("Not yet, I'll be back when I've spoken to all three knights.")
+ Dialog.Start()
end
function Reports_Progress2(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_018.mp3", "", "", 831646540, 4011481449, Spawn)
- AddConversationOption(conversation, "I fought the Sabertooth rune casters, but found only part of Lord Grimrot's war scythe.", "Option10")
- AddConversationOption(conversation, "Not yet. I will return when I've done as you asked.")
- StartConversation(conversation, NPC, Spawn, "What news do you have? And speak up, will you? I can barely hear you with all the noise around this monument!")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What news do you have? And speak up, will you? I can barely hear you with all the noise around this monument!")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_018.mp3", 831646540, 4011481449)
+ PlayFlavor(NPC, "", "", "listen", 0, 0, Spawn)
+ Dialog.AddOption("I fought the Sabertooth rune casters, but found only part of Lord Grimrot's war scythe.", "Option10")
+ Dialog.AddOption("Not yet. I will return when I've done as you asked.")
+ Dialog.Start()
end
function Reports_Progress3(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_019.mp3", "", "", 4267108172, 3030270970, Spawn)
- if GetQuestStep(Spawn, LordGrimrotsScythe) == 8 then
- AddConversationOption(conversation, "I found the remaining piece of Lord Grimrot's scythe.", "Option13")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes? Oh, it's you again! Have you gotten the final piece of the scythe?")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_019.mp3", 4267108172, 3030270970)
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn)
+ if GetQuestStep(Spawn, LordGrimrotsScythe) == 8 then
+ Dialog.AddOption("I found the remaining piece of Lord Grimrot's scythe.", "Option13")
end
- AddConversationOption(conversation, "Not yet. I will continue the fight!")
- StartConversation(conversation, NPC, Spawn, "Yes? Oh, it's you again! Have you gotten the final piece of the scythe?")
+ Dialog.AddOption("Not yet. I will continue the fight!")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_002.mp3", "", "", 2644345501, 1145343451, Spawn)
- AddConversationOption(conversation, "Who are your enemies?", "Option2")
- StartConversation(conversation, NPC, Spawn, "I came here seeking strength to defeat my enemies.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I came here seeking strength to defeat my enemies.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_002.mp3", 2644345501, 1145343451)
+ Dialog.AddOption("Who are your enemies?", "Option2")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_003.mp3", "", "", 714312882, 209965713, Spawn)
- AddConversationOption(conversation, "Do you need help?", "Option3")
- AddConversationOption(conversation, "Wish I had time to help. Perhaps later.", "refuse2")
- StartConversation(conversation, NPC, Spawn, "I pray for the strength to conquer the undead, but they are not just my enemies; the undead are the enemies of us all. Several days ago, patrols were sent to see how our battle against the undead was faring. And I -- I have the most disagreeable task of all. I have to stand here and wait for the reports to return. Me! Standing around waiting when there's undead to cleave! Pah!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I pray for the strength to conquer the undead, but they are not just my enemies; the undead are the enemies of us all. Several days ago, patrols were sent to see how our battle against the undead was faring. And I -- I have the most disagreeable task of all. I have to stand here and wait for the reports to return. Me! Standing around waiting when there's undead to cleave! Pah!")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_003.mp3", 714312882, 209965713)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("Do you need help?", "Option3")
+ Dialog.AddOption("Wish I had time to help. Perhaps later.","refuse2")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_004.mp3", "", "", 1571069760, 2691480931, Spawn)
- AddConversationOption(conversation, "I could be persuaded.", "Option4")
- AddConversationOption(conversation, "No, I'd rather not.")
- StartConversation(conversation, NPC, Spawn, "That's why I'm praying. Perhaps my prayers have been answered. Are you here to help me?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's why I'm praying. Perhaps my prayers have been answered. Are you here to help me?")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_004.mp3", 1571069760, 2691480931)
+ Dialog.AddOption("I could be persuaded.", "Option4")
+ Dialog.AddOption("No, I'd rather not.","refuse1")
+ Dialog.Start()
end
function Option4(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_005.mp3", "", "", 346565467, 222391193, Spawn)
- AddConversationOption(conversation, "Start what?", "offer")
- AddConversationOption(conversation, "No, not right now.", "refuse3")
- StartConversation(conversation, NPC, Spawn, "Excellent. Are you ready to start?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Excellent. Are you ready to start?")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_005.mp3", 346565467, 222391193)
+ Dialog.AddOption("Start what?", "offer")
+ Dialog.AddOption("No, not right now.","refuse1")
+ Dialog.Start()
end
function Option5(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_007.mp3", "", "", 2410599990, 3294676277, Spawn)
- if GetQuestStep(Spawn, LordGrimrotsScythe) == 4 then
- AddConversationOption(conversation, "The gnolls have Lord Grimrot's war scythe and are using it to resurrect him for a new undead battle against Qeynos.", "Option7")
- AddConversationOption(conversation, "Morte's a human! You didn't tell me that!", "Option6")
- end
- AddConversationOption(conversation, "I'll be right back.")
- StartConversation(conversation, NPC, Spawn, "Anything interesting? The last reports were hardly worth waiting for, but a good soldier never lets his guard down -- ever!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Anything interesting? The last reports were hardly worth waiting for, but a good soldier never lets his guard down -- ever!")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_007.mp3", 2410599990, 3294676277)
+ if GetQuestStep(Spawn, LordGrimrotsScythe) == 4 then
+ Dialog.AddOption("The gnolls have Lord Grimrot's war scythe and are using it to resurrect him for a new undead battle against Qeynos.", "Option7")
+ Dialog.AddOption("Morte's a human! You didn't tell me that!", "Option6")
+ end
+ Dialog.AddOption("I'll be right back.")
+ Dialog.Start()
end
function Option6(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I have the reports, before I forget to tell you.", "Option5")
- AddConversationOption(conversation, "I suppose so.")
- StartConversation(conversation, NPC, Spawn, "Ah, yes, Morte. He's a good lad, if a bit addled. He really wants to become a blacksmith, but I hate to tell him ... he's already too old for anyone to take him on as an apprentice. Still, it's good for us to have our dreams, isn't it? He dreams of fire and tongs, while I dream of returning to battle.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, yes, Morte. He's a good lad, if a bit addled. He really wants to become a blacksmith, but I hate to tell him ... he's already too old for anyone to take him on as an apprentice. Still, it's good for us to have our dreams, isn't it? He dreams of fire and tongs, while I dream of returning to battle.")
+ Dialog.AddOption("I have the reports, before I forget to tell you.", "Option5")
+ Dialog.AddOption("I suppose so.")
+ Dialog.Start()
end
function Option7(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_008.mp3", "", "boggle", 4075114721, 1890413048, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "What can I do to help you?", "Option8")
- AddConversationOption(conversation, "I'll have to continue this later.")
- StartConversation(conversation, NPC, Spawn, "What!? Lord Grimrot? It can't be ... Pestilence -- that's his war scythe, found after all these years? I never credited the gnolls with having any brains, and this proves it! If they go through with this, it could mean another War of Plagues!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What!? Lord Grimrot? It can't be ... Pestilence -- that's his war scythe, found after all these years? I never credited the gnolls with having any brains, and this proves it! If they go through with this, it could mean another War of Plagues!")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_008.mp3", 4075114721, 1890413048)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("What can I do to help you?", "Option8")
+ Dialog.AddOption("I'll have to continue this later.")
+ Dialog.Start()
end
function Option8(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_009.mp3", "", "shakefist", 1966007191, 2165025805, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I'll destroy the scythe.", "Option9")
- StartConversation(conversation, NPC, Spawn, "We must get that scythe at any cost. A large-scale invasion won't do us any good; they might just try to hurry up whatever it is they're doing. No, we've got to get a small force to find Pestilence and destroy it. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("We must get that scythe at any cost. A large-scale invasion won't do us any good; they might just try to hurry up whatever it is they're doing. No, we've got to get a small force to find Pestilence and destroy it. ")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_009.mp3", 1966007191, 2165025805)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+ Dialog.AddOption("I'll destroy the scythe.", "Option9")
+ Dialog.Start()
end
function Option9(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_011.mp3", "", "", 2337997349, 1621243577, Spawn)
SetStepComplete(Spawn, LordGrimrotsScythe, 4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You might want to bring along some trusted companions, for I'm sure the gnolls will have this thing hidden -- from each other, as well as from outsiders like us! If they're trying to do some fancy spellwork, their rune casters will be involved. Watch for their guards too.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_011.mp3", 2337997349, 1621243577)
PlayAnimation(NPC, 121)
- AddConversationOption(conversation, "Don't worry -- I will be back.")
- StartConversation(conversation, NPC, Spawn, "You might want to bring along some trusted companions, for I'm sure the gnolls will have this thing hidden -- from each other, as well as from outsiders like us! If they're trying to do some fancy spellwork, their rune casters will be involved. Watch for their guards too.")
+ Dialog.AddOption("Don't worry -- I will be back.")
+ Dialog.Start()
end
function Option10(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_012.mp3", "", "", 3015059264, 2600919408, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "So I need to find the other part with the Darkpaws?", "Option11")
- StartConversation(conversation, NPC, Spawn, "I wonder whether each group has a piece of the scythe ... that might explain their sudden cooperation:An uneasy truce until they unleash Lord Grimrot. I'll bet they need each other to get this to work. And you know this actually ties in with the last reports, of those Darkpaws and Sabertooth gnolls suddenly getting friendly toward each other.")
-end
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I wonder whether each group has a piece of the scythe ... that might explain their sudden cooperation:An uneasy truce until they unleash Lord Grimrot. I'll bet they need each other to get this to work. And you know this actually ties in with the last reports, of those Darkpaws and Sabertooth gnolls suddenly getting friendly toward each other.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_012.mp3", 3015059264, 2600919408)
+ Dialog.AddOption("So I need to find the other part with the Darkpaws?", "Option11")
+ Dialog.Start()end
function Option11(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_013.mp3", "", "", 57458037, 1125197577, Spawn)
- AddConversationOption(conversation, "And then...?", "Option12")
- StartConversation(conversation, NPC, Spawn, "It looks that way, my friend. Just as the Sabertooth gnolls protect their rune casters, so do the Darkpaws. A small group is the best way to achieve success. And then...")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It looks that way, my friend. Just as the Sabertooth gnolls protect their rune casters, so do the Darkpaws. A small group is the best way to achieve success. And then...")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_013.mp3", 57458037, 1125197577)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("And then...?", "Option12")
+ Dialog.Start()
end
function Option12(NPC, Spawn)
SetStepComplete(Spawn, LordGrimrotsScythe, 6)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_014.mp3", "", "", 466957863, 1448898790, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "...haunt us. Yes, I know. I'll take care of the scythe.")
- StartConversation(conversation, NPC, Spawn, "And then, well, we'll have stopped them, won't we? Anyway, it's best to take things one step at a time. We'll deal with what comes after we destroy the entire scythe -- if there is anything, mind you. The undead have a way of coming back to ... well, you know...")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("And then, well, we'll have stopped them, won't we? Anyway, it's best to take things one step at a time. We'll deal with what comes after we destroy the entire scythe -- if there is anything, mind you. The undead have a way of coming back to ... well, you know...")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_014.mp3", 466957863, 1448898790)
+ Dialog.AddOption("...haunt us. Yes, I know. I'll take care of the scythe.")
+ Dialog.Start()
end
function Option13(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_015.mp3", "", "", 2386335568, 649326615, Spawn)
- AddConversationOption(conversation, "Well...no, I'm not sure.", "Option14")
- StartConversation(conversation, NPC, Spawn, "That's one less thing for me to worry about. Thank you! The undead continue to stir, though, which disturbs me. You're sure you destroyed all pieces of Pestilence?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's one less thing for me to worry about. Thank you! The undead continue to stir, though, which disturbs me. You're sure you destroyed all pieces of Pestilence?")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_015.mp3", 2386335568, 649326615)
+ Dialog.AddOption("Of course.", "Option14")
+ Dialog.AddOption("Well...no, I'm not sure.", "Option14")
+ Dialog.Start()
end
function Option14(NPC, Spawn)
SetStepComplete(Spawn, LordGrimrotsScythe, 8)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_016.mp3", "", "", 2368455288, 1132389514, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I'll take a look.")
- StartConversation(conversation, NPC, Spawn, "Either way, there's no denying that the undead are restless over in Firemyst Gully -- that's where untold numbers of 'em were buried in the War of Plagues. In fact, maybe you could go over and see if the dwarven centurion at the Firemyst gate needs anything. I'm afraid my lot is to stay here. Go find glory in battle, farewell.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Either way, there's no denying that the undead are restless over in Firemyst Gully -- that's where untold numbers of 'em were buried in the War of Plagues. In fact, maybe you could go over and see if the dwarven centurion at the Firemyst gate needs anything. I'm afraid my lot is to stay here. Go find glory in battle, farewell.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quests/firemyst/ignar_steadirt_016.mp3", 2368455288, 1132389514)
+ Dialog.AddOption("I'll take a look.")
+ Dialog.Start()
end
-
-
function Quest_Completed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayAnimation(NPC, 121)
- AddConversationOption(conversation, "Farewell.")
- StartConversation(conversation, NPC, Spawn, "I keep telling myself this is an important part of the battle -- to stay here and gather data. Ah, well. I appreciate your visits.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I keep telling myself this is an important part of the battle -- to stay here and gather data. Ah, well. I appreciate your visits.")
+ PlayFlavor(NPC,"","","nod", 0, 0,Spawn)
+ Dialog.AddOption("Farewell.")
+ Dialog.Start()
end
-
function refuse1(NPC, Spawn)
-PlayFlavor(NPC, "voiceover/english/ignar_steadirt/antonica/quest/045_dwarf_ignar_steadirt_g1_shame_b6fbc6ba.mp3", "That is a shame. Please leave me to my prayers.", "", 2730895874, 3053314534, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That is a shame. Please leave me to my prayers.")
+ Dialog.AddVoiceover("voiceover/english/ignar_steadirt/antonica/quest/045_dwarf_ignar_steadirt_g1_shame_b6fbc6ba.mp3", 2730895874, 3053314534)
+ Dialog.AddOption("Farewell.")
+ Dialog.Start()
end
function refuse2(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/JolinaFairfeathersGravestone.lua b/server/SpawnScripts/Antonica/JolinaFairfeathersGravestone.lua
new file mode 100755
index 000000000..29a0f578b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/JolinaFairfeathersGravestone.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/Antonica/JolinaFairfeathersGravestone.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.13 06:05:58
+ Script Purpose :
+ :
+--]]
+quest = 5816
+
+
+function casted_on(NPC, Player, Message)
+ if Message == "inspect" then
+ conversation = CreateConversation()
+if CanReceiveQuest(Player,quest) then
+AddConversationOption(conversation, "Brush off the gravestone and read the inscription.","Inscription")
+AddConversationOption(conversation, "Leave the gravestone.")
+StartDialogConversation(conversation, 1, NPC, Player, "You see a gravestone heavily covered in dust and grime. Underneath the dirt you can barely make out an inscription.")
+else
+AddConversationOption(conversation, "Leave the gravestone.")
+StartDialogConversation(conversation, 1, NPC, Player, "\"Here lies Jolina Fairfeather. Loving wife and mother. And a lover of nature. She was robbed and killed by highwaymen for nothing more than a bag of seeds and a loaf of bread.\"")
+end
+end
+end
+
+function Inscription(NPC, Player)
+conversation = CreateConversation()
+AddConversationOption(conversation, "I will bring the highwaymen to justice!","QuestStart")
+AddConversationOption(conversation, "Leave the gravestone.")
+StartDialogConversation(conversation, 1, NPC, Player, "After clearing some of the dirt from the gravestone with your hand you read: \n\n\"Here lies Jolina Fairfeather. Loving wife and mother. And a lover of nature. She was robbed and killed by highwaymen for nothing more than a bag of seeds and a loaf of bread.\"")
+end
+
+function QuestStart(NPC,Player)
+ CloseConversation(NPC,Player)
+ OfferQuest(NPC, Player, quest)
+end
+
diff --git a/server/SpawnScripts/Antonica/KinamerGalemaul.lua b/server/SpawnScripts/Antonica/KinamerGalemaul.lua
index 3125505c9..7eb38aeac 100755
--- a/server/SpawnScripts/Antonica/KinamerGalemaul.lua
+++ b/server/SpawnScripts/Antonica/KinamerGalemaul.lua
@@ -5,12 +5,14 @@
Script Date : 08.05.2022
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local DoesTheUnderforgeExist = 5518
function spawn(NPC)
ProvidesQuest(NPC, DoesTheUnderforgeExist)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
@@ -19,55 +21,64 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/kinamer_galemaul/antonica/kinamergalemaul000.mp3", "", "", 165936049, 625468658, Spawn)
- conversation = CreateConversation()
- if not HasQuest(Spawn, DoesTheUnderforgeExist) and not HasCompletedQuest(Spawn, DoesTheUnderforgeExist) then
- AddConversationOption(conversation, "You look like you have an interesting style of blacksmithing.", "Option1")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Keep clear of the forge, my friend. The metal is hot and my hammer swings where it will!")
+ Dialog.AddVoiceover("voiceover/english/kinamer_galemaul/antonica/kinamergalemaul000.mp3", 165936049, 625468658)
+ if CanReceiveQuest(Spawn, DoesTheUnderforgeExist) then
+ Dialog.AddOption("You look like you have an interesting style of blacksmithing.", "Option1")
elseif GetQuestStep(Spawn, DoesTheUnderforgeExist) == 2 then
- AddConversationOption(conversation, "Kinamer, the Underforge is real! It isn't as impressive as legend makes it, but it does exist.", "Option4")
+ Dialog.AddOption("Kinamer, the Underforge is real! It isn't as impressive as legend makes it, but it does exist.", "Dialog1")
end
- AddConversationOption(conversation, "I think I'll play it safe and stay back here.")
- StartConversation(conversation, NPC, Spawn, "Keep clear of the forge, my friend. The metal is hot and my hammer swings where it will!")
+ Dialog.AddOption("I think I'll play it safe and stay back here. ")
+ Dialog.Start()
end
-
-
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/kinamer_galemaul/antonica/kinamergalemaul001.mp3", "", "", 2027558019, 1718672799)
- conversation = CreateConversation()
- AddConversationOption(conversation, "What is wrong with the tools?", "Option2")
- AddConversationOption(conversation, "I'm sorry to hear that. I guess I should look elsewhere for my repairs.")
- StartConversation(conversation, NPC, Spawn, "Aye! Some think I'm dangerous in my old age, but I get the job done. I never retired, you know. Blacksmithing is in my blood... I gotta work now and then, keeps me young. Ach! But these worthless tools ... they make me mad as a wet cat!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye! Some think I'm dangerous in my old age, but I get the job done. I never retired, you know. Blacksmithing is in my blood... I gotta work now and then, keeps me young. Ach! But these worthless tools ... they make me mad as a wet cat!")
+ Dialog.AddVoiceover("voiceover/english/kinamer_galemaul/antonica/kinamergalemaul001.mp3", 2027558019, 1718672799)
+ PlayFlavor(NPC, "", "", "nod", 0, 0,Spawn)
+ Dialog.AddOption("What is wrong with the tools?", "Option2")
+ Dialog.AddOption("I'm sorry to hear that. I guess I should look elsewhere for my repairs.")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/kinamer_galemaul/antonica/kinamergalemaul002.mp3", "", "", 1072576802, 3460847281, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "What is a smithy?", "Option3")
- StartConversation(conversation, NPC, Spawn, "Oh, nothing's wrong with them, I suppose. It's just ... they're not the beloved tools I left behind in Kaladim. Back then, we dwarves knew how to make tools. Not like today. If only I had a smithy like the one in that fabled Stormhold, I would never retire!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, nothing's wrong with them, I suppose. It's just ... they're not the beloved tools I left behind in Kaladim. Back then, we dwarves knew how to make tools. Not like today. If only I had a smithy like the one in that fabled Stormhold, I would never retire!")
+ Dialog.AddVoiceover("voiceover/english/kinamer_galemaul/antonica/kinamergalemaul002.mp3", 1072576802, 3460847281)
+ PlayFlavor(NPC, "", "", "no", 0, 0,Spawn)
+ Dialog.AddOption("What is a smithy?", "Option3")
+ Dialog.AddOption("Well, good luck with that!")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/kinamer_galemaul/antonica/kinamergalemaul003.mp3", "", "", 4028492463, 2669208994, Spawn)
- AddConversationOption(conversation, "If the legend turns out to be true, I'll let you know.", "offer")
- AddConversationOption(conversation, "If I found such a thing I certainly wouldn't tell you.")
- StartConversation(conversation, NPC, Spawn, "Why, a smithy is the workshop of a blacksmith! And Stormhold -- the legendary fortress of the Knights of Thunder -- had the greatest smithy outside Kaladim! Underforge it was called. It produced all the arms and armor, and kept the Knights' horses shod. Say ... you've heard the rumors, haven't you? Some rapscallion crypt raiders found Stormhold, or so everyone claims. I put no faith in rumors, but I'd be grateful to anyone who would find out the truth for me.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Why, a smithy is the workshop of a blacksmith! And Stormhold -- the legendary fortress of the Knights of Thunder -- had the greatest smithy outside Kaladim! Underforge it was called. It produced all the arms and armor, and kept the Knights' horses shod. Say ... you've heard the rumors, haven't you? Some rapscallion crypt raiders found Stormhold, or so everyone claims. I put no faith in rumors, but I'd be grateful to anyone who would find out the truth for me.")
+ Dialog.AddVoiceover("voiceover/english/kinamer_galemaul/antonica/kinamergalemaul003.mp3", 4028492463, 2669208994)
+ PlayFlavor(NPC, "", "", "orate", 0, 0,Spawn)
+ Dialog.AddOption("If the legend turns out to be true, I'll let you know.", "offer")
+ Dialog.AddOption("If I found such a thing I certainly wouldn't tell you. ")
+ Dialog.Start()
+
end
function Option4(NPC, Spawn)
SetStepComplete(Spawn, DoesTheUnderforgeExist, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/kinamer_galemaul/antonica/kinamergalemaul005.mp3", "", "", 4275576159, 2433123313, Spawn)
- AddConversationOption(conversation, "You are welcome.")
- StartConversation(conversation, NPC, Spawn, "It does! The tools and anvils -- are they still within? Oh, this makes an old dwarf very glad indeed! Perhaps the legends are all true after all! Thank you! Thank you for bringing this good news to old Kinamer Galemaul!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It does! The tools and anvils -- are they still within? Oh, this makes an old dwarf very glad indeed! Perhaps the legends are all true after all! Thank you! Thank you for bringing this good news to old Kinamer Galemaul!")
+ Dialog.AddVoiceover("voiceover/english/kinamer_galemaul/antonica/kinamergalemaul005.mp3", 4275576159, 2433123313)
+ PlayFlavor(NPC, "", "", "smile", 0, 0,Spawn)
+ Dialog.AddOption("You are welcome.")
+ Dialog.Start()
end
function offer(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/KingKlicnik.lua b/server/SpawnScripts/Antonica/KingKlicnik.lua
new file mode 100755
index 000000000..ec7460ab1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/KingKlicnik.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/KingKlicnik.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.28 12:09:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(35 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(75 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/KnightCaptainAntillin.lua b/server/SpawnScripts/Antonica/KnightCaptainAntillin.lua
index a74c81d01..f29e786c7 100755
--- a/server/SpawnScripts/Antonica/KnightCaptainAntillin.lua
+++ b/server/SpawnScripts/Antonica/KnightCaptainAntillin.lua
@@ -33,9 +33,10 @@ end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddVoiceover("voiceover/english/knight-captain_antillin/antonica/captainantillin001.mp3", 841411724, 1572096111)
- Dialog.AddOption("What will you do?", "Option2")
Dialog.AddDialog("Corporal Peckett has raised a militia patrol? Very good! You must return at once to Corporal Peckett and inform him that the entire squad has been lost within a gnoll hive.")
+ Dialog.AddVoiceover("voiceover/english/knight-captain_antillin/antonica/captainantillin001.mp3", 841411724, 1572096111)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("What will you do?", "Option2")
Dialog.Start()
end
@@ -43,8 +44,12 @@ function Option2(NPC, Spawn)
SetStepComplete(Spawn, PeckettsPatrol, 13)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddVoiceover("voiceover/english/knight-captain_antillin/antonica/captainantillin002.mp3", 4242603088, 1602660198)
- Dialog.AddOption("I wish you luck, Captain. For Qeynos!")
Dialog.AddDialog("I must return to this hive to properly plot its location and uncover some of its mysteries before I report back to the generals of the Qeynos Guard. Now go! Before the gnolls have us both!")
+ Dialog.AddVoiceover("voiceover/english/knight-captain_antillin/antonica/captainantillin002.mp3", 4242603088, 1602660198)
+ Dialog.AddOption("I wish you luck, Captain. For Qeynos!","Salute")
Dialog.Start()
end
+
+function Salute(NPC,Spawn)
+ PlayFlavor(NPC,"","","salute",0,0,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/KnightGrelStoneshearer.lua b/server/SpawnScripts/Antonica/KnightGrelStoneshearer.lua
index 9a2da5882..93aa19997 100755
--- a/server/SpawnScripts/Antonica/KnightGrelStoneshearer.lua
+++ b/server/SpawnScripts/Antonica/KnightGrelStoneshearer.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local LordGrimrotsScythe = 5522
@@ -14,30 +15,34 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/knight_grel_stoneshearer/antonica/quests/firemyst/grel_stoneshearer000.mp3", "", "", 3381463190, 2283836874, Spawn)
- local conversation = CreateConversation()
- if GetQuestStep(Spawn, LordGrimrotsScythe) == 1 then
- AddConversationOption(conversation, "Ignar Steadirt sent me.", "Option1")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("And who might you be?")
+ Dialog.AddVoiceover("voiceover/english/knight_grel_stoneshearer/antonica/quests/firemyst/grel_stoneshearer000.mp3", 3381463190, 2283836874)
+ if GetQuestStepProgress(Spawn, LordGrimrotsScythe,1) == 0 and HasQuest(Spawn,LordGrimrotsScythe) then
+ Dialog.AddOption( "Ignar Steadirt sent me.", "Option1")
end
- AddConversationOption(conversation, "Just passing through, sorry to interrupt you.")
- StartConversation(conversation, NPC, Spawn, "And who might you be?")
+ Dialog.AddOption("Just passing through, sorry to interrupt you.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_grel_stoneshearer/antonica/quests/firemyst/grel_stoneshearer001.mp3", "", "", 1129984683, 980692304, Spawn)
- AddConversationOption(conversation, "Do you have your report? Ignar asked me to pick them up.", "Option2")
- StartConversation(conversation, NPC, Spawn, "Ignar? Oh, I'll bet he's waiting on a report! Poor fellow, he can't hear with one ear, you know. That's why he's been assigned duty out of harm's way.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ignar? Oh, I'll bet he's waiting on a report! Poor fellow, he can't hear with one ear, you know. That's why he's been assigned duty out of harm's way.")
+ Dialog.AddVoiceover("voiceover/english/knight_grel_stoneshearer/antonica/quests/firemyst/grel_stoneshearer001.mp3", 1129984683, 980692304)
+ Dialog.AddOption("Do you have your report? Ignar asked me to pick them up.", "Option2")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
SetStepComplete(Spawn, LordGrimrotsScythe, 1)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_grel_stoneshearer/antonica/quests/firemyst/grel_stoneshearer002.mp3", "", "", 1531924790, 1319128858, Spawn)
- AddConversationOption(conversation, "I'll let Ignar know.")
- StartConversation(conversation, NPC, Spawn, "Yes, here it is. The word is, something peculiar's going on ... apparently, there's a group of gnolls--the little wretches--that are trying to conjure up an undead invasion. I'm not sure what they're using, but the activity of the undead has increased. I will send word to Ignar without delay should I learn more.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, here it is. The word is, something peculiar's going on ... apparently, there's a group of gnolls--the little wretches--that are trying to conjure up an undead invasion. I'm not sure what they're using, but the activity of the undead has increased. I will send word to Ignar without delay should I learn more.")
+ Dialog.AddVoiceover("voiceover/english/knight_grel_stoneshearer/antonica/quests/firemyst/grel_stoneshearer002.mp3", 1531924790, 1319128858)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I'll let Ignar know.")
+ Dialog.Start()
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/KnightGreldaStoneshearer.lua b/server/SpawnScripts/Antonica/KnightGreldaStoneshearer.lua
index 034bcf7c6..d942684eb 100755
--- a/server/SpawnScripts/Antonica/KnightGreldaStoneshearer.lua
+++ b/server/SpawnScripts/Antonica/KnightGreldaStoneshearer.lua
@@ -5,6 +5,8 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
local LordGrimrotsScythe = 5522
function spawn(NPC)
@@ -13,31 +15,36 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_grelda_stoneshearer/antonica/quests/firemyst/grelda_stoneshearer000.mp3", "", "threaten", 2872853431, 2142483830, Spawn)
- if GetQuestStep(Spawn, LordGrimrotsScythe) == 2 then
- AddConversationOption(conversation, "Uh...Ignar Steadirt sent me.", "Option1")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Stop right where you are, or I'll slit your throat, stranger!")
+ Dialog.AddVoiceover("voiceover/english/knight_grelda_stoneshearer/antonica/quests/firemyst/grelda_stoneshearer000.mp3", 2872853431, 2142483830)
+ PlayFlavor(NPC, "", "", "threaten", 0, 0, Spawn)
+ if GetQuestStepProgress(Spawn, LordGrimrotsScythe,2) == 0 and HasQuest(Spawn,LordGrimrotsScythe) then
+ Dialog.AddOption("Uh...Ignar Steadirt sent me.", "Option1")
end
- AddConversationOption(conversation, "Back off and I'll go easy on you.")
- StartConversation(conversation, NPC, Spawn, "Stop right where you are, or I'll slit your throat, stranger!")
+ Dialog.AddOption("Back off and I'll go easy on you.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_grelda_stoneshearer/antonica/quests/firemyst/grelda_stoneshearer001.mp3", "", "", 1637699836, 8526247, Spawn)
- AddConversationOption(conversation, "Sorry to bother, but he's asking for his reports.", "Option2")
- StartConversation(conversation, NPC, Spawn, "Oh. If Ignar sent you, then I can't kill you. Pity. Well, what did that old goat send you all the way out here for, eh? He's not going to try swappin' assignments with me again, is he? He's a good dwarf, good strategist ... shame about his hearing, though. So, what is it? Speak up!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh. If Ignar sent you, then I can't kill you. Pity. Well, what did that old goat send you all the way out here for, eh? He's not going to try swappin' assignments with me again, is he? He's a good dwarf, good strategist ... shame about his hearing, though. So, what is it? Speak up!")
+ Dialog.AddVoiceover("voiceover/english/knight_grelda_stoneshearer/antonica/quests/firemyst/grelda_stoneshearer001.mp3", 1637699836, 8526247)
+ Dialog.AddOption("Sorry to bother, but he's asking for his reports.", "Option2")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
SetStepComplete(Spawn, LordGrimrotsScythe, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_grelda_stoneshearer/antonica/quests/firemyst/grelda_stoneshearer002.mp3", "", "", 955376682, 564992177, Spawn)
- AddConversationOption(conversation, "I'll let Ignar know.")
- StartConversation(conversation, NPC, Spawn, "Did you know those Sabertooth gnolls dug up a relic of ancient power? Well, that's what they say anyhow. I don't believe a word of it. They're trying to scare off their competition by claiming it's a relic of Lord Grimrot himself! Can you imagine? What little fools they are, eh? That's all I have to report.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did you know those Sabertooth gnolls dug up a relic of ancient power? Well, that's what they say anyhow. I don't believe a word of it. They're trying to scare off their competition by claiming it's a relic of Lord Grimrot himself! Can you imagine? What little fools they are, eh? That's all I have to report.")
+ Dialog.AddVoiceover("voiceover/english/knight_grelda_stoneshearer/antonica/quests/firemyst/grelda_stoneshearer002.mp3", 955376682, 564992177)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("I'll let Ignar know.")
+ Dialog.Start()
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/KnightMorteWinghammer.lua b/server/SpawnScripts/Antonica/KnightMorteWinghammer.lua
index 629c19183..8367ffa47 100755
--- a/server/SpawnScripts/Antonica/KnightMorteWinghammer.lua
+++ b/server/SpawnScripts/Antonica/KnightMorteWinghammer.lua
@@ -5,6 +5,8 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
local LordGrimrotsScythe = 5522
function spawn(NPC)
@@ -13,51 +15,59 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer000.mp3", "", "", 427855541, 2221169308, Spawn)
- if GetQuestStep(Spawn, LordGrimrotsScythe) == 3 then
- AddConversationOption(conversation, "You're...in the dwarven brigade? But...you're a human! I mean, Ignar sent me.", "Option1")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello! It's such a pleasure to talk to someone else for a change! What brings you this way from the big city, eh?")
+ Dialog.AddVoiceover("voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer000.mp3", 427855541, 2221169308)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ if GetQuestStepProgress(Spawn, LordGrimrotsScythe,3) == 0 and HasQuest(Spawn,LordGrimrotsScythe) then
+ Dialog.AddOption("You're...in the dwarven brigade? But...you're a human! I mean, Ignar sent me.", "Option1")
end
- AddConversationOption(conversation, "Glad to brighten your day. Just passing through.")
- StartConversation(conversation, NPC, Spawn, "Hello! It's such a pleasure to talk to someone else for a change! What brings you this way from the big city, eh?")
+ Dialog.AddOption("Glad to brighten your day. Just passing through.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer001.mp3", "", "", 457217351, 2761152415, Spawn)
- AddConversationOption(conversation, "I suppose so. I'm here to pick up your report.", "Option2")
- AddConversationOption(conversation, "I'll be back later.")
- StartConversation(conversation, NPC, Spawn, "Did he? Ignar's such a good person, you know. He stuck up for me when I joined the dwarven brigade, even though the other dwarves were a bit down on the idea. Frankly, all I want out of this is a chance to learn some good blacksmithing. That's what I really want to do, be a blacksmith. I can't help but meet the right sort of folk for that in a dwarven unit, can I? It's an absolutely brilliant idea, isn't it?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did he? Ignar's such a good person, you know. He stuck up for me when I joined the dwarven brigade, even though the other dwarves were a bit down on the idea. Frankly, all I want out of this is a chance to learn some good blacksmithing. That's what I really want to do, be a blacksmith. I can't help but meet the right sort of folk for that in a dwarven unit, can I? It's an absolutely brilliant idea, isn't it?")
+ Dialog.AddVoiceover("voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer001.mp3", 457217351, 2761152415)
+ Dialog.AddOption("I suppose so. I'm here to pick up your report.", "Option2")
+ Dialog.AddOption("I'll be back later.")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer002.mp3", "", "", 324436321, 1708126787, Spawn)
- AddConversationOption(conversation, "Do you have your report ready?", "Option3")
- AddConversationOption(conversation, "I'll be back later. Sounds like this might take a while.")
- StartConversation(conversation, NPC, Spawn, "There are probably some good human blacksmiths, too, but I want to learn from the best of the best! I'm tickled that they consider me one of their own now! Mostly. The only downside is that I'm not meeting many women this way, but oh, well! Once I start my own smithy, I'll be a hot man around town. Get it? Ha!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There are probably some good human blacksmiths, too, but I want to learn from the best of the best! I'm tickled that they consider me one of their own now! Mostly. The only downside is that I'm not meeting many women this way, but oh, well! Once I start my own smithy, I'll be a hot man around town. Get it? Ha!")
+ Dialog.AddVoiceover("voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer002.mp3", 324436321, 1708126787)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Do you have your report ready?", "Option3")
+ Dialog.AddOption("I'll be back later. Sounds like this might take a while.")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayAnimation(NPC, 12030) -- ponder
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer003.mp3", "", "", 2960742057, 217719766, Spawn)
- AddConversationOption(conversation, "I think Ignar's waiting on your report, soldier.", "Option4")
- AddConversationOption(conversation, "Yep, this will take a while. I'll be back.")
- StartConversation(conversation, NPC, Spawn, "Still, I can't decide whether they're just humoring me or not. I get a lot of, \"How's the weather up there?\" and \"Good day to be a dwarf, Longshanks!\" I have yet to meet any blacksmiths, either. Maybe I've made a mistake after all ... d'you think?")
-end
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Still, I can't decide whether they're just humoring me or not. I get a lot of, \"How's the weather up there?\" and \"Good day to be a dwarf, Longshanks!\" I have yet to meet any blacksmiths, either. Maybe I've made a mistake after all ... d'you think?")
+ Dialog.AddVoiceover("voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer003.mp3", 2960742057, 217719766)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I think Ignar's waiting on your report, soldier.", "Option4")
+ Dialog.AddOption("Yep, this will take a while. I'll be back.")
+ Dialog.Start()
+ end
function Option4(NPC, Spawn)
SetStepComplete(Spawn, LordGrimrotsScythe, 3)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer004.mp3", "", "", 3382872987, 887284875, Spawn)
- AddConversationOption(conversation, "I've got to let Ignar know. Uh, thanks!")
- StartConversation(conversation, NPC, Spawn, "Oh, right! My report! Supposedly, someone's found Lord Grimrot's war scythe and is trying to raise him from the dead using its power. Isn't it the oddest thing you ever heard? Who'd want to bring back a dead guy who LOST a war? I mean, if you're going to go through the trouble of bringing back the dead, go get one of the WINNERS, eh? What? You're leaving already?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, right! My report! Supposedly, someone's found Lord Grimrot's war scythe and is trying to raise him from the dead using its power. Isn't it the oddest thing you ever heard? Who'd want to bring back a dead guy who LOST a war? I mean, if you're going to go through the trouble of bringing back the dead, go get one of the WINNERS, eh? What? You're leaving already?")
+ Dialog.AddVoiceover("voiceover/english/knight_morte_winghammer/antonica/quests/firemyst/morte_winghammer004.mp3", 3382872987, 887284875)
+ PlayFlavor(NPC, "", "", "doh", 0, 0, Spawn)
+ Dialog.AddOption("I've got to let Ignar know. Uh, thanks!")
+ Dialog.Start()
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/LadyFaideth.lua b/server/SpawnScripts/Antonica/LadyFaideth.lua
new file mode 100644
index 000000000..c60192010
--- /dev/null
+++ b/server/SpawnScripts/Antonica/LadyFaideth.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/LadyFaideth.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 08:02:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/LandwynVelamir.lua b/server/SpawnScripts/Antonica/LandwynVelamir.lua
index 42caba557..7e65d0ef9 100755
--- a/server/SpawnScripts/Antonica/LandwynVelamir.lua
+++ b/server/SpawnScripts/Antonica/LandwynVelamir.lua
@@ -21,7 +21,7 @@ ProvidesQuest(NPC,PeppermintsAndPotions)
ProvidesQuest(NPC,SongToPrexus)
end
-function InRange(NPC, Spawn)
+--[[function InRange(NPC, Spawn)
if not HasQuest(Spawn, UnderAShadyTree) and not HasCompletedQuest(Spawn, UnderAShadyTree) then
ProvidesQuest(NPC, UnderAShadyTree)
SetInfoFlag(NPC)
@@ -43,7 +43,7 @@ elseif HasCompletedQuest(Spawn, PeppermintsAndPotions) then
SetInfoFlag(NPC)
SetVisualFlag(NPC)
end
-end
+end]]--
function respawn(NPC)
@@ -69,7 +69,7 @@ function hailed(NPC, Spawn)
AddConversationOption(conversation, "It seems not as well as you.", "Option1")
AddConversationOption(conversation, "I have no time for love.")
StartConversation(conversation, NPC, Spawn, "Do you know love, my friend?")
- elseif GetQuestStep(Spawn, UnderAShadyTree) == 1 or GetQuestStep(Spawn, ABowForABeauty) == 1 or GetQuestStep(Spawn, ABowForABeauty) == 2 or GetQuestStep(Spawn, SheWillBeAShiningPetal) == 1 or GetQuestStep(Spawn, PeppermintsAndPotions) == 1 or GetQuestStep(Spawn, PeppermintsAndPotions) == 2 or GetQuestStep(Spawn, PeppermintsAndPotions) == 3 or GetQuestStep(Spawn, SongToPrexus) == 1 then
+ elseif GetQuestStep(Spawn, UnderAShadyTree) == 1 or GetQuestStep(Spawn, ABowForABeauty) == 1 or GetQuestStep(Spawn, ABowForABeauty) == 2 or GetQuestStep(Spawn, SheWillBeAShiningPetal) == 1 or GetQuestStep(Spawn, PeppermintsAndPotions) <= 3 or GetQuestStep(Spawn, SongToPrexus) == 1 then
PlayFlavor(NPC, "", "Returning to me with information of love?", "", 1689589577, 4560189, Spawn)
elseif GetQuestStep(Spawn, UnderAShadyTree) == 2 then
AddConversationOption(conversation, "Here are the flowers.", "Option4")
@@ -85,10 +85,11 @@ elseif HasCompletedQuest(Spawn, UnderAShadyTree) and HasCompletedQuest(Spawn, AB
Option13(NPC, Spawn)
elseif HasCompletedQuest(Spawn, UnderAShadyTree) and HasCompletedQuest(Spawn, ABowForABeauty) and HasCompletedQuest(Spawn, SheWillBeAShiningPetal) and not HasQuest(Spawn, PeppermintsAndPotions) and not HasCompletedQuest(Spawn, PeppermintsAndPotions) then
Option15(NPC, Spawn)
- elseif GetQuestStep(Spawn, ABowForABeauty) == 4 then
+ elseif GetQuestStep(Spawn, PeppermintsAndPotions) == 4 then
Option17(NPC, Spawn)
elseif HasCompletedQuest(Spawn, UnderAShadyTree) and HasCompletedQuest(Spawn, ABowForABeauty) and HasCompletedQuest(Spawn, SheWillBeAShiningPetal) and HasCompletedQuest(Spawn, PeppermintsAndPotions) and not HasQuest(Spawn, SongToPrexus) and not HasCompletedQuest(Spawn, SongToPrexus) then
Option19(NPC, Spawn)
+
elseif GetQuestStep(Spawn, SongToPrexus) == 2 then
Option23(NPC, Spawn)
elseif HasCompletedQuest(Spawn, UnderAShadyTree) and HasCompletedQuest(Spawn, ABowForABeauty) and HasCompletedQuest(Spawn, SheWillBeAShiningPetal) and HasCompletedQuest(Spawn, PeppermintsAndPotions) and HasCompletedQuest(Spawn, SongToPrexus) then
diff --git a/server/SpawnScripts/Antonica/Lanice.lua b/server/SpawnScripts/Antonica/Lanice.lua
index dfb7a3abf..2ad468a7d 100755
--- a/server/SpawnScripts/Antonica/Lanice.lua
+++ b/server/SpawnScripts/Antonica/Lanice.lua
@@ -12,7 +12,12 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "", "What can I get for you today?", "", 1689589577, 4560189, Spawn)
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/bartender/halfelf_bartender_service_good_1_hail_gf_ce1f039f.mp3", "Might I interest you in some meat and cheese to go with that tall glass of ale?", "shrug", 3345899068, 3251734592, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_barmaid/ft/eco/good/human_eco_good_barmaid_hail_gf_619dfe80.mp3", "Its always hard to keep everyone happy around here. There's always someone whose thirsty or needs a mess cleaned.", "shrug", 3234664124, 1293275447, Spawn)
+ end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/Licha.lua b/server/SpawnScripts/Antonica/Licha.lua
index 8f7b6d2a5..f02841213 100755
--- a/server/SpawnScripts/Antonica/Licha.lua
+++ b/server/SpawnScripts/Antonica/Licha.lua
@@ -13,26 +13,13 @@ local SheHadRibbonsInHerHair = 5343 -- She Had Ribbon in Her Hair quest
function spawn(NPC)
SetPlayerProximityFunction(NPC, 20, "InRange")
+ ProvidesQuest(NPC, SparklyOrNothing)
+ ProvidesQuest(NPC, ANewDressNOW)
+ ProvidesQuest(NPC, LichaDancingQueen)
+ ProvidesQuest(NPC, SheHadRibbonsInHerHair)
end
function InRange(NPC, Spawn)
- if not HasQuest(Spawn, SparklyOrNothing) and not HasCompletedQuest(Spawn, SparklyOrNothing) then
- ProvidesQuest(NPC, SparklyOrNothing)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
- elseif HasCompletedQuest(Spawn, SparklyOrNothing) then
- ProvidesQuest(NPC, ANewDressNOW)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
- elseif HasCompletedQuest(Spawn, ANewDressNOW) then
- ProvidesQuest(NPC, LichaDancingQueen)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
- elseif HasCompletedQuest(Spawn, LichaDancingQueen) then
- ProvidesQuest(NPC, SheHadRibbonsInHerHair)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-end
end
function hailed(NPC, Spawn)
@@ -69,6 +56,7 @@ function Option1(NPC, Spawn)
AddConversationOption(conversation, "See something you like?", "Option3")
AddConversationOption(conversation, "I've had enough orders from you.")
StartConversation(conversation, NPC, Spawn, "Turn around. Let me look you over.")
+ PlayFlavor(NPC,"","","peer",0,0,Spawn)
end
function Option2(NPC, Spawn)
@@ -77,6 +65,7 @@ function Option2(NPC, Spawn)
AddConversationOption(conversation, "What is it you want me to do?", "Option4")
AddConversationOption(conversation, "No.")
StartConversation(conversation, NPC, Spawn, "I suppose you will have to do. There are things I need and surely no one expects me to dirty my flawless nails doing them. So, you will do them for me?")
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
end
@@ -86,6 +75,7 @@ function Option3(NPC, Spawn)
AddConversationOption(conversation, "I can assure you, miss, that I can kill anything I want to.", "Option4")
AddConversationOption(conversation, "Adventurers do not have time for baths or spoiled children. Good day.")
StartConversation(conversation, NPC, Spawn, "Hardly.... Tell me, what dirt pile did you crawl out of? Your armor, if you can call it that, is filthy. Really, you should wash more. And you call that a weapon? I would be surprised if you could kill a lowly mouse with that thing.")
+ PlayFlavor(NPC,"","","lookaway",0,0,Spawn)
end
function Option4(NPC, Spawn)
@@ -102,6 +92,7 @@ function Option5(NPC, Spawn)
AddConversationOption(conversation, "As you wish.", "offer")
AddConversationOption(conversation, "Get them yourself. A good wallop might do you good.")
StartConversation(conversation, NPC, Spawn, "Too dangerous for you, my strong, dirty adventurer? I think not! Bring me the shiniest scales you can find, and do it quickly.")
+ PlayFlavor(NPC,"","","smirk",0,0,Spawn)
end
-- 2nd QUEST
@@ -111,6 +102,7 @@ function Option6(NPC, Spawn)
AddConversationOption(conversation, "What do you want, now?", "Option7")
AddConversationOption(conversation, "I don't know, and I don't want to know.")
StartConversation(conversation, NPC, Spawn, "Why is he so mean?")
+ PlayFlavor(NPC,"","","grumble",0,0,Spawn)
end
@@ -130,6 +122,7 @@ function Option8(NPC, Spawn)
AddConversationOption(conversation, "Fine. Where is it being delivered?", "Option9")
AddConversationOption(conversation, "No.")
StartConversation(conversation, NPC, Spawn, "Your sarcasm is not appreciated! This is no laughing matter, adventurer of filth. That dress is imported from a distant land, and it is priceless. Priceless, I tell you! Go and get it for me now.")
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
end
@@ -159,6 +152,7 @@ function Option11(NPC, Spawn)
AddConversationOption(conversation, "You are as pretty as a pig.", "Option12")
AddConversationOption(conversation, "Your narcissism is overwhelming. Goodbye.")
StartConversation(conversation, NPC, Spawn, "Don't I look gorgeous? Ah, this new dress is perfect for my performance, but what is a performance without an audience?")
+ PlayFlavor(NPC,"","","shimmy",0,0,Spawn)
end
function Option12(NPC, Spawn)
@@ -167,6 +161,7 @@ function Option12(NPC, Spawn)
AddConversationOption(conversation, "Fine, fine... What do you want?", "Option13")
AddConversationOption(conversation, "My stench and I will be going.")
StartConversation(conversation, NPC, Spawn, "How dare you! Never will you see a pig dance as I will! Adventurer of swine, assist me now or rid me of your stench!")
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
end
function Option13(NPC, Spawn)
@@ -176,6 +171,7 @@ function Option13(NPC, Spawn)
AddConversationOption(conversation, "No one will be willing, trust me. Bye.")
AddConversationOption(conversation, "I'm too busy right now.")
StartConversation(conversation, NPC, Spawn, "I will be performing an original dance number of my own creation. It is an inspired piece... A story told through movement. It is the story of a princess finding her one, true love. Now, bring my audience quickly, while the muse still flows through me.")
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
end
--- 4TH QUEST
@@ -186,6 +182,7 @@ function Option14(NPC, Spawn)
AddConversationOption(conversation, "Well, you're not exactly full of rainbows and sunshine, friend.")
AddConversationOption(conversation, "I'm rather busy right now.")
StartConversation(conversation, NPC, Spawn, "Why would anyone hurt poor, little me?")
+ PlayFlavor(NPC,"","","whome",0,0,Spawn)
end
function Option15(NPC, Spawn)
@@ -202,6 +199,7 @@ function Option16(NPC, Spawn)
AddConversationOption(conversation, "Okay, okay... I'll go get them.", "offer4")
AddConversationOption(conversation, "You will never learn. Goodbye.")
StartConversation(conversation, NPC, Spawn, "Evil, vile highwaymen! Go get them back, unless you are too scared, adventurer of slime.")
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
end
diff --git a/server/SpawnScripts/Antonica/Lina.lua b/server/SpawnScripts/Antonica/Lina.lua
index 8a619474c..047adb01a 100755
--- a/server/SpawnScripts/Antonica/Lina.lua
+++ b/server/SpawnScripts/Antonica/Lina.lua
@@ -12,7 +12,13 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "", "If you see something you need just let me know.", "", 1689589577, 4560189, Spawn)
+ --PlayFlavor(NPC, "", "If you see something you need just let me know.", "", 1689589577, 4560189, Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+PlayFlavor(NPC, "voiceover/english/optional2/human_eco_good_2/ft/service/merchant/human_merchant_service_good_2_hail_gf_45d92a75.mp3", "Welcome! What can I help you with?", "hello", 218555884, 644636009, Spawn)
+ elseif choice == 2 then
+PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/baker/human_baker_service_good_1_hail_gf_cca9cdef.mp3", "Welcome friend, welcome. I hope you brought your appetite with you!", "wink", 488782681, 166399094, Spawn)
+end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/LordQuinnClothspinner.lua b/server/SpawnScripts/Antonica/LordQuinnClothspinner.lua
index 34184d43e..7daf4e986 100755
--- a/server/SpawnScripts/Antonica/LordQuinnClothspinner.lua
+++ b/server/SpawnScripts/Antonica/LordQuinnClothspinner.lua
@@ -1,24 +1,94 @@
--[[
Script Name : SpawnScripts/Antonica/LordQuinnClothspinner.lua
- Script Author : Premierio015
- Script Date : 2021.06.26 07:06:46
+ Script Author : Dorbin
+ Script Date : 05/11/2023
Script Purpose :
:
--]]
-function spawn(NPC)
+require "SpawnScripts/Generic/DialogModule"
+local Sayer = 5812
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/lord_quinn_clothspinner/antonica/lordquinn000.mp3", "", "", 396621608, 1119860372, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I will not rest with such inhospitality. ")
- StartConversation(conversation, NPC, Spawn, "Welcome to the Keep of the Ardent Needle. You may rest here until I see fit to send you on your way. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome to the Keep of the Ardent Needle. You may rest here until I see fit to send you on your way. ")
+ Dialog.AddVoiceover("voiceover/english/lord_quinn_clothspinner/antonica/lordquinn000.mp3", 396621608, 1119860372)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ if GetQuestStep(Spawn, Sayer) == 2 then
+ Dialog.AddOption("Delivery from Sayer's Outfitters. ", "Option1")
+ elseif GetQuestStep(Spawn, Sayer) == 4 then
+ Dialog.AddOption("Here is your sewing kit. ", "Needles")
+ end
+ Dialog.AddOption("I will not rest with such inhospitality. ")
+ Dialog.Start()
+end
+
+function Option1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("By the Words of Aeris! You evaded any bandits and brought me my goods. You are one brave serf, I must say.")
+ Dialog.AddVoiceover("voiceover/english/lord_quinn_clothspinner/antonica/lordquinn001.mp3", 1307588418, 2989824409)
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ Dialog.AddOption("I believe Sayer expects payment. ", "Option2")
+ Dialog.Start()
end
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Listen here, courier! I am a member of the Qeynos House of Lords. I shall pay when I see fit. If you want Sayer's coins, you must first serve me.")
+ Dialog.AddVoiceover("voiceover/english/lord_quinn_clothspinner/antonica/lordquinn002.mp3", 2647012448, 593979738)
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
+ Dialog.AddOption("Just send your watchmen.", "Option3")
+ Dialog.AddOption("No one speaks to me like that. Farewell.")
+ Dialog.Start()
+end
+
+function Option3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I am the esteemed landowner here, and you are the serf. I give the orders!")
+ Dialog.AddVoiceover("voiceover/english/lord_quinn_clothspinner/antonica/lordquinn003.mp3", 28178075, 1928072571)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ Dialog.AddOption("All right! For Mr. Sayer I'll do it.", "Option4")
+ Dialog.AddOption("I guess Mr. Sayer isn't getting paid. ")
+ Dialog.Start()
+end
+
+function Option4(NPC, Spawn)
+ SetStepComplete(Spawn, Sayer, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Seek out the ruins of Caltorsis Keep. Take this strongbox key and in the crumbling keep are my precious Needles of Nerissa, the reason we Clothspinners went from lackey to lords. ")
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/lord_quinn_clothspinner/antonica/lordquinn004.mp3", 1822607335, 2633932794)
+ Dialog.AddOption("I'll return. You have that coin ready.")
+ Dialog.Start()
+end
+
+
+
+
+function Needles(NPC, Spawn)
+ SetStepComplete(Spawn, Sayer, 4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My dear sewing kit! It's been in my family for generations. What would I have done without it! The Clothspinner luck would have run dry. No one will ever force me to give up these gems again. ")
+ Dialog.AddVoiceover("voiceover/english/lord_quinn_clothspinner/antonica/lordquinn005.mp3", 3375752901, 1571967218)
+ PlayFlavor(NPC,"","","heartattack",0,0,Spawn)
+ Dialog.AddOption("It's just a sewing kit!")
+ Dialog.AddOption("Alright then... I'll just be going now.")
+ Dialog.Start()
+end
+
+
+
diff --git a/server/SpawnScripts/Antonica/LordRison.lua b/server/SpawnScripts/Antonica/LordRison.lua
new file mode 100644
index 000000000..3e3c96f20
--- /dev/null
+++ b/server/SpawnScripts/Antonica/LordRison.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/LordRison.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.06 03:01:32
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MayorSpawnObject.lua b/server/SpawnScripts/Antonica/MayorSpawnObject.lua
new file mode 100755
index 000000000..6838c55ee
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MayorSpawnObject.lua
@@ -0,0 +1,88 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MayorSpawnObject.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.22 08:02:50
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local CampSpawn1 = SpawnByLocationID(zone, 133782489) --Level 16
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782489)
+
+if IsAlive(CampSpawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 300000, "Camp_Stage2")
+ end
+end
+
+
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782490)--Level 17
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133782490)
+
+if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 300000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782491)--Level 18
+
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 3 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782491)
+
+if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+ AddTimer(NPC, 6000, "CampReset")
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 133782488)
+if CampObject~= nil then
+Despawn(CampObject)
+
+end
+end
diff --git a/server/SpawnScripts/Antonica/MayorWoodbridge.lua b/server/SpawnScripts/Antonica/MayorWoodbridge.lua
new file mode 100755
index 000000000..95a241dde
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MayorWoodbridge.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MayorWoodbridge.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.30 01:04:47
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SendMessage(Spawn,"Mayor Woodbridge looks at you cautiously. He appears to be sizing you up.")
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "listen" and IsInCombat(NPC) == false then
+ PlayFlavor(NPC,"","","glare",0,0,Spawn)
+ AddConversationOption(conversation, "All right, consider me gone.")
+ StartConversation(conversation, NPC, Spawn, "Well, since you're going to listen in you may as well join the conversation. Ahhh, get out of here before it gets rough for ya!")
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MerchantDingus.lua b/server/SpawnScripts/Antonica/MerchantDingus.lua
new file mode 100755
index 000000000..9a2bf0171
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MerchantDingus.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MerchantDingus.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 06:06:16
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MerchantWingus.lua b/server/SpawnScripts/Antonica/MerchantWingus.lua
new file mode 100755
index 000000000..090c21e61
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MerchantWingus.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MerchantWingus.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.14 06:06:40
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MissingLog.lua b/server/SpawnScripts/Antonica/MissingLog.lua
new file mode 100755
index 000000000..82c23acae
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MissingLog.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MissingLog.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:34
+ Script Purpose : part of The Missing quest
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,5840,2)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MissingQuestPondRock.lua b/server/SpawnScripts/Antonica/MissingQuestPondRock.lua
new file mode 100755
index 000000000..dd76d8ace
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MissingQuestPondRock.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MissingQuestPondRock.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:47
+ Script Purpose : part of The Missing quest
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,5840,5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MissingQuestRock.lua b/server/SpawnScripts/Antonica/MissingQuestRock.lua
new file mode 100755
index 000000000..9cd9b261b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MissingQuestRock.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MissingQuestRock.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:34
+ Script Purpose : part of The Missing quest
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,5840,3)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MissingQuestStump.lua b/server/SpawnScripts/Antonica/MissingQuestStump.lua
new file mode 100755
index 000000000..0994749c8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MissingQuestStump.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MissingQuestStump.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:49
+ Script Purpose : part of The Missing quest
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,5840,4)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/MissingQuestTree.lua b/server/SpawnScripts/Antonica/MissingQuestTree.lua
new file mode 100755
index 000000000..86660fa49
--- /dev/null
+++ b/server/SpawnScripts/Antonica/MissingQuestTree.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/MissingQuestTree.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:39
+ Script Purpose : part of The Missing quest
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,5840,5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/NoaSails.lua b/server/SpawnScripts/Antonica/NoaSails.lua
new file mode 100755
index 000000000..80458b9b1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/NoaSails.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Antonica/NoaSails.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.17 02:09:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Dialog2(NPC, Spawn)
+ end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, then you want to speak with Rusty.")
+ Dialog.AddVoiceover("voiceover/english/optional1/noa_sails/antonica/noasails002.mp3", 2706720397, 3494092819)
+ Dialog.AddOption("Thanks.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Keep your distance, friend. We have important cargo here. Step any closer and I'll have to pummel you ... and you don't want me to leave you stranded out here, do ya?")
+ Dialog.AddVoiceover("voiceover/english/optional1/noa_sails/antonica/noasails001.mp3", 2484455293, 304406635)
+ PlayFlavor(NPC,"","","glare",0,0,Spawn)
+ Dialog.AddOption("Yes, I know. Captain Abella Coranis sent me.", "Dialog1")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Antonica/NotFound.lua b/server/SpawnScripts/Antonica/NotFound.lua
new file mode 100755
index 000000000..8fbb26e72
--- /dev/null
+++ b/server/SpawnScripts/Antonica/NotFound.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/NotFound.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.18 03:05:16
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,5840,1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Novak.lua b/server/SpawnScripts/Antonica/Novak.lua
index ccf6e78c4..1b907cd91 100755
--- a/server/SpawnScripts/Antonica/Novak.lua
+++ b/server/SpawnScripts/Antonica/Novak.lua
@@ -1,44 +1,59 @@
--[[
Script Name : SpawnScripts/Antonica/Novak.lua
Script Purpose : Novak
- Script Author : geordie0511
+ Script Author : geordie0511, Dorbin
Script Date : 2019.03.13
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Notes : Auto-Generated Conversation from PacketParser Data - Restructured using dialog mod - 05/11/2023
--]]
+require "SpawnScripts/Generic/DialogModule"
local Achoo = 464
local DeliveriesForFlores = 5333 -- Deliveries For Flores Quest
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 13, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,11)<0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+elseif MakeRandomInt(0,100) <=50 then
+ PlayFlavor(NPC, "", "", "beckon", 0, 0, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_novak/antonica/merchantnovak000.mp3", "", "", 4148197515, 1288700917, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings, perhaps you need to replenish your supplies, or maybe just sell some of what you picked up along the trail?")
+ Dialog.AddVoiceover("voiceover/english/merchant_novak/antonica/merchantnovak000.mp3", 4148197515, 1288700917)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
if GetQuestStep(Spawn, Achoo) == 1 then
- AddConversationOption(conversation, "Matsy sent me for some pepper.", "pepper")
- elseif GetQuestStep(Spawn, DeliveriesForFlores) == 1 then
- AddConversationOption(conversation, "I'm here to deliver this crate of supplies from Flores.", "Option1")
- end
- AddConversationOption(conversation, "Not right now.")
- StartConversation(conversation, NPC, Spawn, "Greetings, perhaps you need to replenish your supplies, or maybe just sell some of what you picked up along the trail?")
- end
+ Dialog.AddOption("Matsy sent me for some pepper.", "pepper")
+ end
+ if GetQuestStep(Spawn, DeliveriesForFlores) == 1 then
+ Dialog.AddOption("I'm here to deliver this crate of supplies from Flores.", "Option1")
+ end
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
+end
function Option1(NPC, Spawn)
SetStepComplete(Spawn, DeliveriesForFlores, 1)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_novak/antonica/merchantnovak001.mp3", "", "thanks", 1938438342, 930282390, Spawn)
- AddConversationOption(conversation, "Thanks. I'll make sure he gets it.")
- StartConversation(conversation, NPC, Spawn, "Great, I was almost out of supplies as it stands. I would hate to hike all the way back to Flores. Here's a pouch for Flores. Make sure he gets this, okay?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Great, I was almost out of supplies as it stands. I would hate to hike all the way back to Flores. Here's a pouch for Flores. Make sure he gets this, okay?")
+ Dialog.AddVoiceover("voiceover/english/merchant_novak/antonica/merchantnovak001.mp3", 1938438342, 930282390)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("Thanks. I'll make sure he gets it.")
+ Dialog.Start()
end
function pepper(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ObeliskSpawn.lua b/server/SpawnScripts/Antonica/ObeliskSpawn.lua
new file mode 100755
index 000000000..1e5236ace
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ObeliskSpawn.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ObeliskSpawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.16 09:02:54
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782425) --Rift Watcher
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782425) -- Rift Watcher
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782426)--Rift Watcher
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782429)-- Servitor
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782427)--Rift Watcher
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782427)-- Rift Watcher
+ end
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782425)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782425)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782426)
+local CampSpawn2a = GetSpawnByLocationID(zone, 133782429)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782427)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782427)
+
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782428)--Portal
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+ AddTimer(NPC, 300000, "CampReset")
+
+end
+
+
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 133782423)
+if CampObject~= nil then
+Despawn(CampObject)
+ local Portal = GetSpawnByLocationID(zone, 133782428)--Portal
+ if Portal ~=nil then
+ Despawn(Portal)
+
+end
+end
+end
diff --git a/server/SpawnScripts/Antonica/OlOneEye.lua b/server/SpawnScripts/Antonica/OlOneEye.lua
index 3c895a497..76e59169c 100755
--- a/server/SpawnScripts/Antonica/OlOneEye.lua
+++ b/server/SpawnScripts/Antonica/OlOneEye.lua
@@ -8,9 +8,72 @@
local TheOneThatGotAway = 5338
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2,0)
+ MovementLoopAddLocation(NPC, X , Y, Z + 8, 2, 0)
+ MovementLoopAddLocation(NPC, X + 5, Y, Z -5, 2, 0)
+ MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z - 8, 2, 0)
+ MovementLoopAddLocation(NPC, X - 5, Y, Z -5, 2, 0)
+ MovementLoopAddLocation(NPC, X , Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X -8, Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X + 8, Y, Z -5, 2, 0)
+ MovementLoopAddLocation(NPC, X + 5, Y, Z - 5, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0, "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 5, Y, Z -8, 2, 0)
+ MovementLoopAddLocation(NPC, X - 8, Y, Z + 5, 2, 0)
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 8, Y, Z + 5, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0, "ChooseMovement")
+end
+
+
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "InRange", Spawn)
+ChooseMovement(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/PriestofthePlaguebringer.lua b/server/SpawnScripts/Antonica/PriestofthePlaguebringer.lua
new file mode 100644
index 000000000..a073d3e34
--- /dev/null
+++ b/server/SpawnScripts/Antonica/PriestofthePlaguebringer.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/PriestofthePlaguebringer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.11 04:03:03
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ProtectorEmerson.lua b/server/SpawnScripts/Antonica/ProtectorEmerson.lua
new file mode 100644
index 000000000..6d3f79eb1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ProtectorEmerson.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ProtectorEmerson.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.18 03:03:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Quallium.lua b/server/SpawnScripts/Antonica/Quallium.lua
index 0e3cac84a..c5b498d3d 100755
--- a/server/SpawnScripts/Antonica/Quallium.lua
+++ b/server/SpawnScripts/Antonica/Quallium.lua
@@ -33,7 +33,7 @@ function hailed(NPC, Spawn)
Dialog.AddOption("I have your scrolls.", "dlg_4")
Dialog.AddOptionRequirement(REQ_QUEST_ON_STEP, ONCE_UPON_AN_ISLE_DREARY, 2)
Dialog.AddOption("I don't speak to rathed people. Farewell.")
-
+ PlayFlavor(NPC,"","","sigh",0,0,Spawn)
Dialog.Start()
end
@@ -41,6 +41,7 @@ end
function dlg_2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC,"","","frustrated",0,0,Spawn)
Dialog.AddDialog("They have my scrolls ... my poems! I was just sitting upon the isles, like I always do, searching for inspiration, when all of the sudden they appeared! I ran and now have lost my scrolls to the howling beasts.")
Dialog.AddVoiceover("voiceover/english/quallium/antonica/quallium001.mp3", 3573977822, 664973830)
@@ -57,7 +58,7 @@ end
function dlg_4(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
-
+ PlayFlavor(NPC,"","","heelclick",0,0,Spawn)
Dialog.AddDialog("You saved me! These scrolls will take me from being a simple wordsmith to a legendary poet. You have read my work, have you not?")
Dialog.AddVoiceover("voiceover/english/quallium/antonica/quallium003.mp3", 1726246143, 2173439902)
Dialog.AddOption("Uh...yeah. Good stuff. Best ever.", "dlg_5")
@@ -71,6 +72,7 @@ function dlg_5(NPC, Spawn)
SetStepComplete(Spawn,ONCE_UPON_AN_ISLE_DREARY,2)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
Dialog.AddDialog("Well of course you did! You should really visit the sights I wrote about. All four poems were based on actual images I spied from the isle. I am such a genius! Here, read for yourself!")
Dialog.AddVoiceover("voiceover/english/quallium/antonica/quallium004.mp3", 2352960393, 543339399)
diff --git a/server/SpawnScripts/Antonica/Quigley.lua b/server/SpawnScripts/Antonica/Quigley.lua
index 547a73b0e..c4ae6e21d 100755
--- a/server/SpawnScripts/Antonica/Quigley.lua
+++ b/server/SpawnScripts/Antonica/Quigley.lua
@@ -1,27 +1,41 @@
--[[
Script Name : SpawnScripts/Antonica/Quigley.lua
- Script Author : Premierio015
- Script Date : 2021.06.27 06:06:23
+ Script Author : Dorbin
+ Script Date : 05/11/2023
Script Purpose :
:
--]]
-require("SpawnScripts/Generic/GenericVoiceOvers")
-
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,11)<0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+else
+ local chance = math.random(0, 100)
+ if chance <= 33 then
+ hailed(NPC, Spawn)
+ end
+end
+end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- GenericHail(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
+ local choice = math.random(1, 4)
if choice == 1 then
- PlayFlavor(NPC, "", "Good day, adventurer. Care to take a look at my merchandise?", "", 0, 0, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/bartender/halfelf_bartender_service_good_1_hail_gf_ce1f039f.mp3", "Might I interest you in some meat and cheese to go with that tall glass of ale?", "shrug", 3345899068, 3251734592, Spawn)
elseif choice == 2 then
- PlayFlavor(NPC, "", "Hello, friend. Welcome to my shop.", "", 0, 0, Spawn, 0)
-end
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/bartender/halfelf_bartender_service_good_1_hail_gf_41d55b0d.mp3", "The best part about this job is all the extra coin I get.", "wink", 3789765642, 1946956397, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/bartender/halfelf_bartender_service_good_1_hail_gf_ce733912.mp3", "I bet you have some stories, eh? Adventuring must be an exciting life!", "smile", 1178661573, 1894551598, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/bartender/halfelf_bartender_service_good_1_hail_gf_201b6d6a.mp3", "What can I get for ya?", "nod", 2190631918, 1997401965, Spawn)
+ end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/RenuxtheUndying.lua b/server/SpawnScripts/Antonica/RenuxtheUndying.lua
index d3d1ad3ae..11894a3eb 100755
--- a/server/SpawnScripts/Antonica/RenuxtheUndying.lua
+++ b/server/SpawnScripts/Antonica/RenuxtheUndying.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
ChooseMovement(NPC)
end
@@ -33,7 +37,7 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -45,7 +49,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -57,7 +61,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -69,7 +73,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10),"ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/RiasonHanagom.lua b/server/SpawnScripts/Antonica/RiasonHanagom.lua
index 820bbdb4e..a96462c71 100755
--- a/server/SpawnScripts/Antonica/RiasonHanagom.lua
+++ b/server/SpawnScripts/Antonica/RiasonHanagom.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
local LetterToRiason = 5350 -- Letter to Riason quest
local ARediscoveredShrine = 5351 -- A Rediscovered Shrine? quest
@@ -85,14 +86,6 @@ end
-
-function attacked(NPC, Spawn)
-PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To Arms!", "", 1238020980, 748146443, Spawn)
-end
-
-
-
-
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Rikantus.lua b/server/SpawnScripts/Antonica/Rikantus.lua
index 6bf4df01a..e84679147 100755
--- a/server/SpawnScripts/Antonica/Rikantus.lua
+++ b/server/SpawnScripts/Antonica/Rikantus.lua
@@ -6,22 +6,46 @@
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local ScrawlingsInTheDark = 5329
local TheTrialsOfSirMorgan = 5330
local TheHiddenRiddle = 5331
+local WhispersOfFortune = 5809
+
+
function spawn(NPC)
-
+SetPlayerProximityFunction(NPC, 10, "InRange")
+ProvidesQuest(NPC,ScrawlingsInTheDark)
+ProvidesQuest(NPC,TheTrialsOfSirMorgan)
+ProvidesQuest(NPC,TheHiddenRiddle)
+ProvidesQuest(NPC,WhispersOfFortune)
end
+function InRange(NPC, Spawn)
+if CanRecieveQuest(Spawn, ScrawlingsInTheDark) then
+ ProvidesQuest(NPC, ScrawlingsInTheDark)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+ elseif HasCompletedQuest(Spawn, ScrawlingsInTheDark) then
+ ProvidesQuest(NPC, TheTrialsOfSirMorgan)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+elseif HasCompletedQuest(Spawn, TheTrialsOfSirMorgan) then
+ ProvidesQuest(NPC, TheHiddenRiddle)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+elseif HasCompletedQuest(Spawn, TheHiddenRiddle) and not HasCompletedQuest(Spawn, WhispersOfFortune) then
+ ProvidesQuest(NPC, WhispersOfFortune)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+end
+ end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- if not HasQuest(Spawn, ScrawlingsInTheDark) and not HasCompletedQuest(Spawn, ScrawlingsInTheDark) then
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus000.mp3", "", "", 1901210985, 121957326, Spawn)
- AddConversationOption(conversation, "You're very kind, but how safe can a cemetery be? ", "Option1")
- AddConversationOption(conversation, "This place gives me the creeps. I am going. ")
- StartConversation(conversation, NPC, Spawn, "My camp is your camp, traveler. Sit, sit ... rest a spell. Perhaps the evils of the countryside will subside whilst you warm your belly with some eidolon stew.")
+ if CanReceiveQuest(Spawn, ScrawlingsInTheDark) then
+ Option0(NPC, Spawn)
elseif GetQuestStep(Spawn, ScrawlingsInTheDark) < 5 then
PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/quest/020_human_male_rikantus_incomplete_fc0224e5.mp3", "I sent you on your way. Do not return until you have what I desire.", "", 532105714, 2356318843, Spawn)
elseif GetQuestStep(Spawn, ScrawlingsInTheDark) == 5 then
@@ -32,148 +56,248 @@ function hailed(NPC, Spawn)
Option9(NPC, Spawn)
elseif HasCompletedQuest(Spawn, TheTrialsOfSirMorgan) and not HasCompletedQuest(Spawn, TheHiddenRiddle) then
Option11(NPC, Spawn)
+ elseif GetQuestStep(Spawn, TheHiddenRiddle) == 5 then
+ Option15(NPC, Spawn)
+ elseif HasCompletedQuest(Spawn, TheHiddenRiddle) and not HasQuest(Spawn, WhispersOfFortune) then
+ Option17(NPC, Spawn)
+ elseif GetQuestStep(Spawn, WhispersOfFortune) == 1 or GetQuestStep(Spawn, WhispersOfFortune) == 2 then
+ Option18(NPC, Spawn)
+ elseif GetQuestStep(Spawn, WhispersOfFortune) == 3 then
+ Option19(NPC, Spawn)
+ elseif HasCompletedQuest(Spawn, WhispersOfFortune) then
+ QuestsCompleted(NPC, Spawn)
end
+ end
+
+function QuestsCompleted(NPC, Spawn)
+Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I offer you the key to fortunes never dreamt. Do not reject them! Obtain the exquisite pleasures of the eternal embrace of Nektropos Castle, " .. GetName(Spawn) .. " ")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1052.mp3", 0, 0)
+ Dialog.AddOption("Maybe I should return to Nektropos Castle. Farewell Rikantus or whatever you are. ")
+ Dialog.Start()
+end
+
+function Option0(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My camp is your camp, traveler. Sit, sit ... rest a spell. Perhaps the evils of the countryside will subside whilst you warm your belly with some eidolon stew.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus000.mp3", 1901210985, 121957326)
+ Dialog.AddOption("You're very kind, but how safe can a cemetery be? ", "Option1")
+ Dialog.AddOption("This place gives me the creeps. I am going.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus001.mp3", "", "", 3613823523, 1875879979, Spawn)
- AddConversationOption(conversation, "Thank you. So what brings an old man into the wilderness? ", "Option2")
- AddConversationOption(conversation, "This place gives me the creeps. I am going. ")
- StartConversation(conversation, NPC, Spawn, "Do not fear Evernight Cemetery. It is nothing but an old forgotten plot of land now. Nothing to fear here. The dead have long since dug their way out and found their way home or found their way to vengeance. Now how about that stew? My best batch yet.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Do not fear Evernight Cemetery. It is nothing but an old forgotten plot of land now. Nothing to fear here. The dead have long since dug their way out and found their way home or found their way to vengeance. Now how about that stew? My best batch yet.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus001.mp3", 3613823523, 1875879979)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("Thank you. So what brings an old man into the wilderness? ", "Option2")
+ Dialog.AddOption("This place gives me the creeps. I am going. ")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus002.mp3", "", "", 4016493170, 1510119490, Spawn)
- AddConversationOption(conversation, "So you risk your life for heavy coin? ", "Option3")
- AddConversationOption(conversation, "You're rathed to be out here and so am I. Farewell.")
- StartConversation(conversation, NPC, Spawn, "I'm glad you asked. I am a trader of rare trinkets and a haggler of oddities. Only within the undiscovered territories will I find lost treasures the likes of which attract only the highest profits.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm glad you asked. I am a trader of rare trinkets and a haggler of oddities. Only within the undiscovered territories will I find lost treasures the likes of which attract only the highest profits.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus002.mp3", 4016493170, 1510119490)
+ Dialog.AddOption("So you risk your life for heavy coin? ", "Option3")
+ Dialog.AddOption("You're rathed to be out here and so am I. Farewell.")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus003.mp3", "", "", 2196343128, 4289160442, Spawn)
- AddConversationOption(conversation, "What do you have for sale? ", "Option4")
- AddConversationOption(conversation, "I am afraid I can stay no longer. Farewell.")
- StartConversation(conversation, NPC, Spawn, "Profit is not always measured in the tangible. I carry only the rarest of goods and require the greatest of value in trade. Often times the most valuable possessions cannot be contained within a coin purse. Perhaps we can haggle?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Profit is not always measured in the tangible. I carry only the rarest of goods and require the greatest of value in trade. Often times the most valuable possessions cannot be contained within a coin purse. Perhaps we can haggle?")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus003.mp3", 2196343128, 4289160442)
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
+ Dialog.AddOption("What do you have for sale? ", "Option4")
+ Dialog.AddOption("I am afraid I can stay no longer. Farewell.")
+ Dialog.Start()
end
function Option4(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus004.mp3", "", "", 1663634136, 3735069894, Spawn)
- AddConversationOption(conversation, "What do you wish me to do in exchange for such a trinket? ", "offer")
- AddConversationOption(conversation, "I cannot help you. I must leave.")
- StartConversation(conversation, NPC, Spawn, "You are not ready to behold one of my curios, but we may well have business to discuss. You are an explorer, an adventurer of the wilds. I am but an old man with a walking stick. Help me and I will offer you a sliver of wonder ... a trinket more priceless than all the platinum on Norrath.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You are not ready to behold one of my curios, but we may well have business to discuss. You are an explorer, an adventurer of the wilds. I am but an old man with a walking stick. Help me and I will offer you a sliver of wonder ... a trinket more priceless than all the platinum on Norrath.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus004.mp3", 1663634136, 3735069894)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("What do you wish me to do in exchange for such a trinket? ", "offer")
+ Dialog.AddOption("I cannot help you. I must leave.")
+ Dialog.Start()
end
function Option5(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus006.mp3", "", "", 2543025307, 3679314881, Spawn)
- AddConversationOption(conversation, "What is this book and why did the gnolls have it? ", "Option6")
- AddConversationOption(conversation, "I have no time for your words. Farewell.")
- StartConversation(conversation, NPC, Spawn, "The Scrawlings of Chirannis are mine yet again. Never shall we let it drift from embrace until the cursed words and foul creed are needed again.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Scrawlings of Chirannis are mine yet again. Never shall we let it drift from embrace until the cursed words and foul creed are needed again.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus006.mp3", 2543025307, 3679314881)
+ Dialog.AddOption("What is this book and why did the gnolls have it? ", "Option6")
+ Dialog.AddOption("I have no time for your words. Farewell.")
+ Dialog.Start()
end
function Option6(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus006.mp3", "", "", 2543025307, 3679314881, Spawn)
- AddConversationOption(conversation, "You promised me a reward.", "Option7")
- AddConversationOption(conversation, "I have no time for your words. Farewell.")
- StartConversation(conversation, NPC, Spawn, "The scratches within this ghastly tome have traveled far to meet the ears of gnolls. It speaks to them of origins and guides them to a foreboding destiny. The gnolls regard this as their newfound highest writ from the dog lord, Chirannis. They shall be very displeased that the sacred words were stolen from their lair.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The scratches within this ghastly tome have traveled far to meet the ears of gnolls. It speaks to them of origins and guides them to a foreboding destiny. The gnolls regard this as their newfound highest writ from the dog lord, Chirannis. They shall be very displeased that the sacred words were stolen from their lair.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus007.mp3", 1593578762, 1746394351)
+ Dialog.AddOption("You promised me a reward.", "Option7")
+ Dialog.AddOption("I have no time for your words. Farewell.")
+ Dialog.Start()
end
function Option7(NPC, Spawn)
SetStepComplete(Spawn, ScrawlingsInTheDark, 5)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus008.mp3", "", "", 2038978809, 4230232989, Spawn)
- AddConversationOption(conversation, "Farewell.")
- StartConversation(conversation, NPC, Spawn, "Here is your reward, a trinket from my personal vaults. It may appear old and tattered, but the wisdom within shall lead to great fortune.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Here is your reward, a trinket from my personal vaults. It may appear old and tattered, but the wisdom within shall lead to great fortune.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus008.mp3", 2038978809, 4230232989)
+ Dialog.AddOption("Farewell.")
+ Dialog.Start()
end
function Option8(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus009.mp3", "", "", 1847543773, 266333460, Spawn)
- AddConversationOption(conversation, "I will examine the trinket. Farewell.")
- StartConversation(conversation, NPC, Spawn, "I have given you a rare trinket, traveler. Take your time to examine its riddles and let it lead you to fortune.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I have given you a rare trinket, traveler. Take your time to examine its riddles and let it lead you to fortune.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus009.mp3", 1847543773, 266333460)
+ Dialog.AddOption("I will examine the trinket. Farewell.")
+ Dialog.Start()
end
function Option9(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus010.mp3", "", "", 4196671453, 2147837790, Spawn)
- AddConversationOption(conversation, "Your book led me to no fortune. ", "Option10")
- AddConversationOption(conversation, "I cannot rest right now. I must go.")
- StartConversation(conversation, NPC, Spawn, "Back again so soon? Perhaps you're hungry. I was just about to prepare some patchwork goulash. Nothing feeds a ravenous hunger like a bowl of patchwork goulash.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Back again so soon? Perhaps you're hungry. I was just about to prepare some patchwork goulash. Nothing feeds a ravenous hunger like a bowl of patchwork goulash.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus010.mp3", 4196671453, 2147837790)
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddOption("Your book led me to no fortune. ", "Option10")
+ Dialog.AddOption("I cannot rest right now. I must go.")
+ Dialog.Start()
end
function Option10(NPC, Spawn)
SetStepComplete(Spawn, TheTrialsOfSirMorgan, 15)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus011.mp3", "", "", 1018819553, 3991155928, Spawn)
- AddConversationOption(conversation, "All i have is this amulet. Take it. It's worthless.", "Option11")
- AddConversationOption(conversation, "I don't have time to talk. Farewell.")
- StartConversation(conversation, NPC, Spawn, "So, you read \"The Trials of Sir Morgan.\" Such a brave knight he was, loved by all. If you read his tale, then fortune has just begun.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, you read \"The Trials of Sir Morgan.\" Such a brave knight he was, loved by all. If you read his tale, then fortune has just begun.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus011.mp3", 1018819553, 3991155928)
+ Dialog.AddOption("All i have is this amulet. Take it. It's worthless.", "Option11")
+ Dialog.AddOption("I don't have time to talk. Farewell.")
+ Dialog.Start()
end
function Option11(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus012.mp3", "", "", 3588173678, 2145543554, Spawn)
- AddConversationOption(conversation, "It's yours? But the book said it came from the Keep of Immortality?", "Option12")
- AddConversationOption(conversation, "I don't have time to talk. Farewell.")
- StartConversation(conversation, NPC, Spawn, "The Amulet of Ullkorruuk! I once held this many ages ago. I mean, many decades ago. Forgive an old man's memory. I meant to say my family held this long ago when I had a home. With it comes an ancient curse, a curse that cannot be lifted. I shall see that it makes its way home, should I ever return.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Amulet of Ullkorruuk! I once held this many ages ago. I mean, many decades ago. Forgive an old man's memory. I meant to say my family held this long ago when I had a home. With it comes an ancient curse, a curse that cannot be lifted. I shall see that it makes its way home, should I ever return.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus012.mp3", 3588173678, 2145543554)
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ Dialog.AddOption("It's yours? But the book said it came from the Keep of Immortality?", "Option12")
+ Dialog.AddOption("I don't have time to talk. Farewell.")
+ Dialog.Start()
end
function Option12(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus013.mp3", "", "", 3290450870, 3371711202, Spawn)
- AddConversationOption(conversation, "What is the Riddle of Saryrn?", "Option13")
- AddConversationOption(conversation, "I don't have time for your stories. Farewell. ")
- StartConversation(conversation, NPC, Spawn, "The Keep of Immortality housed many wondrous artifacts. Its master was known to associate with my ancestors. The master was a mage called Valdoartus Varsoon and if he holds this, then he must surely hold the Riddle of Saryrn.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Keep of Immortality housed many wondrous artifacts. Its master was known to associate with my ancestors. The master was a mage called Valdoartus Varsoon and if he holds this, then he must surely hold the Riddle of Saryrn.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus013.mp3", 3290450870, 3371711202)
+ Dialog.AddOption("What is the Riddle of Saryrn?", "Option13")
+ Dialog.AddOption("I don't have time for your stories. Farewell. ")
+ Dialog.Start()
end
function Option13(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus014.mp3", "", "", 3295215206, 1663469634, Spawn)
- AddConversationOption(conversation, "If I find this box for you, will you grant me true fortune?", "Option14")
- AddConversationOption(conversation, "I don't have time for your stories. Farewell.")
- StartConversation(conversation, NPC, Spawn, "The riddle is a puzzle box made of rare metals and forged over time in a vat of planar blood. Silly myth. It is nothing more than an ancient toy. It is nothing special at all, but it is a memento of my heritage.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The riddle is a puzzle box made of rare metals and forged over time in a vat of planar blood. Silly myth. It is nothing more than an ancient toy. It is nothing special at all, but it is a memento of my heritage.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus014.mp3", 3295215206, 1663469634)
+ Dialog.AddOption("If I find this box for you, will you grant me true fortune?", "Option14")
+ Dialog.AddOption("I don't have time for your stories. Farewell.")
+ Dialog.Start()
end
function Option14(NPC, Spawn)
- if not HasQuest(Spawn, TheHiddenRiddle) then
+ if CanRecieveQuest(Spawn, TheHiddenRiddle) then
OfferQuest(NPC, Spawn, TheHiddenRiddle)
- end
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional1/rikantus/antonica/rikantus015.mp3", "", "", 89864911, 2778083584, Spawn)
- AddConversationOption(conversation, "I will return with the puzzle box. ")
- StartConversation(conversation, NPC, Spawn, "Return to me the Riddle of Saryrn, and you will have your fortune. I promise this or may my soul be cursed to walk this land for eternity.")
+ elseif HasQuest(Spawn, TheHiddenRiddle) then
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Return to me the Riddle of Saryrn, and you will have your fortune. I promise this or may my soul be cursed to walk this land for eternity.")
+Dialog.AddVoiceover("voiceover/english/optional1/rikantus/antonica/rikantus015.mp3", 89864911, 2778083584)
+Dialog.AddOption("I will return with the puzzle box. ")
+ Dialog.Start()
+ end
end
+function Option15(NPC, Spawn)
+Dialog.New(NPC, Spawn)
+Dialog.AddDialog("My traveler has returned. And you have brought me the puzzle box. I believe I have a debt to pay now. Shall we celebrate over some fermented elixirs?")
+Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1052.mp3", 0, 0)
+ PlayFlavor(NPC,"","","happy",0,0,Spawn)
+ Dialog.AddOption("All I want is my fortune.", "Option16")
+ Dialog.AddOption("I don't need your fortune or elixirs. Farewell.")
+ Dialog.Start()
+end
+
+function Option16(NPC, Spawn)
+Dialog.New(NPC, Spawn)
+Dialog.AddDialog("I am pleased that your desire has risen. You are already on your way to riches. But you are still lost and far from your goal.")
+Dialog.AddOption("Just tell me where I must go. ", "Option17")
+Dialog.AddOption("I don't care for any fortunes. Farewell.")
+Dialog.Start()
+end
+
+function Option17(NPC, Spawn)
+ if GetQuestStep(Spawn, TheHiddenRiddle, 5) then
+ SetStepComplete(Spawn, TheHiddenRiddle, 5)
+ end
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You must travel to the Ashlands of Nektulos. Cross the span, and the whisper of fortune will find you. Soon you shall gaze upon an account of journeys past, an account much like yours. Follow it and you will find wealth the likes of which you have never dreamt.")
+ Dialog.AddOption("Give me more information about this whispering fortune.", "offer2")
+ Dialog.AddOption("I don't care for any fortunes. Farewell.")
+ Dialog.Start()
+end
+
+function Option18(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Go and claim your fortune, and leave me to the silence of the dead. We have nothing left to share.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1052.mp3", 0, 0)
+ Dialog.AddOption("Sorry to bother you Rikantus. ")
+ Dialog.Start()
+end
+
+function Option19(NPC, Spawn)
+SetStepComplete(Spawn, WhispersOfFortune, 3)
+Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You should not have returned! You refused the fortunes of Nektropos Castle, but its embrace will always linger in your soul. Such defiance is deserving of a reward. I offer you anything you can take from my chest, and I offer you a gift greater than any platinum or silver; I offer you ... the Fleshbound Tome! Take great care of it. Its wisdom may appear when you least expect it.")
+ Dialog.AddOption("Sorry to bother you Rikantus. ")
+ Dialog.Start()
+end
+
+
+
+function offer2(NPC, Spawn)
+OfferQuest(NPC, Spawn, WhispersOfFortune)
+end
+
+
function offer(NPC, Spawn)
OfferQuest(NPC, Spawn, ScrawlingsInTheDark)
end
+
+
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/Rotclaw.lua b/server/SpawnScripts/Antonica/Rotclaw.lua
new file mode 100755
index 000000000..0b8a28385
--- /dev/null
+++ b/server/SpawnScripts/Antonica/Rotclaw.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/Rotclaw.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.27 11:09:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/RustySails.lua b/server/SpawnScripts/Antonica/RustySails.lua
new file mode 100755
index 000000000..99a1da6e6
--- /dev/null
+++ b/server/SpawnScripts/Antonica/RustySails.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/Antonica/RustySails.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.17 02:09:05
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local ZekAccess = 1
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hail yourself, stranger. State your purpose, or be on your way.")
+ Dialog.AddVoiceover("voiceover/english/optional1/rusty_sails/antonica/rustysails001.mp3", 3878527655, 4076294218)
+ if GetQuestStepProgress(Spawn,ZekAccess,1) == 0 then
+ Dialog.AddOption("Captain Coranis sent me.", "Dialog2")
+ end
+ Dialog.AddOption("I'm just leaving.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, I'm glad she sent someone. The attacks have been constant, and we've lost too many able bodies to withstand another attack ... What in Thule!? Another wave of Maruaders!")
+ Dialog.AddVoiceover("voiceover/english/optional1/rusty_sails/antonica/rustysails002.mp3", 2886366918, 4198367939)
+ Dialog.AddOption("Where?")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Antonica/SandCoveredCrab.lua b/server/SpawnScripts/Antonica/SandCoveredCrab.lua
index cb817441f..273aef941 100755
--- a/server/SpawnScripts/Antonica/SandCoveredCrab.lua
+++ b/server/SpawnScripts/Antonica/SandCoveredCrab.lua
@@ -5,99 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local level3 = 12
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- local difficulty3 = 6
- local hp3 = 550
- local power3 = 185
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/SarkinSearfang.lua b/server/SpawnScripts/Antonica/SarkinSearfang.lua
new file mode 100755
index 000000000..300f4a60e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SarkinSearfang.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SarkinSearfang.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.28 12:09:36
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryActon.lua b/server/SpawnScripts/Antonica/SentryActon.lua
index 245a06d33..467a7da2d 100755
--- a/server/SpawnScripts/Antonica/SentryActon.lua
+++ b/server/SpawnScripts/Antonica/SentryActon.lua
@@ -5,23 +5,83 @@
Script Purpose :
:
--]]
+local Quest2 = 5783
local greetingsTable = { "voiceover/english/voice_emotes/greetings/greetings_1_1034.mp3",
"voiceover/english/voice_emotes/greetings/greetings_2_1034.mp3",
"voiceover/english/voice_emotes/greetings/greetings_3_1034.mp3"};
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
PlayFlavor(NPC, greetingsTable[math.random(#greetingsTable)], "", "", 0, 0, Spawn)
FaceTarget(NPC, Spawn)
local conversation = CreateConversation()
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==3 then
+ AddConversationOption(conversation, "Counselor Vemerik has asked me to give you a message.","Dialog1")
+ end
AddConversationOption(conversation, "Thanks for the advice!")
StartConversation(conversation, NPC, Spawn, "Watch yourself out here. All kinds of bad things can happen - never know when a gnoll might sneak up behind ya and ... GRAB ya!")
end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","doubletake",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "He says your sister is ill but she's being taken care of.","Dialog2")
+ StartConversation(conversation, NPC, Spawn, "You mean Counselor Vemerik, as in the Queen's personal advisor Vemerik? He has a message for me? Uhhh ... what's the message?")
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","frustrated",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Are you alright? Why was she in Freeport?","Dialog4")
+ StartConversation(conversation, NPC, Spawn, "My sister? Taken care of... my sister?! She was supposed to be in Freeport already! This is... this is terrible!")
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","grumble",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "I'll just be on my way...","Dialog4")
+ StartConversation(conversation, NPC, Spawn, "I knew we should have left sooner. I TOLD her we needed to get out of this wet-dog stinking hole sooner. That uppity silver-tongued elf-haired \'Counselor\' should watch his back if he knows what's good for him!")
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","point",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "I have no idea what you're talking about! I was just given a message your sister was sick!","Dialog5")
+ StartConversation(conversation, NPC, Spawn, "I must rescue her!... You... You are in on this too, aren't you?! So where was she taken? Speak now or I'll remove your tongue!")
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+ PlayFlavor(Spawn,"","","whome",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "I have no idea where she is. When did you last speak with her? Perhaps she said something?","Dialog6")
+ StartConversation(conversation, NPC, Spawn, "What? That's ridiculous. That's a ridiculous story. I don't believe you. Just return my sister, I'll pay you whatever you want, there's no need for these shenanigans. ")
+end
+function Dialog6(NPC, Spawn)
+ SetStepComplete(Spawn,Quest2,3)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","wince",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "...Right. All preserve Queen Antonia.")
+ StartConversation(conversation, NPC, Spawn, "Wait... my sister already wrote to me of her safe passage! I... uh... ignore what I said before... For the glory of Qeynos!")
+end
+
+--I do not think it is any of your business, my friend. If you truly wish to help find my sister, you will do as I say.
+--I need to get my sister out of there. If you can't do it with words, could you do it by force?
+--
+-- No buts about it! I am not giving any information out about my sister until I know you can be trusted!
+--Suspicious, me? Uh... I was just testing you to see if you were truly interested. I am so worried about my sister but I do not want just some random person helping us find it... I mean, uh her... yes, her is what I meant.
+
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryAlden.lua b/server/SpawnScripts/Antonica/SentryAlden.lua
new file mode 100755
index 000000000..0d85b4b74
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryAlden.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryAlden.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:41
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryBriar.lua b/server/SpawnScripts/Antonica/SentryBriar.lua
new file mode 100755
index 000000000..d8ed82359
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryBriar.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryBriar.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:29
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryCrawln.lua b/server/SpawnScripts/Antonica/SentryCrawln.lua
new file mode 100755
index 000000000..69aa6e7e8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryCrawln.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryCrawln.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.07 01:05:24
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_1_1034.mp3","","agree",0,0,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryDeegan.lua b/server/SpawnScripts/Antonica/SentryDeegan.lua
new file mode 100755
index 000000000..d2279e897
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryDeegan.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryDeegan.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:41
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryDunstan.lua b/server/SpawnScripts/Antonica/SentryDunstan.lua
new file mode 100755
index 000000000..50c2ce653
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryDunstan.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryDunstan.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:15
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_2_1034.mp3","","agree",0,0,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryElmsley.lua b/server/SpawnScripts/Antonica/SentryElmsley.lua
index 1c72f5662..b0eac3c89 100755
--- a/server/SpawnScripts/Antonica/SentryElmsley.lua
+++ b/server/SpawnScripts/Antonica/SentryElmsley.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/SentryGeddis.lua b/server/SpawnScripts/Antonica/SentryGeddis.lua
new file mode 100755
index 000000000..2174d50ce
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryGeddis.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryGeddis.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:57
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryInnis.lua b/server/SpawnScripts/Antonica/SentryInnis.lua
new file mode 100755
index 000000000..31cacf9a6
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryInnis.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryInnis.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:30
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryMaurice.lua b/server/SpawnScripts/Antonica/SentryMaurice.lua
new file mode 100755
index 000000000..b82c9a903
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryMaurice.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryMaurice.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.07 01:05:19
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_3_1034.mp3","","hello",0,0,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentryOates.lua b/server/SpawnScripts/Antonica/SentryOates.lua
new file mode 100755
index 000000000..083239681
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentryOates.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentryOates.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:48
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentrySecord.lua b/server/SpawnScripts/Antonica/SentrySecord.lua
new file mode 100755
index 000000000..4d4b12fd3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentrySecord.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentrySecord.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 08:05:53
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_2_1034.mp3","","hello",0,0,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SentrySmythe.lua b/server/SpawnScripts/Antonica/SentrySmythe.lua
new file mode 100755
index 000000000..94f362ed3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/SentrySmythe.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/SentrySmythe.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 08:05:16
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_1_1034.mp3","","agree",0,0,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ShadySwashbucklerXVII.lua b/server/SpawnScripts/Antonica/ShadySwashbucklerXVII.lua
new file mode 100755
index 000000000..b98c8b3cb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ShadySwashbucklerXVII.lua
@@ -0,0 +1,92 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ShadySwashbucklerXVII.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.11 04:06:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local Bard = 5855
+local Brawler = 5845
+local Cleric = 5848
+local Crusader = 5846
+local Druid = 5849
+local Enchanter = 5851
+local Predator = 5856
+local Rogue = 5857
+local Shaman = 5850
+local Summoner = 5854
+local Warrior = 5847
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5858)then
+ SetStepComplete(Spawn,5858,2)
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_hail_gm_d38d1fff.mp3", "Ah, what have we here? Glad to see you endured the journey here adventurer.", "ponder", 2806352129, 3453714070, Spawn)
+ elseif HasQuest(Spawn,Bard) or
+ HasQuest(Spawn,Brawler) or
+ HasQuest(Spawn,Cleric) or
+ HasQuest(Spawn,Crusader) or
+ HasQuest(Spawn,Druid) or
+ HasQuest(Spawn,Enchanter) or
+ HasQuest(Spawn,Predator) or
+ HasQuest(Spawn,Rogue) or
+ HasQuest(Spawn,Shaman) or
+ HasQuest(Spawn,Summoner) or
+ HasQuest(Spawn,Warrior)then
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My apologies, friend. I did not see you there ... What is it you need?")
+ Dialog.AddVoiceover("voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_callout1_c6eaefe5.mp3", 3948051330, 1166584264)
+ Dialog.AddOption("I hear you can get me some gear? Here are my papers","Gear")
+ Dialog.AddOption("Good day to you!")
+ Dialog.Start()
+else
+ PlayFlavor(NPC, "voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_callout1_c6eaefe5.mp3", "My apologies, friend. I did not see you there ... What is it you need?", "", 3948051330, 1166584264, Spawn)
+end
+end
+
+
+function Gear(NPC,Spawn)
+ if HasQuest(Spawn,Bard) then
+ SetStepComplete(Spawn,Bard,1)
+ end
+ if HasQuest(Spawn,Brawler) then
+ SetStepComplete(Spawn,Brawler,1)
+ end
+ if HasQuest(Spawn,Cleric) then
+ SetStepComplete(Spawn,Cleric,1)
+ end
+ if HasQuest(Spawn,Crusader) then
+ SetStepComplete(Spawn,Crusader,1)
+ end
+ if HasQuest(Spawn,Druid) then
+ SetStepComplete(Spawn,Druid,1)
+ end
+ if HasQuest(Spawn,Enchanter) then
+ SetStepComplete(Spawn,Enchanter,1)
+ end
+ if HasQuest(Spawn,Predator) then
+ SetStepComplete(Spawn,Predator,1)
+ end
+ if HasQuest(Spawn,Rogue) then
+ SetStepComplete(Spawn,Rogue,1)
+ end
+ if HasQuest(Spawn,Shaman) then
+ SetStepComplete(Spawn,Shaman,1)
+ end
+ if HasQuest(Spawn,Summoner) then
+ SetStepComplete(Spawn,Summoner,1)
+ end
+ if HasQuest(Spawn,Warrior) then
+ SetStepComplete(Spawn,Warrior,1)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SighardSayer.lua b/server/SpawnScripts/Antonica/SighardSayer.lua
index 3d417d0fb..6ce835900 100755
--- a/server/SpawnScripts/Antonica/SighardSayer.lua
+++ b/server/SpawnScripts/Antonica/SighardSayer.lua
@@ -5,36 +5,73 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local AFrontiersladysTask = 5528
+local Sayer = 5812
function spawn(NPC)
-
+ProvidesQuest(NPC,Sayer)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sighard_sayer/antonica/sighardsayer000.mp3", "", "", 2370903667, 1889747783, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome, welcome. Please look about. Speak to my merchants; they're quite helpful.")
+ Dialog.AddVoiceover("voiceover/english/sighard_sayer/antonica/sighardsayer000.mp3", 2370903667, 1889747783)
+ PlayFlavor(NPC,"","","hello",0,0,Spawn)
if GetQuestStep(Spawn, AFrontiersladysTask) == 1 then
- AddConversationOption(conversation, "Dancer sent this message to you.", "Option1")
+ Dialog.AddOption("Dancer sent this message to you.", "Option1")
end
- AddConversationOption(conversation, "Thank you. I shall look around.")
- StartConversation(conversation, NPC, Spawn, "Welcome, welcome. Please look about. Speak to my merchants; they're quite helpful.")
+ if CanReceiveQuest(Spawn, Sayer) then
+ Dialog.AddOption("How have you been, Mr. Sayer? ", "Quest1")
+ elseif GetQuestStep(Spawn, Sayer) == 5 then
+ Dialog.AddOption("I delivered the goods, Mr. Sayer. ", "Dialog2")
+ end
+ Dialog.AddOption("Thank you. I shall look around.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
SetStepComplete(Spawn, AFrontiersladysTask, 1)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sighard_sayer/antonica/sighardsayer001.mp3", "", "", 226640630, 2449088928, Spawn)
- AddConversationOption(conversation, "I shall see that she gets the arrow. ")
- StartConversation(conversation, NPC, Spawn, "Ah! Dancer the frontiersman ... er ... I mean frontierslady as she says. Here, here. This is for her, an arrow like few others, an arrow she is expecting. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah! Dancer the frontiersman ... er ... I mean frontierslady as she says. Here, here. This is for her, an arrow like few others, an arrow she is expecting. ")
+ Dialog.AddVoiceover("voiceover/english/sighard_sayer/antonica/sighardsayer001.mp3", 226640630, 2449088928)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("I shall see that she gets the arrow. ")
+ Dialog.Start()
end
+function Quest1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes! You're Dancer's courier. If she's not got ya running around all of Antonica, I sure could use your legs. ")
+ Dialog.AddVoiceover("voiceover/english/sighard_sayer/antonica/sighardsayer002.mp3", 4166112879, 2639972315)
+ PlayFlavor(NPC,"","","smile",0,0,Spawn)
+ Dialog.AddOption("Sure, Mr. Sayer.", "Quest2")
+ Dialog.AddOption("Sorry Mr. Sayer. I have to go.")
+ Dialog.Start()
+end
+function Quest2(NPC, Spawn)
+OfferQuest(NPC,Spawn,Sayer)
+end
+function Dialog2(NPC, Spawn)
+ SetStepComplete(Spawn, Sayer, 5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Quit callin' me Mr. Sayer. Makes me feel as old as Overlord of Freeport! Here's a bit of coin for your tired feet. Maybe we can work together again.")
+ Dialog.AddVoiceover("voiceover/english/sighard_sayer/antonica/sighardsayer004.mp3", 3771968860, 1623839270)
+ PlayFlavor(NPC,"","","glare",0,0,Spawn)
+ Dialog.AddOption("Thank you, Mr. Sayer.","Pout")
+ Dialog.Start()
+end
+function Pout(NPC, Spawn)
+ PlayFlavor(NPC,"","","frustrated",0,0,Spawn)
+end
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SirJeager.lua b/server/SpawnScripts/Antonica/SirJeager.lua
index b6f309df0..93914cf4b 100755
--- a/server/SpawnScripts/Antonica/SirJeager.lua
+++ b/server/SpawnScripts/Antonica/SirJeager.lua
@@ -1,10 +1,11 @@
--[[
Script Name : SpawnScripts/Antonica/SirJeager.lua
- Script Author : Premierio015
+ Script Author : Premierio015,Dorbin
Script Date : 2021.08.10 09:08:50
Script Purpose :
- :
+ : Updated using Dialog Module - Dorbin 05/12/2023
--]]
+require "SpawnScripts/Generic/DialogModule"
local GettingTheAxe = 5334 -- Getting the Axe Quest
local SabertoothBattlePlans = 5335 -- Sabertooth Battle Plans Quest
@@ -14,53 +15,63 @@ function spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
if not HasQuest(Spawn, SabertoothBattlePlans) then
- PlayFlavor(NPC, "voiceover/english/sir_jeager/antonica/sirjeager000.mp3", "", "", 3221404151, 3230765792, Spawn)
- if HasCompletedQuest(Spawn, GettingTheAxe) and not HasCompletedQuest(Spawn, SabertoothBattlePlans) then
- AddConversationOption(conversation, "I would like to help with the campaign against the Sabertooth.", "Option1")
- end
- AddConversationOption(conversation, "I'm just looking around.", "Option0")
- if HasCompletedQuest(Spawn, GettingTheAxe) then
- AddConversationOption(conversation, "No thank you.")
- end
- StartConversation(conversation, NPC, Spawn, "Greetings! Can I help you with something?")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings! Can I help you with something?")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager000.mp3", 3221404151, 3230765792)
+ if HasCompletedQuest(Spawn, GettingTheAxe) and not HasCompletedQuest(Spawn, SabertoothBattlePlans) then
+ Dialog.AddOption("I would like to help with the campaign against the Sabertooth.", "Option1")
+ end
+ if HasCompletedQuest(Spawn, GettingTheAxe) then
+ Dialog.AddOption("I'm just looking around.", "Option0")
+ end
+ Dialog.AddOption("No thank you.")
+ Dialog.Start()
+
elseif HasQuest(Spawn, SabertoothBattlePlans) then
- PlayFlavor(NPC, "voiceover/english/sir_jeager/antonica/sirjeager005.mp3", "", "", 1410263883, 2325716326, Spawn)
- if GetQuestStep(Spawn, SabertoothBattlePlans) == 2 then
- AddConversationOption(conversation, "Yes, here they are.", "Option2")
- end
- AddConversationOption(conversation, "Not yet, but soon.")
- StartConversation(conversation, NPC, Spawn, "You have the battle plans?")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You have the battle plans?")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager005.mp3", 1410263883, 2325716326)
+ if GetQuestStep(Spawn, SabertoothBattlePlans) == 2 then
+ Dialog.AddOption("Yes, here they are.", "Option2")
+ end
+ Dialog.AddOption("Not yet, but soon.")
+ Dialog.Start()
end
end
function Option0(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sir_jeager/antonica/sirjeager004.mp3", "", "", 3285899250, 1646181505, Spawn)
- AddConversationOption(conversation, "I will watch my back.")
- StartConversation(conversation, NPC, Spawn, "Well, be careful, or the Sabertooth clan will have you for dinner.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, be careful, or the Sabertooth clan will have you for dinner.")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager004.mp3", 3285899250, 1646181505)
+ Dialog.AddOption("I will watch my back.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sir_jeager/antonica/sirjeager001.mp3", "", "", 1175262455, 1051406685, Spawn)
- AddConversationOption(conversation, "I am interested.", "offer")
- AddConversationOption(conversation, "I am not interested right now.")
- StartConversation(conversation, NPC, Spawn, "Really? Ahh, yes... You are the one that Squire Kivan was talking about. I do have something for you to do -- that is, if you are interested.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Really? Ahh, yes... You are the one that Squire Kivan was talking about. I do have something for you to do -- that is, if you are interested.")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager001.mp3", 1175262455, 1051406685)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I am interested.", "offer")
+ Dialog.AddOption("I am not interested right now.")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
-SetStepComplete(Spawn, SabertoothBattlePlans, 2)
+ SetStepComplete(Spawn, SabertoothBattlePlans, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sir_jeager/antonica/sirjeager006.mp3", "", "", 923179982, 4001844374, Spawn)
- AddConversationOption(conversation, "Anything to help.", "Option24")
- StartConversation(conversation, NPC, Spawn, "Hrmm...This is terrible news. Tomorrow I will write a report and send it to town with Squire Kivan. I am sure that the Royal Antonican Guard will know what to do. Reporting the Sabertooth's plans may save hundreds of lives. Antonica is indebted to you for your service, adventurer. Thank you.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hrmm...This is terrible news. Tomorrow I will write a report and send it to town with Squire Kivan. I am sure that the Royal Antonican Guard will know what to do. Reporting the Sabertooth's plans may save hundreds of lives. Antonica is indebted to you for your service, adventurer. Thank you.")
+ Dialog.AddVoiceover("voiceover/english/sir_jeager/antonica/sirjeager006.mp3", 923179982, 4001844374)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Anything to help.")
+ Dialog.Start()
end
@@ -68,6 +79,8 @@ function offer(NPC, Spawn)
OfferQuest(NPC, Spawn, SabertoothBattlePlans)
end
+
+
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SoldierHomrie.lua b/server/SpawnScripts/Antonica/SoldierHomrie.lua
index 0aabb62bd..0d59a920b 100755
--- a/server/SpawnScripts/Antonica/SoldierHomrie.lua
+++ b/server/SpawnScripts/Antonica/SoldierHomrie.lua
@@ -1,12 +1,13 @@
--[[
Script Name : SoldierHomrie.lua
Script Purpose : Soldier Homrie
- Script Author : Jabantiz
+ Script Author : Dorbin
Script Date : 08/29/2019
- Script Notes : Auto-Generated from a chat log using SpawnScriptDesigner
+ Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
+local Quest2 = 5773
function spawn(NPC)
end
@@ -16,20 +17,34 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+ if QuestStepIsComplete(Spawn,Quest2,3) then
+ PlayFlavor(NPC,"","Ugh... my body still aches.","",0,0,Spawn)
+ else
Dialog.New(NPC, Spawn)
-
Dialog.AddDialog("Please, someone help me! One of those ... blasted gnolls got me ... with a poison arrow. Don't know how much time I have.")
Dialog.AddVoiceover("voiceover/english/soldier_homrie/antonica/soldierhomrie000.mp3", 2620699462, 3560167645)
+ if not HasQuest(Spawn,Quest2)then
Dialog.AddOption("This is more than I can handle")
+ elseif GetQuestStep(Spawn,Quest2)>=3 and GetQuestStep(Spawn,Quest2)<=5 then
+ Dialog.AddOption("*make a tonic from nearby herbs and mosses* Here, my friend! Drink this!","Dialog1")
+ Dialog.AddOption("Hey, you don't look that bad. Just walk it off. I've got other things to do.")
+ end
+ Dialog.Start()
+end
+end
- Dialog.Start()
-
- --[[ Say() from this NPC
+function Dialog1(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Uhg! Smells horrid! You look like a priest, though. Okay ... bottoms up! Tastes horrid, too. What's it supposed to do, anyway?")
+ Dialog.AddVoiceover("voiceover/english/soldier_homrie/antonica/soldierhomrie001.mp3", 273324420, 1739184199)
+ PlayFlavor(Spawn,"","","scheme",0,0,Spawn)
+ Dialog.AddOption("It'll slow the poison until you can get to a proper medic. I must help the others now!","Dialog2")
+ Dialog.Start()
+ ApplySpellVisual(NPC,137)
+end
- Orphaned PlayFlavors
-
- --]]
-
-end
\ No newline at end of file
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+ SetStepComplete(Spawn,Quest2,3)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SoldierPellenos.lua b/server/SpawnScripts/Antonica/SoldierPellenos.lua
index bea78aac5..823231adf 100755
--- a/server/SpawnScripts/Antonica/SoldierPellenos.lua
+++ b/server/SpawnScripts/Antonica/SoldierPellenos.lua
@@ -1,14 +1,16 @@
--[[
Script Name : SoldierPellenos.lua
Script Purpose : Soldier Pellenos
- Script Author : Jabantiz
+ Script Author : Dorbin
Script Date : 08/29/2019
- Script Notes : Auto-Generated from a chat log using SpawnScriptDesigner
+ Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
+local Quest2 = 5773
function spawn(NPC)
+SpawnSet(NPC,"mood_state",11851)
end
function respawn(NPC)
@@ -20,6 +22,83 @@ function hailed(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Hello there! Come for tea? I'm sorry, but I'm completely out of sugar! Ask the gnolls; they killed everyone here. Yes, everyone ... but me. And now I don't know where the teapot is. But there's no sugar, so it doesn't matter. Hee hee!")
Dialog.AddVoiceover("voiceover/english/soldier_pellenos/antonica/soldierpellenos000.mp3", 1163216661, 1374396993)
- Dialog.AddOption("Goodbye.")
+ if not HasQuest(Spawn,Quest2)then
+ Dialog.AddOption("Err okay. Goodbye.")
+ elseif GetQuestStep(Spawn,Quest2)>=3 and GetQuestStep(Spawn,Quest2)<=5 then
+ Dialog.AddOption("Are you all right?","Dialog1")
+ end
Dialog.Start()
-end
\ No newline at end of file
+end
+
+ -- SetStepComplete(NPC,Quest2,4)
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perhaps. Although I might be all left! Yes, I'm the only one left. So I can't be right, after all, can I?")
+ Dialog.AddVoiceover("voiceover/english/soldier_pellenos/antonica/soldierpellenos001.mp3", 3557389573, 3806634312)
+ PlayFlavor(NPC,"","","crazy",0,0,Spawn)
+ Dialog.AddOption("[continue]","Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh dear. Why is there blood on my forehead? Where's our commander? Where's the cook? Where is everyone! Why am I the only one who lived? I shouldn't be alive!")
+ Dialog.AddVoiceover("voiceover/english/soldier_pellenos/antonica/soldierpellenos002.mp3", 1526924525, 878736968)
+ PlayFlavor(NPC,"","","doh",0,0,Spawn)
+ Dialog.AddOption("*Call upon the spirits to heal the madness the young soldier suffers*","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh my. Who are you? When did you arrive? My eyes are playing tricks on me. Is that you, Papa? Oh, Papa! I saw some bad things today, Papa! I didn't die with the rest of 'em.")
+ Dialog.AddVoiceover("voiceover/english/soldier_pellenos/antonica/soldierpellenos003.mp3", 2378022983, 3720942230)
+ PlayFlavor(NPC,"","","doubletake",0,0,Spawn)
+ Dialog.AddOption("I'm not your Papa, young man. I am a healer, and you've been badly wounded.","Dialog4")
+ Dialog.Start()
+ ApplySpellVisual(NPC,58)
+ CastSpell(Spawn,52)
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No no! No wounds here! I'm a strong boy, I am! Yes, Papa, I'll pull myself together. I can hear you clearly.")
+ Dialog.AddVoiceover("voiceover/english/soldier_pellenos/antonica/soldierpellenos004.mp3", 313471122, 2661378922)
+ PlayFlavor(NPC,"","","heckno",0,0,Spawn)
+ Dialog.AddOption("I hope my healing prayer works quickly. You're really losing it.","Dialog5")
+ Dialog.Start()
+ ApplySpellVisual(NPC,58)
+ CastSpell(Spawn,52)
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Uh ... what was I just raving about? Thank you, stranger. I ... I lost myself for a moment. But I'm getting better. This wound is not serious, but I must return to Qeynos and inform them about the gnoll attack. Um ... you are the one who healed me, aren\'t you? Thank you.")
+ Dialog.AddVoiceover("voiceover/english/soldier_pellenos/antonica/soldierpellenos005.mp3", 3396914222, 3656653380)
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddOption("You're welcome. You seem to have pulled through.","Dialog6")
+ Dialog.Start()
+ SpawnSet(NPC,"mood_state",0)
+ ApplySpellVisual(NPC,57)
+ CastSpell(Spawn,53)
+end
+
+
+function Dialog6(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","thanks",0,0)
+ SetStepComplete(Spawn,Quest2,5)
+ AddTimer(NPC,6000,"Despawning")
+ end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SoldierSelennia.lua b/server/SpawnScripts/Antonica/SoldierSelennia.lua
index 8b9e20c4c..a5285ad25 100755
--- a/server/SpawnScripts/Antonica/SoldierSelennia.lua
+++ b/server/SpawnScripts/Antonica/SoldierSelennia.lua
@@ -8,8 +8,10 @@
require "SpawnScripts/Generic/DialogModule"
+local Quest2 = 5773
function spawn(NPC)
+ SpawnSet(NPC,"action_state",11769)
end
function respawn(NPC)
@@ -24,6 +26,36 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Listen ... I only have a few minutes left. Tell the commander ... the gnolls came from behind ... they took all of us out ... Arthur ... Garrin ... Dalathani ... the Greenleaf triplets. And even little Skimpy! Those fiends! They even killed Skimpy! I've lost too much ... blood. Tell him ... what happened.")
Dialog.AddVoiceover("voiceover/english/optional1/soldier_selennia/antonica/soldierselennia000.mp3", 2094795288, 2230809684)
+ if not HasQuest(Spawn,Quest2)then
Dialog.AddOption("Ok.")
+ elseif GetQuestStep(Spawn,Quest2)>=3 and GetQuestStep(Spawn,Quest2)<=5 then
+ Dialog.AddOption("Little Skimpy has not perished in vain. Hang in there; I can heal your wounds. *Summon all your belief and pray to the gods to heal this woman*","Dialog2")
+ end
Dialog.Start()
end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ SetStepComplete(NPC,Quest2,4)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My wounds! They're ... they're ... gone! You healed me! Praise the gods! But now ... now I need to return to Qeynos to give the commander the bad news. I thank you for your ... well, your divine interevention.")
+ Dialog.AddVoiceover("voiceover/english/optional1/soldier_selennia/antonica/soldierselennia001.mp3", 2094795288, 2230809684)
+ Dialog.AddOption("Just remember to say a little prayer to the gods for your fallen comrades.","Goodbye")
+ Dialog.Start()
+ SpawnSet(NPC,"action_state",0)
+ ApplySpellVisual(NPC,23)
+ CastSpell(Spawn,52)
+end
+
+function Goodbye(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","thanks",0,0)
+ SetStepComplete(Spawn,Quest2,4)
+ AddTimer(NPC,6000,"Despawning")
+ end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+--
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/SquireKivan.lua b/server/SpawnScripts/Antonica/SquireKivan.lua
index 554c81ba5..59440de86 100755
--- a/server/SpawnScripts/Antonica/SquireKivan.lua
+++ b/server/SpawnScripts/Antonica/SquireKivan.lua
@@ -1,10 +1,11 @@
--[[
Script Name : SpawnScripts/antonica/SquireKivan.lua
- Script Author : Premierio015
+ Script Author : Premierio015, Dorbin
Script Date : 2021.08.08 07:08:53
- Script Purpose :
+ Script Purpose : Restructured using dialog module. - Dorbin 05/12/2023
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local GettingTheAxe = 5334 -- Getting the Axe quest
@@ -13,58 +14,76 @@ ProvidesQuest(NPC, GettingTheAxe)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- if not HasQuest(Spawn, GettingTheAxe) and not HasCompletedQuest(Spawn, GettingTheAxe) then
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan000.mp3", "", "", 2734271826, 247332290, Spawn)
- AddConversationOption(conversation, "Who are you?", "Option1")
- AddConversationOption(conversation, "No thank you. I need to be going now.")
- AddConversationOption(conversation, "I need to leave, the smell of that soup is making me sick.")
- StartConversation(conversation, NPC, Spawn, "Are you hungry? I'm making soup.")
- elseif HasQuest(Spawn, GettingTheAxe) then
+if not HasQuest(Spawn,GettingTheAxe) then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you hungry? I'm making soup.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan000.mp3", 2734271826, 247332290)
+ Dialog.AddOption("Who are you?", "Option1")
+ Dialog.AddOption("No thank you. I need to be going now.")
+ Dialog.AddOption("I need to leave, the smell of that soup is making me sick.","Sulk")
+ Dialog.Start()
+
+elseif HasQuest(Spawn,GettingTheAxe) then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did you find the Sabertooth's mine?")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan006.mp3", 3390324714, 548456268)
if GetQuestStep(Spawn, GettingTheAxe) == 2 then
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan006.mp3", "", "", 3390324714, 548456268, Spawn)
- AddConversationOption(conversation, "Yes, here are the ten mining picks you asked for.", "Option5")
- end
- AddConversationOption(conversation, "No, not yet.")
- StartConversation(conversation, NPC, Spawn, "Did you find the Sabertooth's mine?")
+ Dialog.AddOption("Yes, here are the ten mining picks you asked for.", "Option5")
+ end
+ Dialog.AddOption("No, not yet.")
+ Dialog.Start()
+
elseif HasCompletedQuest(Spawn, GettingTheAxe) then
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan008.mp3", "", "", 2477620923, 2758696689, Spawn)
- AddConversationOption(conversation, "Ok, I will speak to him soon.")
- StartConversation(conversation, NPC, Spawn, "You should speak to Sir Jeager now. I've chores to do.")
-
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You should speak to Sir Jeager now. I've chores to do.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan008.mp3", 2477620923, 2758696689)
+ Dialog.AddOption("Ok, I will speak to him soon.")
+ Dialog.Start()
+ end
+end
+
+function Sulk(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "sulk", 0, 0, Spawn)
end
- end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan001.mp3", "", "", 4248655017, 1242656095, Spawn)
- AddConversationOption(conversation, "What is the Sabertooth clan?", "Option3")
- AddConversationOption(conversation, "Who is Sir Jeager?", "Option2")
- AddConversationOption(conversation, "Ok, I need to be on my way now.")
- StartConversation(conversation, NPC, Spawn, "I'm Kivan, Sir Jeager's squire and faithful servant. We're here to fight the insidious Sabertooth clan.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm Kivan, Sir Jeager's squire and faithful servant. We're here to fight the insidious Sabertooth clan.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan001.mp3", 4248655017, 1242656095)
+ PlayFlavor(NPC, "", "", "attention", 0, 0, Spawn)
+ Dialog.AddOption("What is the Sabertooth clan?", "Option3")
+ Dialog.AddOption("Who is Sir Jeager?", "Option2")
+ Dialog.AddOption("Ok, I need to be on my way now.")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan002.mp3", "", "", 3336136995, 3800742023, Spawn)
- AddConversationOption(conversation, "If he's such a great leader, why was he assigned to do this alone?", "Option4")
- AddConversationOption(conversation, "What is the Sabertooth clan?", "Option3")
- AddConversationOption(conversation, "Ok, I need to be going now.")
- StartConversation(conversation, NPC, Spawn, "Sir Jeager is the most honorable of all the Royal Antonican Guards. He alone was assigned to fight off the Sabertooth clan. He's a leader among leaders and a brave soldier.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Sir Jeager is the most honorable of all the Royal Antonican Guards. He alone was assigned to fight off the Sabertooth clan. He's a leader among leaders and a brave soldier.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan002.mp3", 3336136995, 3800742023)
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
+ Dialog.AddOption("If he's such a great leader, why was he assigned to do this alone?", "Option4")
+ Dialog.AddOption("What is the Sabertooth clan?", "Option3")
+ Dialog.AddOption("Ok, I need to be going now.")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan004.mp3", "", "", 235168551, 73943333, Spawn)
- AddConversationOption(conversation, "Why was Sir Jeager assigned the task of fighting these gnolls?", "Option4")
- AddConversationOption(conversation, "I must leave now.")
- StartConversation(conversation, NPC, Spawn, "They're a clan of vicious gnolls. They infest the hills around here, and at night they prey on the children of Qeynos. We must stop them!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("They're a clan of vicious gnolls. They infest the hills around here, and at night they prey on the children of Qeynos. We must stop them!")
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan004.mp3", 235168551, 73943333)
+ Dialog.AddOption("Why was Sir Jeager assigned the task of fighting these gnolls?", "Option4")
+ Dialog.AddOption("I must leave now.")
+ Dialog.Start()
end
@@ -72,20 +91,26 @@ end
function Option4(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan003.mp3", "", "", 3360347325, 2913141517, Spawn)
- AddConversationOption(conversation, "Is there anything I can do to help?", "offer")
- AddConversationOption(conversation, "That's too bad.")
- StartConversation(conversation, NPC, Spawn, "It seems that politics and honesty do not mix. One of the Queen's advisors did not like something Sir Jeager said. So, here we are.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It seems that politics and honesty do not mix. One of the Queen's advisors did not like something Sir Jeager said. So, here we are.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan003.mp3", 3360347325, 2913141517)
+ PlayFlavor(NPC, "", "", "sigh", 0, 0, Spawn)
+ if CanReceiveQuest(Spawn,GettingTheAxe) then
+ Dialog.AddOption("Is there anything I can do to help?", "offer")
+ end
+ Dialog.AddOption("That's too bad.")
+ Dialog.Start()
end
function Option5(NPC, Spawn)
SetStepComplete(Spawn, GettingTheAxe, 2)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/squire_kivan/antonica/squirekivan007.mp3", "", "", 1357752664, 1145030889, Spawn)
- AddConversationOption(conversation, "Ok, I will speak to him soon.", "Option11")
- StartConversation(conversation, NPC, Spawn, "Wonderful! I appreciate your help. I hope we can stop the gnolls before they become a greater threat to our people. I need to get back to my chores now. You must speak to Sir Jeager.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wonderful! I appreciate your help. I hope we can stop the gnolls before they become a greater threat to our people. I need to get back to my chores now. You must speak to Sir Jeager.")
+ Dialog.AddVoiceover("voiceover/english/squire_kivan/antonica/squirekivan007.mp3", 1357752664, 1145030889)
+ PlayFlavor(NPC, "", "", "heelclick", 0, 0, Spawn)
+ Dialog.AddOption("Ok, I will speak to him soon.")
+ Dialog.Start()
end
diff --git a/server/SpawnScripts/Antonica/Stoneclaw.lua b/server/SpawnScripts/Antonica/Stoneclaw.lua
new file mode 100755
index 000000000..36ec50be3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/Stoneclaw.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : SpawnScripts/Antonica/Stoneclaw.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.08 01:02:01
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+
+ChooseMovement(NPC)
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z + 7, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z - 7, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 14, Y, Z+7, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 14, Y, Z+12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z+14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 14, Y, Z -14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/TarkSearfang.lua b/server/SpawnScripts/Antonica/TarkSearfang.lua
index a46b8645e..a6f2549f2 100755
--- a/server/SpawnScripts/Antonica/TarkSearfang.lua
+++ b/server/SpawnScripts/Antonica/TarkSearfang.lua
@@ -8,6 +8,10 @@
dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
end
diff --git a/server/SpawnScripts/Antonica/TaskmasterLynette.lua b/server/SpawnScripts/Antonica/TaskmasterLynette.lua
index 33acfd2d5..0e5224585 100755
--- a/server/SpawnScripts/Antonica/TaskmasterLynette.lua
+++ b/server/SpawnScripts/Antonica/TaskmasterLynette.lua
@@ -1,21 +1,21 @@
--[[
Script Name : SpawnScripts/Antonica/TaskmasterLynette.lua
Script Purpose : Taskmaster Lynette
- Script Author : geordie0511
+ Script Author : geordie0511,Dorbin
Script Date : 2019.03.19
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-local A1 = 474
-local A2 = 475
-local A3 = 476
-local A4 = 477
-local A5 = 478
-local A6 = 479
-local A7 = 480
-local A8 = 481
-local A9 = 482
-local A10 = 483
+local A1 = 5818
+local A2 = 5819
+local A3 = 5820
+local A4 = 5821
+local A5 = 5822
+local A6 = 5823
+local A7 = 5824
+local A8 = 5825
+local A9 = 5826
+local A10 = 5827
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
@@ -33,9 +33,14 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/taskmaster_lynette/qey_harbor/taskmasterlynette000.mp3", "", "", 2422547870, 3187249838, Spawn)
+ conversation = CreateConversation()
+if HasQuest(Spawn,5766) and GetQuestStepProgress(Spawn,5766,5) == 0 then --WELCOME TO QEYNOS,CITIZEN
+ SetStepComplete(Spawn,5766,5)
+end
+
+
+ PlayFlavor(NPC, "voiceover/english/taskmaster_lynette/qey_harbor/taskmasterlynette000.mp3", "", "tapfoot", 2422547870, 3187249838, Spawn)
if GetQuestStep(Spawn, A1) == 4 then
AddConversationOption(conversation, "I won't bother you then.")
AddConversationOption(conversation, "What is a Far Seas Requisition?", "dlg_3_1")
@@ -134,10 +139,13 @@ function dlg_3_1(NPC, Spawn)
end
function dlg_3_2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+if HasQuest(Spawn,5766) and GetQuestStepProgress(Spawn,5766,3) == 0 then --WELCOME TO QEYNOS,CITIZEN
+ SetStepComplete(Spawn,5766,3)
+end
+FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/taskmaster_lynette/qey_harbor/taskmasterlynette002.mp3", "", "", 3001837794, 1766542530, Spawn)
+ PlayFlavor(NPC, "voiceover/english/taskmaster_lynette/qey_harbor/taskmasterlynette002.mp3", "", "heckno", 3001837794, 1766542530, Spawn)
AddConversationOption(conversation, "Good day to you. ")
StartConversation(conversation, NPC, Spawn, "This is the office for processing requisition orders, not the office for employment. We have more than enough huntsmen on staff. So, unless you happen to find an unclaimed Far Seas Requisition and fill its order... our business is done. Good day. Next!")
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/TheDarkpawFanglord.lua b/server/SpawnScripts/Antonica/TheDarkpawFanglord.lua
new file mode 100644
index 000000000..a1145cdeb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/TheDarkpawFanglord.lua
@@ -0,0 +1,103 @@
+--[[
+ Script Name : SpawnScripts/Antonica/TheDarkpawFanglord.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.09.01 06:09:24
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ AddTimer(NPC, 6000, "ChooseMovement")
+ ChooseClass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseMovement(NPC)
+ path = MakeRandomInt(1,3)
+ if path == 1 then
+ waypoints1(NPC)
+ elseif path == 2 then
+ waypoints2(NPC)
+ elseif path == 3 then
+ waypoints3(NPC)
+ end
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 39) -- Ranger
+ SetSpellList(NPC, 418)
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 40) -- Assassin
+ SetSpellList(NPC, 417 )
+ end
+end
+
+function waypoints1(NPC)
+ MovementLoopAddLocation(NPC, -1641.96, -5.33, 713.14, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1636.26, -0.85, 664.55, 2, 0)
+ MovementLoopAddLocation(NPC, -1642.39, -0.99, 656.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1641.38, -1.05, 646.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1634.81, -0.69, 644.21, 2, 5)
+ MovementLoopAddLocation(NPC, -1646.16, -1.23, 651.95, 2, 0)
+ MovementLoopAddLocation(NPC, -1641.33, -0.89, 660.46, 2, 0)
+ MovementLoopAddLocation(NPC, -1632.71, -0.62, 666.84, 2, 0)
+ MovementLoopAddLocation(NPC, -1626.08, -0.03, 664.88, 2, 0)
+ MovementLoopAddLocation(NPC, -1622.23, 0.27, 665.69, 2, 0)
+ MovementLoopAddLocation(NPC, -1622.04, 0.28, 665.84, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1602.05, -1.81, 697.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1608.43, 1.56, 665.95, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1601.17, 0.88, 677.22, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1614.18, -3.65, 710.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1627.84, -7.39, 731.78, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1643.32, -7.34, 723.83, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1627.86, -8.96, 738.42, 2, MakeRandomInt(8,15))
+end
+
+function waypoints2(NPC)
+ MovementLoopAddLocation(NPC, -1662.09, -13.61, 750.33, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1656.4, -11.61, 737.98, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1641.06, -2.8, 691.4, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1669.29, -5.06, 677.39, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1674.66, -9.62, 701.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1679.65, -10.44, 705.44, 2, 0)
+ MovementLoopAddLocation(NPC, -1676.37, -9.93, 712.28, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1670.61, -8.93, 711.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1669.79, -9.63, 716.74, 2, 0)
+ MovementLoopAddLocation(NPC, -1656.51, -12.86, 744.62, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1640.19, -10.44, 740.87, 2, 0)
+ MovementLoopAddLocation(NPC, -1632.37, -8.36, 736.17, 2, 0)
+ MovementLoopAddLocation(NPC, -1626.6, -9.01, 738.49, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1632.64, -8.39, 736.25, 2, 0)
+ MovementLoopAddLocation(NPC, -1655.8, -14.29, 752.17, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1663.54, -11.35, 735.18, 2, 0)
+ MovementLoopAddLocation(NPC, -1665.95, -11.16, 732.54, 2, 0)
+ MovementLoopAddLocation(NPC, -1667.63, -10.74, 726.46, 2, 0)
+ MovementLoopAddLocation(NPC, -1669.06, -10.49, 723.57, 2, MakeRandomInt(8,15))
+end
+
+function waypoints3(NPC)
+ MovementLoopAddLocation(NPC, -1458.51, -11.56, 646.21, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1451.04, -15.08, 619.52, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1473.11, -7.14, 607.99, 2, 0)
+ MovementLoopAddLocation(NPC, -1485.34, -3.1, 606.55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1511.16, -0.25, 603.9, 2, 0)
+ MovementLoopAddLocation(NPC, -1513.43, -0.09, 601.52, 2, 5)
+ MovementLoopAddLocation(NPC, -1514.71, -0.01, 599.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1547.11, 2.92, 611.51, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1540.58, 1.01, 646.31, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1518.7, -0.66, 645.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1461.14, -11.38, 644.81, 2, MakeRandomInt(8,15))
+end
diff --git a/server/SpawnScripts/Antonica/TheDarkpawFanglord1.lua b/server/SpawnScripts/Antonica/TheDarkpawFanglord1.lua
index fe263414c..19c940270 100755
--- a/server/SpawnScripts/Antonica/TheDarkpawFanglord1.lua
+++ b/server/SpawnScripts/Antonica/TheDarkpawFanglord1.lua
@@ -7,7 +7,11 @@
--]]
function spawn(NPC)
- waypoints(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ ChooseMovement(NPC)
end
function hailed(NPC, Spawn)
@@ -15,10 +19,22 @@ function hailed(NPC, Spawn)
end
function respawn(NPC)
+ spawn(NPC)
end
-function waypoints(NPC)
- MovementLoopAddLocation(NPC, -1641.96, -5.33, 713.14, 2, math.random(5,10))
+function ChooseMovement(NPC)
+ path = MakeRandomInt(1,3)
+ if path == 1 then
+ waypoints1(NPC)
+ elseif path == 2 then
+ waypoints2(NPC)
+ elseif path == 3 then
+ waypoints3(NPC)
+ end
+end
+
+function waypoints1(NPC)
+ MovementLoopAddLocation(NPC, -1641.96, -5.33, 713.14, 2, MakeRandomInt(8,15))
MovementLoopAddLocation(NPC, -1636.26, -0.85, 664.55, 2, 0)
MovementLoopAddLocation(NPC, -1642.39, -0.99, 656.61, 2, 0)
MovementLoopAddLocation(NPC, -1641.38, -1.05, 646.37, 2, 0)
@@ -28,14 +44,48 @@ function waypoints(NPC)
MovementLoopAddLocation(NPC, -1632.71, -0.62, 666.84, 2, 0)
MovementLoopAddLocation(NPC, -1626.08, -0.03, 664.88, 2, 0)
MovementLoopAddLocation(NPC, -1622.23, 0.27, 665.69, 2, 0)
- MovementLoopAddLocation(NPC, -1622.04, 0.28, 665.84, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1602.05, -1.81, 697.47, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1608.43, 1.56, 665.95, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1601.17, 0.88, 677.22, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1614.18, -3.65, 710.63, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1627.84, -7.39, 731.78, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1643.32, -7.34, 723.83, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, -1627.86, -8.96, 738.42, 2, math.random(5,10))
-
+ MovementLoopAddLocation(NPC, -1622.04, 0.28, 665.84, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1602.05, -1.81, 697.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1608.43, 1.56, 665.95, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1601.17, 0.88, 677.22, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1614.18, -3.65, 710.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1627.84, -7.39, 731.78, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1643.32, -7.34, 723.83, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1627.86, -8.96, 738.42, 2, MakeRandomInt(8,15))
end
+function waypoints2(NPC)
+ MovementLoopAddLocation(NPC, -1662.09, -13.61, 750.33, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1656.4, -11.61, 737.98, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1641.06, -2.8, 691.4, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1669.29, -5.06, 677.39, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1674.66, -9.62, 701.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1679.65, -10.44, 705.44, 2, 0)
+ MovementLoopAddLocation(NPC, -1676.37, -9.93, 712.28, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1670.61, -8.93, 711.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1669.79, -9.63, 716.74, 2, 0)
+ MovementLoopAddLocation(NPC, -1656.51, -12.86, 744.62, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1640.19, -10.44, 740.87, 2, 0)
+ MovementLoopAddLocation(NPC, -1632.37, -8.36, 736.17, 2, 0)
+ MovementLoopAddLocation(NPC, -1626.6, -9.01, 738.49, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1632.64, -8.39, 736.25, 2, 0)
+ MovementLoopAddLocation(NPC, -1655.8, -14.29, 752.17, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1663.54, -11.35, 735.18, 2, 0)
+ MovementLoopAddLocation(NPC, -1665.95, -11.16, 732.54, 2, 0)
+ MovementLoopAddLocation(NPC, -1667.63, -10.74, 726.46, 2, 0)
+ MovementLoopAddLocation(NPC, -1669.06, -10.49, 723.57, 2, MakeRandomInt(8,15))
+end
+
+function waypoints3(NPC)
+ MovementLoopAddLocation(NPC, -1458.51, -11.56, 646.21, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1451.04, -15.08, 619.52, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1473.11, -7.14, 607.99, 2, 0)
+ MovementLoopAddLocation(NPC, -1485.34, -3.1, 606.55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1511.16, -0.25, 603.9, 2, 0)
+ MovementLoopAddLocation(NPC, -1513.43, -0.09, 601.52, 2, 5)
+ MovementLoopAddLocation(NPC, -1514.71, -0.01, 599.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1547.11, 2.92, 611.51, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1540.58, 1.01, 646.31, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1518.7, -0.66, 645.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -1461.14, -11.38, 644.81, 2, MakeRandomInt(8,15))
+end
diff --git a/server/SpawnScripts/Antonica/TheDarkpawFanglord2.lua b/server/SpawnScripts/Antonica/TheDarkpawFanglord2.lua
index 8cb4d62d6..82ff435ad 100755
--- a/server/SpawnScripts/Antonica/TheDarkpawFanglord2.lua
+++ b/server/SpawnScripts/Antonica/TheDarkpawFanglord2.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Antonica/TheDarkpawFanglord3.lua b/server/SpawnScripts/Antonica/TheDarkpawFanglord3.lua
index ac2c16bd3..e05675164 100755
--- a/server/SpawnScripts/Antonica/TheDarkpawFanglord3.lua
+++ b/server/SpawnScripts/Antonica/TheDarkpawFanglord3.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Antonica/TheKlicnikQueen.lua b/server/SpawnScripts/Antonica/TheKlicnikQueen.lua
new file mode 100755
index 000000000..ad2c914b5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/TheKlicnikQueen.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/TheKlicnikQueen.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.28 12:09:40
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(35 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(75 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/TheTwotoedRat.lua b/server/SpawnScripts/Antonica/TheTwotoedRat.lua
new file mode 100644
index 000000000..937bcf657
--- /dev/null
+++ b/server/SpawnScripts/Antonica/TheTwotoedRat.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/TheTwotoedRat.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.07 07:01:35
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ DmgBonus = math.floor(GetStr(NPC) /10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 6 + DmgBonus)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 12 + DmgBonus)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/TheWindstalkerRumbler.lua b/server/SpawnScripts/Antonica/TheWindstalkerRumbler.lua
new file mode 100755
index 000000000..4d01a018a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/TheWindstalkerRumbler.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Antonica/TheWindstalkerRumbler.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 12:05:32
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ dmgMod = math.floor(GetStr(NPC)/10)
+ HPRegenMod = math.floor(GetSta(NPC)/10)
+ PwRegenMod = math.floor(GetStr(NPC)/10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(185 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(305 + dmgMod))
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 100 + HPRegenMod)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 50 + PwRegenMod)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/TimothusYelrow.lua b/server/SpawnScripts/Antonica/TimothusYelrow.lua
new file mode 100755
index 000000000..33fd7099e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/TimothusYelrow.lua
@@ -0,0 +1,78 @@
+--[[
+ Script Name : SpawnScripts/Antonica/TimothusYelrow.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.01 10:04:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local CorroboratingTheExistenceOfTheStormholdLibrary = 5794 -- quest ID
+
+function spawn(NPC)
+ProvidesQuest(NPC, CorroboratingTheExistenceOfTheStormholdLibrary)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+ Option0(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function Option0(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You ... you interrupted my meditation! Do you not know the importance of my work here?")
+ PlayFlavor(NPC,"","","glare",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/timothus_yerlow/antonica/timothusyelrow000.mp3", 3793699974, 4104951669)
+ if CanReceiveQuest(Spawn, CorroboratingTheExistenceOfTheStormholdLibrary) then
+ Dialog.AddOption("I just wanted to know why you were out here by yourself.", "Option1")
+ elseif GetQuestStep(Spawn, CorroboratingTheExistenceOfTheStormholdLibrary)==2 then
+ Dialog.AddOption("I found the library in Stormhold. Almost all the books had \"Karana\" in the title in one form or another.", "Option3")
+ end
+ Dialog.AddOption("I'm sorry, I didn't mean to disturb you. I'll be going now.")
+ Dialog.Start()
+end
+
+function Option1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("To avoid obnoxious individuals like you from disturbing me! Well ... if you must know, I am waiting here for my associate to confirm some rumors.")
+ Dialog.AddVoiceover("voiceover/english/timothus_yerlow/antonica/timothusyelrow001.mp3", 1639140719, 2392770436)
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
+ Dialog.AddOption("What rumors have you heard?", "Option2")
+ Dialog.AddOption("One of you seems bad enough, I don't think I'll stay around to meet an associate. ")
+ Dialog.Start()
+end
+
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aren't you inquisitive! Not that it does you any good. I have received information that Stormhold - the hidden fortress of the Knights of Thunder - has been found. Anyone remotely knowledgeable knows that the Knights kept a cache of large magical books of spells and incantations called tomes. But I never trust rumors. I am a man of learning, and I require a reliable witness. Therefore, I wait.")
+ Dialog.AddVoiceover("voiceover/english/timothus_yerlow/antonica/timothusyelrow002.mp3", 3652823892, 4095654623)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("I can find this library for you, but it'll cost you.", "offer")
+ Dialog.AddOption("I hope your friend can back up the story. ")
+ Dialog.Start()
+end
+
+function Option3(NPC, Spawn)
+ SetStepComplete(Spawn, CorroboratingTheExistenceOfTheStormholdLibrary, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmm ... this indeed verifies what I was previously told. Here is your coin, I have much thinking to do.")
+ Dialog.AddVoiceover("voiceover/english/timothus_yerlow/antonica/timothusyelrow004.mp3", 919338533, 415565513)
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddOption("Thanks for the money.")
+ Dialog.Start()
+end
+
+function offer(NPC, Spawn)
+OfferQuest(NPC, Spawn, CorroboratingTheExistenceOfTheStormholdLibrary)
+end
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aAMBUSHhighwayman.lua b/server/SpawnScripts/Antonica/aAMBUSHhighwayman.lua
new file mode 100755
index 000000000..c3a67125b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aAMBUSHhighwayman.lua
@@ -0,0 +1,69 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aAMBUSHhighwayman.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.01 11:05:35
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ CastSpell(NPC,41)
+
+
+--[[ local RaceChoice = MakeRandomInt(1,5)
+ if RaceChoice ==1 then
+ SpawnSet(NPC,"race","0")
+ elseif RaceChoice == 2 or RaceChoice == 3 then
+ SpawnSet(NPC,"race","6")
+ elseif RaceChoice == 4 or RaceChoice == 5 then
+ SpawnSet(NPC,"race","9")
+ end]]--
+
+ SpawnSet(NPC,"model_type",2306)
+ SpawnSet(NPC,"faction",0)
+ SpawnSet(NPC,"show_name",0)
+ SpawnSet(NPC,"show_level",0)
+ SpawnSet(NPC,"attackable",0)
+ SpawnSet(NPC,"targetable",0)
+ SpawnSet(NPC,"show_command_icon",0)
+ SpawnSet(NPC,"collision_radius",0)
+ DervishLeather(NPC)
+
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 9)
+ if IsInCombat(NPC)== false then
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "cutthroat", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "stare", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "brandish", 0, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "", "taunt", 0, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "", "", "sneer", 0, 0)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ end
+ end
+AddTimer(NPC,MakeRandomInt(7000,11000),"Action")
+end
+
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aBearCub.lua b/server/SpawnScripts/Antonica/aBearCub.lua
index 472a0821f..feeec0375 100755
--- a/server/SpawnScripts/Antonica/aBearCub.lua
+++ b/server/SpawnScripts/Antonica/aBearCub.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 6
- local hp1 = 550
- local power1 = 190
- local difficulty2 = 6
- local hp2 = 680
- local power2 = 200
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aBloodsaberCorruptor.lua b/server/SpawnScripts/Antonica/aBloodsaberCorruptor.lua
new file mode 100644
index 000000000..30479fd01
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aBloodsaberCorruptor.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aBloodsaberCorruptor.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.31 12:01:59
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aBloodsaberagent.lua b/server/SpawnScripts/Antonica/aBloodsaberagent.lua
new file mode 100755
index 000000000..e4c8a0e03
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aBloodsaberagent.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aBloodsaberagent.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 03:09:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisCleric.lua b/server/SpawnScripts/Antonica/aCaltorsisCleric.lua
index 0ec70c7dd..14edf73c4 100755
--- a/server/SpawnScripts/Antonica/aCaltorsisCleric.lua
+++ b/server/SpawnScripts/Antonica/aCaltorsisCleric.lua
@@ -5,32 +5,22 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1315
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Appearance(NPC)
+ IdlePriest(NPC)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",2851)
+ else
+ SpawnSet(NPC,"model_type",2852)
+ end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/aCaltorsisClericPath1.lua b/server/SpawnScripts/Antonica/aCaltorsisClericPath1.lua
new file mode 100755
index 000000000..4a05beca1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisClericPath1.lua
@@ -0,0 +1,106 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisClericPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 10:02:57
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Appearance(NPC)
+ waypoints(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",2851)
+ else
+ SpawnSet(NPC,"model_type",2852)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2115.58, 3.1, -492.85, 2, 4)
+ MovementLoopAddLocation(NPC, -2115.41, 2.45, -486.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.2, 1.17, -479.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.01, -0.38, -472.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.87, -1.68, -467.45, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2114.87, -1.68, -467.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.99, -1.36, -468.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.59, -0.12, -474.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.22, 1.15, -481.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.89, 1.98, -488.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.48, 2.46, -494.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.04, 2.91, -500.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.61, 3.31, -505.9, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2118.61, 3.31, -505.9, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.48, 4.06, -504.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.12, 5.49, -500.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.91, 7.03, -496.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.07, 8.56, -493.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2100.43, 10.01, -490.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2097.23, 11.13, -487.83, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2097.23, 11.13, -487.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.15, 10.5, -489.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2103.3, 8.79, -492.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.5, 7.06, -495.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.98, 5.65, -497.73, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.98, 4.28, -500.61, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2114.98, 4.28, -500.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.72, 3.36, -499.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.56, 1.31, -495.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.64, -1.25, -492.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.33, -3.69, -488.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.22, -6.25, -485.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.11, -9.03, -482.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.8, -11.9, -478.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.59, -14.43, -475.49, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.63, -16.1, -472.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2146.63, -16.1, -472.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2147.05, -15.59, -475.15, 2, 0)
+ MovementLoopAddLocation(NPC, -2147.8, -14.72, -480.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2148.08, -13.94, -486.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2148.34, -13.01, -491.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2148.65, -11.94, -498.23, 2, 0)
+ MovementLoopAddLocation(NPC, -2148.67, -11.88, -498.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.78, -11.38, -496.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.01, -10.35, -493.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.67, -9.01, -488.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2133.39, -7.21, -483.84, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2128.23, -5.65, -478.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.07, -5.61, -478.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.52, -4.36, -479.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.65, -1.23, -483.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.63, 1.36, -486.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.12, 3.75, -489.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.48, 6.34, -492.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.34, 8.67, -495.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2100.16, 10.05, -498.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.09, 11.27, -501.91, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2096.09, 11.27, -501.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.29, 10.27, -502.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2103.18, 9.04, -504.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.55, 7.71, -506.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.94, 6.3, -507.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.35, 4.55, -509.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.21, 3.81, -510, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.6, 3.49, -508.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.07, 3.54, -501.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.69, 3.46, -496.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.08, 3.37, -489.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.11, 3.35, -485.79, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2113.11, 3.35, -485.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.58, 3.1, -492.85, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisClericPath2.lua b/server/SpawnScripts/Antonica/aCaltorsisClericPath2.lua
new file mode 100755
index 000000000..8466892af
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisClericPath2.lua
@@ -0,0 +1,93 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisClericPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 10:02:15
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Appearance(NPC)
+ waypoints(NPC)
+end
+
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",2851)
+ else
+ SpawnSet(NPC,"model_type",2852)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2143.31, -10.15, -494.98, 2, 4)
+ MovementLoopAddLocation(NPC, -2141.56, -10.34, -489.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.82, -10.53, -483.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.33, -11.1, -479.04, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.81, -12.07, -474.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.07, -13.74, -468.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2133.26, -15.66, -462.83, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2133.26, -15.66, -462.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2145.14, -19.91, -459.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2145.14, -19.91, -459.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.65, -19.42, -460.99, 2, 0)
+ MovementLoopAddLocation(NPC, -2140.77, -17.56, -464.58, 2, 0)
+ MovementLoopAddLocation(NPC, -2137.68, -15.06, -468.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.83, -11.76, -471.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.86, -9.79, -474.43, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2132.86, -9.79, -474.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.58, -10.32, -472.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.93, -11.72, -468.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.25, -14.16, -463.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.55, -16.12, -459.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.86, -17.62, -454.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.83, -17.66, -454.37, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2129.83, -17.66, -454.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.87, -17.22, -455.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.06, -14.52, -461.87, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.23, -10.94, -467.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.39, -9, -472.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.56, -7.15, -478.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.72, -5.83, -483.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.89, -4.92, -489.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.04, -4.13, -494.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.2, -3.28, -499.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.39, -2.49, -505.74, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2131.39, -2.49, -505.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.55, -3.03, -502.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.74, -3.93, -497.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.95, -4.89, -492.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.12, -5.69, -488.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.31, -6.7, -483.5, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.55, -8.42, -477.8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2132.55, -8.42, -477.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.13, -7.27, -478.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.96, -4.85, -481.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.9, -2.9, -483.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.53, -1.38, -485.06, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2122.53, -1.38, -485.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.78, -2.56, -481.99, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.88, -3.66, -479.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.2, -5.53, -476.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.5, -7.4, -472.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.11, -9.72, -468.9, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2129.11, -9.72, -468.9, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.5, -9.33, -472.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.65, -8.74, -477.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.03, -8.35, -482.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.62, -8.47, -486.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.58, -8.6, -490.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2140.2, -8.72, -494.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2142.15, -8.85, -498.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2144.31, -9.3, -503.89, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2144.31, -9.3, -503.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.31, -10.15, -494.98, 2, 3)
+end
diff --git a/server/SpawnScripts/Antonica/aCaltorsisClericRoam.lua b/server/SpawnScripts/Antonica/aCaltorsisClericRoam.lua
new file mode 100755
index 000000000..88fba6cea
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisClericRoam.lua
@@ -0,0 +1,91 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisClericRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.02 09:02:38
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 35, -35, 2, 8, 15)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",2851)
+ else
+ SpawnSet(NPC,"model_type",2852)
+ end
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 35, Y, Z, 2,0)
+ MovementLoopAddLocation(NPC, X , Y, Z + 35, 2, 5)
+ MovementLoopAddLocation(NPC, X + 10, Y, Z -35, 2, 0)
+ MovementLoopAddLocation(NPC, X + 25, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z - 25, 2, 5)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z -25, 2, 0)
+ MovementLoopAddLocation(NPC, X , Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X -35, Y, Z - 4, 2, 5)
+ MovementLoopAddLocation(NPC, X + 10, Y, Z -35, 2, 0)
+ MovementLoopAddLocation(NPC, X + 25, Y, Z - 25, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 25, Y, Z -25, 2, 0)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z + 10, 2, 5)
+ MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z + 25, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisClericShortRange.lua b/server/SpawnScripts/Antonica/aCaltorsisClericShortRange.lua
new file mode 100755
index 000000000..98ff4d71a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisClericShortRange.lua
@@ -0,0 +1,113 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisClericShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 09:02:44
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 18
+ local level2 = 19
+ local difficulty1 = 6
+ local hp1 = 1180
+ local power1 = 410
+ local difficulty2 = 6
+ local hp2 = 1315
+ local power2 = 425
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+ChooseMovement(NPC)
+end
+
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",2851)
+ else
+ SpawnSet(NPC,"model_type",2852)
+ end
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2,math.random(5,10))
+ MovementLoopAddLocation(NPC, X , Y, Z + 8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z -5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z - 8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z -5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X , Y, Z - 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X -8, Y, Z - 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 8, Y, Z -5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z - 5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z -8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 8, Y, Z + 5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 8, Y, Z + 5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagi.lua b/server/SpawnScripts/Antonica/aCaltorsisMagi.lua
index c6d0008ab..5cfbd5312 100755
--- a/server/SpawnScripts/Antonica/aCaltorsisMagi.lua
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagi.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 18
local level2 = 19
@@ -28,12 +30,74 @@ function spawn(NPC)
SpawnSet(NPC, "power", power2)
end
+ChooseMovement(NPC)
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 35, Y, Z, 2,0)
+ MovementLoopAddLocation(NPC, X , Y, Z + 35, 2, 5)
+ MovementLoopAddLocation(NPC, X + 10, Y, Z -35, 2, 0)
+ MovementLoopAddLocation(NPC, X + 25, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z - 25, 2, 5)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z -25, 2, 0)
+ MovementLoopAddLocation(NPC, X , Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X -35, Y, Z - 4, 2, 5)
+ MovementLoopAddLocation(NPC, X + 10, Y, Z -35, 2, 0)
+ MovementLoopAddLocation(NPC, X + 25, Y, Z - 25, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 25, Y, Z -25, 2, 0)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z + 10, 2, 5)
+ MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 35, Y, Z + 25, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagiPath1.lua b/server/SpawnScripts/Antonica/aCaltorsisMagiPath1.lua
new file mode 100755
index 000000000..b49d08c91
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagiPath1.lua
@@ -0,0 +1,75 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisMagiPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 09:02:42
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 18
+ local level2 = 19
+ local difficulty1 = 6
+ local hp1 = 1180
+ local power1 = 410
+ local difficulty2 = 6
+ local hp2 = 1315
+ local power2 = 425
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2152.83, -13.63, -499.21, 2, 4)
+ MovementLoopAddLocation(NPC, -2140.77, -9.67, -490.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2140.77, -9.67, -490.94, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.97, -9.25, -483.23, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.97, -5.95, -486.31, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2131.97, -5.95, -486.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2137.07, -9.13, -484.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.54, -12.25, -473.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.27, -10.54, -468.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.14, -11.18, -464.86, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2128.14, -11.18, -464.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2133.91, -13.72, -467.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2137.42, -13.12, -472.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2145.96, -15.49, -473.98, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2145.96, -15.49, -473.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.45, -13.38, -474.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2137.9, -10.77, -479.41, 2, 0)
+ MovementLoopAddLocation(NPC, -2137.12, -8.96, -485.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.96, -7.29, -490.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.06, -6.43, -492.36, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2135.06, -6.43, -492.36, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.89, -5.93, -500.5, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.39, -6.03, -506.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.47, -6.25, -510.53, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2139.47, -6.25, -510.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2145.53, -9.7, -509.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2150.61, -12.13, -507.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2152.83, -13.63, -499.21, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagiPath2.lua b/server/SpawnScripts/Antonica/aCaltorsisMagiPath2.lua
new file mode 100755
index 000000000..9865f0d58
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagiPath2.lua
@@ -0,0 +1,80 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisMagiPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 09:02:32
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 18
+ local level2 = 19
+ local difficulty1 = 6
+ local hp1 = 1180
+ local power1 = 410
+ local difficulty2 = 6
+ local hp2 = 1315
+ local power2 = 425
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2133.97, -6.08, -491.21, 2, 4)
+ MovementLoopAddLocation(NPC, -2125.44, -3.17, -483.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.36, -0.99, -476.97, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2118.36, -0.99, -476.97, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.59, -3.02, -484.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.66, -4.24, -492.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.11, -4.71, -499.61, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2134.11, -4.71, -499.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.22, -3.22, -497.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.7, -0.65, -492.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.81, 1.68, -488.99, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.31, 4.12, -484.76, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2111.31, 4.12, -484.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.78, 4.13, -477.99, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.54, 4.41, -466.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.18, 5.12, -461.57, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2101.18, 5.12, -461.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.03, 2.3, -467.35, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.46, -0.58, -470.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.88, -2.96, -474.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.09, -5.55, -477.35, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.94, -7.35, -479.9, 2, 0)
+ MovementLoopAddLocation(NPC, -2140.13, -10.61, -484.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.21, -12.93, -487.39, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2146.21, -12.93, -487.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2150.41, -15.75, -479.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2151.44, -16.78, -476.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2152.26, -19.13, -469.43, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2152.26, -19.13, -469.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2149.88, -16.95, -473.5, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.22, -14.33, -479.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.33, -6.3, -496.74, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2136.33, -6.3, -496.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2133.97, -6.08, -491.21, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagiPath3.lua b/server/SpawnScripts/Antonica/aCaltorsisMagiPath3.lua
new file mode 100755
index 000000000..9ac9cd449
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagiPath3.lua
@@ -0,0 +1,87 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisMagiPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 09:02:57
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 18
+ local level2 = 19
+ local difficulty1 = 6
+ local hp1 = 1180
+ local power1 = 410
+ local difficulty2 = 6
+ local hp2 = 1315
+ local power2 = 425
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2123.77, -18.04, -443.68, 2, 4)
+ MovementLoopAddLocation(NPC, -2135.48, -19.21, -454.43, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2135.48, -19.21, -454.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.07, -19.91, -434.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.27, -18.94, -425.26, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2118.27, -18.94, -425.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.74, -17.37, -430.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.95, -12.74, -435.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.59, -7.26, -438.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.92, -2.53, -441.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.06, 1.32, -443.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2093.91, 3.02, -444.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.41, 6.48, -447.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2084.65, 10.17, -450.17, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2084.65, 10.17, -450.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2085.68, 7.66, -445.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.43, 4.27, -436.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.24, -0.05, -428.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2091.74, -3.16, -422.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.63, -5.96, -415.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.21, -9.44, -406.84, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2098.21, -9.44, -406.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.92, -9.23, -419.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.01, -9.05, -427.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2108, -9.31, -439.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.22, -10.29, -450.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.66, -11.38, -459.59, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2123.66, -11.38, -459.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.76, -14.64, -458.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.06, -18.3, -455.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.66, -20.07, -451.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2139.66, -20.07, -451.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2152.4, -20.1, -462.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2152.4, -20.1, -462.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2141.36, -20.15, -452.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.57, -19.93, -441.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.29, -19.68, -432.47, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2125.29, -19.68, -432.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.78, -19.44, -438.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.77, -18.04, -443.68, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagiPath4.lua b/server/SpawnScripts/Antonica/aCaltorsisMagiPath4.lua
new file mode 100755
index 000000000..3592341fc
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagiPath4.lua
@@ -0,0 +1,94 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisMagiPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 09:02:47
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 18
+ local level2 = 19
+ local difficulty1 = 6
+ local hp1 = 1180
+ local power1 = 410
+ local difficulty2 = 6
+ local hp2 = 1315
+ local power2 = 425
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2099.83, 10.22, -494.81, 2, 4)
+ MovementLoopAddLocation(NPC, -2097.75, 10.33, -481.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.68, 10.1, -474.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2095.09, 9.47, -464.05, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2095.09, 9.47, -464.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.47, 8.39, -466.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.03, 6.02, -470.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.38, 3.54, -474.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.56, 0.99, -479.33, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2115.56, 0.99, -479.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.98, 2.73, -475.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.36, 5.05, -475.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.18, 8.04, -475.48, 2, 0)
+ MovementLoopAddLocation(NPC, -2095.25, 10.73, -475.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2091.09, 11.68, -475.3, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2091.09, 11.68, -475.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.4, -3.45, -456.46, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.78, -1.57, -462.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.52, -0.15, -470.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.13, 0.84, -477.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.19, 1.47, -482.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2116.19, 1.47, -482.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.61, 1.8, -480.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.16, 3.12, -475.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.7, 4.52, -469.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.98, 5.68, -464.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.9, 6.42, -460.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2098.9, 6.42, -460.94, 2, 0)
+ MovementLoopAddLocation(NPC, -2097.11, 8.09, -462.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.5, 9.63, -464.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.78, 11.18, -468.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.78, 11.18, -468.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2093.15, 10.64, -470.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.55, 8.71, -474.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.44, 6.25, -478.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.57, 3.68, -481.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.03, 1.08, -485.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.13, -0.6, -488.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.77, -0.86, -488.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.76, 1.01, -487.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.37, 3.25, -486.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.44, 5.96, -484.35, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.24, 8.32, -482.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2102.24, 8.32, -482.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.24, 8.67, -486.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.24, 9.04, -489.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.83, 10.22, -494.81, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagiShortRange.lua b/server/SpawnScripts/Antonica/aCaltorsisMagiShortRange.lua
new file mode 100755
index 000000000..e6ccc2555
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagiShortRange.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisMagiShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.06 08:02:22
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisMagiStatic.lua b/server/SpawnScripts/Antonica/aCaltorsisMagiStatic.lua
new file mode 100755
index 000000000..a73659bc8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisMagiStatic.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisMagiStatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.08 12:02:14
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+
+function spawn(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 18
+ local level2 = 19
+ local difficulty1 = 6
+ local hp1 = 1180
+ local power1 = 410
+ local difficulty2 = 6
+ local hp2 = 1315
+ local power2 = 425
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknight.lua b/server/SpawnScripts/Antonica/aCaltorsisknight.lua
index 5557ead90..4fe77e3d0 100755
--- a/server/SpawnScripts/Antonica/aCaltorsisknight.lua
+++ b/server/SpawnScripts/Antonica/aCaltorsisknight.lua
@@ -5,15 +5,16 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 35, -35, 2, 8, 15)
+end
+function respawn(NPC, Spawn)
+ spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknightHeroic.lua b/server/SpawnScripts/Antonica/aCaltorsisknightHeroic.lua
new file mode 100755
index 000000000..94098722c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisknightHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisknightHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.02 08:02:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknightPath1.lua b/server/SpawnScripts/Antonica/aCaltorsisknightPath1.lua
new file mode 100755
index 000000000..fdbf1cd89
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisknightPath1.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisknightPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 10:02:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2086.6, 5.24, -438.83, 2, 4)
+ MovementLoopAddLocation(NPC, -2086.36, 3.29, -431.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.12, 0.99, -425.19, 2, 0)
+ MovementLoopAddLocation(NPC, -2085.91, -0.08, -419.05, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2085.91, -0.08, -419.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.98, -0.39, -421.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.6, -0.74, -426.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2092.52, -0.76, -432.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.19, -0.92, -438.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2100.33, -1.27, -444.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.9, -1.33, -452.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.78, -1.4, -456.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2107.78, -1.4, -456.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.05, -0.5, -459.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.59, 1.02, -464.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.24, 2.34, -470.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.67, 3.2, -474.23, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2109.67, 3.2, -474.23, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.89, 2.32, -474.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.46, -0.42, -473.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2119.45, -2.54, -472.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.72, -6.12, -472.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.09, -9.35, -471.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.97, -11.08, -471.03, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2132.97, -11.08, -471.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.02, -10.72, -469.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.94, -9.98, -464.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.94, -9.27, -459.65, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.8, -8.15, -454.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.21, -8.35, -449.28, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2112.21, -8.35, -449.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.41, -9.52, -449.02, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.81, -13.43, -448.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.47, -16.93, -446.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.78, -18.6, -445.78, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2127.78, -18.6, -445.78, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.29, -17.78, -446.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.92, -14.9, -446.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.34, -11.98, -445.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.59, -10.22, -442.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.76, -10.52, -438.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.71, -13.07, -433.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.63, -16.36, -428.69, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2112.63, -16.36, -428.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.23, -15.17, -427.36, 2, 0)
+ MovementLoopAddLocation(NPC, -2106.86, -13.33, -425.49, 2, 0)
+ MovementLoopAddLocation(NPC, -2103, -10.86, -423.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.6, -8.68, -421.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.67, -8.07, -420.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2098.67, -8.07, -420.94, 2, 0)
+ MovementLoopAddLocation(NPC, -2097.77, -7.07, -423.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2095.54, -4.04, -428.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2093.28, -0.82, -433.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2091.29, 2.42, -438.02, 2, 0)
+ MovementLoopAddLocation(NPC, -2089, 5.22, -443.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.08, 7.9, -447.78, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2087.08, 7.9, -447.78, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.23, 7.46, -446.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.66, 4.95, -439.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.66, 4.95, -439.8, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknightPath2.lua b/server/SpawnScripts/Antonica/aCaltorsisknightPath2.lua
new file mode 100755
index 000000000..00be3dc10
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisknightPath2.lua
@@ -0,0 +1,67 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisknightPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 10:02:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2114.7, -16.59, -433.84, 2, 4)
+ MovementLoopAddLocation(NPC, -2113.55, -14.69, -437.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.57, -12.57, -442.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.63, -11.82, -448.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.72, -10.89, -453.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.84, -10.85, -454.12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2119.68, -11.32, -454.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.92, -13.72, -456.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.52, -15.69, -457.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2133.17, -17.07, -459.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.34, -17.41, -460.26, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2134.34, -17.41, -460.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.35, -16.93, -459.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.21, -15.93, -457.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.83, -14.36, -454.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2119.43, -12.17, -452.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.04, -9.99, -450.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.56, -6.91, -447.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2109.56, -6.91, -447.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.87, -6.01, -449.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.56, -4.24, -454.94, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.24, -2.45, -459.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.83, -1.01, -464.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.52, 0, -469.19, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.19, 0.87, -474.05, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2113.19, 0.87, -474.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.68, 0.59, -471.87, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.48, -0.09, -466.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.33, -1.04, -461.77, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.09, -2.52, -456.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.92, -3.87, -451.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2106.74, -5.29, -446.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.58, -6.71, -441.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.26, -8.2, -435.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.94, -9.06, -430.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.91, -9.65, -425.63, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2101.91, -9.65, -425.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2103.46, -10.79, -425.73, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.37, -14.28, -426.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.03, -17.62, -426.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.81, -18.85, -426.75, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.7, -16.59, -433.84, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknightPath3.lua b/server/SpawnScripts/Antonica/aCaltorsisknightPath3.lua
new file mode 100755
index 000000000..805daf966
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisknightPath3.lua
@@ -0,0 +1,83 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisknightPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 10:02:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2101.55, 3.25, -457.53, 2, 4)
+ MovementLoopAddLocation(NPC, -2106.25, 2.39, -463.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.98, 1.24, -468.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.41, 0.42, -472.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.9, -0.22, -477.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.64, -0.95, -481.88, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2120.64, -0.95, -481.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.75, -0.07, -481.48, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.48, 1.84, -480.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.84, 4.28, -479.58, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.37, 6.35, -478.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.62, 10.23, -475.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.69, 9.69, -470.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.78, 9.08, -465.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.65, 8.05, -460.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.73, 5.79, -455.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.8, 3.78, -450.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.88, 1.73, -445.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2096.96, -0.38, -440.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2097.03, -2.33, -436.27, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2097.03, -2.33, -436.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.12, -2.14, -438.77, 2, 0)
+ MovementLoopAddLocation(NPC, -2100.38, -1.7, -443.97, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.94, -0.93, -449.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.36, -0.25, -455.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.83, 0.41, -461.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2119.79, 0.28, -486.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.83, -2.04, -482.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.62, -4.43, -478.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.64, -7.71, -473.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.43, -10.71, -469.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.02, -14.52, -465.97, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2134.02, -14.52, -465.97, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.87, -13.46, -468.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.52, -11.84, -474.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.05, -10.8, -479.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.64, -10.25, -484.87, 2, 0)
+ MovementLoopAddLocation(NPC, -2141.29, -10.08, -490.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.13, -9.99, -495.35, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2143.13, -9.99, -495.35, 2, 0)
+ MovementLoopAddLocation(NPC, -2140.8, -9.76, -490.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2137.15, -8.77, -486.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.58, -8.58, -480.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.5, -8.9, -474.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.96, -8.95, -469.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.94, -9.05, -464.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.97, -9.93, -459.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2118.45, -10.35, -454.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.98, -10.78, -449.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.55, -10.83, -448.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.43, -9.07, -449.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.93, -5.24, -453.23, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.29, -1.79, -456.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.77, 1.44, -460.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2103.32, 4.37, -463.48, 2, 0)
+ MovementLoopAddLocation(NPC, -2100.7, 7.2, -467.01, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2100.7, 7.2, -467.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.55, 3.25, -457.53, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknightPath4.lua b/server/SpawnScripts/Antonica/aCaltorsisknightPath4.lua
new file mode 100755
index 000000000..f30c464b9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisknightPath4.lua
@@ -0,0 +1,103 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisknightPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.07 10:02:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2117.44, 1.23, -485, 2, 4)
+ MovementLoopAddLocation(NPC, -2120.09, 0.5, -488.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.04, -0.31, -492.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.15, -1.16, -497.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.08, -1.93, -501.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.09, -2.87, -505.51, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2132.09, -2.87, -505.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.8, -3.32, -504.41, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.26, -5.1, -500.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.21, -7.35, -496.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2140.94, -9.58, -491.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.55, -11.6, -487.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.37, -13.75, -483.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2149.55, -15.67, -478.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2149.55, -15.67, -478.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2150.14, -15.7, -479.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2153.2, -16.1, -483.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2156.02, -16.52, -487.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2158.81, -16.96, -491.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2161.62, -17.43, -495.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2164.41, -18.36, -499.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2164.41, -18.36, -499.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2165.13, -18.44, -497.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2166.77, -18.97, -492.49, 2, 0)
+ MovementLoopAddLocation(NPC, -2166.83, -19.36, -487.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2165.27, -19.46, -482.78, 2, 0)
+ MovementLoopAddLocation(NPC, -2163.88, -19.68, -478.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2162.21, -19.94, -474.12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2162.21, -19.94, -474.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2160.91, -19.66, -474.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2157.13, -18.74, -475.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2152.59, -17.08, -476.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2147.78, -15.32, -477.58, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.52, -13.76, -478.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2139.45, -11.45, -479.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.04, -8.82, -480.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.63, -6.17, -481.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.93, -3.52, -482.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.02, -1.35, -483.74, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2122.02, -1.35, -483.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.9, -1.64, -481.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.67, -2.48, -477.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.44, -3.5, -473.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.2, -5.01, -469.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.95, -6.55, -465.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2120.95, -6.55, -465.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.11, -7.07, -465.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.73, -8.58, -466.9, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.34, -10.51, -468.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.25, -12.22, -470.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.41, -13.82, -471.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2142.43, -14.6, -473.04, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2142.43, -14.6, -473.04, 2, 0)
+ MovementLoopAddLocation(NPC, -2142.74, -15.12, -471.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2143.64, -16.59, -468.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2144.72, -18.42, -464.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2145.73, -19.65, -461.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.87, -19.95, -457, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2146.87, -19.95, -457, 2, 0)
+ MovementLoopAddLocation(NPC, -2146.24, -19.81, -458.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2144.39, -19.41, -461.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2142.4, -17.66, -465.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2140.48, -15.59, -468.78, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.36, -13.37, -472.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2136.5, -11.22, -476.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.39, -8.69, -479.99, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.47, -6.78, -483.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.42, -5, -487.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.61, -3.53, -490.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2128.61, -3.53, -490.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.93, -3.4, -489.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.02, -3, -486.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.05, -2.58, -482.65, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.98, -2.29, -479.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2119.83, -2.15, -475.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.87, -2.02, -471.83, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -2117.87, -2.02, -471.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.44, 1.23, -485, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aCaltorsisknightShortRange.lua b/server/SpawnScripts/Antonica/aCaltorsisknightShortRange.lua
new file mode 100755
index 000000000..e382d9a18
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisknightShortRange.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisknightShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.06 08:02:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCaltorsisprotector.lua b/server/SpawnScripts/Antonica/aCaltorsisprotector.lua
new file mode 100755
index 000000000..98b8f7d21
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCaltorsisprotector.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCaltorsisprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 03:09:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCavemawgrubhunter.lua b/server/SpawnScripts/Antonica/aCavemawgrubhunter.lua
index ef37c4952..9ee72801d 100755
--- a/server/SpawnScripts/Antonica/aCavemawgrubhunter.lua
+++ b/server/SpawnScripts/Antonica/aCavemawgrubhunter.lua
@@ -5,70 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X + 17, Y, Z, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,20))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(10,15))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aCavemawrockmelter.lua b/server/SpawnScripts/Antonica/aCavemawrockmelter.lua
new file mode 100755
index 000000000..392c5ff21
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCavemawrockmelter.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCavemawrockmelter.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 12:05:13
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCavemawsentinelA.lua b/server/SpawnScripts/Antonica/aCavemawsentinelA.lua
index 85ac07cc3..771a49055 100755
--- a/server/SpawnScripts/Antonica/aCavemawsentinelA.lua
+++ b/server/SpawnScripts/Antonica/aCavemawsentinelA.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aCavemawsentinelB.lua b/server/SpawnScripts/Antonica/aCavemawsentinelB.lua
index 582a17c4c..6751c31a6 100755
--- a/server/SpawnScripts/Antonica/aCavemawsentinelB.lua
+++ b/server/SpawnScripts/Antonica/aCavemawsentinelB.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aCavemawsentinelC.lua b/server/SpawnScripts/Antonica/aCavemawsentinelC.lua
index 36ef5762f..232c03668 100755
--- a/server/SpawnScripts/Antonica/aCavemawsentinelC.lua
+++ b/server/SpawnScripts/Antonica/aCavemawsentinelC.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aCavemawsentinelD.lua b/server/SpawnScripts/Antonica/aCavemawsentinelD.lua
index 35a721f8e..442953b15 100755
--- a/server/SpawnScripts/Antonica/aCavemawsentinelD.lua
+++ b/server/SpawnScripts/Antonica/aCavemawsentinelD.lua
@@ -5,8 +5,30 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 16
+ local level2 = 17
+ local difficulty1 = 7
+ local hp1 = 1500
+ local power1 = 465
+ local difficulty2 = 7
+ local hp2 = 1700
+ local power2 = 540
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Antonica/aCavemawtamer.lua b/server/SpawnScripts/Antonica/aCavemawtamer.lua
new file mode 100755
index 000000000..865b76eb2
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCavemawtamer.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCavemawtamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.01 11:04:55
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aCavemawtunneler.lua b/server/SpawnScripts/Antonica/aCavemawtunneler.lua
new file mode 100755
index 000000000..bbc6cda34
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aCavemawtunneler.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aCavemawtunneler.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 12:05:47
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aColdwindKingCrab.lua b/server/SpawnScripts/Antonica/aColdwindKingCrab.lua
new file mode 100755
index 000000000..7ea503ede
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aColdwindKingCrab.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aColdwindKingCrab.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.24 04:01:55
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aColdwindLunker.lua b/server/SpawnScripts/Antonica/aColdwindLunker.lua
new file mode 100644
index 000000000..c3f19623e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aColdwindLunker.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aColdwindLunker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.31 01:01:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aColdwindbarracuda.lua b/server/SpawnScripts/Antonica/aColdwindbarracuda.lua
index 1b5152f02..1d398d2bf 100755
--- a/server/SpawnScripts/Antonica/aColdwindbarracuda.lua
+++ b/server/SpawnScripts/Antonica/aColdwindbarracuda.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aColdwindmantaray.lua b/server/SpawnScripts/Antonica/aColdwindmantaray.lua
index c7785fbac..0a7d0725f 100755
--- a/server/SpawnScripts/Antonica/aColdwindmantaray.lua
+++ b/server/SpawnScripts/Antonica/aColdwindmantaray.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 6
- local hp1 = 550
- local power1 = 185
- local difficulty2 = 6
- local hp2 = 680
- local power2 = 285
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aColdwindoctopus.lua b/server/SpawnScripts/Antonica/aColdwindoctopus.lua
index 5fa3792ef..b531e6a72 100755
--- a/server/SpawnScripts/Antonica/aColdwindoctopus.lua
+++ b/server/SpawnScripts/Antonica/aColdwindoctopus.lua
@@ -5,89 +5,13 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 6
- local hp1 = 890
- local power1 = 270
- local difficulty2 = 6
- local hp2 = 975
- local power2 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+ ChooseClass(NPC)
end
function respawn(NPC, Spawn)
@@ -96,4 +20,19 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,3)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 28)
+ SetSpellList(NPC, 454)
+ CastSpell(NPC, 280025, 5)
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 18)
+ SetSpellList(NPC, 325)
+ elseif SetClass == 3 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC, 451)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aColdwindperch.lua b/server/SpawnScripts/Antonica/aColdwindperch.lua
index b50c97c9f..53bb97d6a 100755
--- a/server/SpawnScripts/Antonica/aColdwindperch.lua
+++ b/server/SpawnScripts/Antonica/aColdwindperch.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 6
- local hp1 = 430
- local power1 = 160
- local difficulty2 = 6
- local hp2 = 550
- local power2 = 185
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkCovenconjuror.lua b/server/SpawnScripts/Antonica/aDarkCovenconjuror.lua
new file mode 100755
index 000000000..0f40e51df
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkCovenconjuror.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkCovenconjuror.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.30 07:01:41
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAlert(NPC)
+ human(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkCovenconjurorRoamer.lua b/server/SpawnScripts/Antonica/aDarkCovenconjurorRoamer.lua
new file mode 100755
index 000000000..82fac0ebe
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkCovenconjurorRoamer.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkCovenconjurorRoamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.30 08:01:09
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkCovenwitch.lua b/server/SpawnScripts/Antonica/aDarkCovenwitch.lua
index f75ebf84e..4ea9feaad 100755
--- a/server/SpawnScripts/Antonica/aDarkCovenwitch.lua
+++ b/server/SpawnScripts/Antonica/aDarkCovenwitch.lua
@@ -5,34 +5,19 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 975
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1105
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+function respawn(NPC, Spawn)
+ spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawanimator.lua b/server/SpawnScripts/Antonica/aDarkpawanimator.lua
index 65b72acdb..b66b5ec36 100755
--- a/server/SpawnScripts/Antonica/aDarkpawanimator.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawanimator.lua
@@ -6,28 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 6
- local hp1 = 430
- local power1 = 160
- local difficulty2 = 6
- local hp2 = 550
- local power2 = 185
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleTinker(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawbrigand.lua b/server/SpawnScripts/Antonica/aDarkpawbrigand.lua
new file mode 100755
index 000000000..af44762b2
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawbrigand.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawbrigand.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleThreaten(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawbrute.lua b/server/SpawnScripts/Antonica/aDarkpawbrute.lua
index 3799c9704..ae9935d16 100755
--- a/server/SpawnScripts/Antonica/aDarkpawbrute.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawbrute.lua
@@ -5,33 +5,14 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
function respawn(NPC)
spawn(NPC)
diff --git a/server/SpawnScripts/Antonica/aDarkpawbruteRoam.lua b/server/SpawnScripts/Antonica/aDarkpawbruteRoam.lua
new file mode 100644
index 000000000..85e745127
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawbruteRoam.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawbruteRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.26 09:03:42
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawlookout.lua b/server/SpawnScripts/Antonica/aDarkpawlookout.lua
index 97e03ca5d..84b90bd03 100755
--- a/server/SpawnScripts/Antonica/aDarkpawlookout.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawlookout.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawmongrel.lua b/server/SpawnScripts/Antonica/aDarkpawmongrel.lua
new file mode 100755
index 000000000..6d2211405
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawmongrel.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawmongrel.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleBored(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawmystic.lua b/server/SpawnScripts/Antonica/aDarkpawmystic.lua
index cdc4c5c1d..bbd169167 100755
--- a/server/SpawnScripts/Antonica/aDarkpawmystic.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawmystic.lua
@@ -6,14 +6,20 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdlePriest(NPC)
end
function hailed(NPC, Spawn)
end
+function aggro(NPC, Spawn)
+
+end
+
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawmysticRoam.lua b/server/SpawnScripts/Antonica/aDarkpawmysticRoam.lua
new file mode 100755
index 000000000..731b703de
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawmysticRoam.lua
@@ -0,0 +1,104 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawmysticRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 12:03:08
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 11
+ local level2 = 12
+ local difficulty1 = 6
+ local hp1 = 430
+ local power1 = 160
+ local difficulty2 = 6
+ local hp2 = 550
+ local power2 = 185
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+AddTimer(NPC, 6000, "ChooseMovement")
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 10, Y, Z, 2,math.random(5,10))
+ MovementLoopAddLocation(NPC, X , Y, Z + 12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 10, Y, Z -10, 2, 0)
+ MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z - 14, 2, 0)
+ MovementLoopAddLocation(NPC, X - 10, Y, Z -10, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X , Y, Z - 8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 10, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X -14, Y, Z - 8, 2, 0)
+ MovementLoopAddLocation(NPC, X + 14, Y, Z -10, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 10, Y, Z - 10, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 10, Y, Z -14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 14, Y, Z + 10, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 10, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 14, Y, Z + 5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawmysticShortRange.lua b/server/SpawnScripts/Antonica/aDarkpawmysticShortRange.lua
new file mode 100755
index 000000000..41c3fabbe
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawmysticShortRange.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawmysticShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 03:03:09
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawpackleader.lua b/server/SpawnScripts/Antonica/aDarkpawpackleader.lua
index e46007c28..6f16081a5 100755
--- a/server/SpawnScripts/Antonica/aDarkpawpackleader.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawpackleader.lua
@@ -6,9 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawpup.lua b/server/SpawnScripts/Antonica/aDarkpawpup.lua
index 508c78e62..a04923b0f 100755
--- a/server/SpawnScripts/Antonica/aDarkpawpup.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawpup.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawrotstuffer.lua b/server/SpawnScripts/Antonica/aDarkpawrotstuffer.lua
index 2aaa980b3..71d9a27d2 100755
--- a/server/SpawnScripts/Antonica/aDarkpawrotstuffer.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawrotstuffer.lua
@@ -5,28 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 6
- local hp1 = 430
- local power1 = 160
- local difficulty2 = 6
- local hp2 = 550
- local power2 = 185
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleTinker(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawrotstufferPatrol.lua b/server/SpawnScripts/Antonica/aDarkpawrotstufferPatrol.lua
new file mode 100755
index 000000000..6dccd36a9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawrotstufferPatrol.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawrotstufferPatrol.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.27 08:03:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -168.82, -15.57, 564.58, 2, 0)
+ MovementLoopAddLocation(NPC, -171.54, -15.79, 564.62, 2, 0)
+ MovementLoopAddLocation(NPC, -174.44, -15.98, 565.29, 2, 0)
+ MovementLoopAddLocation(NPC, -175.56, -16.35, 567.4, 2, 0)
+ MovementLoopAddLocation(NPC, -175.56, -16.35, 567.4, 2, 0)
+ MovementLoopAddLocation(NPC, -175.65, -16.32, 566.96, 2, 0)
+ MovementLoopAddLocation(NPC, -177.38, -16.55, 564.96, 2, 0)
+ MovementLoopAddLocation(NPC, -180.43, -16.36, 561.54, 2, 0)
+ MovementLoopAddLocation(NPC, -180.22, -16.43, 560.11, 2, 3)
+ MovementLoopAddLocation(NPC, -180.22, -16.43, 560.11, 2, 0)
+ MovementLoopAddLocation(NPC, -180.37, -16.38, 561.11, 2, 0)
+ MovementLoopAddLocation(NPC, -181.36, -16.36, 562.6, 2, 0)
+ MovementLoopAddLocation(NPC, -184.91, -16.32, 562.86, 2, 3)
+ MovementLoopAddLocation(NPC, -184.91, -16.32, 562.86, 2, 0)
+ MovementLoopAddLocation(NPC, -182.12, -16.37, 563.52, 2, 0)
+ MovementLoopAddLocation(NPC, -180.97, -16.55, 566.06, 2, 0)
+ MovementLoopAddLocation(NPC, -182.73, -16.58, 567.85, 2, 3)
+ MovementLoopAddLocation(NPC, -182.73, -16.58, 567.85, 2, 0)
+ MovementLoopAddLocation(NPC, -183, -16.58, 566.65, 2, 0)
+ MovementLoopAddLocation(NPC, -181.92, -16.41, 563.88, 2, 0)
+ MovementLoopAddLocation(NPC, -179.25, -16.47, 561.29, 2, 0)
+ MovementLoopAddLocation(NPC, -178.68, -16.43, 560.21, 2, 3)
+ MovementLoopAddLocation(NPC, -178.68, -16.43, 560.21, 2, 0)
+ MovementLoopAddLocation(NPC, -178.94, -16.56, 563.32, 2, 0)
+ MovementLoopAddLocation(NPC, -177.35, -16.55, 566.82, 2, 3)
+ MovementLoopAddLocation(NPC, -177.35, -16.55, 566.82, 2, 0)
+ MovementLoopAddLocation(NPC, -176.23, -16.42, 565.14, 2, 0)
+ MovementLoopAddLocation(NPC, -174.27, -15.81, 564.12, 2, 0)
+ MovementLoopAddLocation(NPC, -168.82, -15.57, 564.58, 2, 3)
+end
+
diff --git a/server/SpawnScripts/Antonica/aDarkpawrunecaster.lua b/server/SpawnScripts/Antonica/aDarkpawrunecaster.lua
index b578605ef..56c9960f0 100755
--- a/server/SpawnScripts/Antonica/aDarkpawrunecaster.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawrunecaster.lua
@@ -5,28 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1105
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdlePriest(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawrunecasterRoam.lua b/server/SpawnScripts/Antonica/aDarkpawrunecasterRoam.lua
new file mode 100644
index 000000000..c0b0acc43
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawrunecasterRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawrunecasterRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.26 09:03:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdlePriest(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawshaman.lua b/server/SpawnScripts/Antonica/aDarkpawshaman.lua
index c87ec1742..0c1044342 100755
--- a/server/SpawnScripts/Antonica/aDarkpawshaman.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawshaman.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 9
- local hp1 = 2650
- local power1 = 1205
- local difficulty2 = 9
- local hp2 = 3060
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdlePriest(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aDarkpawsoldier.lua b/server/SpawnScripts/Antonica/aDarkpawsoldier.lua
new file mode 100755
index 000000000..263023117
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawsoldier.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.13 03:03:36
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawtribalelder.lua b/server/SpawnScripts/Antonica/aDarkpawtribalelder.lua
new file mode 100755
index 000000000..b56597337
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawtribalelder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawtribalelder.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawwarleader.lua b/server/SpawnScripts/Antonica/aDarkpawwarleader.lua
new file mode 100755
index 000000000..0238ffa6c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawwarleader.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawwarleader.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawyouth.lua b/server/SpawnScripts/Antonica/aDarkpawyouth.lua
index 9a4d8f61c..0f5ab9779 100755
--- a/server/SpawnScripts/Antonica/aDarkpawyouth.lua
+++ b/server/SpawnScripts/Antonica/aDarkpawyouth.lua
@@ -6,14 +6,43 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ if GetSpawnLocationID(NPC)== 133785089 or GetSpawnLocationID(NPC)== 133785090 then
+ AddTimer(NPC,MakeRandomInt(1000,3500),"Run")
+ else
+ IdleBored(NPC)
+ end
end
-function hailed(NPC, Spawn)
+function Run(NPC)
+ local Choice = MakeRandomInt(1,2)
+if Choice == 1 then
+ MovementLoopAddLocation(NPC, -223.02, -18.63, 367.08, 4, 0)
+ MovementLoopAddLocation(NPC, -264.97, -18.18, 358.61, 4, 0)
+ MovementLoopAddLocation(NPC, -304.32, -12.89, 345.16, 4, 0)
+ MovementLoopAddLocation(NPC, -334.21, -8.24, 335.82, 4, 0)
+ MovementLoopAddLocation(NPC, -356.47, -6.91, 324.08, 4, 0)
+ MovementLoopAddLocation(NPC, -367.91, -1.93, 316.53, 4, 0)
+ MovementLoopAddLocation(NPC, -384.38, 2.01, 303.03, 4, 0)
+ MovementLoopAddLocation(NPC, -392.53, 4.50, 278.45, 4, 0)
+ MovementLoopAddLocation(NPC, -389.51, 4.69, 268.03, 4, 6)
+else
+ MovementLoopAddLocation(NPC, -242.39, -16.85, 347.73, 4, 0)
+ MovementLoopAddLocation(NPC,-278.97, -19.98, 334.70, 4, 0)
+ MovementLoopAddLocation(NPC, -301.73, -14.96, 334.97, 4, 0)
+ MovementLoopAddLocation(NPC, -321.74, -12.70, 332.40, 4, 0)
+ MovementLoopAddLocation(NPC, -333.85, -8.55, 329.71, 4, 0)
+ MovementLoopAddLocation(NPC, -353.12, -7.06, 318.33, 4, 0)
+ MovementLoopAddLocation(NPC, -371.48, 1.04, 303.07, 4, 0)
+ MovementLoopAddLocation(NPC, -392.53, 4.50, 278.45, 4, 0)
+ MovementLoopAddLocation(NPC, -389.51, 4.69, 268.03, 4, 6)
+ end
end
+
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawyouthRoam.lua b/server/SpawnScripts/Antonica/aDarkpawyouthRoam.lua
new file mode 100755
index 000000000..5ce31488e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawyouthRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawyouthRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 12:03:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDarkpawyouthShortRange.lua b/server/SpawnScripts/Antonica/aDarkpawyouthShortRange.lua
new file mode 100755
index 000000000..587b981c3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDarkpawyouthShortRange.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDarkpawyouthShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 03:03:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aDeepwaterLurker.lua b/server/SpawnScripts/Antonica/aDeepwaterLurker.lua
new file mode 100644
index 000000000..ece5ac85a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aDeepwaterLurker.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aDeepwaterLurker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 03:02:26
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aGiantslayermessenger.lua b/server/SpawnScripts/Antonica/aGiantslayermessenger.lua
new file mode 100755
index 000000000..7eb723928
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aGiantslayermessenger.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aGiantslayermessenger.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aHartoftheGrove.lua b/server/SpawnScripts/Antonica/aHartoftheGrove.lua
new file mode 100755
index 000000000..2c3a893a5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aHartoftheGrove.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aHartoftheGrove.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aKlicnikMite.lua b/server/SpawnScripts/Antonica/aKlicnikMite.lua
index 5713280b4..cc6c57123 100755
--- a/server/SpawnScripts/Antonica/aKlicnikMite.lua
+++ b/server/SpawnScripts/Antonica/aKlicnikMite.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 8
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 240
- local power1 = 100
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aLakeTrout.lua b/server/SpawnScripts/Antonica/aLakeTrout.lua
index aca19e8c3..75e0e6858 100755
--- a/server/SpawnScripts/Antonica/aLakeTrout.lua
+++ b/server/SpawnScripts/Antonica/aLakeTrout.lua
@@ -5,91 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 6
- local hp1 = 920
- local power1 = 270
- local difficulty2 = 9
- local hp2 = 1045
- local power2 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
@@ -98,10 +19,3 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aLowlandBadger.lua b/server/SpawnScripts/Antonica/aLowlandBadger.lua
index 3a9581e10..a1629d6a4 100755
--- a/server/SpawnScripts/Antonica/aLowlandBadger.lua
+++ b/server/SpawnScripts/Antonica/aLowlandBadger.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 6
- local hp1 = 450
- local power1 = 190
- local difficulty2 = 6
- local hp2 = 550
- local power2 = 200
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aLowlandViper.lua b/server/SpawnScripts/Antonica/aLowlandViper.lua
index c61c660cb..452c58b2b 100755
--- a/server/SpawnScripts/Antonica/aLowlandViper.lua
+++ b/server/SpawnScripts/Antonica/aLowlandViper.lua
@@ -5,90 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aMalevolentViper.lua b/server/SpawnScripts/Antonica/aMalevolentViper.lua
new file mode 100755
index 000000000..40ec01d8c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aMalevolentViper.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aMalevolentViper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:12
+ Script Purpose :
+ :
+--]]
+function spawn(NPC, Spawn)
+ DmgBonus = math.floor(GetStr(NPC) /10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 8 + DmgBonus)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 15 + DmgBonus)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aMoatRat.lua b/server/SpawnScripts/Antonica/aMoatRat.lua
index 88540896a..3611bae8d 100755
--- a/server/SpawnScripts/Antonica/aMoatRat.lua
+++ b/server/SpawnScripts/Antonica/aMoatRat.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aNecrosisauger.lua b/server/SpawnScripts/Antonica/aNecrosisauger.lua
index 308c6f2fd..f8d887f69 100755
--- a/server/SpawnScripts/Antonica/aNecrosisauger.lua
+++ b/server/SpawnScripts/Antonica/aNecrosisauger.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1315
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aNecrosisconscript.lua b/server/SpawnScripts/Antonica/aNecrosisconscript.lua
index b26d0ce72..edaefde30 100755
--- a/server/SpawnScripts/Antonica/aNecrosisconscript.lua
+++ b/server/SpawnScripts/Antonica/aNecrosisconscript.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1290
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1440
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aNecrosisshrew.lua b/server/SpawnScripts/Antonica/aNecrosisshrew.lua
index f9a7f9db6..8c6a07e9b 100755
--- a/server/SpawnScripts/Antonica/aNecrosisshrew.lua
+++ b/server/SpawnScripts/Antonica/aNecrosisshrew.lua
@@ -5,30 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1440
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
-
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Antonica/aSabertoothHero.lua b/server/SpawnScripts/Antonica/aSabertoothHero.lua
new file mode 100644
index 000000000..2abf9b4f5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothHero.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothHero.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.11 04:03:21
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothPackLord.lua b/server/SpawnScripts/Antonica/aSabertoothPackLord.lua
new file mode 100644
index 000000000..fba8b6e9a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothPackLord.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothPackLord.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.11 04:03:55
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothbattler.lua b/server/SpawnScripts/Antonica/aSabertoothbattler.lua
new file mode 100755
index 000000000..f7cbd8be9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothbattler.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothbattler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.22 03:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+ RandomWeapons(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothbattlerHeroic.lua b/server/SpawnScripts/Antonica/aSabertoothbattlerHeroic.lua
new file mode 100755
index 000000000..90e16d3c9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothbattlerHeroic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothbattlerHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.31 07:01:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothbattlerRoamer.lua b/server/SpawnScripts/Antonica/aSabertoothbattlerRoamer.lua
new file mode 100755
index 000000000..6fc783ff5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothbattlerRoamer.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothbattlerRoamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.31 07:01:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ RandomWeapons(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothcampguard.lua b/server/SpawnScripts/Antonica/aSabertoothcampguard.lua
new file mode 100755
index 000000000..3ab9989a5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothcampguard.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothcampguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothcaptor.lua b/server/SpawnScripts/Antonica/aSabertoothcaptor.lua
new file mode 100755
index 000000000..99f546065
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothcaptor.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothcaptor.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothchampion.lua b/server/SpawnScripts/Antonica/aSabertoothchampion.lua
new file mode 100755
index 000000000..8329694c7
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothchampion.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothchampion.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC, 451)
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 32)
+ SetSpellList(NPC, 469)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothdarkstrider.lua b/server/SpawnScripts/Antonica/aSabertoothdarkstrider.lua
index c8443fc22..c3328aec8 100755
--- a/server/SpawnScripts/Antonica/aSabertoothdarkstrider.lua
+++ b/server/SpawnScripts/Antonica/aSabertoothdarkstrider.lua
@@ -5,37 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local level3 = 16
- local difficulty1 = 6
- local hp1 = 795
- local power1 = 240
- local difficulty2 = 6
- local hp2 = 920
- local power2 = 270
- local difficulty3 = 6
- local hp3 = 1045
- local power3 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aSabertoothelder.lua b/server/SpawnScripts/Antonica/aSabertoothelder.lua
new file mode 100755
index 000000000..eda20abde
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothelder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothelder.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.22 03:01:42
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothmongrel.lua b/server/SpawnScripts/Antonica/aSabertoothmongrel.lua
new file mode 100755
index 000000000..9e8229d67
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothmongrel.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothmongrel.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 12:03:13
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothmongrelRoam.lua b/server/SpawnScripts/Antonica/aSabertoothmongrelRoam.lua
new file mode 100755
index 000000000..d1b422ab7
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothmongrelRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothmongrelRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 12:03:26
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothmongrelRoamShort.lua b/server/SpawnScripts/Antonica/aSabertoothmongrelRoamShort.lua
new file mode 100644
index 000000000..dbba83931
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothmongrelRoamShort.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothmongrelRoamShort.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.04.04 03:04:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothneophyte.lua b/server/SpawnScripts/Antonica/aSabertoothneophyte.lua
index ffba9b0f0..6ab0c5811 100755
--- a/server/SpawnScripts/Antonica/aSabertoothneophyte.lua
+++ b/server/SpawnScripts/Antonica/aSabertoothneophyte.lua
@@ -5,90 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 6
- local hp1 = 430
- local power1 = 160
- local difficulty2 = 6
- local hp2 = 550
- local power2 = 185
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
@@ -97,4 +19,5 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
-end
\ No newline at end of file
+end
+
diff --git a/server/SpawnScripts/Antonica/aSabertoothneophyteShortRange.lua b/server/SpawnScripts/Antonica/aSabertoothneophyteShortRange.lua
new file mode 100755
index 000000000..1d8486d05
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothneophyteShortRange.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothneophyteShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 03:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothneophyteStatic.lua b/server/SpawnScripts/Antonica/aSabertoothneophyteStatic.lua
new file mode 100755
index 000000000..17afeff48
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothneophyteStatic.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothneophyteStatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 03:03:37
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothrunecaster.lua b/server/SpawnScripts/Antonica/aSabertoothrunecaster.lua
index 70e489f58..b10c61c53 100755
--- a/server/SpawnScripts/Antonica/aSabertoothrunecaster.lua
+++ b/server/SpawnScripts/Antonica/aSabertoothrunecaster.lua
@@ -5,28 +5,14 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 975
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1105
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ IdlePriest(NPC)
+
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aSabertoothrunecasterRoam.lua b/server/SpawnScripts/Antonica/aSabertoothrunecasterRoam.lua
new file mode 100755
index 000000000..841ae2c88
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothrunecasterRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothrunecasterRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.08 08:03:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ RandomWeapons(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothrunt.lua b/server/SpawnScripts/Antonica/aSabertoothrunt.lua
index 07842b7d7..31fd94b74 100755
--- a/server/SpawnScripts/Antonica/aSabertoothrunt.lua
+++ b/server/SpawnScripts/Antonica/aSabertoothrunt.lua
@@ -5,90 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
@@ -97,4 +19,6 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
-end
\ No newline at end of file
+end
+
+
diff --git a/server/SpawnScripts/Antonica/aSabertoothruntShortRange.lua b/server/SpawnScripts/Antonica/aSabertoothruntShortRange.lua
new file mode 100755
index 000000000..8843cfecb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothruntShortRange.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothruntShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 03:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothruntStatic.lua b/server/SpawnScripts/Antonica/aSabertoothruntStatic.lua
new file mode 100755
index 000000000..de0c5cf5b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothruntStatic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothruntStatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 03:03:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothsentinel.lua b/server/SpawnScripts/Antonica/aSabertoothsentinel.lua
new file mode 100644
index 000000000..f41bdd025
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothsentinel.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothsentinel.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.04.03 11:04:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothsentinelPatrol1.lua b/server/SpawnScripts/Antonica/aSabertoothsentinelPatrol1.lua
new file mode 100755
index 000000000..741d7877a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothsentinelPatrol1.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothsentinelPatrol1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 04:03:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1206.83, -2.9, 914.11, 2, 0)
+ MovementLoopAddLocation(NPC, -1185.57, -2.82, 914.56, 2, 0)
+ MovementLoopAddLocation(NPC, -1167.72, -3.81, 917.57, 2, 0)
+ MovementLoopAddLocation(NPC, -1140.73, -5.66, 931.19, 2, 0)
+ MovementLoopAddLocation(NPC, -1129.11, -6.15, 941.81, 2, 0)
+ MovementLoopAddLocation(NPC, -1108.21, -6.16, 964.54, 2, 0)
+ MovementLoopAddLocation(NPC, -1081.22, -6.16, 990.87, 2, 0)
+ MovementLoopAddLocation(NPC, -1076.86, -6.67, 995.43, 2, 6)
+ MovementLoopAddLocation(NPC, -1076.86, -6.67, 995.43, 2, 0)
+ MovementLoopAddLocation(NPC, -1079.75, -6.21, 992.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1105.12, -6.16, 966.47, 2, 0)
+ MovementLoopAddLocation(NPC, -1137.99, -5.79, 933.46, 2, 0)
+ MovementLoopAddLocation(NPC, -1163.55, -4.12, 919.17, 2, 0)
+ MovementLoopAddLocation(NPC, -1177.4, -3.19, 915.62, 2, 0)
+ MovementLoopAddLocation(NPC, -1206.83, -2.9, 914.11, 2, 6)
+end
+
diff --git a/server/SpawnScripts/Antonica/aSabertoothsentinelPatrol2.lua b/server/SpawnScripts/Antonica/aSabertoothsentinelPatrol2.lua
new file mode 100644
index 000000000..56e76514d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothsentinelPatrol2.lua
@@ -0,0 +1,66 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothsentinelPatrol2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.04.03 11:04:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1012.66, -12.85, 1040.7, 2, 0)
+ MovementLoopAddLocation(NPC, -1012.66, -12.85, 1040.7, 2, 0)
+ MovementLoopAddLocation(NPC, -985.63, -14.68, 1039.87, 2, 0)
+ MovementLoopAddLocation(NPC, -963.32, -16.12, 1041.07, 2, 0)
+ MovementLoopAddLocation(NPC, -950.17, -15.73, 1040.11, 2, 0)
+ MovementLoopAddLocation(NPC, -941.55, -15.06, 1039.62, 2, 0)
+ MovementLoopAddLocation(NPC, -932.39, -14.92, 1043.3, 2, 0)
+ MovementLoopAddLocation(NPC, -900.19, -19.73, 1051.7, 2, 0)
+ MovementLoopAddLocation(NPC, -883.28, -20.95, 1063.63, 2, 0)
+ MovementLoopAddLocation(NPC, -860.68, -20.87, 1055.82, 2, 0)
+ MovementLoopAddLocation(NPC, -851.81, -22.3, 1052.95, 2, 0)
+ MovementLoopAddLocation(NPC, -842.79, -24.43, 1049.27, 2, 0)
+ MovementLoopAddLocation(NPC, -831.19, -27.37, 1043.87, 2, 0)
+ MovementLoopAddLocation(NPC, -822.58, -28.14, 1040.19, 2, 8)
+ MovementLoopAddLocation(NPC, -822.58, -28.14, 1040.19, 2, 0)
+ MovementLoopAddLocation(NPC, -827.49, -27.81, 1042.35, 2, 0)
+ MovementLoopAddLocation(NPC, -838.6, -25.62, 1046.96, 2, 0)
+ MovementLoopAddLocation(NPC, -846.51, -23.53, 1050.72, 2, 0)
+ MovementLoopAddLocation(NPC, -855.57, -21.45, 1053.98, 2, 0)
+ MovementLoopAddLocation(NPC, -859.32, -20.83, 1055.43, 2, 0)
+ MovementLoopAddLocation(NPC, -861.3, -20.77, 1059.3, 2, 0)
+ MovementLoopAddLocation(NPC, -862.63, -21.48, 1075.94, 2, 0)
+ MovementLoopAddLocation(NPC, -863.11, -22.86, 1082.91, 2, 0)
+ MovementLoopAddLocation(NPC, -869.18, -23.47, 1086.49, 2, 0)
+ MovementLoopAddLocation(NPC, -887.65, -24.1, 1089.52, 2, 0)
+ MovementLoopAddLocation(NPC, -897.69, -26.65, 1094.02, 2, 0)
+ MovementLoopAddLocation(NPC, -921.53, -33.3, 1098.82, 2, 0)
+ MovementLoopAddLocation(NPC, -939.57, -36.63, 1101.55, 2, 0)
+ MovementLoopAddLocation(NPC, -947.31, -38.03, 1100.06, 2, 8)
+ MovementLoopAddLocation(NPC, -947.31, -38.03, 1100.06, 2, 0)
+ MovementLoopAddLocation(NPC, -941.43, -37.03, 1101.1, 2, 0)
+ MovementLoopAddLocation(NPC, -930.25, -34.51, 1100.48, 2, 0)
+ MovementLoopAddLocation(NPC, -923.48, -33.87, 1099.25, 2, 0)
+ MovementLoopAddLocation(NPC, -894.87, -25.84, 1093.11, 2, 0)
+ MovementLoopAddLocation(NPC, -887.09, -22.84, 1080.23, 2, 0)
+ MovementLoopAddLocation(NPC, -886.82, -21.42, 1069.72, 2, 0)
+ MovementLoopAddLocation(NPC, -905.67, -19.1, 1050.3, 2, 0)
+ MovementLoopAddLocation(NPC, -926.53, -15.17, 1042.3, 2, 0)
+ MovementLoopAddLocation(NPC, -942.44, -15.19, 1040.6, 2, 0)
+ MovementLoopAddLocation(NPC, -958.11, -16.25, 1040.49, 2, 0)
+ MovementLoopAddLocation(NPC, -986.05, -14.61, 1039.15, 2, 0)
+ MovementLoopAddLocation(NPC, -1012.66, -12.85, 1040.7, 2, 8)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothshaman.lua b/server/SpawnScripts/Antonica/aSabertoothshaman.lua
new file mode 100755
index 000000000..cd8c1d3cd
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothshaman.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothshaman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.26 08:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothshamanRoam.lua b/server/SpawnScripts/Antonica/aSabertoothshamanRoam.lua
new file mode 100755
index 000000000..c8bf90371
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothshamanRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothshamanRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 12:03:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothtormentor.lua b/server/SpawnScripts/Antonica/aSabertoothtormentor.lua
new file mode 100755
index 000000000..bc618a8e1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothtormentor.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothtormentor.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.22 05:01:13
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll3.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSabertoothwarlock.lua b/server/SpawnScripts/Antonica/aSabertoothwarlock.lua
new file mode 100755
index 000000000..9b3c7d41a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSabertoothwarlock.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSabertoothwarlock.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSoddenStalker.lua b/server/SpawnScripts/Antonica/aSoddenStalker.lua
new file mode 100644
index 000000000..181948361
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aSoddenStalker.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aSoddenStalker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.11 04:03:05
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aSonicShrieker.lua b/server/SpawnScripts/Antonica/aSonicShrieker.lua
index d3d16e545..e51356abc 100755
--- a/server/SpawnScripts/Antonica/aSonicShrieker.lua
+++ b/server/SpawnScripts/Antonica/aSonicShrieker.lua
@@ -5,100 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local level3 = 15
- local difficulty1 = 2
- local hp1 = 240
- local power1 = 80
- local difficulty2 = 2
- local hp2 = 280
- local power2 = 90
- local difficulty3 = 2
- local hp3 = 310
- local power3 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 8, -8, 4, -4, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aSparrowHawk.lua b/server/SpawnScripts/Antonica/aSparrowHawk.lua
index 48244d217..1a6d9c039 100755
--- a/server/SpawnScripts/Antonica/aSparrowHawk.lua
+++ b/server/SpawnScripts/Antonica/aSparrowHawk.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 2, -2, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aWanderingBat.lua b/server/SpawnScripts/Antonica/aWanderingBat.lua
index 83905356c..222437076 100755
--- a/server/SpawnScripts/Antonica/aWanderingBat.lua
+++ b/server/SpawnScripts/Antonica/aWanderingBat.lua
@@ -5,90 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 6
- local hp1 = 430
- local power1 = 160
- local difficulty2 = 6
- local hp2 = 450
- local power2 = 190
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 14, -14, 4, -4, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aWindstalkerCitizen2.lua b/server/SpawnScripts/Antonica/aWindstalkerCitizen2.lua
index a3c898b76..8749f0f9b 100755
--- a/server/SpawnScripts/Antonica/aWindstalkerCitizen2.lua
+++ b/server/SpawnScripts/Antonica/aWindstalkerCitizen2.lua
@@ -5,35 +5,17 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+require "SpawnScripts/Generic/NPCModule"
local LichaDancingQueen = 5342
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 1045
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-SetTempVariable(NPC, "QUEST_HAILED", "false")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseRace(NPC)
+ SetTempVariable(NPC, "QUEST_HAILED", "false")
end
-
-
-
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
if HasQuest(Spawn, LichaDancingQueen) and GetTempVariable(NPC, "QUEST_HAILED") == "false" then
@@ -48,6 +30,28 @@ function hailed(NPC, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "", "I know, I know. You already told me.", "", 0, 0, Spawn)
end
+else
+ if GetClass(Spawn) >= 15 and GetClass(Spawn) <= 17 or GetClass(Spawn)==39 then
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ SendMessage(Spawn,"The Windstalker Citizen eyes you approvingly.","white")
+ elseif choice == 2 then
+ SendMessage(Spawn,"The Windstalker Citizen gives you a friendly nod of acknowledgement.","white")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1, 3)
+ if choice == 1 then
+ SendMessage(Spawn,"The Windstalker Citizen eyes closely in a disapproving manner.","white")
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ elseif choice == 2 then
+ SendMessage(Spawn,"The Windstalker Citizen does not want to engage with you.","white")
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ elseif choice == 3 then
+ SendMessage(Spawn,"The Windstalker Citizen stares sniffs the air around you.","white")
+ PlayFlavor(NPC, "", "", "peer", 0, 0, Spawn)
+ end
+ end
end
end
@@ -96,9 +100,17 @@ SetTempVariable(NPC, "QUEST_HAILED", "false")
end
end
-
-
-
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function ChooseRace(NPC)
+ SetRace = MakeRandomInt(1,2)
+ if SetRace == 1 then
+ human(NPC)
+ elseif SetRace == 2 then
+ halfelf(NPC)
+ end
+end
+
+
diff --git a/server/SpawnScripts/Antonica/aWindstalkerconstable.lua b/server/SpawnScripts/Antonica/aWindstalkerconstable.lua
new file mode 100644
index 000000000..c48a68414
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aWindstalkerconstable.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aWindstalkerconstable.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aWindstalkerconstableRoam.lua b/server/SpawnScripts/Antonica/aWindstalkerconstableRoam.lua
index 95f506a10..7a2df9e7f 100755
--- a/server/SpawnScripts/Antonica/aWindstalkerconstableRoam.lua
+++ b/server/SpawnScripts/Antonica/aWindstalkerconstableRoam.lua
@@ -5,14 +5,15 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ AddTimer(NPC, 6000, "waypoints")
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
function respawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/aWindstalkerlumberjack.lua b/server/SpawnScripts/Antonica/aWindstalkerlumberjack.lua
index 57a6bbe77..81aff08f6 100755
--- a/server/SpawnScripts/Antonica/aWindstalkerlumberjack.lua
+++ b/server/SpawnScripts/Antonica/aWindstalkerlumberjack.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 1045
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aYoungBrownBear.lua b/server/SpawnScripts/Antonica/aYoungBrownBear.lua
index ae0948d30..ca02af9fe 100755
--- a/server/SpawnScripts/Antonica/aYoungBrownBear.lua
+++ b/server/SpawnScripts/Antonica/aYoungBrownBear.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 6
- local hp1 = 750
- local power1 = 250
- local difficulty2 = 6
- local hp2 = 850
- local power2 = 320
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aYoungBrownBearWoods.lua b/server/SpawnScripts/Antonica/aYoungBrownBearWoods.lua
new file mode 100644
index 000000000..b22761862
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aYoungBrownBearWoods.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aYoungBrownBearWoods.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.27 08:03:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/abeadedlizard.lua b/server/SpawnScripts/Antonica/abeadedlizard.lua
index 8f394cb8b..94be95d92 100755
--- a/server/SpawnScripts/Antonica/abeadedlizard.lua
+++ b/server/SpawnScripts/Antonica/abeadedlizard.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 6
- local hp1 = 795
- local power1 = 240
- local difficulty2 = 6
- local hp2 = 920
- local power2 = 270
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ablightoak.lua b/server/SpawnScripts/Antonica/ablightoak.lua
index d8f3c1705..8b7300088 100755
--- a/server/SpawnScripts/Antonica/ablightoak.lua
+++ b/server/SpawnScripts/Antonica/ablightoak.lua
@@ -5,91 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 9
- local hp1 = 3060
- local power1 = 1350
- local difficulty2 = 9
- local hp2 = 3485
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/abloatedskeleton.lua b/server/SpawnScripts/Antonica/abloatedskeleton.lua
new file mode 100755
index 000000000..96f6659c6
--- /dev/null
+++ b/server/SpawnScripts/Antonica/abloatedskeleton.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/abloatedskeleton.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 03:09:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/abloodsaberseditionist.lua b/server/SpawnScripts/Antonica/abloodsaberseditionist.lua
index 75ac247a7..23d105650 100755
--- a/server/SpawnScripts/Antonica/abloodsaberseditionist.lua
+++ b/server/SpawnScripts/Antonica/abloodsaberseditionist.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+ ratonga(NPC)
end
function hailed(NPC, Spawn)
@@ -35,4 +19,19 @@ end
function respawn(NPC)
spawn(NPC)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC,"class", 2)
+ SetSpellList(NPC, 451)
+ IdleAggressive(NPC)
+ DervishChain(NPC)
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 32)
+ SetSpellList(NPC, 469)
+ IdleAlert(NPC)
+ DervishLeather(NPC)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/abluewidowspider.lua b/server/SpawnScripts/Antonica/abluewidowspider.lua
index ce70eaa02..99cd41182 100755
--- a/server/SpawnScripts/Antonica/abluewidowspider.lua
+++ b/server/SpawnScripts/Antonica/abluewidowspider.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 21
- local level2 = 22
- local difficulty1 = 4
- local hp1 = 1165
- local power1 = 280
- local difficulty2 = 6
- local hp2 = 1295
- local power2 = 295
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/abrigandleader.lua b/server/SpawnScripts/Antonica/abrigandleader.lua
index 798f90bfb..55cda21f2 100755
--- a/server/SpawnScripts/Antonica/abrigandleader.lua
+++ b/server/SpawnScripts/Antonica/abrigandleader.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/acisternworm.lua b/server/SpawnScripts/Antonica/acisternworm.lua
index acb07eca7..067e3ced7 100755
--- a/server/SpawnScripts/Antonica/acisternworm.lua
+++ b/server/SpawnScripts/Antonica/acisternworm.lua
@@ -5,70 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/acoldwindcrewman.lua b/server/SpawnScripts/Antonica/acoldwindcrewman.lua
new file mode 100755
index 000000000..784a2ca0c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/acoldwindcrewman.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/acoldwindcrewman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.13 03:03:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/acoldwindgunner.lua b/server/SpawnScripts/Antonica/acoldwindgunner.lua
index b90daed87..381ca833b 100755
--- a/server/SpawnScripts/Antonica/acoldwindgunner.lua
+++ b/server/SpawnScripts/Antonica/acoldwindgunner.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 6
- local hp1 = 920
- local power1 = 270
- local difficulty2 = 6
- local hp2 = 1045
- local power2 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/acoldwindmedic.lua b/server/SpawnScripts/Antonica/acoldwindmedic.lua
new file mode 100755
index 000000000..ad0aecfc1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/acoldwindmedic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/acoldwindmedic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdlePriest(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/acoldwindpike.lua b/server/SpawnScripts/Antonica/acoldwindpike.lua
index e977ed233..2d78452fc 100755
--- a/server/SpawnScripts/Antonica/acoldwindpike.lua
+++ b/server/SpawnScripts/Antonica/acoldwindpike.lua
@@ -5,89 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 6
- local hp1 = 550
- local power1 = 185
- local difficulty2 = 6
- local hp2 = 655
- local power2 = 205
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ ChooseClass(NPC)
end
function respawn(NPC, Spawn)
@@ -96,4 +19,15 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 1)
+ SetSpellList(NPC, 291)
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 295)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aconstructionlaborer.lua b/server/SpawnScripts/Antonica/aconstructionlaborer.lua
new file mode 100755
index 000000000..ad70f5253
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aconstructionlaborer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aconstructionlaborer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/acow.lua b/server/SpawnScripts/Antonica/acow.lua
new file mode 100644
index 000000000..69589ce6d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/acow.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/acow.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 02:02:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/acrazedgnoll.lua b/server/SpawnScripts/Antonica/acrazedgnoll.lua
new file mode 100755
index 000000000..3a3155875
--- /dev/null
+++ b/server/SpawnScripts/Antonica/acrazedgnoll.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/acrazedgnoll.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.27 10:02:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/acrimsonfalcon.lua b/server/SpawnScripts/Antonica/acrimsonfalcon.lua
index f2d5dffcd..2998bc278 100755
--- a/server/SpawnScripts/Antonica/acrimsonfalcon.lua
+++ b/server/SpawnScripts/Antonica/acrimsonfalcon.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local difficulty1 = 6
- local hp1 = 680
- local power1 = 205
- local difficulty2 = 6
- local hp2 = 795
- local power2 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 2, -2, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/adalesnake.lua b/server/SpawnScripts/Antonica/adalesnake.lua
new file mode 100644
index 000000000..215910a62
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adalesnake.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adalesnake.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 02:02:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adankfurdockwarden.lua b/server/SpawnScripts/Antonica/adankfurdockwarden.lua
index 874800e1c..f5cf98708 100755
--- a/server/SpawnScripts/Antonica/adankfurdockwarden.lua
+++ b/server/SpawnScripts/Antonica/adankfurdockwarden.lua
@@ -5,11 +5,13 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
local QUEST_3 = 5561
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function targeted(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/adankfurgnoll.lua b/server/SpawnScripts/Antonica/adankfurgnoll.lua
index 194be5902..95490f941 100755
--- a/server/SpawnScripts/Antonica/adankfurgnoll.lua
+++ b/server/SpawnScripts/Antonica/adankfurgnoll.lua
@@ -6,9 +6,12 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
@@ -17,4 +20,21 @@ end
function respawn(NPC)
spawn(NPC)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 1)
+ SetSpellList(NPC, 291)
+ elseif SetClass ==2 then
+ SpawnSet(NPC, "class", 12)
+ SetSpellList(NPC, 329)
+ end
+end
+
+function waypoints(NPC)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adankfurgnollCleric.lua b/server/SpawnScripts/Antonica/adankfurgnollCleric.lua
new file mode 100755
index 000000000..122db9a22
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adankfurgnollCleric.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adankfurgnollCleric.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.13 02:03:47
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdlePriest(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adankfurgnollClericRoam.lua b/server/SpawnScripts/Antonica/adankfurgnollClericRoam.lua
new file mode 100755
index 000000000..98844047e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adankfurgnollClericRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adankfurgnollClericRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.21 08:03:50
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adankfurgnollWarrior.lua b/server/SpawnScripts/Antonica/adankfurgnollWarrior.lua
new file mode 100755
index 000000000..772715dad
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adankfurgnollWarrior.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adankfurgnollWarrior.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.13 02:03:07
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function aggro(NPC, Spawn)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adankfurgnollWarriorRoam.lua b/server/SpawnScripts/Antonica/adankfurgnollWarriorRoam.lua
new file mode 100755
index 000000000..1537f49b3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adankfurgnollWarriorRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adankfurgnollWarriorRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.21 08:03:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adarkclawcrab.lua b/server/SpawnScripts/Antonica/adarkclawcrab.lua
index a35cb201b..1ee5853a3 100755
--- a/server/SpawnScripts/Antonica/adarkclawcrab.lua
+++ b/server/SpawnScripts/Antonica/adarkclawcrab.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/adeadgnoll.lua b/server/SpawnScripts/Antonica/adeadgnoll.lua
new file mode 100755
index 000000000..874953701
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adeadgnoll.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adeadgnoll.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.10 06:05:06
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+Model(NPC)
+end
+
+function Model(NPC)
+local Choice = MakeRandomInt(1,3)
+if Choice ==1 then
+SpawnSet(NPC,"model_type","1384")
+elseif Choice ==2 then
+SpawnSet(NPC,"model_type","3816")
+else
+SpawnSet(NPC,"model_type","3814")
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adecayingskeleton.lua b/server/SpawnScripts/Antonica/adecayingskeleton.lua
index 0cabc94b7..8fd8f14bd 100755
--- a/server/SpawnScripts/Antonica/adecayingskeleton.lua
+++ b/server/SpawnScripts/Antonica/adecayingskeleton.lua
@@ -7,89 +7,11 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 9
- local hp1 = 3150
- local power1 = 1350
- local difficulty2 = 9
- local hp2 = 3485
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/adefiledsquire.lua b/server/SpawnScripts/Antonica/adefiledsquire.lua
index ddff2931a..0ef027bf9 100755
--- a/server/SpawnScripts/Antonica/adefiledsquire.lua
+++ b/server/SpawnScripts/Antonica/adefiledsquire.lua
@@ -6,90 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/adenmother.lua b/server/SpawnScripts/Antonica/adenmother.lua
new file mode 100755
index 000000000..8db26956c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adenmother.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adenmother.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adirewolf.lua b/server/SpawnScripts/Antonica/adirewolf.lua
new file mode 100644
index 000000000..bbb72ffbd
--- /dev/null
+++ b/server/SpawnScripts/Antonica/adirewolf.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/adirewolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 03:02:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/adriftwooddefiler.lua b/server/SpawnScripts/Antonica/adriftwooddefiler.lua
index 9f087d738..64d67269f 100755
--- a/server/SpawnScripts/Antonica/adriftwooddefiler.lua
+++ b/server/SpawnScripts/Antonica/adriftwooddefiler.lua
@@ -5,92 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 9
- local hp1 = 1740
- local power1 = 900
- local difficulty2 = 9
- local hp2 = 1940
- local power2 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 14, -14, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/afallenknight.lua b/server/SpawnScripts/Antonica/afallenknight.lua
index 6ff1b629e..a8807cdfb 100755
--- a/server/SpawnScripts/Antonica/afallenknight.lua
+++ b/server/SpawnScripts/Antonica/afallenknight.lua
@@ -5,92 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 9
- local hp1 = 3150
- local power1 = 1350
- local difficulty2 = 9
- local hp2 = 3485
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 14, -14, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/afalsewidowspider.lua b/server/SpawnScripts/Antonica/afalsewidowspider.lua
index 797b20745..a72bd7099 100755
--- a/server/SpawnScripts/Antonica/afalsewidowspider.lua
+++ b/server/SpawnScripts/Antonica/afalsewidowspider.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 23
- local level2 = 24
- local difficulty1 = 4
- local hp1 = 1325
- local power1 = 300
- local difficulty2 = 4
- local hp2 = 1355
- local power2 = 305
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/aferaltimberwolf.lua b/server/SpawnScripts/Antonica/aferaltimberwolf.lua
new file mode 100644
index 000000000..14644eb6b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aferaltimberwolf.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aferaltimberwolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 03:02:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/afieldshrike.lua b/server/SpawnScripts/Antonica/afieldshrike.lua
new file mode 100755
index 000000000..2e4377128
--- /dev/null
+++ b/server/SpawnScripts/Antonica/afieldshrike.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/afieldshrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.22 03:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 4, -2, 2, 5, 10)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/afociofdecayA.lua b/server/SpawnScripts/Antonica/afociofdecayA.lua
new file mode 100755
index 000000000..6868a2b1c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/afociofdecayA.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : SpawnScripts/Antonica/afociofdecayA.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.01 08:02:51
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Plaguebringer Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local Spawn1 = SpawnByLocationID(zone, 133782082) --restless Caltorsite
+local Spawn2 = SpawnByLocationID(zone, 133782083)--restless Caltorsite
+local Spawn3 = SpawnByLocationID(zone, 133782084)--restless Caltorsite
+local Spawn4 = SpawnByLocationID(zone, 133782085)--restless Caltorsite
+local Spawn5 = SpawnByLocationID(zone, 133782086)--restless Caltorsite
+local Spawn6 = SpawnByLocationID(zone, 133782087)--restless Caltorsite
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782080)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Spawn1 = GetSpawnByLocationID(zone, 133782082)
+local Spawn2 = GetSpawnByLocationID(zone, 133782083)
+local Spawn3 = GetSpawnByLocationID(zone, 133782084)
+local Spawn4 = GetSpawnByLocationID(zone, 133782085)
+local Spawn5 = GetSpawnByLocationID(zone, 133782086)
+local Spawn6 = GetSpawnByLocationID(zone, 133782087)
+
+if IsAlive(Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn5) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn6) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782090)--acolyte 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782091)--acolyte 2
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782092)--acolyte 3
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782093)--acolyte 4
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782090)--acolyte 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782091)--acolyte 2
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782092)--acolyte 3
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782093)--acolyte 4
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782094)--Priest of the Plaguebringer
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782088)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782080)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782081)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782094) --Priest of the Plaguebringer
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782080)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782081)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 133770794)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782088)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782081)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/afociofdecayB.lua b/server/SpawnScripts/Antonica/afociofdecayB.lua
new file mode 100755
index 000000000..5b43ba040
--- /dev/null
+++ b/server/SpawnScripts/Antonica/afociofdecayB.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : SpawnScripts/Antonica/afociofdecayB.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.01 09:02:25
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Plaguebringer Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local Spawn1 = SpawnByLocationID(zone, 133782096) --restless Caltorsite
+local Spawn2 = SpawnByLocationID(zone, 133782097)--restless Caltorsite
+local Spawn3 = SpawnByLocationID(zone, 133782098)--restless Caltorsite
+local Spawn4 = SpawnByLocationID(zone, 133782099)--restless Caltorsite
+local Spawn5 = SpawnByLocationID(zone, 133782100)--restless Caltorsite
+local Spawn6 = SpawnByLocationID(zone, 133782101)--restless Caltorsite
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782102)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Spawn1 = GetSpawnByLocationID(zone, 133782096)
+local Spawn2 = GetSpawnByLocationID(zone, 133782097)
+local Spawn3 = GetSpawnByLocationID(zone, 133782098)
+local Spawn4 = GetSpawnByLocationID(zone, 133782099)
+local Spawn5 = GetSpawnByLocationID(zone, 133782100)
+local Spawn6 = GetSpawnByLocationID(zone, 133782101)
+
+if IsAlive(Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn5) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn6) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782104)--acolyte 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782105)--acolyte 2
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782106)--acolyte 3
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782107)--acolyte 4
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782104)--acolyte 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782105)--acolyte 2
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782106)--acolyte 3
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782107)--acolyte 4
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782109)--Priest of the Plaguebringer
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782108)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782102)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782103)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782109) --Priest of the Plaguebringer
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782102)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782103)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 133782095)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782108)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782103)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/afociofdecayC.lua b/server/SpawnScripts/Antonica/afociofdecayC.lua
new file mode 100755
index 000000000..eb7e4e703
--- /dev/null
+++ b/server/SpawnScripts/Antonica/afociofdecayC.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : SpawnScripts/Antonica/afociofdecayC.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.01 09:02:41
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Plaguebringer Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local Spawn1 = SpawnByLocationID(zone, 133782110) --restless Caltorsite
+local Spawn2 = SpawnByLocationID(zone, 133782111)--restless Caltorsite
+local Spawn3 = SpawnByLocationID(zone, 133782112)--restless Caltorsite
+local Spawn4 = SpawnByLocationID(zone, 133782113)--restless Caltorsite
+local Spawn5 = SpawnByLocationID(zone, 133782114)--restless Caltorsite
+local Spawn6 = SpawnByLocationID(zone, 133782115)--restless Caltorsite
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782116)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Spawn1 = GetSpawnByLocationID(zone, 133782110)
+local Spawn2 = GetSpawnByLocationID(zone, 133782111)
+local Spawn3 = GetSpawnByLocationID(zone, 133782112)
+local Spawn4 = GetSpawnByLocationID(zone, 133782113)
+local Spawn5 = GetSpawnByLocationID(zone, 133782114)
+local Spawn6 = GetSpawnByLocationID(zone, 133782115)
+
+if IsAlive(Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn5) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn6) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782119)--acolyte 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782120)--acolyte 2
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782121)--acolyte 3
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782122)--acolyte 4
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782119)--acolyte 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782120)--acolyte 2
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782121)--acolyte 3
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782122)--acolyte 4
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782123)--Priest of the Plaguebringer
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782118)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782116)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782117)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782123) --Priest of the Plaguebringer
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782116)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782117)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 133770808)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782118)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782117)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/afociofdecayD.lua b/server/SpawnScripts/Antonica/afociofdecayD.lua
new file mode 100755
index 000000000..97129775c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/afociofdecayD.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : SpawnScripts/Antonica/afociofdecayD.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.01 10:02:35
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Plaguebringer Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local Spawn1 = SpawnByLocationID(zone, 133782124) --restless Caltorsite
+local Spawn2 = SpawnByLocationID(zone, 133782125)--restless Caltorsite
+local Spawn3 = SpawnByLocationID(zone, 133782126)--restless Caltorsite
+local Spawn4 = SpawnByLocationID(zone, 133782127)--restless Caltorsite
+local Spawn5 = SpawnByLocationID(zone, 133782128)--restless Caltorsite
+local Spawn6 = SpawnByLocationID(zone, 133782129)--restless Caltorsite
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782135)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Spawn1 = GetSpawnByLocationID(zone, 133782124)
+local Spawn2 = GetSpawnByLocationID(zone, 133782125)
+local Spawn3 = GetSpawnByLocationID(zone, 133782126)
+local Spawn4 = GetSpawnByLocationID(zone, 133782127)
+local Spawn5 = GetSpawnByLocationID(zone, 133782128)
+local Spawn6 = GetSpawnByLocationID(zone, 133782129)
+
+if IsAlive(Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn5) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn6) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Stage2Spawn1=SpawnByLocationID(zone, 133782130)--acolyte 1
+ local Stage2Spawn2=SpawnByLocationID(zone, 133782131)--acolyte 2
+ local Stage2Spawn3=SpawnByLocationID(zone, 133782132)--acolyte 3
+ local Stage2Spawn4=SpawnByLocationID(zone, 133782133)--acolyte 4
+ FaceTarget(Stage2Spawn1, Spawn)
+ Attack(Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Stage2Spawn1=GetSpawnByLocationID(zone, 133782130)--acolyte 1
+ local Stage2Spawn2=GetSpawnByLocationID(zone, 133782131)--acolyte 2
+ local Stage2Spawn3=GetSpawnByLocationID(zone, 133782132)--acolyte 3
+ local Stage2Spawn4=GetSpawnByLocationID(zone, 133782133)--acolyte 4
+ if IsAlive(Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782134)--Priest of the Plaguebringer
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782137)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782135)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782136)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782134) --Priest of the Plaguebringer
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782135)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782136)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 195807)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782137)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782136)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/afociofdecayE.lua b/server/SpawnScripts/Antonica/afociofdecayE.lua
new file mode 100755
index 000000000..1c3d194d3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/afociofdecayE.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : SpawnScripts/Antonica/afociofdecayE.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.01 11:02:52
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Plaguebringer Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local Spawn1 = SpawnByLocationID(zone, 133782138) --restless Caltorsite
+local Spawn2 = SpawnByLocationID(zone, 133782139)--restless Caltorsite
+local Spawn3 = SpawnByLocationID(zone, 133782140)--restless Caltorsite
+local Spawn4 = SpawnByLocationID(zone, 133782141)--restless Caltorsite
+local Spawn5 = SpawnByLocationID(zone, 133782152)--restless Caltorsite
+local Spawn6 = SpawnByLocationID(zone, 133782143)--restless Caltorsite
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782149)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Spawn1 = GetSpawnByLocationID(zone, 133782138)
+local Spawn2 = GetSpawnByLocationID(zone, 133782139)
+local Spawn3 = GetSpawnByLocationID(zone, 133782140)
+local Spawn4 = GetSpawnByLocationID(zone, 133782141)
+local Spawn5 = GetSpawnByLocationID(zone, 133782152)
+local Spawn6 = GetSpawnByLocationID(zone, 133782143)
+
+if IsAlive(Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn5) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Spawn6) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782144)--acolyte 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782145)--acolyte 2
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782146)--acolyte 3
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782147)--acolyte 4
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782144)--acolyte 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782145)--acolyte 2
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782146)--acolyte 3
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782147)--acolyte 4
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782148)--Priest of the Plaguebringer
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782151)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782149)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782150)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782148) --Priest of the Plaguebringer
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782149)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782150)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 133770809)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782151)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782150)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/aforestwarden.lua b/server/SpawnScripts/Antonica/aforestwarden.lua
index 92e9fc2bd..97127f0a1 100755
--- a/server/SpawnScripts/Antonica/aforestwarden.lua
+++ b/server/SpawnScripts/Antonica/aforestwarden.lua
@@ -5,32 +5,14 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local difficulty1 = 6
- local hp1 = 655
- local power1 = 205
- local difficulty2 = 6
- local hp2 = 765
- local power2 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
@@ -39,63 +21,3 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aghastbeetle.lua b/server/SpawnScripts/Antonica/aghastbeetle.lua
index 6fea6ebea..fd7cf05de 100755
--- a/server/SpawnScripts/Antonica/aghastbeetle.lua
+++ b/server/SpawnScripts/Antonica/aghastbeetle.lua
@@ -5,91 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 21
- local level2 = 22
- local difficulty1 = 4
- local hp1 = 1165
- local power1 = 280
- local difficulty2 = 6
- local hp2 = 1295
- local power2 = 295
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/agiantbat.lua b/server/SpawnScripts/Antonica/agiantbat.lua
new file mode 100755
index 000000000..c5a3d252d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agiantbat.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agiantbat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.31 08:01:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 6, -2, 8, 15)
+end
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agiantbear.lua b/server/SpawnScripts/Antonica/agiantbear.lua
index 1663ec134..4192eaead 100755
--- a/server/SpawnScripts/Antonica/agiantbear.lua
+++ b/server/SpawnScripts/Antonica/agiantbear.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 19
- local level2 = 20
- local difficulty1 = 6
- local hp1 = 1440
- local power1 = 425
- local difficulty2 = 6
- local hp2 = 1930
- local power2 = 475
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/agiantbearHillside1.lua b/server/SpawnScripts/Antonica/agiantbearHillside1.lua
new file mode 100755
index 000000000..68dcfd50d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agiantbearHillside1.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agiantbearHillside1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2022.78, -29.98, 369.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2036.17, -31.31, 359.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2047.45, -31.78, 350.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2051.22, -30.37, 342.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2056.75, -28.4, 332.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2059.31, -27.18, 327.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2065.56, -24.23, 317.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2063.55, -24.26, 318.41, 2, 0)
+ MovementLoopAddLocation(NPC, -2055.56, -22.55, 320.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2045.44, -18.75, 321.23, 2, 0)
+ MovementLoopAddLocation(NPC, -2035.15, -15.2, 321.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2025.82, -12.56, 322.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2013.83, -9.84, 323.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2011.79, -8.26, 320.08, 2, 0)
+ MovementLoopAddLocation(NPC, -2007.65, -5.46, 312.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2004.22, -4.3, 306.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2005.16, -4.54, 308.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2009.2, -7.27, 318.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2012.98, -11.49, 327.87, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.27, -12.83, 330.04, 2, 0)
+ MovementLoopAddLocation(NPC, -2023.54, -16.96, 335.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2032.25, -22.38, 340.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2038.34, -27.47, 347.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2043.34, -31.4, 352.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2047.91, -34.15, 358.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2046.89, -34.11, 359.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2039.52, -33.07, 363, 2, 0)
+ MovementLoopAddLocation(NPC, -2032.72, -32.52, 369.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2024.98, -32.54, 377.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2017.61, -33.1, 385.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2009.85, -32.54, 390.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2001.05, -31.51, 392.76, 2, 0)
+ MovementLoopAddLocation(NPC, -1991.18, -29.64, 395.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1985.03, -28.58, 398.36, 2, 0)
+ MovementLoopAddLocation(NPC, -1983.58, -27.86, 397.43, 2, 0)
+ MovementLoopAddLocation(NPC, -1984.13, -25.05, 389.05, 2, 0)
+ MovementLoopAddLocation(NPC, -1984.67, -22.17, 380.65, 2, 0)
+ MovementLoopAddLocation(NPC, -1986.32, -20.18, 373.27, 2, 0)
+ MovementLoopAddLocation(NPC, -1988.33, -18.56, 366.62, 2, 0)
+ MovementLoopAddLocation(NPC, -1994.63, -20.35, 365.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2005.71, -24.71, 366.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2009.75, -26.76, 368.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2018.56, -30.23, 373.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2026.49, -33.02, 378.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2032.17, -34.85, 381.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2022.78, -29.98, 369.32, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Antonica/agiantbearHillside2.lua b/server/SpawnScripts/Antonica/agiantbearHillside2.lua
new file mode 100755
index 000000000..f9b5c0d69
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agiantbearHillside2.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agiantbearHillside2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2042.52, -26.38, 340.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2049.71, -23.28, 327.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2056.31, -19.98, 314.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2059.27, -14.75, 303.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2061.37, -9.75, 292.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2063.51, -6.97, 282.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2066.99, -4.96, 271.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2062.42, -3.73, 270.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2050.71, -0.96, 269.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2036.66, 1.86, 269.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2024.37, 3.17, 268.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.2, 2.85, 272.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2005.39, 1.34, 279.79, 2, 0)
+ MovementLoopAddLocation(NPC, -1996.48, -0.21, 286.57, 2, 0)
+ MovementLoopAddLocation(NPC, -1986.17, -1.69, 294.42, 2, 0)
+ MovementLoopAddLocation(NPC, -1983.43, -2.29, 298.91, 2, 0)
+ MovementLoopAddLocation(NPC, -1980.21, -3.11, 308.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1975.77, -3.31, 321.95, 2, 0)
+ MovementLoopAddLocation(NPC, -1972.05, -3.2, 333.13, 2, 0)
+ MovementLoopAddLocation(NPC, -1973.87, -3.98, 336.96, 2, 0)
+ MovementLoopAddLocation(NPC, -1979.77, -7.02, 343.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1984.38, -9.84, 347.89, 2, 0)
+ MovementLoopAddLocation(NPC, -1992, -15.42, 354.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1998.69, -20.17, 360.87, 2, 0)
+ MovementLoopAddLocation(NPC, -1999.81, -19.82, 359.04, 2, 0)
+ MovementLoopAddLocation(NPC, -2004.98, -17.92, 350.58, 2, 0)
+ MovementLoopAddLocation(NPC, -2009.95, -15.94, 342.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.15, -14.12, 333.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2021.09, -12.16, 324.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2025.4, -10.41, 317.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2026.91, -10.92, 317.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2033.9, -15.01, 322.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2041.11, -19.89, 327.46, 2, 0)
+ MovementLoopAddLocation(NPC, -2047.7, -24.57, 332.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2053.42, -28.58, 336.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2054.63, -28.93, 335.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2063.39, -31.17, 335.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2067.2, -32.8, 336.75, 2, 0)
+ MovementLoopAddLocation(NPC, -2071.5, -36.23, 342.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2071.28, -36.98, 345.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2061.78, -35.65, 348.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2056.22, -34.54, 350.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2049.06, -31.44, 347.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2042.52, -26.38, 340.93, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Antonica/agiantbearHillside3.lua b/server/SpawnScripts/Antonica/agiantbearHillside3.lua
new file mode 100755
index 000000000..494b14426
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agiantbearHillside3.lua
@@ -0,0 +1,88 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agiantbearHillside3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2077.01, -21.87, 307.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2082.17, -16.97, 296.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.32, -13.72, 287.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.99, -11.11, 279.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.45, -9.34, 269.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.57, -9.56, 263.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2106.08, -10.55, 255.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.06, -11.4, 245.49, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.85, -13.2, 237.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2128.83, -15.14, 227.55, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.76, -15.6, 228.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.26, -16.13, 237.65, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.91, -16.34, 246.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.86, -16.85, 255.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.17, -16.54, 263.75, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.64, -16.6, 272.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.16, -18.16, 281.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.45, -19.51, 290.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.06, -21.13, 298.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.58, -23.7, 306.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2097.39, -26.57, 313.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2095.02, -31.03, 321.15, 2, 0)
+ MovementLoopAddLocation(NPC, -2092.38, -35.77, 329.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.96, -34.39, 326.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2100.17, -29.91, 317.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.02, -26.64, 309.5, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.78, -24.21, 301.46, 2, 0)
+ MovementLoopAddLocation(NPC, -2109.39, -21.46, 293, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.99, -18.92, 284.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.77, -16.65, 275.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.09, -15.46, 268.15, 2, 0)
+ MovementLoopAddLocation(NPC, -2113.97, -15.42, 267.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.65, -13.31, 259.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.54, -10.21, 251.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.53, -7.6, 243.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.21, -4.97, 235.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.01, -2.47, 226.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.75, -0.52, 218.48, 2, 0)
+ MovementLoopAddLocation(NPC, -2090.8, 0.48, 217.19, 2, 0)
+ MovementLoopAddLocation(NPC, -2084.9, 1.37, 221.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2078.29, 2.38, 225.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2070.91, 3.71, 231.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2065.22, 4.75, 235.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2066.58, 4.47, 234.83, 2, 0)
+ MovementLoopAddLocation(NPC, -2074.51, 2.68, 233.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2085.34, 0.37, 231.15, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.7, -1.78, 229.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2103.9, -4.67, 227.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2114.01, -8.32, 225.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.98, -9.87, 226.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.36, -13.53, 232.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2129.23, -16.97, 237.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.15, -19.74, 241.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.84, -19.84, 245.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2131.04, -18.48, 251.55, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.81, -17.61, 258.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2123.3, -16.91, 264.58, 2, 0)
+ MovementLoopAddLocation(NPC, -2119.92, -16.49, 270.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.56, -17, 274.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2110.11, -17.24, 278.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.88, -16.96, 284.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2095.08, -16.96, 289.96, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.19, -17.56, 295.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2077.01, -21.87, 307.84, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agiantkodiak.lua b/server/SpawnScripts/Antonica/agiantkodiak.lua
new file mode 100644
index 000000000..4de9714e7
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agiantkodiak.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agiantkodiak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 03:02:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agladedeer.lua b/server/SpawnScripts/Antonica/agladedeer.lua
index cffd6d88a..c7f50ec53 100755
--- a/server/SpawnScripts/Antonica/agladedeer.lua
+++ b/server/SpawnScripts/Antonica/agladedeer.lua
@@ -5,90 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 6
- local hp1 = 450
- local power1 = 190
- local difficulty2 = 6
- local hp2 = 550
- local power2 = 200
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/Antonica/agnollcampB.lua b/server/SpawnScripts/Antonica/agnollcampB.lua
index 5dd88036f..5ad0f07db 100755
--- a/server/SpawnScripts/Antonica/agnollcampB.lua
+++ b/server/SpawnScripts/Antonica/agnollcampB.lua
@@ -15,12 +15,12 @@ function respawn(NPC)
end
function CampSpawn(NPC)
-if GetSpawnLocationID(NPC)==170218 then --GnollCamp1
+--if GetSpawnLocationID(NPC)==170218 then --GnollCamp1
Camp1Spawn(NPC)
-elseif GetSpawnLocationID(NPC)==591701 then--GnollCamp2
-Camp2Spawn(NPC)
+--elseif GetSpawnLocationID(NPC)==591701 then--GnollCamp2
+--Camp2Spawn(NPC)
-end
+--end
end
--- CAMP 1
@@ -29,43 +29,43 @@ function Camp1Spawn(NPC, Spawn) -- Stage 1
local zone = GetZone(NPC)
local spawn1 = math.random(0,1)
if spawn1 == 1 then
-local Camp1Spawn1 = SpawnByLocationID(zone, 133774053) --Gnoll1 (mystic)
+local Camp1Spawn1 = SpawnByLocationID(zone, 133781821) --Gnoll1 (priest)
else
- local Camp1Spawn1a = SpawnByLocationID(zone, 133774045) -- Gnoll1(youth)
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781827) -- Gnoll1(fighter)
end
local spawn2 = math.random(0,1)
if spawn2 == 1 then
- local Camp1Spawn2 = SpawnByLocationID(zone, 133774048)--Gnoll2 (mystic)
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781817)--Gnoll2 (priest)
else
- local Camp1Spawn2a = SpawnByLocationID(zone, 133774047)-- Gnoll2(youth)
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781826)-- Gnoll2(fighter)
end
local spawn3 = math.random(0,1)
if spawn3 == 1 then
- local Camp1Spawn3 = SpawnByLocationID(zone, 133774049)--Gnoll3 (mystic)
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781816)--Gnoll3 (priest)
else
- local Camp1Spawn3a = SpawnByLocationID(zone, 133774043)-- Gnoll3(youth)
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781825)-- Gnoll3(fighter)
end
local spawn4 = math.random(0,1)
if spawn4 == 1 then
- local Camp1Spawn4 = SpawnByLocationID(zone, 133774050)--Gnoll4 (mystic)
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781819)--Gnoll4 (priest)
else
- local Camp1Spawn4a = SpawnByLocationID(zone, 133774044)-- Gnoll4(youth)
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781824)-- Gnoll4(fighter)
end
local spawn5 = math.random(0,1)
if spawn5 == 1 then
- local Camp1Spawn5 = SpawnByLocationID(zone, 133774051)--Gnoll5 (mystic)
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781818)--Gnoll5 (priest)
else
- local Camp1Spawn5a = SpawnByLocationID(zone, 133774042)-- Gnoll5(youth)
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781822)-- Gnoll5(fighter)
end
local spawn6 = math.random(0,1)
if spawn6 == 1 then
- local Camp1Spawn6 = SpawnByLocationID(zone, 133774052)--Gnoll6 (mystic)
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781820)--Gnoll6 (priest)
else
- local Camp1Spawn6a = SpawnByLocationID(zone, 133774046)-- Gnoll6(youth)
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781823)-- Gnoll6(fighter)
end
local MerchantSpawn = math.random(0,1)
if MerchantSpawn == 1 then
- local Camp1MerchantSpawn = SpawnByLocationID(zone, 134640)--Distressed Merchant
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133781840)--Distressed Merchant
else
end
@@ -74,18 +74,18 @@ end
function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
local zone = GetZone(NPC)
-local Camp1Spawn1 = GetSpawnByLocationID(zone, 133773815)
-local Camp1Spawn1a = GetSpawnByLocationID(zone, 133773937)
-local Camp1Spawn2 = GetSpawnByLocationID(zone, 133773817)
-local Camp1Spawn2a = GetSpawnByLocationID(zone, 133773935)
-local Camp1Spawn3 = GetSpawnByLocationID(zone, 133773812)
-local Camp1Spawn3a = GetSpawnByLocationID(zone, 133773933)
-local Camp1Spawn4 = GetSpawnByLocationID(zone, 133773816)
-local Camp1Spawn4a = GetSpawnByLocationID(zone, 133773936)
-local Camp1Spawn5 = GetSpawnByLocationID(zone, 133773932)
-local Camp1Spawn5a = GetSpawnByLocationID(zone, 133773813)
-local Camp1Spawn6 = GetSpawnByLocationID(zone, 133773934)
-local Camp1Spawn6a = GetSpawnByLocationID(zone, 133773814)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781821)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781827)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781817)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781826)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781816)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781825)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781819)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781824)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781818)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781822)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781820)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781823)
if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
@@ -105,7 +105,7 @@ end
function Camp1_Stage2(NPC, Spawn) --Stage 2
local zone = GetZone(NPC)
- local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 190452)--darkpack pack leader
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133774041)--darkpack tribal elder
FaceTarget(Camp1_Stage2Spawn1, Spawn)
Attack(Camp1_Stage2Spawn1, Spawn)
@@ -115,7 +115,7 @@ end
function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
local zone = GetZone(NPC)
- local Camp1_Stage2Spawn1 = GetSpawnByLocationID(zone, 190452)
+ local Camp1_Stage2Spawn1 = GetSpawnByLocationID(zone, 133774041)
if IsAlive(Camp1_Stage2Spawn1) == true then
AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
else
@@ -128,16 +128,16 @@ function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
local zone = GetZone(NPC)
local choice = math.random(0,100)
if choice <=33 then -- % Chance for Boss to Spawn
- local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133773818)--Sarkin
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133773980)--Sarkin
FaceTarget(Camp1_Stage3Spawn1, Spawn)
Attack(Camp1_Stage3Spawn1, Spawn)
AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
else -- Failed Boss Spawn
- local Camp1ArkofPower = SpawnByLocationID(zone, 133773939)--Ark of Power
- local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134655)--Distressed Merchant
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133774136)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133781840)--Distressed Merchant
if Camp1MerchantSpawn ~=nil then
Despawn(Camp1MerchantSpawn)
- local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133773938)--Gratified Merchant
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133774040)--Gratified Merchant
AddTimer(NPC,90000,"Camp1Reset")
else
AddTimer(NPC,60000,"Camp1Reset")
@@ -148,14 +148,14 @@ end
function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
local zone = GetZone(NPC)
- local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133773818) --Sarkin
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133773980) --Sarkin
if IsAlive(Camp1_Stage2Spawn1) == true then
AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
else
-local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134655)--Distressed Merchant
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133781840)--Distressed Merchant
if Camp1MerchantSpawn ~=nil then
Despawn(Camp1MerchantSpawn)
- local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133773938)--Gratified Merchant
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133774040)--Gratified Merchant
AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
else
AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
@@ -165,14 +165,14 @@ end
function Camp1Reset(NPC)
local zone = GetZone(NPC)
-local Camp1Object = GetSpawnByLocationID(zone, 591698)
+local Camp1Object = GetSpawnByLocationID(zone, 170218)
if Camp1Object~= nil then
Despawn(Camp1Object)
- local Camp1ArkofPower = GetSpawnByLocationID(zone, 133773939)--Ark of Power
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133774136)--Ark of Power
if Camp1ArkofPower ~=nil then
Despawn(Camp1ArkofPower)
end
- local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133773938)--Gratified Merchant
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133774040)--Gratified Merchant
if Camp1GratifiedMerchant ~=nil then
Despawn(Camp1GratifiedMerchant)
end
diff --git a/server/SpawnScripts/Antonica/agnollcampC.lua b/server/SpawnScripts/Antonica/agnollcampC.lua
new file mode 100755
index 000000000..8dbe83386
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampC.lua
@@ -0,0 +1,175 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampC.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.26 05:01:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local Camp1Spawn1 = SpawnByLocationID(zone, 133781849) --Gnoll1 (priest)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781843) -- Gnoll1(fighter)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781850)--Gnoll2 (priest)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781844)-- Gnoll2(fighter)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781851)--Gnoll3 (priest)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781845)-- Gnoll3(fighter)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781852)--Gnoll4 (priest)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781846)-- Gnoll4(fighter)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781853)--Gnoll5 (priest)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781847)-- Gnoll5(fighter)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781854)--Gnoll6 (priest)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781848)-- Gnoll6(fighter)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 589068)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781849)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781843)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781850)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781844)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781851)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781845)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781852)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781846)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781853)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781847)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781854)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781848)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 193780)--darkpack tribal elder
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1 = GetSpawnByLocationID(zone, 193780)
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133781788)--Sarkin
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133781841)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 589068)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781842)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133781788) --Sarkin
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 589068)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781842)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 170215)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133781841)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133781842)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampD.lua b/server/SpawnScripts/Antonica/agnollcampD.lua
new file mode 100755
index 000000000..be9816f62
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampD.lua
@@ -0,0 +1,175 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampD.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.26 08:01:11
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local Camp1Spawn1 = SpawnByLocationID(zone, 133781834) --Gnoll1 (priest)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781833) -- Gnoll1(fighter)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781835)--Gnoll2 (priest)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781828)-- Gnoll2(fighter)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781839)--Gnoll3 (priest)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781832)-- Gnoll3(fighter)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781838)--Gnoll4 (priest)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781831)-- Gnoll4(fighter)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781836)--Gnoll5 (priest)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781829)-- Gnoll5(fighter)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781837)--Gnoll6 (priest)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781830)-- Gnoll6(fighter)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 134644)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781834)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781833)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781835)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781828)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781839)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781832)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781838)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781831)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781836)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781829)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781837)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781830)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133774038)--darkpack tribal elder
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1 = GetSpawnByLocationID(zone, 133774038)
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 193116)--Sarkin
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133774137)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134644)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133774039)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 193116) --Sarkin
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134644)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133774039)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 170224)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133774137)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133774039)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampE.lua b/server/SpawnScripts/Antonica/agnollcampE.lua
new file mode 100755
index 000000000..a6a67957e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampE.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampE.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.27 05:01:58
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133781855) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781861) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781856)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781862)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781857)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781863)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781860)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781864)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781858)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781866)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781859)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781865)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 134643)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781855)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781861)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781856)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781862)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781857)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781863)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781860)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781864)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781858)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781866)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781859)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781865)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 191081)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133781759)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133781757)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133781758)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 191081)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133781759)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133781757)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133781758)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133781756)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133781891)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134643)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781892)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133781756) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134643)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781892)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 195471)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133781891)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133781892)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampF.lua b/server/SpawnScripts/Antonica/agnollcampF.lua
new file mode 100755
index 000000000..1b51353f9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampF.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampF.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.28 08:01:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133781874) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781868) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781873)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781867)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781875)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781869)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781877)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781871)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781878)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781872)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781876)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781870)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 134641)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781874)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781868)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781873)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781867)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781875)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781869)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781877)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781871)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781878)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781872)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781876)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781870)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133781754)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133781753)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 191080)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133781752)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133781754)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133781753)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 191080)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133781752)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133781755)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133781893)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134641)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781894)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133781755) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134641)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781894)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621219)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133781893)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133781894)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampG.lua b/server/SpawnScripts/Antonica/agnollcampG.lua
new file mode 100755
index 000000000..44877a2bc
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampG.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampG.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.29 04:01:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133781881) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781885) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781884)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781888)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781882)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781889)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781883)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781890)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781879)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781887)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781880)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781886)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 134637)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781881)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781885)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781884)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781888)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781882)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781889)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781883)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781890)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781879)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781887)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781880)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781886)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133781736)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133781751)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133781749)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133781750)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133781736)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133781751)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133781749)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133781750)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133781748)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133781895)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134637)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781896)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133781748) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134637)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781896)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621218)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133781895)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133781896)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampH.lua b/server/SpawnScripts/Antonica/agnollcampH.lua
new file mode 100755
index 000000000..9e2c8fe2b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampH.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampH.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.31 03:01:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133781932) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781938) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781933)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781939)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781934)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781940)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781935)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781941)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781936)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781942)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781937)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781943)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 134636)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781932)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781938)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781933)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781939)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781934)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781940)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781935)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781941)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781936)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781942)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781937)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781943)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133781745)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133781747)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 191076)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133781746)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133781745)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133781747)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 191076)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133781746)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 194812)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 450169)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134636)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781944)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 194812) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 134636)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781944)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621217)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 450169)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133781944)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampI.lua b/server/SpawnScripts/Antonica/agnollcampI.lua
new file mode 100755
index 000000000..f9cecfcb8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampI.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampI.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.31 04:01:16
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133781948) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133781954) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133781949)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133781955)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133781950)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133781956)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133781951)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133781957)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133781952)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133781958)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133781953)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133781959)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133781946)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133781948)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133781954)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133781949)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133781955)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133781950)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133781956)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133781951)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133781957)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133781952)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133781958)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133781953)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133781959)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133781763)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133781760)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133781764)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133781761)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133781763)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133781760)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133781764)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133781761)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133781762)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133781945)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133781946)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781947)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133781762) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133781946)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133781947)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 195463)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133781945)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133781947)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampJ.lua b/server/SpawnScripts/Antonica/agnollcampJ.lua
new file mode 100755
index 000000000..1a79eb8bc
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampJ.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampJ.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.03 07:03:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133782577) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133782571) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133782578)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133782572)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133782579)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133782573)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133782580)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133782574)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133782581)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133782575)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133782582)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133782576)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782588)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133782577)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133782571)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133782578)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133782572)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133782579)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133782573)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133782580)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133782574)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133782581)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133782575)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133782582)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133782576)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782583)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782585)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782584)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782586)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782583)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782585)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782584)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782586)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782587)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782590)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782588)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782589)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782587) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782588)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782589)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621215)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782590)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782589)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampK.lua b/server/SpawnScripts/Antonica/agnollcampK.lua
new file mode 100755
index 000000000..faadfe3f8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampK.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampK.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.03 09:03:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133782594) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133782600) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133782595)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133782601)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133782596)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133782602)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133782597)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133782603)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133782598)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133782604)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133782599)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133782605)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782611)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133782594)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133782600)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133782595)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133782601)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133782596)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133782602)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133782597)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133782603)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133782598)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133782604)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133782599)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133782605)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782606)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782608)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782607)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782609)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782606)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782608)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782607)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782609)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782610)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782613)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782611)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782612)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782610) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782611)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782612)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621211)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782613)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782612)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampL.lua b/server/SpawnScripts/Antonica/agnollcampL.lua
new file mode 100755
index 000000000..4e7128080
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampL.lua
@@ -0,0 +1,187 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampL.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.03 09:03:04
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133782615) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133782621) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133782616)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133782622)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133782617)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133782623)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133782618)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133782624)-- Gnoll4(battler)
+ end
+local spawn5 = math.random(0,1)
+ if spawn5 == 1 then
+ local Camp1Spawn5 = SpawnByLocationID(zone, 133782619)--Gnoll5 (shaman)
+ else
+ local Camp1Spawn5a = SpawnByLocationID(zone, 133782625)-- Gnoll5(battler)
+ end
+local spawn6 = math.random(0,1)
+ if spawn6 == 1 then
+ local Camp1Spawn6 = SpawnByLocationID(zone, 133782620)--Gnoll6 (shaman)
+ else
+ local Camp1Spawn6a = SpawnByLocationID(zone, 133782626)-- Gnoll6(battler)
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782632)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133782615)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133782621)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133782616)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133782622)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133782617)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133782623)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133782618)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133782624)
+local Camp1Spawn5 = GetSpawnByLocationID(zone, 133782619)
+local Camp1Spawn5a = GetSpawnByLocationID(zone, 133782625)
+local Camp1Spawn6 = GetSpawnByLocationID(zone, 133782620)
+local Camp1Spawn6a = GetSpawnByLocationID(zone, 133782626)
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn5) == true or IsAlive(Camp1Spawn5a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn6) == true or IsAlive(Camp1Spawn6a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782627)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782629)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782628)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782630)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782627)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782629)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782628)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782630)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782631)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782634)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782632)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782633)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782631) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782632)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782633)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621213)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782634)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782633)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampM.lua b/server/SpawnScripts/Antonica/agnollcampM.lua
new file mode 100755
index 000000000..9ba1135dd
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampM.lua
@@ -0,0 +1,169 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampM.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 06:03:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133782928) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133782932) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133782929)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133782933)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133782930)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133782934)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133782931)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133782935)-- Gnoll4(battler)
+ end
+
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782941)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133782928)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133782932)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133782929)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133782933)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133782930)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133782934)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133782931)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133782935)
+
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782936)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782938)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782937)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782939)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782936)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782938)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782937)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782939)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782940)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782943)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782941)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782942)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782940) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782941)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782942)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621203)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782943)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782942)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampN.lua b/server/SpawnScripts/Antonica/agnollcampN.lua
new file mode 100755
index 000000000..c6a4ee524
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampN.lua
@@ -0,0 +1,169 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampN.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 08:03:31
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133782944) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133782948) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133782945)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133782949)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133782946)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133782950)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133782947)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133782951)-- Gnoll4(battler)
+ end
+
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782957)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133782944)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133782948)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133782945)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133782949)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133782946)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133782950)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133782947)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133782951)
+
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782952)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782954)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782953)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782955)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782952)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782954)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782953)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782955)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782956)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782959)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782957)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782958)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782956) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782957)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782958)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621212)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782959)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782958)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnollcampO.lua b/server/SpawnScripts/Antonica/agnollcampO.lua
new file mode 100755
index 000000000..8e83280fe
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnollcampO.lua
@@ -0,0 +1,169 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnollcampO.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.23 10:03:11
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+---Gnoll Camp
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+ local Camp1Spawn1 = SpawnByLocationID(zone, 133782960) --Gnoll1 (shaman)
+ else
+ local Camp1Spawn1a = SpawnByLocationID(zone, 133782964) -- Gnoll1(battler)
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local Camp1Spawn2 = SpawnByLocationID(zone, 133782961)--Gnoll2 (shaman)
+ else
+ local Camp1Spawn2a = SpawnByLocationID(zone, 133782965)-- Gnoll2(battler)
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local Camp1Spawn3 = SpawnByLocationID(zone, 133782962)--Gnoll3 (shaman)
+ else
+ local Camp1Spawn3a = SpawnByLocationID(zone, 133782966)-- Gnoll3(battler)
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local Camp1Spawn4 = SpawnByLocationID(zone, 133782963)--Gnoll4 (shaman)
+ else
+ local Camp1Spawn4a = SpawnByLocationID(zone, 133782967)-- Gnoll4(battler)
+ end
+
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782973)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1")
+end
+
+function Camp1SpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local Camp1Spawn1 = GetSpawnByLocationID(zone, 133782960)
+local Camp1Spawn1a = GetSpawnByLocationID(zone, 133782964)
+local Camp1Spawn2 = GetSpawnByLocationID(zone, 133782961)
+local Camp1Spawn2a = GetSpawnByLocationID(zone, 133782965)
+local Camp1Spawn3 = GetSpawnByLocationID(zone, 133782962)
+local Camp1Spawn3a = GetSpawnByLocationID(zone, 133782966)
+local Camp1Spawn4 = GetSpawnByLocationID(zone, 133782963)
+local Camp1Spawn4a = GetSpawnByLocationID(zone, 133782967)
+
+if IsAlive(Camp1Spawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(Camp1Spawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage2")
+ end
+end
+
+function Camp1_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=SpawnByLocationID(zone, 133782968)--elder 1
+ local Camp1_Stage2Spawn2=SpawnByLocationID(zone, 133782970)--tormentor 1
+ local Camp1_Stage2Spawn3=SpawnByLocationID(zone, 133782969)--elder 2
+ local Camp1_Stage2Spawn4=SpawnByLocationID(zone, 133782971)--tormentor 2
+ FaceTarget(Camp1_Stage2Spawn1, Spawn)
+ Attack(Camp1_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2")
+end
+
+
+function Camp1SpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage2Spawn1=GetSpawnByLocationID(zone, 133782968)--elder 1
+ local Camp1_Stage2Spawn2=GetSpawnByLocationID(zone, 133782970)--tormentor 1
+ local Camp1_Stage2Spawn3=GetSpawnByLocationID(zone, 133782969)--elder 2
+ local Camp1_Stage2Spawn4=GetSpawnByLocationID(zone, 133782971)--tormentor 2
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn2) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn3) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ elseif IsAlive(Camp1_Stage2Spawn4) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp1_Stage3")
+ end
+end
+
+
+function Camp1_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp1_Stage3Spawn1=SpawnByLocationID(zone, 133782972)--Pack Lord
+ FaceTarget(Camp1_Stage3Spawn1, Spawn)
+ Attack(Camp1_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local Camp1ArkofPower = SpawnByLocationID(zone, 133782975)--Ark of Power
+ local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782973)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782974)--Gratified Merchant
+ AddTimer(NPC,90000,"Camp1Reset")
+ else
+ AddTimer(NPC,60000,"Camp1Reset")
+end
+end
+end
+
+
+function Camp1SpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp1_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782972) --Pack Lord
+ if IsAlive(Camp1_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3",1,Spawn)
+ else
+local Camp1MerchantSpawn = GetSpawnByLocationID(zone, 133782973)--Distressed Merchant
+ if Camp1MerchantSpawn ~=nil then
+ Despawn(Camp1MerchantSpawn)
+ local Camp1GratifiedMerchant = SpawnByLocationID(zone, 133782974)--Gratified Merchant
+ AddTimer(NPC, 90000, "Camp1Reset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "Camp1Reset",1,Spawn)
+ end
+end
+end
+
+function Camp1Reset(NPC)
+local zone = GetZone(NPC)
+local Camp1Object = GetSpawnByLocationID(zone, 621200)
+if Camp1Object~= nil then
+Despawn(Camp1Object)
+ local Camp1ArkofPower = GetSpawnByLocationID(zone, 133782975)--Ark of Power
+ if Camp1ArkofPower ~=nil then
+ Despawn(Camp1ArkofPower)
+ end
+ local Camp1GratifiedMerchant = GetSpawnByLocationID(zone, 133782974)--Gratified Merchant
+ if Camp1GratifiedMerchant ~=nil then
+ Despawn(Camp1GratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/agnolldefender.lua b/server/SpawnScripts/Antonica/agnolldefender.lua
new file mode 100755
index 000000000..9895f4469
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agnolldefender.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agnolldefender.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agranitescalebasilisk.lua b/server/SpawnScripts/Antonica/agranitescalebasilisk.lua
index 3968d9e87..f58fbb042 100755
--- a/server/SpawnScripts/Antonica/agranitescalebasilisk.lua
+++ b/server/SpawnScripts/Antonica/agranitescalebasilisk.lua
@@ -5,73 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/agrimecoveredsavage.lua b/server/SpawnScripts/Antonica/agrimecoveredsavage.lua
index a2ab41cf5..30ed51c10 100755
--- a/server/SpawnScripts/Antonica/agrimecoveredsavage.lua
+++ b/server/SpawnScripts/Antonica/agrimecoveredsavage.lua
@@ -5,32 +5,26 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+ local RaceCheck = MakeRandomInt(1,2)
+ if RaceCheck ==1 then
+ human(NPC)
+ else
+ barbarian(NPC)
end
end
function hailed(NPC, Spawn)
+ if IsInCombat(NPC)== false then
FaceTarget(NPC, Spawn)
+ Attack(NPC,Spawn)
+ end
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Antonica/agrimecoveredsavageRoam.lua b/server/SpawnScripts/Antonica/agrimecoveredsavageRoam.lua
index c18e487e6..c8725653f 100755
--- a/server/SpawnScripts/Antonica/agrimecoveredsavageRoam.lua
+++ b/server/SpawnScripts/Antonica/agrimecoveredsavageRoam.lua
@@ -5,90 +5,19 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ local RaceCheck = MakeRandomInt(1,2)
+ if RaceCheck ==1 then
+ human(NPC)
+ else
+ barbarian(NPC)
+ end
end
function respawn(NPC, Spawn)
@@ -96,5 +25,8 @@ function respawn(NPC, Spawn)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+ if IsInCombat(NPC)== false then
+ FaceTarget(NPC, Spawn)
+ Attack(NPC,Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agrimecoveredsavagechopper.lua b/server/SpawnScripts/Antonica/agrimecoveredsavagechopper.lua
new file mode 100755
index 000000000..be364d08b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agrimecoveredsavagechopper.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agrimecoveredsavagechopper.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.16 05:05:59
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+ local RaceCheck = MakeRandomInt(1,2)
+ if RaceCheck ==1 then
+ human(NPC)
+ else
+ barbarian(NPC)
+ end
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if IsInCombat(NPC)== false then
+ FaceTarget(NPC, Spawn)
+ Attack(NPC,Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agrizzledbadger.lua b/server/SpawnScripts/Antonica/agrizzledbadger.lua
new file mode 100644
index 000000000..51544275f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agrizzledbadger.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agrizzledbadger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 03:02:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/agrizzledbadgerWoods.lua b/server/SpawnScripts/Antonica/agrizzledbadgerWoods.lua
new file mode 100644
index 000000000..055d6f50b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/agrizzledbadgerWoods.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Antonica/agrizzledbadgerWoods.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.27 08:03:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "movement")
+end
+
+function movement(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ahazekodiak.lua b/server/SpawnScripts/Antonica/ahazekodiak.lua
index 844c33ae1..aaef7f65a 100755
--- a/server/SpawnScripts/Antonica/ahazekodiak.lua
+++ b/server/SpawnScripts/Antonica/ahazekodiak.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X + 11, Y, Z, 2,math.random(7,10))
- MovementLoopAddLocation(NPC, X + 11, Y, Z + 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X + 11, Y, Z, 2, 5)
- MovementLoopAddLocation(NPC, X + 11, Y, Z + 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X - 11, Y, Z, 2, 7)
- MovementLoopAddLocation(NPC, X - 11, Y, Z - 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X - 11, Y, Z, 2, 7)
- MovementLoopAddLocation(NPC, X - 11, Y, Z - 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X + 11, Y, Z, 2, 7)
- MovementLoopAddLocation(NPC, X + 11, Y, Z - 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X + 11, Y, Z, 2, 7)
- MovementLoopAddLocation(NPC, X + 11, Y, Z - 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X - 11, Y, Z, 2, 7)
- MovementLoopAddLocation(NPC, X - 11, Y, Z + 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X - 11, Y, Z, 2, 7)
- MovementLoopAddLocation(NPC, X - 11, Y, Z + 4, 2, math.random(7,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -11, 11, 2, 7, 12)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ahazekodiak1.lua b/server/SpawnScripts/Antonica/ahazekodiak1.lua
index fd60d869f..a4f9cb791 100755
--- a/server/SpawnScripts/Antonica/ahazekodiak1.lua
+++ b/server/SpawnScripts/Antonica/ahazekodiak1.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ahazekodiak2.lua b/server/SpawnScripts/Antonica/ahazekodiak2.lua
index 4b1607d39..9095f2e8f 100755
--- a/server/SpawnScripts/Antonica/ahazekodiak2.lua
+++ b/server/SpawnScripts/Antonica/ahazekodiak2.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ahazekodiak3.lua b/server/SpawnScripts/Antonica/ahazekodiak3.lua
index b61da4684..e5d45c208 100755
--- a/server/SpawnScripts/Antonica/ahazekodiak3.lua
+++ b/server/SpawnScripts/Antonica/ahazekodiak3.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ahazekodiak4.lua b/server/SpawnScripts/Antonica/ahazekodiak4.lua
index 0803e034d..4da2fe95c 100755
--- a/server/SpawnScripts/Antonica/ahazekodiak4.lua
+++ b/server/SpawnScripts/Antonica/ahazekodiak4.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ahazekodiakSTATIC.lua b/server/SpawnScripts/Antonica/ahazekodiakSTATIC.lua
index 11cd3f049..59fda073f 100755
--- a/server/SpawnScripts/Antonica/ahazekodiakSTATIC.lua
+++ b/server/SpawnScripts/Antonica/ahazekodiakSTATIC.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ahazekodiakcub.lua b/server/SpawnScripts/Antonica/ahazekodiakcub.lua
new file mode 100755
index 000000000..70b4e86e1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahazekodiakcub.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahazekodiakcub.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.14 03:05:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ if GetSpawnLocationID(NPC)~=194535 then
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ahighwayman.lua b/server/SpawnScripts/Antonica/ahighwayman.lua
index 6f35c1420..14eb0f302 100755
--- a/server/SpawnScripts/Antonica/ahighwayman.lua
+++ b/server/SpawnScripts/Antonica/ahighwayman.lua
@@ -1,31 +1,53 @@
--[[
Script Name : SpawnScripts/Antonica/ahighwayman.lua
- Script Author : Premierio015
- Script Date : 2022.03.28 07:03:37
+ Script Author : LordPazuzu
+ Script Date : 3/21/2024
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetRaceClass(NPC)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
-function death(NPC, Spawn)
-if GetRace(NPC) == 6 and GetGender(NPC) == 1 then -- HALF ELF MALE
-PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn)
-end
-end
-
-function aggro(NPC, Spawn)
-if GetRace(NPC) == 6 and GetGender(NPC) == 1 then -- HALF ELF MALE
-PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618, Spawn)
-end
-end
-
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function SetRaceClass(NPC, Spawn)
+ SetRace = MakeRandomInt(1,4)
+ if SetRace == 1 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC, 451)
+ DervishChain(NPC)
+ human(NPC)
+ IdleAggressive(NPC)
+ elseif SetRace == 2 then
+ SpawnSet(NPC, "class", 28)
+ SetSpellList(NPC, 454)
+ CastSpell(NPC, 280025, 5)
+ DervishRobe(NPC)
+ human(NPC)
+ IdleAlert(NPC)
+ elseif SetRace == 3 then
+ SpawnSet(NPC, "class", 32)
+ SetSpellList(NPC, 469)
+ DervishLeather(NPC)
+ halfelf(NPC)
+ IdleAlert(NPC)
+ elseif SetRace == 4 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC, 451)
+ DervishThug(NPC)
+ barbarian(NPC)
+ IdleAggressive(NPC)
+ end
+end
+
diff --git a/server/SpawnScripts/Antonica/ahighwaymancampfireA.lua b/server/SpawnScripts/Antonica/ahighwaymancampfireA.lua
new file mode 100755
index 000000000..36f898fa3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahighwaymancampfireA.lua
@@ -0,0 +1,157 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahighwaymancampfireA.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.08 09:02:31
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782388) --Highwayman Summoner
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782392) -- Highwayman Melee
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782389)--Highwayman Summoner
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782393)-- Highwayman Melee
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782390)--Highwayman Summoner
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782394)-- Highwayman Melee
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local CampSpawn4 = SpawnByLocationID(zone, 133782391)--Highwayman Summoner
+ else
+ local CampSpawn4a = SpawnByLocationID(zone, 133782395)-- Highwayman Melee
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782382)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782388)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782392)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782389)
+local CampSpawn2a = GetSpawnByLocationID(zone, 133782393)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782390)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782394)
+local CampSpawn4 = GetSpawnByLocationID(zone, 133782391)
+local CampSpawn4a = GetSpawnByLocationID(zone, 133782395)
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782396)--Bloodsaber Agent
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133782396)
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782381)--Bloodsaber Corruptor
+ FaceTarget(Camp_Stage3Spawn1, Spawn)
+ Attack(Camp_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local CampArkofPower = SpawnByLocationID(zone, 133782384)--Ark of Power
+ local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782382)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782383)--Gratified Merchant
+ AddTimer(NPC,90000,"CampReset")
+ else
+ AddTimer(NPC,60000,"CampReset")
+end
+end
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782381) --Blodsaber Corrupter
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782382)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782383)--Gratified Merchant
+ AddTimer(NPC, 90000, "CampReset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "CampReset",1,Spawn)
+ end
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 591793)
+if CampObject~= nil then
+Despawn(CampObject)
+ local CampArkofPower = GetSpawnByLocationID(zone, 133782384)--Ark of Power
+ if CampArkofPower ~=nil then
+ Despawn(CampArkofPower)
+ end
+ local CampGratifiedMerchant = GetSpawnByLocationID(zone, 133782383)--Gratified Merchant
+ if CampGratifiedMerchant ~=nil then
+ Despawn(CampGratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/ahighwaymancampfireB.lua b/server/SpawnScripts/Antonica/ahighwaymancampfireB.lua
new file mode 100755
index 000000000..2fb48cdd8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahighwaymancampfireB.lua
@@ -0,0 +1,157 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahighwaymancampfireB.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.16 08:02:18
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782397) --Highwayman Summoner
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782401) -- Highwayman Melee
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782398)--Highwayman Summoner
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782402)-- Highwayman Melee
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782399)--Highwayman Summoner
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782403)-- Highwayman Melee
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local CampSpawn4 = SpawnByLocationID(zone, 133782400)--Highwayman Summoner
+ else
+ local CampSpawn4a = SpawnByLocationID(zone, 133782404)-- Highwayman Melee
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782407)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782397)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782401)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782398)
+local CampSpawn2a = GetSpawnByLocationID(zone, 133782402)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782399)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782403)
+local CampSpawn4 = GetSpawnByLocationID(zone, 133782400)
+local CampSpawn4a = GetSpawnByLocationID(zone, 133782404)
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782405)--Bloodsaber Agent
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133782405)
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782406)--Bloodsaber Corruptor
+ FaceTarget(Camp_Stage3Spawn1, Spawn)
+ Attack(Camp_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local CampArkofPower = SpawnByLocationID(zone, 133782409)--Ark of Power
+ local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782407)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782408)--Gratified Merchant
+ AddTimer(NPC,90000,"CampReset")
+ else
+ AddTimer(NPC,60000,"CampReset")
+end
+end
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782406) --Blodsaber Corrupter
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782407)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782408)--Gratified Merchant
+ AddTimer(NPC, 90000, "CampReset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "CampReset",1,Spawn)
+ end
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 591794)
+if CampObject~= nil then
+Despawn(CampObject)
+ local CampArkofPower = GetSpawnByLocationID(zone, 133782409)--Ark of Power
+ if CampArkofPower ~=nil then
+ Despawn(CampArkofPower)
+ end
+ local CampGratifiedMerchant = GetSpawnByLocationID(zone, 133782408)--Gratified Merchant
+ if CampGratifiedMerchant ~=nil then
+ Despawn(CampGratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/ahighwaymancampfireC.lua b/server/SpawnScripts/Antonica/ahighwaymancampfireC.lua
new file mode 100755
index 000000000..d909f1edb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahighwaymancampfireC.lua
@@ -0,0 +1,156 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahighwaymancampfireC.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.16 08:02:52
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782410) --Highwayman Summoner
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782414) -- Highwayman Melee
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782411)--Highwayman Summoner
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782415)-- Highwayman Melee
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782412)--Highwayman Summoner
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782416)-- Highwayman Melee
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local CampSpawn4 = SpawnByLocationID(zone, 133782413)--Highwayman Summoner
+ else
+ local CampSpawn4a = SpawnByLocationID(zone, 133782417)-- Highwayman Melee
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782420)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782410)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782414)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782411)
+local CampSpawn2a = GetSpawnByLocationID(zone, 133782415)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782412)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782416)
+local CampSpawn4 = GetSpawnByLocationID(zone, 133782413)
+local CampSpawn4a = GetSpawnByLocationID(zone, 133782417)
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782418)--Bloodsaber Agent
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133782418)
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782419)--Bloodsaber Corruptor
+ FaceTarget(Camp_Stage3Spawn1, Spawn)
+ Attack(Camp_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local CampArkofPower = SpawnByLocationID(zone, 133782422)--Ark of Power
+ local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782420)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782421)--Gratified Merchant
+ AddTimer(NPC,90000,"CampReset")
+ else
+ AddTimer(NPC,60000,"CampReset")
+end
+end
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782419) --Blodsaber Corrupter
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782420)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782421)--Gratified Merchant
+ AddTimer(NPC, 90000, "CampReset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "CampReset",1,Spawn)
+ end
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 591792)
+if CampObject~= nil then
+Despawn(CampObject)
+ local CampArkofPower = GetSpawnByLocationID(zone, 133782422)--Ark of Power
+ if CampArkofPower ~=nil then
+ Despawn(CampArkofPower)
+ end
+ local CampGratifiedMerchant = GetSpawnByLocationID(zone, 133782421)--Gratified Merchant
+ if CampGratifiedMerchant ~=nil then
+ Despawn(CampGratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/ahighwaymancampfireD.lua b/server/SpawnScripts/Antonica/ahighwaymancampfireD.lua
new file mode 100755
index 000000000..020a23997
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahighwaymancampfireD.lua
@@ -0,0 +1,156 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahighwaymancampfireD.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.21 08:02:49
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782443) --Highwayman Summoner
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782447) -- Highwayman Melee
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782444)--Highwayman Summoner
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782448)-- Highwayman Melee
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782445)--Highwayman Summoner
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782449)-- Highwayman Melee
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local CampSpawn4 = SpawnByLocationID(zone, 133782446)--Highwayman Summoner
+ else
+ local CampSpawn4a = SpawnByLocationID(zone, 133782450)-- Highwayman Melee
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782453)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782443)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782447)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782444)
+local CampSpawn2a = GetSpawnByLocationID(zone, 13378248)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782445)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782449)
+local CampSpawn4 = GetSpawnByLocationID(zone, 133782446)
+local CampSpawn4a = GetSpawnByLocationID(zone, 133782450)
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133792533)--Bloodsaber Agent
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133792533)
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782452)--Bloodsaber Corruptor
+ FaceTarget(Camp_Stage3Spawn1, Spawn)
+ Attack(Camp_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local CampArkofPower = SpawnByLocationID(zone, 133782455)--Ark of Power
+ local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782453)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782454)--Gratified Merchant
+ AddTimer(NPC,90000,"CampReset")
+ else
+ AddTimer(NPC,60000,"CampReset")
+end
+end
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782452) --Blodsaber Corrupter
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782453)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782454)--Gratified Merchant
+ AddTimer(NPC, 90000, "CampReset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "CampReset",1,Spawn)
+ end
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 171714)
+if CampObject~= nil then
+Despawn(CampObject)
+ local CampArkofPower = GetSpawnByLocationID(zone, 133782455)--Ark of Power
+ if CampArkofPower ~=nil then
+ Despawn(CampArkofPower)
+ end
+ local CampGratifiedMerchant = GetSpawnByLocationID(zone, 133782454)--Gratified Merchant
+ if CampGratifiedMerchant ~=nil then
+ Despawn(CampGratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/ahighwaymancampfireE.lua b/server/SpawnScripts/Antonica/ahighwaymancampfireE.lua
new file mode 100755
index 000000000..a3f49ca04
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahighwaymancampfireE.lua
@@ -0,0 +1,156 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahighwaymancampfireE.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.21 08:02:15
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782456) --Highwayman Summoner
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782460) -- Highwayman Melee
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782457)--Highwayman Summoner
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782461)-- Highwayman Melee
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782458)--Highwayman Summoner
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782462)-- Highwayman Melee
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local CampSpawn4 = SpawnByLocationID(zone, 133782459)--Highwayman Summoner
+ else
+ local CampSpawn4a = SpawnByLocationID(zone, 133782463)-- Highwayman Melee
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782466)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782456)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782460)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782457)
+local CampSpawn2a = GetSpawnByLocationID(zone, 13378261)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782458)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782462)
+local CampSpawn4 = GetSpawnByLocationID(zone, 133782459)
+local CampSpawn4a = GetSpawnByLocationID(zone, 133782463)
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782464)--Bloodsaber Agent
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133782464)
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782465)--Bloodsaber Corruptor
+ FaceTarget(Camp_Stage3Spawn1, Spawn)
+ Attack(Camp_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local CampArkofPower = SpawnByLocationID(zone, 133782468)--Ark of Power
+ local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782466)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782467)--Gratified Merchant
+ AddTimer(NPC,90000,"CampReset")
+ else
+ AddTimer(NPC,60000,"CampReset")
+end
+end
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782465) --Blodsaber Corrupter
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782466)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782467)--Gratified Merchant
+ AddTimer(NPC, 90000, "CampReset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "CampReset",1,Spawn)
+ end
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 171716)
+if CampObject~= nil then
+Despawn(CampObject)
+ local CampArkofPower = GetSpawnByLocationID(zone, 133782468)--Ark of Power
+ if CampArkofPower ~=nil then
+ Despawn(CampArkofPower)
+ end
+ local CampGratifiedMerchant = GetSpawnByLocationID(zone, 133782467)--Gratified Merchant
+ if CampGratifiedMerchant ~=nil then
+ Despawn(CampGratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/ahighwaymancampfireF.lua b/server/SpawnScripts/Antonica/ahighwaymancampfireF.lua
new file mode 100755
index 000000000..fccd98d6e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahighwaymancampfireF.lua
@@ -0,0 +1,156 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahighwaymancampfireF.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.21 09:02:03
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--- CAMP 1
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+local spawn1 = math.random(0,1)
+ if spawn1 == 1 then
+local CampSpawn1 = SpawnByLocationID(zone, 133782469) --Highwayman Summoner
+ else
+ local CampSpawn1a = SpawnByLocationID(zone, 133782473) -- Highwayman Melee
+ end
+local spawn2 = math.random(0,1)
+ if spawn2 == 1 then
+ local CampSpawn2 = SpawnByLocationID(zone, 133782470)--Highwayman Summoner
+ else
+ local CampSpawn2a = SpawnByLocationID(zone, 133782474)-- Highwayman Melee
+ end
+local spawn3 = math.random(0,1)
+ if spawn3 == 1 then
+ local CampSpawn3 = SpawnByLocationID(zone, 133782471)--Highwayman Summoner
+ else
+ local CampSpawn3a = SpawnByLocationID(zone, 133782475)-- Highwayman Melee
+ end
+local spawn4 = math.random(0,1)
+ if spawn4 == 1 then
+ local CampSpawn4 = SpawnByLocationID(zone, 133782472)--Highwayman Summoner
+ else
+ local CampSpawn4a = SpawnByLocationID(zone, 133782476)-- Highwayman Melee
+ end
+local MerchantSpawn = math.random(0,1)
+ if MerchantSpawn == 1 then
+ local Camp1MerchantSpawn = SpawnByLocationID(zone, 133782479)--Distressed Merchant
+ else
+ end
+
+
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+local CampSpawn1 = GetSpawnByLocationID(zone, 133782469)
+local CampSpawn1a = GetSpawnByLocationID(zone, 133782473)
+local CampSpawn2 = GetSpawnByLocationID(zone, 133782470)
+local CampSpawn2a = GetSpawnByLocationID(zone, 13378274)
+local CampSpawn3 = GetSpawnByLocationID(zone, 133782471)
+local CampSpawn3a = GetSpawnByLocationID(zone, 133782475)
+local CampSpawn4 = GetSpawnByLocationID(zone, 133782472)
+local CampSpawn4a = GetSpawnByLocationID(zone, 133782476)
+
+if IsAlive(CampSpawn1) == true or IsAlive(Camp1Spawn1a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true or IsAlive(Camp1Spawn2a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true or IsAlive(Camp1Spawn3a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true or IsAlive(Camp1Spawn4a) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "Camp_Stage2")
+ end
+end
+
+function Camp_Stage2(NPC, Spawn) --Stage 2
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1=SpawnByLocationID(zone, 133782477)--Bloodsaber Agent
+ FaceTarget(Camp_Stage2Spawn1, Spawn)
+ Attack(Camp_Stage2Spawn1, Spawn)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage2")
+end
+
+
+function CampSpawnCheck_Stage2(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage2Spawn1 = GetSpawnByLocationID(zone, 133782477)
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage2",1, Spawn)
+ else
+ AddTimer(NPC, 6000, "Camp_Stage3")
+ end
+end
+
+
+function Camp_Stage3(NPC, Spawn) --Stage 3 (Possible Boss)
+ local zone = GetZone(NPC)
+ local choice = math.random(0,100)
+ if choice <=33 then -- % Chance for Boss to Spawn
+ local Camp_Stage3Spawn1=SpawnByLocationID(zone, 133782478)--Bloodsaber Corruptor
+ FaceTarget(Camp_Stage3Spawn1, Spawn)
+ Attack(Camp_Stage3Spawn1, Spawn)
+ AddTimer(NPC,6000,"Camp1SpawnCheck_Stage3")
+else -- Failed Boss Spawn
+ local CampArkofPower = SpawnByLocationID(zone, 133782481)--Ark of Power
+ local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782479)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782480)--Gratified Merchant
+ AddTimer(NPC,90000,"CampReset")
+ else
+ AddTimer(NPC,60000,"CampReset")
+end
+end
+end
+
+
+function CampSpawnCheck_Stage3(NPC, Spawn) --Stage 2 Living Check
+ local zone = GetZone(NPC)
+ local Camp_Stage3Spawn1 = GetSpawnByLocationID(zone, 133782478) --Blodsaber Corrupter
+ if IsAlive(Camp_Stage2Spawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage3",1,Spawn)
+ else
+local CampMerchantSpawn = GetSpawnByLocationID(zone, 133782479)--Distressed Merchant
+ if CampMerchantSpawn ~=nil then
+ Despawn(CampMerchantSpawn)
+ local CampGratifiedMerchant = SpawnByLocationID(zone, 133782480)--Gratified Merchant
+ AddTimer(NPC, 90000, "CampReset",1,Spawn)
+ else
+ AddTimer(NPC, 10000, "CampReset",1,Spawn)
+ end
+end
+end
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 591797)
+if CampObject~= nil then
+Despawn(CampObject)
+ local CampArkofPower = GetSpawnByLocationID(zone, 133782481)--Ark of Power
+ if CampArkofPower ~=nil then
+ Despawn(CampArkofPower)
+ end
+ local CampGratifiedMerchant = GetSpawnByLocationID(zone, 133782480)--Gratified Merchant
+ if CampGratifiedMerchant ~=nil then
+ Despawn(CampGratifiedMerchant)
+ end
+end
+end
diff --git a/server/SpawnScripts/Antonica/ahulkingstalker.lua b/server/SpawnScripts/Antonica/ahulkingstalker.lua
new file mode 100644
index 000000000..2bad7e952
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ahulkingstalker.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ahulkingstalker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 09:03:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/akingsnake.lua b/server/SpawnScripts/Antonica/akingsnake.lua
new file mode 100644
index 000000000..9d9b3c368
--- /dev/null
+++ b/server/SpawnScripts/Antonica/akingsnake.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/akingsnake.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 09:03:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aklicnikprince.lua b/server/SpawnScripts/Antonica/aklicnikprince.lua
new file mode 100755
index 000000000..a714b3285
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aklicnikprince.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aklicnikprince.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aklicnikscurrier.lua b/server/SpawnScripts/Antonica/aklicnikscurrier.lua
new file mode 100755
index 000000000..20565020c
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aklicnikscurrier.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aklicnikscurrier.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.18 09:01:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aklicnikwarrior.lua b/server/SpawnScripts/Antonica/aklicnikwarrior.lua
new file mode 100755
index 000000000..ab22c0b82
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aklicnikwarrior.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aklicnikwarrior.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.15 04:09:30
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aklicnikworker.lua b/server/SpawnScripts/Antonica/aklicnikworker.lua
new file mode 100644
index 000000000..c5148343b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aklicnikworker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aklicnikworker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 09:03:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/akodiak.lua b/server/SpawnScripts/Antonica/akodiak.lua
index 03d377b66..914b3ac34 100755
--- a/server/SpawnScripts/Antonica/akodiak.lua
+++ b/server/SpawnScripts/Antonica/akodiak.lua
@@ -5,90 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/akodiakHillside1.lua b/server/SpawnScripts/Antonica/akodiakHillside1.lua
new file mode 100755
index 000000000..944a13740
--- /dev/null
+++ b/server/SpawnScripts/Antonica/akodiakHillside1.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/Antonica/akodiakHillside1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 08:02:08
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1989.94, -34.37, 424.75, 2, 0)
+ MovementLoopAddLocation(NPC, -1999.72, -33.89, 410.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2000.17, -31.92, 396.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2000.09, -29.05, 386.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1982.97, -25.96, 392.63, 2, 0)
+ MovementLoopAddLocation(NPC, -1972.9, -26.61, 405.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1956.7, -23.73, 419.56, 2, 0)
+ MovementLoopAddLocation(NPC, -1944.36, -20.08, 426.56, 2, 0)
+ MovementLoopAddLocation(NPC, -1932.71, -15.64, 427.39, 2, 0)
+ MovementLoopAddLocation(NPC, -1920.34, -11.89, 427.96, 2, 0)
+ MovementLoopAddLocation(NPC, -1927.73, -13.43, 419.71, 2, 0)
+ MovementLoopAddLocation(NPC, -1935.75, -15, 413.34, 2, 0)
+ MovementLoopAddLocation(NPC, -1946.62, -17.69, 408.93, 2, 0)
+ MovementLoopAddLocation(NPC, -1955.71, -20.64, 408.24, 2, 0)
+ MovementLoopAddLocation(NPC, -1959.07, -24.42, 418.69, 2, 0)
+ MovementLoopAddLocation(NPC, -1965.95, -27.56, 428.26, 2, 0)
+ MovementLoopAddLocation(NPC, -1977.14, -31.26, 429.89, 2, 0)
+ MovementLoopAddLocation(NPC, -1989.94, -34.37, 424.75, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/akodiakHillside2.lua b/server/SpawnScripts/Antonica/akodiakHillside2.lua
new file mode 100755
index 000000000..85cc9b6fa
--- /dev/null
+++ b/server/SpawnScripts/Antonica/akodiakHillside2.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/Antonica/akodiakHillside2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 08:02:11
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1987.62, -23.9, 382.92, 2, 0)
+ MovementLoopAddLocation(NPC, -1987.33, -21.3, 375.34, 2, 0)
+ MovementLoopAddLocation(NPC, -1981.43, -17.22, 369.78, 2, 0)
+ MovementLoopAddLocation(NPC, -1972.57, -13.9, 368.81, 2, 0)
+ MovementLoopAddLocation(NPC, -1961.79, -11.1, 369.82, 2, 0)
+ MovementLoopAddLocation(NPC, -1950.8, -8.34, 370.84, 2, 0)
+ MovementLoopAddLocation(NPC, -1942.21, -6.46, 371.65, 2, 0)
+ MovementLoopAddLocation(NPC, -1924.71, -2.64, 373.28, 2, 0)
+ MovementLoopAddLocation(NPC, -1919.19, -1.79, 373.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1899.19, -1.51, 375.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1900.84, -1.71, 377.18, 2, 0)
+ MovementLoopAddLocation(NPC, -1909.99, -2.36, 382.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1917.44, -4.91, 388.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1926.48, -8.17, 391.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1935.46, -10.42, 390.05, 2, 0)
+ MovementLoopAddLocation(NPC, -1946.14, -11.9, 385.65, 2, 0)
+ MovementLoopAddLocation(NPC, -1955.54, -13.05, 381.77, 2, 0)
+ MovementLoopAddLocation(NPC, -1969.42, -15, 376.05, 2, 0)
+ MovementLoopAddLocation(NPC, -1982.03, -17.76, 370.86, 2, 0)
+ MovementLoopAddLocation(NPC, -1994.11, -20.47, 365.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2003.3, -22.25, 362.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2003.43, -22.13, 361.65, 2, 0)
+ MovementLoopAddLocation(NPC, -1994.89, -20.02, 364.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1990.48, -21.87, 373.64, 2, 0)
+ MovementLoopAddLocation(NPC, -1992.02, -26.29, 384.75, 2, 0)
+ MovementLoopAddLocation(NPC, -1997.58, -30.89, 394, 2, 0)
+ MovementLoopAddLocation(NPC, -1993.29, -29.01, 391.85, 2, 0)
+ MovementLoopAddLocation(NPC, -1986.09, -25.29, 387.87, 2, 0)
+ MovementLoopAddLocation(NPC, -1987.62, -23.9, 382.92, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Antonica/alargeColdwindperch.lua b/server/SpawnScripts/Antonica/alargeColdwindperch.lua
new file mode 100644
index 000000000..c9ec3390e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/alargeColdwindperch.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/alargeColdwindperch.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 09:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/alargemoatrat.lua b/server/SpawnScripts/Antonica/alargemoatrat.lua
new file mode 100755
index 000000000..73c1a1ba9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/alargemoatrat.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/alargemoatrat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/amausoleumprotector.lua b/server/SpawnScripts/Antonica/amausoleumprotector.lua
new file mode 100755
index 000000000..6f0e2b998
--- /dev/null
+++ b/server/SpawnScripts/Antonica/amausoleumprotector.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/amausoleumprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.01 11:04:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/amutatedrat.lua b/server/SpawnScripts/Antonica/amutatedrat.lua
new file mode 100644
index 000000000..0654baa90
--- /dev/null
+++ b/server/SpawnScripts/Antonica/amutatedrat.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/amutatedrat.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 09:03:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anAncientSogbone.lua b/server/SpawnScripts/Antonica/anAncientSogbone.lua
new file mode 100644
index 000000000..d40b5fefa
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anAncientSogbone.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anAncientSogbone.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.13 12:03:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anAntonicanforester.lua b/server/SpawnScripts/Antonica/anAntonicanforester.lua
index 7ba5e2b72..49ade2e1a 100755
--- a/server/SpawnScripts/Antonica/anAntonicanforester.lua
+++ b/server/SpawnScripts/Antonica/anAntonicanforester.lua
@@ -5,34 +5,18 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local difficulty1 = 4
- local hp1 = 300
- local power1 = 90
- local difficulty2 = 4
- local hp2 = 370
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+function respawn(NPC, Spawn)
+ spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anUnkemptharbinger.lua b/server/SpawnScripts/Antonica/anUnkemptharbinger.lua
new file mode 100755
index 000000000..73cd5e1d1
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anUnkemptharbinger.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anUnkemptharbinger.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.30 10:01:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anancientoctopus.lua b/server/SpawnScripts/Antonica/anancientoctopus.lua
new file mode 100644
index 000000000..1305120f6
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anancientoctopus.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anancientoctopus.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.13 12:03:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anantonicangrovecaretaker.lua b/server/SpawnScripts/Antonica/anantonicangrovecaretaker.lua
new file mode 100755
index 000000000..f61e1fd9a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anantonicangrovecaretaker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anantonicangrovecaretaker.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anearthburrower.lua b/server/SpawnScripts/Antonica/anearthburrower.lua
index 51bc1e372..2516da845 100755
--- a/server/SpawnScripts/Antonica/anearthburrower.lua
+++ b/server/SpawnScripts/Antonica/anearthburrower.lua
@@ -5,92 +5,13 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 1045
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/anearthcrawler.lua b/server/SpawnScripts/Antonica/anearthcrawler.lua
new file mode 100755
index 000000000..d815f487d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anearthcrawler.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anearthcrawler.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 12:05:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anearthrumbler.lua b/server/SpawnScripts/Antonica/anearthrumbler.lua
new file mode 100755
index 000000000..88e94a7b0
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anearthrumbler.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anearthrumbler.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 12:05:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anenragedwolf.lua b/server/SpawnScripts/Antonica/anenragedwolf.lua
index f843328ee..34fcf356e 100755
--- a/server/SpawnScripts/Antonica/anenragedwolf.lua
+++ b/server/SpawnScripts/Antonica/anenragedwolf.lua
@@ -5,92 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/anenragedwolfHillside1.lua b/server/SpawnScripts/Antonica/anenragedwolfHillside1.lua
new file mode 100755
index 000000000..6ea657ce5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anenragedwolfHillside1.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anenragedwolfHillside1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1965.4, -28.59, 450.27, 2, 0)
+ MovementLoopAddLocation(NPC, -1967.05, -29.19, 443.75, 2, 0)
+ MovementLoopAddLocation(NPC, -1971.54, -31.03, 439.26, 2, 0)
+ MovementLoopAddLocation(NPC, -1978.26, -32.22, 434.79, 2, 0)
+ MovementLoopAddLocation(NPC, -1983.16, -33.7, 433.1, 2, 0)
+ MovementLoopAddLocation(NPC, -1988.52, -34.88, 432.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1995, -37.07, 431.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2004.71, -39.95, 429.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2011.31, -40.74, 426.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2017.86, -42.12, 422.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2024.65, -43.85, 419.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2029.88, -44.36, 418.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2034.6, -44.7, 417.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2035.06, -44.81, 416.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2027.1, -44.18, 415.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2018.76, -41.18, 412.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2007.93, -36.33, 409.96, 2, 0)
+ MovementLoopAddLocation(NPC, -1998.89, -33.27, 407.46, 2, 0)
+ MovementLoopAddLocation(NPC, -1991.34, -30.88, 403.82, 2, 0)
+ MovementLoopAddLocation(NPC, -1982.93, -28.05, 398.9, 2, 0)
+ MovementLoopAddLocation(NPC, -1975.18, -23.59, 394.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1964.8, -17.49, 388.3, 2, 0)
+ MovementLoopAddLocation(NPC, -1961.39, -15.31, 385.47, 2, 0)
+ MovementLoopAddLocation(NPC, -1956.89, -13.7, 383.71, 2, 0)
+ MovementLoopAddLocation(NPC, -1948.02, -11.05, 381.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1938.89, -8.23, 379.6, 2, 0)
+ MovementLoopAddLocation(NPC, -1935.19, -7.36, 379.93, 2, 0)
+ MovementLoopAddLocation(NPC, -1926.57, -5.99, 383.49, 2, 0)
+ MovementLoopAddLocation(NPC, -1918.42, -4.89, 386.86, 2, 0)
+ MovementLoopAddLocation(NPC, -1909.25, -3.6, 390.65, 2, 0)
+ MovementLoopAddLocation(NPC, -1900.93, -2.89, 394.09, 2, 0)
+ MovementLoopAddLocation(NPC, -1901.68, -3.07, 394.82, 2, 0)
+ MovementLoopAddLocation(NPC, -1910.71, -4.46, 394.77, 2, 0)
+ MovementLoopAddLocation(NPC, -1920.63, -6.96, 394.72, 2, 0)
+ MovementLoopAddLocation(NPC, -1929.01, -10.42, 398.28, 2, 0)
+ MovementLoopAddLocation(NPC, -1936.27, -13.42, 403.78, 2, 0)
+ MovementLoopAddLocation(NPC, -1944.21, -16.99, 409.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1951.45, -20.19, 412.74, 2, 0)
+ MovementLoopAddLocation(NPC, -1959.98, -24.13, 415.42, 2, 0)
+ MovementLoopAddLocation(NPC, -1967.86, -27.22, 417.89, 2, 0)
+ MovementLoopAddLocation(NPC, -1973.95, -29.02, 422.18, 2, 0)
+ MovementLoopAddLocation(NPC, -1979.58, -31.8, 428.95, 2, 0)
+ MovementLoopAddLocation(NPC, -1978.36, -32.04, 432.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1973.7, -31.52, 441.16, 2, 0)
+ MovementLoopAddLocation(NPC, -1970.32, -29.56, 449.89, 2, 0)
+ MovementLoopAddLocation(NPC, -1967.13, -27.59, 458.1, 2, 0)
+ MovementLoopAddLocation(NPC, -1963.78, -26.24, 466.03, 2, 0)
+ MovementLoopAddLocation(NPC, -1965.4, -28.59, 450.27, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anenragedwolfHillside2.lua b/server/SpawnScripts/Antonica/anenragedwolfHillside2.lua
new file mode 100755
index 000000000..9ac085043
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anenragedwolfHillside2.lua
@@ -0,0 +1,67 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anenragedwolfHillside2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1997.57, -33.34, 410.53, 2, 0)
+ MovementLoopAddLocation(NPC, -1991.38, -30.86, 403.65, 2, 0)
+ MovementLoopAddLocation(NPC, -1985.2, -28.18, 396.78, 2, 0)
+ MovementLoopAddLocation(NPC, -1978.76, -23.25, 389.63, 2, 0)
+ MovementLoopAddLocation(NPC, -1972.85, -18.58, 383.07, 2, 0)
+ MovementLoopAddLocation(NPC, -1968.94, -15.71, 378.72, 2, 0)
+ MovementLoopAddLocation(NPC, -1962.56, -12.34, 373.03, 2, 0)
+ MovementLoopAddLocation(NPC, -1956.03, -9.07, 368.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1949.03, -5.44, 363.38, 2, 0)
+ MovementLoopAddLocation(NPC, -1941.36, -1.78, 357.92, 2, 0)
+ MovementLoopAddLocation(NPC, -1940.96, -1.4, 357.14, 2, 0)
+ MovementLoopAddLocation(NPC, -1948.98, -3.79, 358.16, 2, 0)
+ MovementLoopAddLocation(NPC, -1955.5, -5.66, 358.99, 2, 0)
+ MovementLoopAddLocation(NPC, -1962.52, -7.14, 357.54, 2, 0)
+ MovementLoopAddLocation(NPC, -1970.08, -8.03, 354.36, 2, 0)
+ MovementLoopAddLocation(NPC, -1975.58, -7.61, 349.38, 2, 0)
+ MovementLoopAddLocation(NPC, -1979.82, -6.7, 342.3, 2, 0)
+ MovementLoopAddLocation(NPC, -1984.11, -6.2, 335.16, 2, 0)
+ MovementLoopAddLocation(NPC, -1988.51, -5.95, 327.83, 2, 0)
+ MovementLoopAddLocation(NPC, -1992.4, -5.57, 321.35, 2, 0)
+ MovementLoopAddLocation(NPC, -1995.02, -5.75, 319.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2001.9, -7.32, 323.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2008.15, -10.02, 327.41, 2, 0)
+ MovementLoopAddLocation(NPC, -2014.8, -13.1, 331.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2014.91, -13.9, 333.46, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.23, -16.43, 340, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.62, -20.12, 347.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2016, -23.67, 355.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2017.34, -25.51, 359.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2021.22, -28.55, 365.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2026.08, -31.77, 373.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2030.13, -34.01, 379.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2031.6, -34.87, 382.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2032.43, -37.41, 387.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2032.78, -40.53, 395.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2033.26, -43.66, 406.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2031.64, -43.65, 406.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2023.72, -39.83, 402.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2016.34, -35.92, 397.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2007.4, -32.55, 392.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2002.24, -32.39, 397.17, 2, 0)
+ MovementLoopAddLocation(NPC, -1997.57, -33.34, 410.53, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/Antonica/anenragedwolfHillside3.lua b/server/SpawnScripts/Antonica/anenragedwolfHillside3.lua
new file mode 100755
index 000000000..93b6b764e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anenragedwolfHillside3.lua
@@ -0,0 +1,98 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anenragedwolfHillside3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2017.65, -29.19, 370.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2020.88, -31.1, 375.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2024.56, -33, 380.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2028.36, -35.38, 385.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2032.84, -37.28, 386.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2042.65, -38.36, 388.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2050.24, -37.76, 389.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2052.02, -37.6, 387.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2057.06, -38.31, 377.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2061.75, -39.32, 368.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2066.04, -39.4, 359.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2070.29, -38.81, 351.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2074.57, -37.32, 343.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2078.93, -34.92, 334.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2083.01, -31.76, 326.77, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.97, -28.22, 319.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2090.78, -24.78, 311.6, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.18, -24.13, 310.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2082.23, -21.14, 305.41, 2, 0)
+ MovementLoopAddLocation(NPC, -2075.08, -17.58, 300.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2068.21, -12.79, 295.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2062.2, -9.12, 290.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2055.49, -6.34, 286.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2048.84, -3.57, 281.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2042.51, -1.16, 276.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2035.72, 1.29, 271.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2028.78, 3.23, 266.73, 2, 0)
+ MovementLoopAddLocation(NPC, -2021.82, 5.21, 261.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2019.88, 5.28, 262.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.32, 4, 267.96, 2, 0)
+ MovementLoopAddLocation(NPC, -2010.44, 2.61, 274.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2004.89, 0.99, 281.16, 2, 0)
+ MovementLoopAddLocation(NPC, -1999.67, -0.64, 287.78, 2, 0)
+ MovementLoopAddLocation(NPC, -1994.74, -2.05, 294.03, 2, 0)
+ MovementLoopAddLocation(NPC, -1989.8, -3.12, 300.28, 2, 0)
+ MovementLoopAddLocation(NPC, -1984.22, -3.6, 307.35, 2, 0)
+ MovementLoopAddLocation(NPC, -1979.19, -3.39, 313.72, 2, 0)
+ MovementLoopAddLocation(NPC, -1974.55, -3.01, 319.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1975.11, -3.14, 320.46, 2, 0)
+ MovementLoopAddLocation(NPC, -1982.87, -4.21, 317.98, 2, 0)
+ MovementLoopAddLocation(NPC, -1990.91, -4.93, 315.42, 2, 0)
+ MovementLoopAddLocation(NPC, -1999.12, -5.12, 312.79, 2, 0)
+ MovementLoopAddLocation(NPC, -2006.11, -4.96, 310.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2012.55, -4.78, 308.5, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.55, -4.88, 308.55, 2, 0)
+ MovementLoopAddLocation(NPC, -2021.88, -7.34, 310.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2028.69, -9.93, 313.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2036.07, -13.2, 316.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2043.95, -17.25, 319.27, 2, 0)
+ MovementLoopAddLocation(NPC, -2051.34, -21.61, 322.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2058.88, -25.68, 324.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2066.4, -29.19, 327.75, 2, 0)
+ MovementLoopAddLocation(NPC, -2073.21, -31.6, 330.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2080.23, -34.42, 332.97, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.53, -37.13, 335.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.26, -38.35, 337.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.04, -40.71, 344.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2084.71, -42.26, 351.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2083.57, -43.07, 358.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2080.25, -42.55, 360.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2074.19, -41.54, 363.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2066.77, -40.29, 367.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2059.98, -39.1, 370.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2057.68, -38.59, 370.48, 2, 0)
+ MovementLoopAddLocation(NPC, -2051.7, -37.12, 368.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2044.12, -35.06, 366.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2037.29, -32.89, 364.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2035.33, -32.68, 365.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2030.89, -32.08, 369.94, 2, 0)
+ MovementLoopAddLocation(NPC, -2025.6, -31.93, 374.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2020.02, -32.07, 379.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2013.82, -32.36, 385.24, 2, 0)
+ MovementLoopAddLocation(NPC, -2013.71, -30.25, 377.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2017.65, -29.19, 370.7, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Antonica/anenragedwolfHillside4.lua b/server/SpawnScripts/Antonica/anenragedwolfHillside4.lua
new file mode 100755
index 000000000..de092a760
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anenragedwolfHillside4.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anenragedwolfHillside4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2046.5, -23.41, 330.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2043.55, -21.42, 328.73, 2, 0)
+ MovementLoopAddLocation(NPC, -2036.8, -16.97, 324.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2031.04, -13.56, 321.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2025.19, -10.5, 317.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2019.68, -7.94, 314.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2014.57, -5.6, 311.06, 2, 0)
+ MovementLoopAddLocation(NPC, -2013.58, -4.99, 309.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2010.77, -3.97, 304.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2007.54, -3.08, 299.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2003.94, -1.95, 293.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2000.36, -0.59, 287.5, 2, 0)
+ MovementLoopAddLocation(NPC, -1996.68, 1.26, 281.38, 2, 0)
+ MovementLoopAddLocation(NPC, -1995.99, 2.32, 277.78, 2, 0)
+ MovementLoopAddLocation(NPC, -1998.78, 3.68, 272, 2, 0)
+ MovementLoopAddLocation(NPC, -2001.71, 5.17, 265.89, 2, 0)
+ MovementLoopAddLocation(NPC, -2005.53, 7.02, 257.96, 2, 0)
+ MovementLoopAddLocation(NPC, -2007.42, 7.39, 254.04, 2, 0)
+ MovementLoopAddLocation(NPC, -2010.34, 7.65, 247.96, 2, 0)
+ MovementLoopAddLocation(NPC, -2012.66, 7.67, 245.99, 2, 0)
+ MovementLoopAddLocation(NPC, -2018.59, 7.44, 244.84, 2, 0)
+ MovementLoopAddLocation(NPC, -2024.65, 7.1, 243.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2031.25, 7, 242.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2033.89, 7.06, 242.96, 2, 0)
+ MovementLoopAddLocation(NPC, -2038.5, 7.08, 246.35, 2, 0)
+ MovementLoopAddLocation(NPC, -2041.06, 6.55, 248.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2045.79, 5.35, 252.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2050.94, 3.55, 256.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2056.54, 0.61, 260.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2059.94, -1.08, 263.68, 2, 0)
+ MovementLoopAddLocation(NPC, -2065.01, -3.51, 267.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2070.26, -5.27, 272.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2075.36, -6.8, 276.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2075.92, -7.74, 279.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2076.62, -9.99, 284.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2077.53, -13.5, 291.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2078.47, -17.44, 298.94, 2, 0)
+ MovementLoopAddLocation(NPC, -2079.32, -20.86, 305.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2080.17, -24.21, 311.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2081.04, -27.4, 318.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2081.96, -31.03, 325.69, 2, 0)
+ MovementLoopAddLocation(NPC, -2082.81, -34.68, 332.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2083.62, -37.72, 338.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.96, -41.07, 345.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2090.75, -42.99, 349.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2093.65, -43.47, 350.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.73, -43.78, 348.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2103.65, -44.58, 346.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.42, -45.03, 345.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2108.45, -45.01, 344.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.85, -44.09, 345.28, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.57, -42.84, 345.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2087.64, -40.87, 344, 2, 0)
+ MovementLoopAddLocation(NPC, -2081.4, -37.9, 340.14, 2, 0)
+ MovementLoopAddLocation(NPC, -2075.06, -34.58, 336.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2068.83, -31.49, 332.36, 2, 0)
+ MovementLoopAddLocation(NPC, -2061.96, -28.23, 328.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2055.58, -24.13, 324.16, 2, 0)
+ MovementLoopAddLocation(NPC, -2048.92, -19.65, 320.04, 2, 0)
+ MovementLoopAddLocation(NPC, -2042.23, -15.08, 315.9, 2, 0)
+ MovementLoopAddLocation(NPC, -2036.29, -11.53, 312.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2035.24, -11.31, 312.47, 2, 0)
+ MovementLoopAddLocation(NPC, -2037.91, -14.74, 318.52, 2, 0)
+ MovementLoopAddLocation(NPC, -2041.23, -19.3, 326.05, 2, 0)
+ MovementLoopAddLocation(NPC, -2046.5, -23.41, 330.53, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Antonica/anenragedwolfHillside5.lua b/server/SpawnScripts/Antonica/anenragedwolfHillside5.lua
new file mode 100755
index 000000000..fa30aee81
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anenragedwolfHillside5.lua
@@ -0,0 +1,150 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anenragedwolfHillside5.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.28 09:02:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2081.24, -18.94, 300.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2080.24, -16.72, 296.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2078.74, -13.34, 290.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2076.77, -9.28, 282.75, 2, 0)
+ MovementLoopAddLocation(NPC, -2074.89, -6.45, 275.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2073.14, -4.33, 267.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2071.41, -2.03, 260.91, 2, 0)
+ MovementLoopAddLocation(NPC, -2071.93, -0.68, 257.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2074.28, 0, 252.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2077.06, 0.71, 246.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2079.93, 0.74, 240.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2082.87, 0.69, 233.95, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.05, 0.53, 227.2, 2, 0)
+ MovementLoopAddLocation(NPC, -2088.93, 0.5, 221.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2092.05, 0.55, 214.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2093.83, 0.4, 212.59, 2, 0)
+ MovementLoopAddLocation(NPC, -2099.82, -0.88, 211.56, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.74, -2.28, 210.55, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.45, -4.03, 209.58, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.98, -5.85, 208.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.29, -7.15, 209.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2122.33, -8.87, 213.86, 2, 0)
+ MovementLoopAddLocation(NPC, -2124.9, -11.79, 219.88, 2, 0)
+ MovementLoopAddLocation(NPC, -2127.42, -14.19, 225.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.22, -16.49, 232.32, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.82, -18.84, 238.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.66, -20.25, 245.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.42, -19.96, 247.53, 2, 0)
+ MovementLoopAddLocation(NPC, -2132.74, -19.03, 253.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.09, -18.62, 258.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.28, -17.79, 263.18, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.48, -16.54, 267.46, 2, 0)
+ MovementLoopAddLocation(NPC, -2116.46, -16.4, 271.93, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.01, -16.75, 275.9, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.11, -17.12, 280.57, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.94, -17.36, 282.65, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.95, -18.85, 288.23, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.96, -20.9, 294.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.96, -23.01, 300.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.97, -25.26, 305.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.98, -28.4, 312.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.88, -32.46, 318.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.69, -37.34, 324.21, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.59, -39.56, 327.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2105.43, -42.68, 332.72, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.1, -43.33, 333.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2111.21, -43.3, 330.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2115.88, -43.24, 326.96, 2, 0)
+ MovementLoopAddLocation(NPC, -2120.46, -43.39, 323.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2125.13, -43.43, 320.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.13, -43.12, 316.63, 2, 0)
+ MovementLoopAddLocation(NPC, -2134.83, -42.68, 313.22, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.93, -41.9, 310.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2138.93, -41.19, 308.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2135.2, -38.63, 305.66, 2, 0)
+ MovementLoopAddLocation(NPC, -2130.63, -34.86, 301.8, 2, 0)
+ MovementLoopAddLocation(NPC, -2126.17, -31.59, 298.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2121.87, -27.88, 294.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2117.18, -23.82, 290.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2112.29, -20.06, 286.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.7, -17.72, 282.43, 2, 0)
+ MovementLoopAddLocation(NPC, -2102.86, -15.06, 278.35, 2, 0)
+ MovementLoopAddLocation(NPC, -2097.81, -11.91, 274.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2094.95, -10.51, 273.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2090.94, -10.06, 276.4, 2, 0)
+ MovementLoopAddLocation(NPC, -2086.13, -10.16, 280.36, 2, 0)
+ MovementLoopAddLocation(NPC, -2081.34, -10.79, 284.29, 2, 0)
+ MovementLoopAddLocation(NPC, -2074.85, -11.69, 289.61, 2, 0)
+ MovementLoopAddLocation(NPC, -2068.5, -12.65, 294.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2062.51, -13.56, 299.74, 2, 0)
+ MovementLoopAddLocation(NPC, -2057.21, -14.49, 304.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2051.83, -14.98, 308.5, 2, 0)
+ MovementLoopAddLocation(NPC, -2045.89, -15.17, 313.38, 2, 0)
+ MovementLoopAddLocation(NPC, -2039.96, -15.37, 318.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2033.31, -15.35, 323.71, 2, 0)
+ MovementLoopAddLocation(NPC, -2027.53, -15.36, 328.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2021.86, -15.53, 333.1, 2, 0)
+ MovementLoopAddLocation(NPC, -2015.45, -15.79, 338.36, 2, 0)
+ MovementLoopAddLocation(NPC, -2009.42, -16.17, 343.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2005.73, -15.81, 345.01, 2, 0)
+ MovementLoopAddLocation(NPC, -1999.57, -14.24, 345.71, 2, 0)
+ MovementLoopAddLocation(NPC, -1992.71, -12.22, 346.48, 2, 0)
+ MovementLoopAddLocation(NPC, -1985.85, -10.09, 347.26, 2, 0)
+ MovementLoopAddLocation(NPC, -1978.59, -8.01, 348.08, 2, 0)
+ MovementLoopAddLocation(NPC, -1969.46, -5.97, 349.11, 2, 0)
+ MovementLoopAddLocation(NPC, -1939.31, 5.29, 325.75, 2, 0)
+ MovementLoopAddLocation(NPC, -1937.71, 6.75, 319.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1935.97, 8.36, 312.95, 2, 0)
+ MovementLoopAddLocation(NPC, -1934.35, 9.37, 306.76, 2, 0)
+ MovementLoopAddLocation(NPC, -1932.89, 10.19, 301.16, 2, 0)
+ MovementLoopAddLocation(NPC, -1931.26, 10.51, 294.93, 2, 0)
+ MovementLoopAddLocation(NPC, -1929.55, 9.74, 288.38, 2, 0)
+ MovementLoopAddLocation(NPC, -1930.65, 9.43, 286.32, 2, 0)
+ MovementLoopAddLocation(NPC, -1937.21, 8.85, 284.3, 2, 0)
+ MovementLoopAddLocation(NPC, -1943.66, 8.14, 282.31, 2, 0)
+ MovementLoopAddLocation(NPC, -1950.26, 7.47, 280.28, 2, 0)
+ MovementLoopAddLocation(NPC, -1957.06, 6.58, 278.18, 2, 0)
+ MovementLoopAddLocation(NPC, -1962.78, 5.81, 276.42, 2, 0)
+ MovementLoopAddLocation(NPC, -1968.61, 5.39, 274.62, 2, 0)
+ MovementLoopAddLocation(NPC, -1975.49, 5.06, 272.5, 2, 0)
+ MovementLoopAddLocation(NPC, -1981.99, 5.17, 270.5, 2, 0)
+ MovementLoopAddLocation(NPC, -1985.63, 4.64, 271.19, 2, 0)
+ MovementLoopAddLocation(NPC, -1992.58, 3.22, 275.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2000.64, 1.56, 279.7, 2, 0)
+ MovementLoopAddLocation(NPC, -2007.8, 0.16, 283.77, 2, 0)
+ MovementLoopAddLocation(NPC, -2014.83, -0.88, 287.75, 2, 0)
+ MovementLoopAddLocation(NPC, -2021.36, -1.76, 291.46, 2, 0)
+ MovementLoopAddLocation(NPC, -2028.19, -3.09, 295.34, 2, 0)
+ MovementLoopAddLocation(NPC, -2035.52, -6.22, 299.49, 2, 0)
+ MovementLoopAddLocation(NPC, -2042.56, -9.59, 303.48, 2, 0)
+ MovementLoopAddLocation(NPC, -2049.9, -13.8, 307.65, 2, 0)
+ MovementLoopAddLocation(NPC, -2056.38, -18.22, 311.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2062.55, -22.35, 314.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2069.23, -25.7, 318.62, 2, 0)
+ MovementLoopAddLocation(NPC, -2075.98, -28.74, 322.45, 2, 0)
+ MovementLoopAddLocation(NPC, -2082.26, -31.22, 326.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2083.63, -31.01, 325.3, 2, 0)
+ MovementLoopAddLocation(NPC, -2089.3, -30.45, 322.33, 2, 0)
+ MovementLoopAddLocation(NPC, -2095.6, -29.74, 319.03, 2, 0)
+ MovementLoopAddLocation(NPC, -2101.14, -29.2, 316.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2107.74, -29.43, 312.67, 2, 0)
+ MovementLoopAddLocation(NPC, -2104.2, -27.71, 312.13, 2, 0)
+ MovementLoopAddLocation(NPC, -2098.15, -25.57, 311.26, 2, 0)
+ MovementLoopAddLocation(NPC, -2092.02, -24.31, 310.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2085.88, -23.46, 309.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2079.15, -22.43, 308.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2081.24, -18.94, 300.92, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anoargrappler.lua b/server/SpawnScripts/Antonica/anoargrappler.lua
index 0afea3e1a..0f5cebb66 100755
--- a/server/SpawnScripts/Antonica/anoargrappler.lua
+++ b/server/SpawnScripts/Antonica/anoargrappler.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 6
- local hp1 = 920
- local power1 = 270
- local difficulty2 = 6
- local hp2 = 1045
- local power2 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/anoverlandminer.lua b/server/SpawnScripts/Antonica/anoverlandminer.lua
new file mode 100755
index 000000000..2df41b762
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anoverlandminer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anoverlandminer.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.26 11:05:24
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDwarf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ dwarf(NPC)
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anoverlandwoodcutter.lua b/server/SpawnScripts/Antonica/anoverlandwoodcutter.lua
new file mode 100755
index 000000000..e42c81177
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anoverlandwoodcutter.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anoverlandwoodcutter.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.20 04:06:16
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ SetInfoStructString(NPC, "action_state", "forestry_chopping")
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/anoxiousviper.lua b/server/SpawnScripts/Antonica/anoxiousviper.lua
new file mode 100755
index 000000000..4c258bc4d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/anoxiousviper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/anoxiousviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/apig.lua b/server/SpawnScripts/Antonica/apig.lua
new file mode 100755
index 000000000..2005320a5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/apig.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/apig.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/apilesofbones.lua b/server/SpawnScripts/Antonica/apilesofbones.lua
new file mode 100755
index 000000000..58192847b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/apilesofbones.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/apilesofbones.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.05 06:05:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(120000,720000),"InitialDespawn")
+end
+
+function InitialDespawn(NPC, Spawn)
+ Despawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aplaguebringeracolyte.lua b/server/SpawnScripts/Antonica/aplaguebringeracolyte.lua
new file mode 100755
index 000000000..56038da4d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/aplaguebringeracolyte.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/Antonica/aplaguebringeracolyte.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ ChooseClass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,4)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 18)
+ SetSpellList(NPC, 453)
+ IdlePriest(NPC)
+ DervishLeather(NPC)
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 28)
+ SetSpellList(NPC, 454)
+ CastSpell(NPC, 280025, 5)
+ IdleAlert(NPC)
+ DervishRobe(NPC)
+ elseif SetClass == 3 then
+ SpawnSet(NPC, "class", 12)
+ SetSpellList(NPC, 329)
+ IdlePriest(NPC)
+ DervishLeather(NPC)
+ elseif SetClass == 4 then
+ SpawnSet(NPC, "class", 8)
+ SetSpellList(NPC, 470)
+ IdleAggressive(NPC)
+ DervishChain(NPC)
+ end
+end
diff --git a/server/SpawnScripts/Antonica/apondbeaver.lua b/server/SpawnScripts/Antonica/apondbeaver.lua
index 6971570df..d6ccfaf5c 100755
--- a/server/SpawnScripts/Antonica/apondbeaver.lua
+++ b/server/SpawnScripts/Antonica/apondbeaver.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local difficulty1 = 6
- local hp1 = 680
- local power1 = 205
- local difficulty2 = 6
- local hp2 = 795
- local power2 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/apondglider.lua b/server/SpawnScripts/Antonica/apondglider.lua
index 5439f5f67..5b6036bab 100755
--- a/server/SpawnScripts/Antonica/apondglider.lua
+++ b/server/SpawnScripts/Antonica/apondglider.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/arabidbat.lua b/server/SpawnScripts/Antonica/arabidbat.lua
new file mode 100755
index 000000000..d5ed7be6b
--- /dev/null
+++ b/server/SpawnScripts/Antonica/arabidbat.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/arabidbat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.18 08:01:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 4, -4, 2, 8, 15)
+end
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aredtailedhawk.lua b/server/SpawnScripts/Antonica/aredtailedhawk.lua
index f06c70b59..3a4ac0530 100755
--- a/server/SpawnScripts/Antonica/aredtailedhawk.lua
+++ b/server/SpawnScripts/Antonica/aredtailedhawk.lua
@@ -5,34 +5,17 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 6
- local hp1 = 920
- local power1 = 270
- local difficulty2 = 6
- local hp2 = 1045
- local power2 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 4, -4, 2, 8, 15)
+end
+function respawn(NPC, Spawn)
+ spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/arestlessCaltorsiteCamp.lua b/server/SpawnScripts/Antonica/arestlessCaltorsiteCamp.lua
new file mode 100755
index 000000000..0f22dc218
--- /dev/null
+++ b/server/SpawnScripts/Antonica/arestlessCaltorsiteCamp.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/arestlessCaltorsiteCamp.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.01 08:02:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 0, 0)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/arestlessCaltorsiteDefiler.lua b/server/SpawnScripts/Antonica/arestlessCaltorsiteDefiler.lua
index 8a97d075b..2c2e50d53 100755
--- a/server/SpawnScripts/Antonica/arestlessCaltorsiteDefiler.lua
+++ b/server/SpawnScripts/Antonica/arestlessCaltorsiteDefiler.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1105
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 0, 0)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/arestlessCaltorsiteShortRange.lua b/server/SpawnScripts/Antonica/arestlessCaltorsiteShortRange.lua
new file mode 100755
index 000000000..12972cdd4
--- /dev/null
+++ b/server/SpawnScripts/Antonica/arestlessCaltorsiteShortRange.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/arestlessCaltorsiteShortRange.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.02 09:02:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 0, 0)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/arestlessCaltorsiteWarrior.lua b/server/SpawnScripts/Antonica/arestlessCaltorsiteWarrior.lua
index 9be817902..4a40be204 100755
--- a/server/SpawnScripts/Antonica/arestlessCaltorsiteWarrior.lua
+++ b/server/SpawnScripts/Antonica/arestlessCaltorsiteWarrior.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 35, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 35, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 35, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 0, 0)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/arisenprotector.lua b/server/SpawnScripts/Antonica/arisenprotector.lua
new file mode 100755
index 000000000..a891cc3ad
--- /dev/null
+++ b/server/SpawnScripts/Antonica/arisenprotector.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/arisenprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.18 10:01:44
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/Antonica_Skeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/arootstrangler.lua b/server/SpawnScripts/Antonica/arootstrangler.lua
new file mode 100755
index 000000000..8b3ca592f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/arootstrangler.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/arootstrangler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.03 10:02:40
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/arotstuffedscarecrowHeroic.lua b/server/SpawnScripts/Antonica/arotstuffedscarecrowHeroic.lua
index 6f8b12429..a1cb8cd38 100755
--- a/server/SpawnScripts/Antonica/arotstuffedscarecrowHeroic.lua
+++ b/server/SpawnScripts/Antonica/arotstuffedscarecrowHeroic.lua
@@ -5,101 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local level3 = 17
- local difficulty1 = 8
- local hp1 = 1905
- local power1 = 640
- local difficulty2 = 8
- local hp2 = 2180
- local power2 = 670
- local difficulty3 = 8
- local hp3 = 2550
- local power3 = 725
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Antonica/asandlurker.lua b/server/SpawnScripts/Antonica/asandlurker.lua
index 22791aff9..b65830d90 100755
--- a/server/SpawnScripts/Antonica/asandlurker.lua
+++ b/server/SpawnScripts/Antonica/asandlurker.lua
@@ -5,14 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
function respawn(NPC)
spawn(NPC)
diff --git a/server/SpawnScripts/Antonica/asandlurkerStatic.lua b/server/SpawnScripts/Antonica/asandlurkerStatic.lua
new file mode 100644
index 000000000..c9e34942f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/asandlurkerStatic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/asandlurkerStatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ascarecrow.lua b/server/SpawnScripts/Antonica/ascarecrow.lua
new file mode 100644
index 000000000..db0fa95eb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ascarecrow.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ascarecrow.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/aseaturtle.lua b/server/SpawnScripts/Antonica/aseaturtle.lua
index b18b6551c..5a233c0e1 100755
--- a/server/SpawnScripts/Antonica/aseaturtle.lua
+++ b/server/SpawnScripts/Antonica/aseaturtle.lua
@@ -5,99 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local level3 = 16
- local difficulty1 = 6
- local hp1 = 795
- local power1 = 240
- local difficulty2 = 6
- local hp2 = 920
- local power2 = 270
- local difficulty3 = 6
- local hp3 = 1045
- local power3 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/ashadowedriftwatcher.lua b/server/SpawnScripts/Antonica/ashadowedriftwatcher.lua
new file mode 100644
index 000000000..da55ee63d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ashadowedriftwatcher.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ashadowedriftwatcher.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ashadowedservitor.lua b/server/SpawnScripts/Antonica/ashadowedservitor.lua
new file mode 100755
index 000000000..0f065159d
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ashadowedservitor.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ashadowedservitor.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.05 04:04:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/asoddenskeleton.lua b/server/SpawnScripts/Antonica/asoddenskeleton.lua
new file mode 100644
index 000000000..60862b877
--- /dev/null
+++ b/server/SpawnScripts/Antonica/asoddenskeleton.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/asoddenskeleton.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/asogboneskeleton.lua b/server/SpawnScripts/Antonica/asogboneskeleton.lua
index 39228b833..c1768e086 100755
--- a/server/SpawnScripts/Antonica/asogboneskeleton.lua
+++ b/server/SpawnScripts/Antonica/asogboneskeleton.lua
@@ -5,28 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local difficulty1 = 6
- local hp1 = 680
- local power1 = 205
- local difficulty2 = 6
- local hp2 = 795
- local power2 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/astonejawlizard.lua b/server/SpawnScripts/Antonica/astonejawlizard.lua
index fcfc9ba18..714645a43 100755
--- a/server/SpawnScripts/Antonica/astonejawlizard.lua
+++ b/server/SpawnScripts/Antonica/astonejawlizard.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 6
- local hp1 = 1180
- local power1 = 360
- local difficulty2 = 6
- local hp2 = 1290
- local power2 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/astonejawlizardRoamer.lua b/server/SpawnScripts/Antonica/astonejawlizardRoamer.lua
new file mode 100755
index 000000000..f6f17e466
--- /dev/null
+++ b/server/SpawnScripts/Antonica/astonejawlizardRoamer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/astonejawlizardRoamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.31 08:01:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/astonerumbler.lua b/server/SpawnScripts/Antonica/astonerumbler.lua
new file mode 100755
index 000000000..3550fdbbb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/astonerumbler.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Antonica/astonerumbler.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 12:05:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ataintedwolf.lua b/server/SpawnScripts/Antonica/ataintedwolf.lua
new file mode 100644
index 000000000..aae2a55bc
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ataintedwolf.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ataintedwolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:56
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/atamedrumbler.lua b/server/SpawnScripts/Antonica/atamedrumbler.lua
new file mode 100755
index 000000000..be69f06fc
--- /dev/null
+++ b/server/SpawnScripts/Antonica/atamedrumbler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/atamedrumbler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/athicketlizard.lua b/server/SpawnScripts/Antonica/athicketlizard.lua
index a464fc796..904f2a794 100755
--- a/server/SpawnScripts/Antonica/athicketlizard.lua
+++ b/server/SpawnScripts/Antonica/athicketlizard.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 9
- local hp1 = 3150
- local power1 = 1350
- local difficulty2 = 9
- local hp2 = 3485
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/athistleviper.lua b/server/SpawnScripts/Antonica/athistleviper.lua
index 08a5edf0f..2de454b72 100755
--- a/server/SpawnScripts/Antonica/athistleviper.lua
+++ b/server/SpawnScripts/Antonica/athistleviper.lua
@@ -5,99 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local level3 = 18
- local difficulty1 = 6
- local hp1 = 1045
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 360
- local difficulty3 = 6
- local hp3 = 1290
- local power3 = 410
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z + 4, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 25, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 25, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/athornbriar.lua b/server/SpawnScripts/Antonica/athornbriar.lua
index b3e20b4a1..eddbac0f1 100755
--- a/server/SpawnScripts/Antonica/athornbriar.lua
+++ b/server/SpawnScripts/Antonica/athornbriar.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 9
- local hp1 = 3485
- local power1 = 1350
- local difficulty2 = 9
- local hp2 = 4030
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/atidewalkerbehemoth.lua b/server/SpawnScripts/Antonica/atidewalkerbehemoth.lua
index 14685a70a..856bafa66 100755
--- a/server/SpawnScripts/Antonica/atidewalkerbehemoth.lua
+++ b/server/SpawnScripts/Antonica/atidewalkerbehemoth.lua
@@ -5,91 +5,15 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 19
- local level2 = 20
- local difficulty1 = 9
- local hp1 = 4910
- local power1 = 1800
- local difficulty2 = 9
- local hp2 = 6445
- local power2 = 2020
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
@@ -100,8 +24,6 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
-end
-
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Antonica/atidewalkergoliath.lua b/server/SpawnScripts/Antonica/atidewalkergoliath.lua
index 2da745192..8ebd368ed 100755
--- a/server/SpawnScripts/Antonica/atidewalkergoliath.lua
+++ b/server/SpawnScripts/Antonica/atidewalkergoliath.lua
@@ -5,90 +5,14 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 1045
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1180
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/atimberclawgnoll.lua b/server/SpawnScripts/Antonica/atimberclawgnoll.lua
index e85993c67..43d2aa0ed 100755
--- a/server/SpawnScripts/Antonica/atimberclawgnoll.lua
+++ b/server/SpawnScripts/Antonica/atimberclawgnoll.lua
@@ -5,34 +5,26 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 9
- local hp1 = 2650
- local power1 = 1205
- local difficulty2 = 9
- local hp2 = 3060
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
function respawn(NPC)
spawn(NPC)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,3)
+ if SetClass== 1 or SetClass == 2 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC,451)
+ elseif SetClass == 3 then
+ SpawnSet(NPC, "class", 12)
+ SetSpellList(NPC, 329)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/atimberclawgnollMelee.lua b/server/SpawnScripts/Antonica/atimberclawgnollMelee.lua
index 10d5f961c..dc294df9c 100755
--- a/server/SpawnScripts/Antonica/atimberclawgnollMelee.lua
+++ b/server/SpawnScripts/Antonica/atimberclawgnollMelee.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 9
- local hp1 = 2730
- local power1 = 1205
- local difficulty2 = 9
- local hp2 = 3150
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/atimberclawgnollRoam.lua b/server/SpawnScripts/Antonica/atimberclawgnollRoam.lua
new file mode 100644
index 000000000..3487ce614
--- /dev/null
+++ b/server/SpawnScripts/Antonica/atimberclawgnollRoam.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/Antonica/atimberclawgnollRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.27 10:03:45
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseClass(NPC)
+ SetClass = MakeRandomInt(1,3)
+ if SetClass== 1 or SetClass == 2 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC,451)
+ elseif SetClass == 3 then
+ SpawnSet(NPC, "class", 12)
+ SetSpellList(NPC, 329)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/atimberwolf.lua b/server/SpawnScripts/Antonica/atimberwolf.lua
new file mode 100755
index 000000000..6b789c2c2
--- /dev/null
+++ b/server/SpawnScripts/Antonica/atimberwolf.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/atimberwolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.18 07:01:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/atimewornsogbone.lua b/server/SpawnScripts/Antonica/atimewornsogbone.lua
new file mode 100755
index 000000000..3c40de304
--- /dev/null
+++ b/server/SpawnScripts/Antonica/atimewornsogbone.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Antonica/atimewornsogbone.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 04:09:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/atraitorousfarmer.lua b/server/SpawnScripts/Antonica/atraitorousfarmer.lua
new file mode 100755
index 000000000..6f6db9cf0
--- /dev/null
+++ b/server/SpawnScripts/Antonica/atraitorousfarmer.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Antonica/atraitorousfarmer.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.30 12:04:16
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ human(NPC)
+end
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/awanderingminstrel.lua b/server/SpawnScripts/Antonica/awanderingminstrel.lua
index 28712eccf..95426262e 100755
--- a/server/SpawnScripts/Antonica/awanderingminstrel.lua
+++ b/server/SpawnScripts/Antonica/awanderingminstrel.lua
@@ -5,28 +5,173 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ --State(NPC)
+ --SetInfoStructString(NPC, "action_state", "cast_bard_stringed_persist")
+ SpawnSet(NPC,"visual_state,","cast_bard_stringed_persist")
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
local choice = MakeRandomInt(1, 4)
if choice == 1 then
- PlayFlavor(NPC, "", "Have you heard the Bonny Lass?", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "", "Have you heard the Bonny Lass?", "", 0, 0, Spawn)
elseif choice == 2 then
- PlayFlavor(NPC, "", "The townsfolk aren't as pleasant as they were during my last visit.", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "", "The townsfolk aren't as pleasant as they were during my last visit.", "", 0, 0, Spawn)
elseif choice == 3 then
- PlayFlavor(NPC, "Buy me a drink, and I'll sing you a song.", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "", "Buy me a drink, and I'll sing you a song.", 0, 0, Spawn)
elseif choice == 4 then
- PlayFlavor(NPC, "I always stop in to have some of Lanice's delightful ale.", "", 1689589577, 4560189, Spawn)
+ PlayFlavor(NPC, "", "I always stop in to have some of Lanice's delightful ale.", 0, 0, Spawn)
end
end
-
+function State(NPC)
+ SpawnSet(NPC,"visual_state,","cast_bard_stringed_persist")
+end
function respawn(NPC)
spawn(NPC)
+end
+
+--AGGRO CHECK --
+
+function aggro(NPC,Spawn) --RACE CHECK
+ SpawnSet(NPC,"visual_state,",0)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "HealthCallout", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,7000,"ResetTimer")
+
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=21 and GetClass(Spawn)<=30 then
+ Pick = MakeRandomInt(1,3) --MAGE CHECK
+ else
+ Pick = MakeRandomInt(1,2)
+ end
+ if Pick == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618)
+ elseif Pick == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_12fbaefb.mp3", "Destroy the invader!", "", 489857902, 941763715)
+ elseif Pick == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_maomage_gm_96692f88.mp3", "Distract the magician or we'll all die!", "", 3332270247, 2351356263)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_12fbaefb.mp3", "Destroy the invader!", "", 1313233821, 723410897)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_a68f64b6.mp3", "Alarm! Alarm!", "", 1220383018, 2962002142)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_13a3055.mp3", "Summon help, intruders have arrived!", "", 3324527452, 2122161878)
+ end
+end
+end
+end
+
+
+
+-- DEATH CHECK --
+
+function death(NPC,Spawn) --RACE CHECK
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ local choice = MakeRandomInt(1,2)
+ if GetGender(NPC)==1 then
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_1a659852.mp3", "We must withdraw before we all die!", "", 3147364973, 1341536758)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994)
+ end
+ else
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_1a659852.mp3", "We must withdraw before we all die!", "", 2249500792, 2154633904)
+ end
+ end
+end
+end
+
+
+-- Battle Cry Call (Female Human Only)
+
+function FifteenCall(NPC,Spawn)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_battle_gf_7ad3a09.mp3", "Can't you hear the animals screaming?", "", 959773922, 3663023157)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_battle_gf_d1f33b41.mp3", "Pay for your crimes against nature's creatures.", "", 3824659479, 1994519243)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Spawn)
+ end
+end
+
+
+
+-- HealthChange CHECK --
+
+function healthchanged(NPC,Spawn) --RACE CHECK
+if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" and GetTempVariable(NPC, "HealthCallout")== "false" then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ AddTimer(NPC,9000,"HealthReset")
+ local choice = MakeRandomInt(1,2)
+
+ if GetGender(NPC)==1 then
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 1009191098, 3016339818, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e48659f9.mp3", "Now, that really hurt!", "", 241651222, 476491397, Spawn)
+ end
+ else
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 743699854, 1906875496, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e48659f9.mp3", "Now, that really hurt!", "", 413378164, 719939114, Spawn)
+ end
+ end
+
+end
+end
+end
+
+-- Victory CHECK --
+
+function victory(NPC,Spawn) --RACE CHECK
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012)
+ end
+ end
+end
+
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+ SetTempVariable(NPC, "CalloutTimer", "false")
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/awindstalkerfisherman.lua b/server/SpawnScripts/Antonica/awindstalkerfisherman.lua
index 5197181af..ae1d003db 100755
--- a/server/SpawnScripts/Antonica/awindstalkerfisherman.lua
+++ b/server/SpawnScripts/Antonica/awindstalkerfisherman.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 6
- local hp1 = 1290
- local power1 = 410
- local difficulty2 = 6
- local hp2 = 1440
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/awitherstrawscarecrow.lua b/server/SpawnScripts/Antonica/awitherstrawscarecrow.lua
new file mode 100755
index 000000000..6ca269d2f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/awitherstrawscarecrow.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/awitherstrawscarecrow.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.27 12:05:42
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/WitherstrawScarecrows.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ayoungkodiak.lua b/server/SpawnScripts/Antonica/ayoungkodiak.lua
new file mode 100644
index 000000000..df06b961f
--- /dev/null
+++ b/server/SpawnScripts/Antonica/ayoungkodiak.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/ayoungkodiak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 11:03:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/ayoungtimberwolf.lua b/server/SpawnScripts/Antonica/ayoungtimberwolf.lua
index ea430ac51..1561990f1 100755
--- a/server/SpawnScripts/Antonica/ayoungtimberwolf.lua
+++ b/server/SpawnScripts/Antonica/ayoungtimberwolf.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 6
- local hp1 = 430
- local power1 = 160
- local difficulty2 = 6
- local hp2 = 450
- local power2 = 190
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/bookcasewindstalker.lua b/server/SpawnScripts/Antonica/bookcasewindstalker.lua
new file mode 100755
index 000000000..96336d7f2
--- /dev/null
+++ b/server/SpawnScripts/Antonica/bookcasewindstalker.lua
@@ -0,0 +1,102 @@
+--[[
+ Script Name : SpawnScripts/Antonica/bookcasewindstalker.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.15 08:04:39
+ Script Purpose :
+ :
+--]]
+local TheLegendOfMotte = 5803 -- THE LEGEND OF MOTTE QUEST
+local TheHuntForTheWindstalkerRumbler = 5804 -- THE HUNT FOR THE WINDSTALKER RUMBLER QUEST
+
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ AddConversationOption(con, "\"The Case of the Windstalker Rumbler\"", "con1_1")
+ AddConversationOption(con, "\"The Legend of Motte\"", "con2_1")
+ AddConversationOption(con, "Stop browsing")
+ StartDialogConversation(con, 1, NPC, Spawn, "The bookcase is made of weathered oak. There are a lot of old books upon its shelves. Most of these books haven't been moved in decades.")
+end
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+------- THE HUNT FOR THE WINDSTALKER SCRIPT PART
+function con1_1(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Next page", "con1_2")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "\"The Case of the Windstalker Rumbler\" by Varlone Redrick. The countryside of Antonica has long been known for its tranquil majesty. The rolling hills and stunning coastal seascapes, but once every season have inspired many of poets or so this tranquility is interrupted by the quaking of the ground and the appearance of a ravenous beast known for ages as the Windstalker Rumbler.")
+end
+
+function con1_2(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Next page", "offer")
+ AddConversationOption(con, "Previous page", "con1_1")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "The Windstalker Rumbler has been appearing in the Qeynos Hills territory since the end of the Age of War. It is rumored to have been a curse placed upon the land by the god of the subterranean realms, Brell Serilis. The beast has been known to swallow livestock whole, and on some unfortunate occasions... Antonicans. One recent account places Marlea Sayer as a victim of the beast. The tale places her in the tunnel of the Dragon Maw Ridge, attempting to reach the north Antonica in timely fashion rather than navigate around the ridge. It is in this darkness that the Windstalker Rumbler would swallow her whole. It would take an army to stop such a beast.")
+end
+
+function offer(NPC, Spawn)
+if CanReceiveQuest(Spawn, TheHuntForTheWindstalkerRumbler) then
+OfferQuest(NPC, Spawn, TheHuntForTheWindstalkerRumbler)
+end
+ end
+
+
+
+
+----- THE LEGEND OF MOTTE SCRIPT PART
+function con2_1(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Next page", "con2_2")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "\"The Legend of Motte\" by Vhalen of the plains. Friend of Motte listen well all you creatures of glory. Listen well to the tale of Motte. Motte was a warrior brave and true. Motte was a warrior bound to bring those traveling beside plenty of gloom. His luck was unsure. His directions misguided. He begins journeys safe. He turns them unsafe.")
+end
+
+function con2_2(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Next page", "con2_3")
+ AddConversationOption(con, "Previous page", "con2_1")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "Motte had faced perils in the mines of Highkeep. He faced them with his allies who tried their best. Tried to keep Motte from reliving action of Unrest. Many a time in places of crossed swords. Many a time did Motte call forth the hordes. His skill with his sword was matched with misfortune, but one season came when in the hills of Qeynos his days would be done.")
+end
+
+function con2_3(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Next page", "con2_4")
+ AddConversationOption(con, "Previous page", "con2_2")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "There upon the roads did mighty Motte run. All the while when his friends were in taverns filled with much fun. Traveling alone, crossing the stream. Motte came upon a road in ravine. Onward he marched fearless and brave. Onward he marched to meet the many evil knave. Trapped fore and aft and nowhere to flee. Motte fought valiantly against highwaymen and only death could he see.")
+end
+
+function con2_4(NPC, Spawn)
+ if CanReceiveQuest(Spawn, TheLegendOfMotte) then
+ OfferQuest(NPC, Spawn, TheLegendOfMotte)
+ end
+ local con = CreateConversation()
+ if GetQuestStep(Spawn, TheLegendOfMotte) == 2 or GetQuestStep(Spawn, TheLegendOfMotte) == 3 or HasCompletedQuest(Spawn, TheLegendOfMotte) then
+ AddConversationOption(con, "Next page", "con2_5")
+ end
+ AddConversationOption(con, "Previous page", "con2_3")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "Motte has passed on, but his spirit is without rest. Only the trotters of now can be put to the test. Seek out his slayers in this tale of old. Send them to grave in, graves of tenfold. His spirit will be free and the saviors will see. Will see that this book has much to offer, an offer that is key.")
+end
+
+function con2_5(NPC, Spawn)
+ if GetQuestStep(Spawn, TheLegendOfMotte) == 2 then
+ SetStepComplete(Spawn, TheLegendOfMotte, 2)
+ end
+ local con = CreateConversation()
+ AddConversationOption(con, "Previous page", "con2_4")
+ AddConversationOption(con, "Close the book")
+ StartDialogConversation(con, 1, NPC, Spawn, "This page was not here before! There are no words on the pages... only a key. The Key reads, \"Tombstone\"")
+end
+
+
diff --git a/server/SpawnScripts/Antonica/furlinedglovesdownhay.lua b/server/SpawnScripts/Antonica/furlinedglovesdownhay.lua
new file mode 100755
index 000000000..86128493a
--- /dev/null
+++ b/server/SpawnScripts/Antonica/furlinedglovesdownhay.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Antonica/furlinedglovesdownhay.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.14 06:05:42
+ Script Purpose : Fur Lined Gloves update
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC, 5815, 3)
+end
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Search Hay' and GetQuestStep( Spawn, 5815)==3 then
+ SendMessage(Spawn,"You find some down griffon feathers within the bound hay!")
+ SetStepComplete(Spawn,5815,3)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/huntersmanifest.lua b/server/SpawnScripts/Antonica/huntersmanifest.lua
new file mode 100755
index 000000000..67752fd23
--- /dev/null
+++ b/server/SpawnScripts/Antonica/huntersmanifest.lua
@@ -0,0 +1,74 @@
+--[[
+ Script Name : SpawnScripts/Antonica/huntersmanifest.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.05 09:04:26
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/PlayerHistory"
+
+local HuntersManifest1 = 5799
+local HuntersManifest2 = 5801
+local HuntersManifest3 = 5802
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 10, "InRange", Spawn)
+end
+
+function InRange(NPC, Spawn)
+if GetPlayerHistory(Spawn, 8) == 0 or GetPlayerHistory(Spawn, 8) == nil then
+ SpawnSet(NPC, "show_command_icon", 1)
+ SpawnSet(NPC, "display_hand_icon", 1)
+ SetAccessToEntityCommand(Spawn,NPC,"open manifest", 1)
+else
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ SetAccessToEntityCommand(Spawn,NPC,"open manifest", 0)
+end
+ end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'open manifest' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Open manifest.", "con1")
+ AddConversationOption(con, "Leave the manifest alone.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Within the storage box you find a leather bound manifest. It appears to be untouched for quite some time, but the leather is still in excellent condition.")
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ SetAccessToEntityCommand(Spawn,NPC,"open manifest", 0)
+ AddTimer(NPC, 10000, "check", 1, Spawn)
+end
+end
+
+function check(NPC, Spawn)
+ if GetPlayerHistory(Spawn, 8) == 0 or GetPlayerHistory(Spawn, 8) == nil then
+ SpawnSet(NPC, "show_command_icon", 1)
+ SpawnSet(NPC, "display_hand_icon", 1)
+ SetAccessToEntityCommand(Spawn,NPC,"open manifest", 1)
+end
+ end
+
+
+function con1(NPC, Spawn)
+ if GetPlayerHistory(Spawn, 8) == 0 or GetPlayerHistory(Spawn, 8) == nil then
+ local generate_random_quest_option = MakeRandomInt(1, 3)
+ if generate_random_quest_option == 1 then
+ OfferQuest(NPC, Spawn, HuntersManifest1)
+ elseif generate_random_quest_option == 2 then
+ OfferQuest(NPC, Spawn, HuntersManifest2)
+ elseif generate_random_quest_option == 3 then
+ OfferQuest(NPC, Spawn, HuntersManifest3)
+ end
+ end
+ local con = CreateConversation()
+ AddConversationOption(con, "I will hunt game in Antonica.")
+ AddConversationOption(con, "exit")
+ StartDialogConversation(con, 1, NPC, Spawn, "The manifest once belonged to a hunter, that apparently had something to do with organizing hunts for Qeynosian royalty. Great hunts were organized, where hunters from all over Norrath were invited to participate, competing for prizes and prestige. The manifest is not particularly well written, but it sparks your imagination nonetheless.")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/lockboxquest.lua b/server/SpawnScripts/Antonica/lockboxquest.lua
index b7a286548..2dc10ca5c 100755
--- a/server/SpawnScripts/Antonica/lockboxquest.lua
+++ b/server/SpawnScripts/Antonica/lockboxquest.lua
@@ -31,11 +31,11 @@ end
function con2(NPC, Spawn)
local con = CreateConversation()
- if not HasQuest(Spawn, PeckettsPatrol) and not HasCompletedQuest(Spawn, PeckettsPatrol) then
+ if CanReceiveQuest(Spawn, PeckettsPatrol) then
AddConversationOption(con, "Put the logbook back and help the garrison.", "offer")
end
AddConversationOption(con, "Stop your inspection")
- StartDialogConversation(con, 1, NPC, Spawn, "The Coldwind Point Garrison, Qeynos Guard Tower Guard Regiment. Captain Antillin CO We have taken a critical hit in our defenses. Both Guard Nimegin and Bollin have been slain in combat with a horde of gnolls wishing to claim the lighthouse. The gnolls managed to thieve a map of Qeynos kept on post. I will be taking the bulk of the squad to give chase and retrieve the map. Until then, Corporal Peckett and a few guards will be our only defense. He must wait for reinforcements to provide the local patrol or create a militia of adventurers so that the patrol can be accomplished. DO NOT REMOVE THIS LOGBOOK by Order of the Qeynos Guard.")
+ StartDialogConversation(con, 1, NPC, Spawn, "The Coldwind Point Garrison, Qeynos Guard Tower Guard Regiment.\nCaptain Antillin CO\n\nWe have taken a critical hit in our defenses. Both Guard Nimegin and Bollin have been slain in combat with a horde of gnolls wishing to claim the lighthouse. The gnolls managed to thieve a map of Qeynos kept on post. I will be taking the bulk of the squad to give chase and retrieve the map. Until then, Corporal Peckett and a few guards will be our only defense. He must wait for reinforcements to provide the local patrol or create a militia of adventurers so that the patrol can be accomplished.\n\nDO NOT REMOVE THIS LOGBOOK by Order of the Qeynos Guard.")
end
function offer(NPC, Spawn)
diff --git a/server/SpawnScripts/Antonica/losttombtoneofdynne.lua b/server/SpawnScripts/Antonica/losttombtoneofdynne.lua
new file mode 100755
index 000000000..ef6aee484
--- /dev/null
+++ b/server/SpawnScripts/Antonica/losttombtoneofdynne.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/Antonica/losttombtoneofdynne.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.15 09:04:45
+ Script Purpose :
+ :
+--]]
+local TheLegendOfMotte = 5803 -- THE LEGEND OF MOTTE QUEST
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ if GetQuestStep(Spawn, TheLegendOfMotte) == 3 then
+ AddConversationOption(con, "Use the tombstone key.", "con1")
+ end
+ AddConversationOption(con, "Stop inspecting.")
+ StartDialogConversation(con, 1, NPC, Spawn, "It is an old tombstone. It reads, \"Here lies Sir Edwin Motte. Warrior, legend, friend of Maestro, friend of Irontoe. May he find fortune beyond.\" There also seems to be a sort of keyhole on the tombstone.")
+end
+end
+
+function con1(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheLegendOfMotte, 3)
+ AddConversationOption(con, "Close the compartment.")
+ StartDialogConversation(con, 1, NPC, Spawn, "A small compartment opens and you find lost treasure.")
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/miaqueductentrance01.lua b/server/SpawnScripts/Antonica/miaqueductentrance01.lua
new file mode 100755
index 000000000..0d160ab15
--- /dev/null
+++ b/server/SpawnScripts/Antonica/miaqueductentrance01.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/miaqueductentrance01.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.21 03:05:59
+ Script Purpose : Zones players into instance 'Qeynos Aqueduct Storage Facility 1B' using key-related quest from 'A Small Brass Key With A Tag'
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,1,1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/mipiratehideout.lua b/server/SpawnScripts/Antonica/mipiratehideout.lua
new file mode 100755
index 000000000..9a647f549
--- /dev/null
+++ b/server/SpawnScripts/Antonica/mipiratehideout.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Antonica/mipiratehideout.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.21 01:05:37
+ Script Purpose :
+ :
+--]]
+Brass1 = 5813
+
+
+function spawn(NPC)
+SetRequiredQuest(NPC,Brass1,1)
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "enter the cellar" then
+ if HasQuest(Spawn,Brass1) then
+ SetStepComplete(Spawn,Brass1,1)
+ ZoneRef = GetZone("BuccaneersRest")
+ Zone(ZoneRef,Spawn,2.48, -45.79, -45.68, 48)
+ end
+else
+ SendMessage(Spawn,"The locked door rattles, but does not budge.","yellow")
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/qstbellofvhalen.lua b/server/SpawnScripts/Antonica/qstbellofvhalen.lua
new file mode 100755
index 000000000..dcb432766
--- /dev/null
+++ b/server/SpawnScripts/Antonica/qstbellofvhalen.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/Antonica/qstbellofvhalen.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.07 07:05:38
+ Script Purpose : Copied technique from Jester_Coffin_Widget - not perfect, but does the job.
+ :
+--]]
+local FallenBell = 5811
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 20, "InRange", Spawn)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Touch the bell' then
+ local con = CreateConversation()
+ if not HasQuest(Spawn, FallenBell) and not HasCompletedQuest(Spawn, FallenBell) then
+ AddConversationOption(con, "Embrace the images.", "offer")
+ AddConversationOption(con, "Leave the bell.")
+ StartDialogConversation(con, 1, NPC, Spawn, "As your hand brushes across the cool surface of the fallen bell your mind is flooded with images... \n\nRinging!... \nRinging to warn the others... \nThe sky is buring... \nThe moon torn asunder... \nCrashing and toppling this very tower! \nGnolls... \nGnolls everywhere! \nTaking advantage of the chaos... \nStriking down those trying to flee...")
+ elseif HasCompletedQuest(Spawn, FallenBell) then
+ AddConversationOption(con, "I hope my actions were enough to avenge the fallen.")
+ StartDialogConversation(con, 1, NPC, Spawn, "The cold bell lies unresponsive to your touch. The solace of this crumbled tower is peaceful compared to the turmoil it has endured.")
+ elseif HasQuest(Spawn, FallenBell) and not HasCompletedQuest(Spawn, FallenBell) then
+ AddConversationOption(con, "I must kill more gnolls!")
+ StartDialogConversation(con, 1, NPC, Spawn, "As your hand brushes across the cool surface of the fallen bell your mind is flooded with images... \n\nRinging!... \nRinging to warn the others... \nThe sky is buring... \nThe moon torn asunder... \nCrashing and toppling this very tower! \nGnolls... \nGnolls everywhere! \nTaking advantage of the chaos... \nStriking down those trying to flee...")
+ end
+end
+end
+
+function offer(NPC, Spawn)
+ OfferQuest(NPC, Spawn, FallenBell)
+ PlaySound(Spawn,"sounds/widgets/alarms_clues_traps/alarm_bell_qeynos002.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ PlaySound(Spawn,"sounds/widgets/triggered_environmental/enviro_rockcrack001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_005.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ AddTimer(NPC,2000,"Rocks2",1,Spawn)
+ CloseConversation(NPC,Spawn)
+ PerformCameraShake(Spawn, 0.699999988079071)
+ PerformCameraShake(Spawn, 0.5)
+ PerformCameraShake(Spawn, 0.30000001192092896)
+ PerformCameraShake(Spawn, 0.10000000149011612)
+end
+
+function Rocks2(NPC,Spawn)
+ PerformCameraShake(Spawn, 0.10000001192092896)
+ PlaySound(Spawn,"sounds/widgets/triggered_environmental/enviro_rockcrack001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/questBugSquashing.lua b/server/SpawnScripts/Antonica/questBugSquashing.lua
new file mode 100755
index 000000000..b80c0ca22
--- /dev/null
+++ b/server/SpawnScripts/Antonica/questBugSquashing.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/Antonica/questBugSquashing.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.19 05:05:51
+ Script Purpose :
+ :
+--]]
+local Quest = 5842
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 20, "InRange", Spawn)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ if CanReceiveQuest(Spawn,Quest) then
+ Dialog1(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn, Quest) then
+ AddConversationOption(con, "[Leave the carcass.]")
+ StartDialogConversation(con, 1, NPC, Spawn, "This is a dead klicnik that has historically plagued these lands. You've done what you could to thin their numbers.")
+ elseif HasQuest(Spawn, Quest) and not HasCompletedQuest(Spawn, Quest) then
+ AddConversationOption(con, "I must squish more klicnik warriors!")
+ StartDialogConversation(con, 1, NPC, Spawn, "This is a dead klicnik reminds you of your mission to remove them from the Antonica countryside. You must do what you can to reduce their numbers!")
+ end
+end
+end
+
+function Dialog1(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[Look closer...]", "Dialog2")
+ AddConversationOption(con, "[Leave the carcass.]")
+ StartDialogConversation(con, 1, NPC, Spawn, "Whatever this was, it appears hard as a shell with a surface that glimmers with a faint light.")
+end
+
+function Dialog2(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "I should destroy the klicnik warriors!", "offer")
+ AddConversationOption(con, "[Leave the carcass.]")
+ StartDialogConversation(con, 1, NPC, Spawn, "Upon closer inspection you realize that it is an old, empty carapace for a klicnik warrior! Why are there so many of these dangerous insects so close to fair Qeynos?!")
+end
+
+function offer(NPC, Spawn)
+ CloseConversation(NPC,Spawn)
+ OfferQuest(NPC, Spawn, Quest)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/questRevengeoftheKodiaks.lua b/server/SpawnScripts/Antonica/questRevengeoftheKodiaks.lua
new file mode 100755
index 000000000..c085a74f4
--- /dev/null
+++ b/server/SpawnScripts/Antonica/questRevengeoftheKodiaks.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/Antonica/questRevengeoftheKodiaks.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.17 07:05:57
+ Script Purpose :
+ :
+--]]
+local Quest = 5833
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 20, "InRange", Spawn)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search reeds' then
+ local con = CreateConversation()
+ if CanReceiveQuest(Spawn,Quest) then
+ Dialog1(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn, Quest) then
+ AddConversationOption(con, "[Leave the banner alone]")
+ StartDialogConversation(con, 1, NPC, Spawn, "The banner on the memorial still reads, \"The final resting place of Guyc Swampleg. A great friend, but not a great runner. The young kodiaks got him while he was fishing.\"")
+ elseif HasQuest(Spawn, Quest) and not HasCompletedQuest(Spawn, Quest) then
+ AddConversationOption(con, "I still need to thing young kodiaks from Antonica.")
+ StartDialogConversation(con, 1, NPC, Spawn, "The banner reads, \n\n \"The final resting place of Guyc Swampleg. A great friend, but not a great runner. The young kodiaks got him while he was fishing.\"")
+ end
+end
+end
+
+function Dialog1(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[Read the banner]", "Dialog2")
+ AddConversationOption(con, "[Leave the banner alone]")
+ StartDialogConversation(con, 1, NPC, Spawn, "There appeares to be some sort of memorial within the reeds. A small banner waves silently as a gust blows through the Archer Woods.")
+end
+
+function Dialog2(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "I need to remove young kodiaks!", "offer")
+ AddConversationOption(con, "[Leave the banner alone]")
+ StartDialogConversation(con, 1, NPC, Spawn, "The banner reads:\n\n \"The final resting place of Guyc Swampleg. A great friend, but not a great runner. The young kodiaks got him while he was fishing.\"")
+end
+
+function offer(NPC, Spawn)
+ CloseConversation(NPC,Spawn)
+ OfferQuest(NPC, Spawn, Quest)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/questbindingfirewidget.lua b/server/SpawnScripts/Antonica/questbindingfirewidget.lua
new file mode 100755
index 000000000..fd4fd25c3
--- /dev/null
+++ b/server/SpawnScripts/Antonica/questbindingfirewidget.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/questbindingfirewidget.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.12 06:05:38
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC, 1, 1,0)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/questrunewindstalker.lua b/server/SpawnScripts/Antonica/questrunewindstalker.lua
new file mode 100755
index 000000000..6d90d1843
--- /dev/null
+++ b/server/SpawnScripts/Antonica/questrunewindstalker.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/Antonica/questrunewindstalker.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 06:05:34
+ Script Purpose :
+ :
+--]]
+local Rune = 5829
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 20, "InRange", Spawn)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Look under boat' then
+ local con = CreateConversation()
+ if not HasQuest(Spawn, Rune) and not HasCompletedQuest(Spawn, Rune) then
+ AddConversationOption(con, "Grab the runestone!", "offer")
+ AddConversationOption(con, "Leave the boat alone.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Underneath the boat I found what appears to be a restless runestone. The runestone is a marker used to attract undead to attack or occupy a particular place. Perhaps an army of undead are coming to the area. I should put a stop to this.")
+ elseif HasCompletedQuest(Spawn, Rune) then
+ AddConversationOption(con, "Whew! That smell is ripe!")
+ StartDialogConversation(con, 1, NPC, Spawn, "Under boat you find a rotten fish... and an undead hand? It looks like it was grasping for something no longer there. Perhaps the runestone I removed lured it here originally.")
+ PlayFlavor(Spawn,"","","stinky",0,0,Spawn)
+ elseif HasQuest(Spawn, Rune) and not HasCompletedQuest(Spawn, Rune) then
+ AddConversationOption(con, "I must kill more Caltorsis undead!")
+ StartDialogConversation(con, 1, NPC, Spawn, "Underneath the boat I found a restless runestone used to attract undead to attack. I should continue to rid Antonica of these undead!")
+ end
+end
+end
+
+
+function offer(NPC, Spawn)
+ CloseConversation(NPC,Spawn)
+ OfferQuest(NPC, Spawn, Rune)
+ PerformCameraShake(Spawn, 0.10000001192092896)
+ PlaySound(Spawn,"sounds/critters/zombie/flesh/zombie_dead01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/questtriggerscornshameirisor.lua b/server/SpawnScripts/Antonica/questtriggerscornshameirisor.lua
new file mode 100755
index 000000000..f30537469
--- /dev/null
+++ b/server/SpawnScripts/Antonica/questtriggerscornshameirisor.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/questtriggerscornshameirisor.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 07:09:44
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,1,1,0,0,1) --Two Wrongs Don't Make a Right
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/rikantusfirering.lua b/server/SpawnScripts/Antonica/rikantusfirering.lua
new file mode 100755
index 000000000..1a5052d7e
--- /dev/null
+++ b/server/SpawnScripts/Antonica/rikantusfirering.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/Antonica/rikantusfirering.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.19 05:05:05
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 1, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function InRange(NPC,Spawn,Zone)
+ if GetDistance(NPC,Spawn)<1 or GetSpawnLocationID(NPC)== 133776619 and GetDistance(NPC,Spawn)<1 or GetSpawnLocationID(NPC)== 133776620 and GetDistance(NPC,Spawn)<1 then
+ SpawnSet(Spawn,"visual_state",492)
+ TakeFireDamage(Spawn)
+ SendMessage(Spawn, "You are burning!", "red")
+ AddTimer(NPC,3000,"InRange",1,Spawn)
+ end
+end
+
+
+function LeaveRange(NPC,Spawn)
+ SpawnSet(Spawn,"visual_state",0)
+end
+
+function TakeFireDamage(Spawn)
+local invul = IsInvulnerable(Spawn)
+if invul == true then
+return 0
+end
+
+local hp = GetHP(Spawn)
+local damage = GetMaxHP(Spawn)*0.05
+local damageToTake = damage * 1
+-- if we don't have enough HP make them die to pain and suffering not self
+if hp <= damageToTake then
+KillSpawn(Spawn, null, 1)
+else
+DamageSpawn(Spawn, Spawn, 192, 3, damageToTake, damageToTake, "Fire!", 0, 0, 1, 1)
+end
+end
+
+
+
+function Tick(Zone, Spawn, RegionType)
+
+TakeFireDamage(Spawn)
+
+-- returning 1 would stop the Tick process until Spawn leaves/re-enters region
+return 0
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/rikantusmagicchest.lua b/server/SpawnScripts/Antonica/rikantusmagicchest.lua
new file mode 100755
index 000000000..a0a18a0f8
--- /dev/null
+++ b/server/SpawnScripts/Antonica/rikantusmagicchest.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/Antonica/rikantusmagicchest.lua
+ Script Author : Premierio015
+ Script Date : 2023.05.06 02:05:11
+ Script Purpose :
+ :
+--]]
+
+local WhispersOfFortune = 5809
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ if GetQuestStep(Spawn, WhispersOfFortune) == 4 then
+ AddConversationOption(con, "Open the chest.", "con1")
+ end
+ AddConversationOption(con, "Leave the chest alone.")
+ StartDialogConversation(con, 1, NPC, Spawn, "This chest looks to be of a dark elf design. It has fantastic symbols of the arcane etched all over the surface. There is no lock to bind it, but something keeps it bound tight.")
+end
+end
+
+function con1(NPC, Spawn)
+ SetStepComplete(Spawn, WhispersOfFortune, 4)
+ local con = CreateConversation()
+ AddConversationOption(con, "Leave the chest alone.")
+ StartDialogConversation(con, 1, NPC, Spawn, "As you go to open the chest it slowly opens its maw before you can touch it. Inside the darkness you reach and grab the only items you can find.")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/rotstuffscarecrow.lua b/server/SpawnScripts/Antonica/rotstuffscarecrow.lua
new file mode 100755
index 000000000..0761cf0f2
--- /dev/null
+++ b/server/SpawnScripts/Antonica/rotstuffscarecrow.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Antonica/rotstuffscarecrow.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.21 01:05:37
+ Script Purpose :
+ :
+--]]
+local Quest = 5841
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ if IsInCombat(Spawn)== true then
+ SendMessage(Spawn,"You are in combat!","red")
+ else
+ if GetQuestStep(Spawn,Quest)==4 or GetQuestStep(Spawn,Quest)==5 then
+ Dialog1(NPC,Spawn)
+ else
+ AddConversationOption(con, "[Leave the scarecrow alone...]")
+ StartDialogConversation(con, 1, NPC, Spawn, "This scarecrow is in the process of being animated through arcane means. Once fully animated the gnolls will use it to sow discord in Antonica.")
+ end
+ end
+end
+end
+
+function Dialog1(NPC,Spawn)
+ local con = CreateConversation()
+ if not QuestStepIsComplete(Spawn,Quest,5) then
+ AddConversationOption(con, "[Look for something to dispell enchantments.]", "Dialog2")
+ end
+ AddConversationOption(con, "[Leave the scarecrow alone...]")
+ StartDialogConversation(con, 1, NPC, Spawn, "This scarecrow is in the process of being animated through arcane means. Once fully animated the gnolls will use it to sow discord in Antonica.")
+end
+
+function Dialog2(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[Leave the scarecrow alone...]")
+ StartDialogConversation(con, 1, NPC, Spawn, "Other than some slight twitching of the scarecrow's limbs, you don't notice anything that can help.")
+end
+
diff --git a/server/SpawnScripts/Antonica/strongboxinsidecaltorsis.lua b/server/SpawnScripts/Antonica/strongboxinsidecaltorsis.lua
new file mode 100755
index 000000000..7eb82e1d9
--- /dev/null
+++ b/server/SpawnScripts/Antonica/strongboxinsidecaltorsis.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/Antonica/strongboxinsidecaltorsis.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.11 06:05:08
+ Script Purpose :
+ :
+--]]
+local Sayer = 5812
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "inspect" and not HasCompletedQuest(Quest,Sayer) then
+ Dialog1(NPC, Spawn)
+ else
+ Dialog3(NPC,Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ conversation = CreateConversation()
+ if GetQuestStep(Spawn,Sayer)==3 then
+ AddConversationOption(conversation, "Use the strongbox key ", "Dialog2")
+ end
+ AddConversationOption(conversation, "Stop inspecting the strongbox")
+ StartDialogConversation(conversation, 1, NPC, Spawn, "This is a locked strongbox. It does not look worn at all and seems to have some spell placed over it that binds it to the ground.")
+end
+
+function Dialog2(NPC, Spawn)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Take the sewing kit.","Update")
+ AddConversationOption(conversation, "Stop inspecting the strongbox")
+ StartDialogConversation(conversation, 1, NPC, Spawn, "Inside the chest you find some coin, some scrolls written in a language unknown, and odd trinkets of no use. You also find a small ornate sewing kit with the name \"Nerissa Clothspinner\" engraved upon it.")
+end
+
+function Update(NPC, Spawn)
+ SetStepComplete(Spawn, Sayer, 3)
+ CloseConversation(NPC,Spawn)
+end
+
+function Dialog3(NPC, Spawn)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Stop inspecting the strongbox")
+ StartDialogConversation(conversation, 1, NPC, Spawn, "The spell that bound this lockbox here still holds firm. The remaining contents are still of no use to you.")
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/wantedposter.lua b/server/SpawnScripts/Antonica/wantedposter.lua
new file mode 100755
index 000000000..7c82468bb
--- /dev/null
+++ b/server/SpawnScripts/Antonica/wantedposter.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/wantedposter.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.15 09:04:51
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/warriorcapquestwidget.lua b/server/SpawnScripts/Antonica/warriorcapquestwidget.lua
new file mode 100755
index 000000000..6663cfb74
--- /dev/null
+++ b/server/SpawnScripts/Antonica/warriorcapquestwidget.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Antonica/warriorcapquestwidget.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.21 11:04:16
+ Script Purpose :
+ :
+--]]
+
+local TheseBootsWereMadeFor = 5805 -- These Boots Were Made For QUEST ID
+
+function spawn(NPC)
+SetRequiredQuest(NPC, TheseBootsWereMadeFor, 10)
+end
+
+function casted_on(NPC, Spawn, Spell)
+if Spell == 'climb down the trapdoor' then
+Zone(GetZone(838), Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/widgetstarwispflour.lua b/server/SpawnScripts/Antonica/widgetstarwispflour.lua
new file mode 100755
index 000000000..2bcea0c62
--- /dev/null
+++ b/server/SpawnScripts/Antonica/widgetstarwispflour.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Antonica/widgetstarwispflour.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.15 05:05:40
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ SetRequiredQuest(NPC, 5830, 1)
+end
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Grab Flour' and GetQuestStep( Spawn, 5830)==1 then
+ SendMessage(Spawn,"You grab a couple handfuls of milled flour.")
+ SetStepComplete(Spawn,5830,1)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/zonetoantonicaepic02firemyst0.lua b/server/SpawnScripts/Antonica/zonetoantonicaepic02firemyst0.lua
new file mode 100755
index 000000000..f2677c5a5
--- /dev/null
+++ b/server/SpawnScripts/Antonica/zonetoantonicaepic02firemyst0.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Antonica/zonetoantonicaepic02firemyst0.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 12:09:02
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5814,1,0,0,1) --FOUL WIND
+ SetRequiredQuest(NPC,5522,9,0,1,1) --LORD GRIMROT
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/zonetoantonicaepic02firemyst1.lua b/server/SpawnScripts/Antonica/zonetoantonicaepic02firemyst1.lua
new file mode 100755
index 000000000..87425f939
--- /dev/null
+++ b/server/SpawnScripts/Antonica/zonetoantonicaepic02firemyst1.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/Antonica/zonetoantonicaepic02firemyst1.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 01:09:15
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5814,1,0,0,1) --FOUL WIND
+ SetRequiredQuest(NPC,5522,9,0,1,1) --LORD GRIMROT
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Antonica/zonetowindstalkersepulchre.lua b/server/SpawnScripts/Antonica/zonetowindstalkersepulchre.lua
new file mode 100755
index 000000000..832a80e04
--- /dev/null
+++ b/server/SpawnScripts/Antonica/zonetowindstalkersepulchre.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Antonica/zonetowindstalkersepulchre.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.21 01:05:53
+ Script Purpose : Hide access. Quest required:A Source of Malediction from Sentinel's Fate. Zone in to The False Sepulchre
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC,1,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Baubbleshire/BinkOakshire.lua b/server/SpawnScripts/Baubbleshire/BinkOakshire.lua
index 4bcff6b46..346f5b4f0 100755
--- a/server/SpawnScripts/Baubbleshire/BinkOakshire.lua
+++ b/server/SpawnScripts/Baubbleshire/BinkOakshire.lua
@@ -145,27 +145,27 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","hungry",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
-end
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
function Door1(NPC,Spawn)
local door = GetSpawn(NPC, 2380074)
diff --git a/server/SpawnScripts/Baubbleshire/BizrinnClamorclang.lua b/server/SpawnScripts/Baubbleshire/BizrinnClamorclang.lua
index 24c709c50..3d401d441 100755
--- a/server/SpawnScripts/Baubbleshire/BizrinnClamorclang.lua
+++ b/server/SpawnScripts/Baubbleshire/BizrinnClamorclang.lua
@@ -30,7 +30,7 @@ function Dialog1(NPC, Spawn)
Dialog.AddDialog("Oh! Why hello there! I am so behind on tinker work that I am not taking anymore orders at the moment ... What is it you want?")
Dialog.AddVoiceover("voiceover/english/bizrinn_clamorclang/qey_village06/bizrinnclamorclang.mp3", 3866517974, 2558850199)
- Dialog.AddOption("I actually have a recipt to pick up a device for Bupipa Guryup.","Device1")
+ Dialog.AddOption("I actually have a receipt to pick up a device for Bupipa Guryup.","Device1")
Dialog.AddOptionRequirement(REQ_QUEST_ON_STEP, PickUp , 1)
Dialog.AddOption("Ah, that's too bad. I guess I'll get my thingamajig whatchamacalit made somewhere else")
@@ -51,7 +51,7 @@ function umm(NPC, Spawn)
SetStepComplete(Spawn, PickUp, 1)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Why it makes her singing even LOUDER! We'll be able to hear her singing in the Baubbleshire! Isn't that great?!")
+ Dialog.AddDialog("Why it makes her singing even LOUDER! We'll be able to hear her singing over in the Baubbleshire! Isn't that great?!")
Dialog.AddVoiceover("voiceover/english/bizrinn_clamorclang/qey_village06/bizrinnclamorclang001.mp3", 1964116252, 2748280828)
PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
Dialog.AddOption("Wonderful!")
diff --git a/server/SpawnScripts/Baubbleshire/DeputyCliffordson.lua b/server/SpawnScripts/Baubbleshire/DeputyCliffordson.lua
index 3a3994e4a..0bbc661ee 100755
--- a/server/SpawnScripts/Baubbleshire/DeputyCliffordson.lua
+++ b/server/SpawnScripts/Baubbleshire/DeputyCliffordson.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Baubbleshire/DeputySplitshin.lua b/server/SpawnScripts/Baubbleshire/DeputySplitshin.lua
index 01eb7e758..94536ef77 100755
--- a/server/SpawnScripts/Baubbleshire/DeputySplitshin.lua
+++ b/server/SpawnScripts/Baubbleshire/DeputySplitshin.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- if math.random(0, 100) <= 20 then
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ if math.random(0, 100) <= 20 then
FaceTarget(NPC, Spawn)
GenericGuardHail(NPC, Spawn)
else
diff --git a/server/SpawnScripts/Baubbleshire/DigginDiggs.lua b/server/SpawnScripts/Baubbleshire/DigginDiggs.lua
index 4f908f442..d8c85f4f7 100755
--- a/server/SpawnScripts/Baubbleshire/DigginDiggs.lua
+++ b/server/SpawnScripts/Baubbleshire/DigginDiggs.lua
@@ -15,6 +15,7 @@ local FarSeas_SixtyThree = 237
function spawn(NPC)
ProvidesQuest(NPC, BADGER_PELTS_FOR_DIGGS)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Baubbleshire/Drizzledrop.lua b/server/SpawnScripts/Baubbleshire/Drizzledrop.lua
index b006c51db..dd58af1f6 100755
--- a/server/SpawnScripts/Baubbleshire/Drizzledrop.lua
+++ b/server/SpawnScripts/Baubbleshire/Drizzledrop.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Baubbleshire/DrundoParn.lua b/server/SpawnScripts/Baubbleshire/DrundoParn.lua
index b4d3fb67f..8356208a0 100755
--- a/server/SpawnScripts/Baubbleshire/DrundoParn.lua
+++ b/server/SpawnScripts/Baubbleshire/DrundoParn.lua
@@ -11,6 +11,7 @@ local HELPING_SOME_FRIENDS = 325 -- was 72
local NEEZERS_SURVEY = 330 -- was 28
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Baubbleshire/Fullgrin.lua b/server/SpawnScripts/Baubbleshire/Fullgrin.lua
index e0b8b75f8..b6dc70fbf 100755
--- a/server/SpawnScripts/Baubbleshire/Fullgrin.lua
+++ b/server/SpawnScripts/Baubbleshire/Fullgrin.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
if CheckFaction == Qeynos then
FaceTarget(NPC, Spawn)
GenericGuardHail(NPC, Spawn)
diff --git a/server/SpawnScripts/Baubbleshire/GeologistQuardifle.lua b/server/SpawnScripts/Baubbleshire/GeologistQuardifle.lua
index 598f519b3..0dbf0cc4b 100755
--- a/server/SpawnScripts/Baubbleshire/GeologistQuardifle.lua
+++ b/server/SpawnScripts/Baubbleshire/GeologistQuardifle.lua
@@ -8,7 +8,8 @@
--]]
dofile("SpawnScripts/Generic/UnknownLanguage.lua") --added 2022.03.13 Dorbin
-require "SpawnScripts/Generic/DialogModuleTest"
+--require "SpawnScripts/Generic/DialogModuleTest"
+require "SpawnScripts/Generic/DialogModule"
local GATHERING_ROCK_SAMPLES_QUEST_ID = 504
diff --git a/server/SpawnScripts/Baubbleshire/Greenlock.lua b/server/SpawnScripts/Baubbleshire/Greenlock.lua
index a4e40424d..22c39c7a1 100755
--- a/server/SpawnScripts/Baubbleshire/Greenlock.lua
+++ b/server/SpawnScripts/Baubbleshire/Greenlock.lua
@@ -31,7 +31,7 @@ function InitialPause(NPC)
local GatherSpawn = GetSpawn(NPC, 2380178) -- Get Greenlock
math.randomseed(os.time())
- local pause = math.random (1, 4)
+ local pause = MakeRandomInt (1, 4)
if pause == 1 then
AddTimer(NPC, 100, "stop_gathering")
@@ -43,13 +43,13 @@ end
function Gather(NPC)
local GatherSpawn = GetSpawn(NPC, 2380178) -- Get Greenlock
- SpawnSet(NPC, "visual_state", "2809") -- Start gathering
+ PlayFlavor(NPC,"","","gathering_search",0,0)
AddTimer(NPC, 8000, "Collect") -- for 5 seconds, then stop
end
function Collect(NPC)
local GatherSpawn = GetSpawn(NPC, 2380178) -- Get Greenlock
- SpawnSet(NPC, "visual_state", "2810") -- Start gathering
+ PlayFlavor(NPC,"","","gathering_success",0,0)
AddTimer(NPC, 2000, "stop_gathering") -- for 5 seconds, then stop
end
diff --git a/server/SpawnScripts/Baubbleshire/MarshalSurefoot.lua b/server/SpawnScripts/Baubbleshire/MarshalSurefoot.lua
index 64eb11f30..8a3e7f4ac 100755
--- a/server/SpawnScripts/Baubbleshire/MarshalSurefoot.lua
+++ b/server/SpawnScripts/Baubbleshire/MarshalSurefoot.lua
@@ -98,7 +98,8 @@ function hailed(NPC, Spawn)
if GetFactionAmount(Spawn,11)<0 then
PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
else
- Begin(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,500,"Begin",1,Spawn)
end
end
@@ -109,13 +110,13 @@ end
function Begin(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Stand stout! You'd make a fine deputy.")
+ Dialog.AddDialog("Stand stout! You'd make a fine deputy. Unfortunately, we can't handle new recruits. Please move along, adventurer.")
Dialog.AddVoiceover("voiceover/english/marshal_surefoot/qey_village06/marshalsurefoot000.mp3", 3898086374, 2053590783)
PlayFlavor(NPC, "", "", "salute", 0, 0, Spawn)
if GetLevel(Spawn) <= 4 then
Dialog.AddOption("Perhaps I'll be better off getting more experience first.")
end
- if not HasQuest(Spawn, FIGHT_THE_FORGOTTEN_GUARDIANS) and not HasCompletedQuest(Spawn, FIGHT_THE_FORGOTTEN_GUARDIANS) and GetLevel(Spawn) >= 5 then
+ if CanReceiveQuest(Spawn, FIGHT_THE_FORGOTTEN_GUARDIANS) and GetLevel(Spawn) >= 5 then
Dialog.AddOption("Do deputies get paid well?", "PaidWell")
end
if HasQuest(Spawn, FIGHT_THE_FORGOTTEN_GUARDIANS) and GetQuestStep(Spawn, FIGHT_THE_FORGOTTEN_GUARDIANS) == 2 then
diff --git a/server/SpawnScripts/Baubbleshire/MuginSplitshin.lua b/server/SpawnScripts/Baubbleshire/MuginSplitshin.lua
index 56d31ff53..eb03ff230 100755
--- a/server/SpawnScripts/Baubbleshire/MuginSplitshin.lua
+++ b/server/SpawnScripts/Baubbleshire/MuginSplitshin.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function InRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Baubbleshire/PeonaToughins.lua b/server/SpawnScripts/Baubbleshire/PeonaToughins.lua
index 2dc2c7bc9..f45b1db15 100755
--- a/server/SpawnScripts/Baubbleshire/PeonaToughins.lua
+++ b/server/SpawnScripts/Baubbleshire/PeonaToughins.lua
@@ -12,6 +12,7 @@ local HalfPint = 5448
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Baubbleshire/RalaEurocarry.lua b/server/SpawnScripts/Baubbleshire/RalaEurocarry.lua
index f7d027189..0e516422c 100755
--- a/server/SpawnScripts/Baubbleshire/RalaEurocarry.lua
+++ b/server/SpawnScripts/Baubbleshire/RalaEurocarry.lua
@@ -3,7 +3,7 @@
Script Purpose : Rala Eurocarry
Script Author : Scatman
Script Date : 2009.09.27
- Script Notes :
+ Script Notes : Updated 1/22/2023 Dorbin
--]]
require "SpawnScripts/Generic/DialogModule"
dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
@@ -26,12 +26,15 @@ function hailed(NPC, Spawn)
conversation = CreateConversation()
GenericHail(NPC, Spawn)
- if not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
AddConversationOption(conversation, "No, not at the moment.")
StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
else
- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in Qeynos Harbor. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
end
@@ -39,11 +42,21 @@ end
function dlg_39_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
- -- artisan essentials volume 2
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
- AddConversationOption(conversation, "I will start on that now.", "dlg_39_2")
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
end
function Dialog1(NPC,Spawn)
@@ -77,7 +90,7 @@ function CanDo2(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other players. A very handy connection, indeed!")
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
Dialog.AddOption("Thank you for all the information!")
if GetTradeskillLevel(Spawn)<2 then
Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
diff --git a/server/SpawnScripts/Baubbleshire/RebikSprocketrock.lua b/server/SpawnScripts/Baubbleshire/RebikSprocketrock.lua
index ad2107ae0..54e7ce806 100755
--- a/server/SpawnScripts/Baubbleshire/RebikSprocketrock.lua
+++ b/server/SpawnScripts/Baubbleshire/RebikSprocketrock.lua
@@ -8,6 +8,7 @@
local Acidic = 5449
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Baubbleshire/TinkererSpindlecog.lua b/server/SpawnScripts/Baubbleshire/TinkererSpindlecog.lua
index 445af897c..f54409fb3 100755
--- a/server/SpawnScripts/Baubbleshire/TinkererSpindlecog.lua
+++ b/server/SpawnScripts/Baubbleshire/TinkererSpindlecog.lua
@@ -13,6 +13,7 @@ local SpindleCogQuest = 5447
function spawn(NPC)
ProvidesQuest(NPC, SpindleCogQuest)
conversation = CreateConversation()
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Baubbleshire/Wazzleburn.lua b/server/SpawnScripts/Baubbleshire/Wazzleburn.lua
index eca1935d0..0dbdcde22 100755
--- a/server/SpawnScripts/Baubbleshire/Wazzleburn.lua
+++ b/server/SpawnScripts/Baubbleshire/Wazzleburn.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Baubbleshire/YolaSindlefop.lua b/server/SpawnScripts/Baubbleshire/YolaSindlefop.lua
index 592c68f71..c08b3ca08 100755
--- a/server/SpawnScripts/Baubbleshire/YolaSindlefop.lua
+++ b/server/SpawnScripts/Baubbleshire/YolaSindlefop.lua
@@ -42,5 +42,6 @@ function HandOver(NPC, Spawn)
PlayFlavor(NPC, "", "", "thank", 0, 0, Spawn)
Dialog.AddOption("Enjoy.")
Dialog.Start()
+ PlayFlavor(NPC, "", "", "sit_exit", 0, 0, Spawn)
end
diff --git a/server/SpawnScripts/Baubbleshire/ZipiffClamorclang.lua b/server/SpawnScripts/Baubbleshire/ZipiffClamorclang.lua
index 1ae92723e..e1610a84a 100755
--- a/server/SpawnScripts/Baubbleshire/ZipiffClamorclang.lua
+++ b/server/SpawnScripts/Baubbleshire/ZipiffClamorclang.lua
@@ -11,6 +11,7 @@ local Delivery = 5446
local Mage1 = 5767
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
end
function respawn(NPC)
@@ -30,9 +31,9 @@ else
Dialog.AddOption("I'm checking on Lolla Cotgrove's kegs.", "TheOrder")
Dialog.AddOptionRequirement(REQ_QUEST_ON_STEP, Delivery , 1)
- Dialog.AddOption("The Magister suggested I asked you about what you use your sorcery for.", "TheOrder")
- Dialog.AddOptionRequirement(REQ_QUEST_ON_STEP, Mage1 , 4)
-
+ if GetQuestStep(Spawn,Mage1) >=3 and GetQuestStep(Spawn,Mage1) <=5 then
+ Dialog.AddOption("The Magister suggested I asked you about what you use your sorcery for.", "Sorcery1")
+ end
Dialog.AddOption("I think I'll move back. It sounds like I really don't want to crimp a cog. ")
Dialog.Start()
diff --git a/server/SpawnScripts/Baubbleshire/aduck.lua b/server/SpawnScripts/Baubbleshire/aduck.lua
index c7dbd4e96..2897d06e7 100755
--- a/server/SpawnScripts/Baubbleshire/aduck.lua
+++ b/server/SpawnScripts/Baubbleshire/aduck.lua
@@ -10,9 +10,6 @@ function spawn(NPC)
waypoints(NPC)
end
-function hailed(NPC, Spawn)
-end
-
function respawn(NPC)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Baubbleshire/invisiblecube1.lua b/server/SpawnScripts/Baubbleshire/invisiblecube1.lua
new file mode 100755
index 000000000..3b9981ff9
--- /dev/null
+++ b/server/SpawnScripts/Baubbleshire/invisiblecube1.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/Baubbleshire/invisiblecube1.lua
+ Script Author : Dorbin
+ Script Date : 2023.03.16 06:03:00
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 12, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+ --QUEST CHECK, CHECKS EACH RACE SUBURB
+
+ if GetFactionAmount(Spawn,11)>-1 then
+
+ if not HasQuest(Spawn,5760) and not HasCompletedQuest(Spawn, 5760) and
+ not HasQuest(Spawn,5761) and not HasCompletedQuest(Spawn, 5761) and
+ not HasQuest(Spawn,5762) and not HasCompletedQuest(Spawn, 5762) and
+ not HasQuest(Spawn,5763) and not HasCompletedQuest(Spawn, 5763) and
+ not HasQuest(Spawn,5764) and not HasCompletedQuest(Spawn, 5764) and
+ not HasQuest(Spawn,5765) and not HasCompletedQuest(Spawn, 5765) and
+ --QUEST CHECK FOR ISLE OF REFUGE QUEST AND OFFERED QUEST
+ not HasQuest(Spawn, 5717) and not HasQuest(Spawn, 5792) then
+ OfferQuest(NPC,Spawn,5792)
+ conversation = CreateConversation()
+ PlayFlavor(Spawn, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_9.mp3", "", "", 2292019727, 2112049669, Spawn)
+ AddConversationOption(conversation, " ")
+ StartDialogConversation(conversation, 1, NPC, Spawn, "The voice of Queen Antonia Bayle enters your mind as you step forward... \n\n\"Prepare yourself. When you enter the city gates, you accept the challenge of citizenship.\"")
+ end
+
+ end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Baubbleshire/invisiblecube2.lua b/server/SpawnScripts/Baubbleshire/invisiblecube2.lua
new file mode 100755
index 000000000..943be5303
--- /dev/null
+++ b/server/SpawnScripts/Baubbleshire/invisiblecube2.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/Baubbleshire/invisiblecube2.lua
+ Script Author : Dorbin
+ Script Date : 2023.03.16 07:03:26
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+ if GetFactionAmount(Spawn,11)>-1 then
+ --QUEST CHECK, CHECKS EACH RACE SUBURB
+ if not HasQuest(Spawn,5760) and not HasCompletedQuest(Spawn, 5760) and
+ not HasQuest(Spawn,5761) and not HasCompletedQuest(Spawn, 5761) and
+ not HasQuest(Spawn,5762) and not HasCompletedQuest(Spawn, 5762) and
+ not HasQuest(Spawn,5763) and not HasCompletedQuest(Spawn, 5763) and
+ not HasQuest(Spawn,5764) and not HasCompletedQuest(Spawn, 5764) and
+ not HasQuest(Spawn,5765) and not HasCompletedQuest(Spawn, 5765) and
+ --QUEST CHECK FOR ISLE OF REFUGE QUEST AND OFFERED QUEST
+ not HasQuest(Spawn, 5717) and not HasQuest(Spawn, 5792) then
+ OfferQuest(NPC,Spawn,5792)
+ conversation = CreateConversation()
+ PlayFlavor(Spawn, "voiceover/english/queen_antonia_bayle/qey_north/antonia_isle_speech_10.mp3", "", "", 1463066361, 618547599, Spawn)
+ AddConversationOption(conversation, " ")
+ StartDialogConversation(conversation, 1, NPC, Spawn, "The voice of Queen Antonia Bayle enters your mind as you step forward... \n\n\"All who yearn to fully participate in the center of Qeynos must first prove themselves.\"")
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Baubbleshire/toqeycitizenshiptrial.lua b/server/SpawnScripts/Baubbleshire/toqeycitizenshiptrial.lua
index 09417f164..83dd140f6 100755
--- a/server/SpawnScripts/Baubbleshire/toqeycitizenshiptrial.lua
+++ b/server/SpawnScripts/Baubbleshire/toqeycitizenshiptrial.lua
@@ -33,7 +33,7 @@ function casted_on(NPC, Spawn,SpellName)
local con = CreateConversation()
AddConversationOption(con, "Yes", "Leave")
AddConversationOption(con, "No","CloseConversation")
- StartDialogConversation(con, 1, NPC, Player, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
end
end
end
diff --git a/server/SpawnScripts/Baubbleshire/zonetoqeyelddar.lua b/server/SpawnScripts/Baubbleshire/zonetoqeyelddar.lua
index c042adc2e..3a490e31e 100755
--- a/server/SpawnScripts/Baubbleshire/zonetoqeyelddar.lua
+++ b/server/SpawnScripts/Baubbleshire/zonetoqeyelddar.lua
@@ -6,16 +6,33 @@
:
--]]
-function spawn(NPC)
- SetRequiredQuest(NPC,5718,14,0,1,1)
- SetRequiredQuest(NPC,5719,14,0,1,1)
- SetRequiredQuest(NPC,5720,14,0,1,1)
- SetRequiredQuest(NPC,5721,14,0,1,1)
- SetRequiredQuest(NPC,5722,14,0,1,1)
- SetRequiredQuest(NPC,5723,14,0,1,1)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter The Elddar Grove' then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723)
+ and GetFactionAmount(Spawn,11)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5760) and GetQuestStep(Spawn,5760)==10 then
+ SetStepComplete(Spawn,5760,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only citizens may enter the city of Qeynos.",255,50,50)
+ SendMessage(Spawn,"Only citizens may enter the city of Qeynos.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,11) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("ElddarGrove")
+ Zone(ZoneRef,Spawn,813.345, -20, -529.326, 60)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/AnreanVelvinna.lua b/server/SpawnScripts/BeggarsCourt/AnreanVelvinna.lua
index baaf72037..c60d9c492 100755
--- a/server/SpawnScripts/BeggarsCourt/AnreanVelvinna.lua
+++ b/server/SpawnScripts/BeggarsCourt/AnreanVelvinna.lua
@@ -8,6 +8,8 @@
require "SpawnScripts/Generic/DialogModule"
+local quest = 480
+
function spawn(NPC)
end
@@ -16,15 +18,18 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- Dialog4(NPC, Spawn)
+ Dialog1(NPC, Spawn)
end
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("You took your sweet time getting back to me! But I see you didn't damage it too badly, so I suppose you deserve a reward. It's more than adequate compensation; I assure you. Good day.")
- Dialog.AddVoiceover("voiceover/english/optional5/anrean_velvinna/fprt_hood04/quests/anreanvelvinna/stolenchest_anreanvelvinna_x1_initial1.mp3", 624254019, 390284454)
- Dialog.AddOption("Thanks. Good bye.")
+ Dialog.AddDialog("You can almost see the Temple of War from up here. Some day I will walk through those halls.")
+ Dialog.AddVoiceover("voiceover/english/optional5/anrean_velvinna/fprt_hood04/std_anrean_velvinna.mp3", 2790550041, 3876548447)
+ if GetQuestStep(Spawn,quest)==2 then
+ Dialog.AddOption("I recovered your stolen property.", "Dialog2")
+ end
+ Dialog.AddOption("Sure you will.")
Dialog.Start()
end
@@ -33,27 +38,23 @@ function Dialog2(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Well, it's about time someone recovered it! I was beginning to think that no one would face the Darkblades for me.")
Dialog.AddVoiceover("voiceover/english/optional5/anrean_velvinna/fprt_hood04/quests/anreanvelvinna/stolenchest_anreanvelvinna_x1_initial.mp3", 3706216301, 2084378968)
- Dialog.AddOption("I was more than willing to slay the Darkblades on your behalf.")
- Dialog.AddOption("I've recovered your property. My timing should not be in question.", "Dialog1")
+ Dialog.AddOption("I was more than willing to slay the Darkblades on your behalf.", "Dialog3")
+ Dialog.AddOption("I've recovered your property. My timing should not be in question.", "Dialog3")
Dialog.Start()
end
function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("You can almost see the Temple of War from up here. Some day I will walk through those halls.")
- Dialog.AddVoiceover("voiceover/english/optional5/anrean_velvinna/fprt_hood04/std_anrean_velvinna.mp3", 2790550041, 3876548447)
- Dialog.AddOption("Sure you will.")
- Dialog.AddOption("I recovered your stolen property.", "Dialog2")
+ Dialog.AddDialog("You took your sweet time getting back to me! But I see you didn't damage it too badly, so I suppose you deserve a reward. It's more than adequate compensation; I assure you. Good day.")
+ Dialog.AddVoiceover("voiceover/english/optional5/anrean_velvinna/fprt_hood04/quests/anreanvelvinna/stolenchest_anreanvelvinna_x1_initial1.mp3", 624254019, 390284454)
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
+ Dialog.AddOption("Thanks. Good bye.")
Dialog.Start()
+ SetStepComplete(Spawn,quest,2)
end
-function Dialog4(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("You can almost see the Temple of War from up here. Some day I will walk through those halls.")
- Dialog.AddVoiceover("voiceover/english/optional5/anrean_velvinna/fprt_hood04/std_anrean_velvinna.mp3", 2790550041, 3876548447)
- Dialog.AddOption("Sure you will.")
- Dialog.Start()
-end
+
+
+
diff --git a/server/SpawnScripts/BeggarsCourt/AntiusVedrix.lua b/server/SpawnScripts/BeggarsCourt/AntiusVedrix.lua
index a779f75bd..2ba89ec34 100755
--- a/server/SpawnScripts/BeggarsCourt/AntiusVedrix.lua
+++ b/server/SpawnScripts/BeggarsCourt/AntiusVedrix.lua
@@ -1,15 +1,48 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/AntiusVedrix.lua
Script Purpose : Antius Vedrix
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.15
Script Notes :
--]]
-
+require "SpawnScripts/Generic/DialogModule"
local AntiusPackage = 5651
function spawn(NPC)
ProvidesQuest(NPC, AntiusPackage)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if CanReceiveQuest(Spawn, AntiusPackage) then
+
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/antius_vedrix/fprt_hood04/100_std_antius_vedrix_hum_m_callout_ad73c4ec.mp3", "Halt, traveler! What brings you to Beggar's Court?", "", 2768553746, 584609282, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true"then
+ PlayFlavor(NPC, "voiceover/english/antius_vedrix/fprt_hood04/100_std_antius_vedrix_hum_m_multhail1_cd2636f5.mp3", "Who are you? You're not the new guy! Get out of here!", "stare", 3883094832, 1572266881, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ end
+ end
+ else
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn, 0)
+end
+end
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
end
function respawn(NPC)
@@ -17,19 +50,80 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, AntiusPackage) and not HasCompletedQuest(Spawn, AntiusPackage) then
- OfferQuest(NPC, Spawn, AntiusPackage)
- end
- if GetQuestStep(Spawn, AntiusPackage) == 2 then
- SetStepComplete(Spawn, AntiusPackage, 2)
- end
- RandomGreeting(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif GetQuestStep(Spawn, AntiusPackage)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","Hmmm ... maybe you're not the new guy. You did have the password, but you didn't deliver Mirini's package. Deliver it now, or I'll have you arrested!","glare",0,0, Spawn)
+else
+ Dialog1(NPC, Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+function Offer(NPC, Spawn)
+ OfferQuest(NPC, Spawn, AntiusPackage)
+end
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/antius_vedrix/fprt_hood04/100_std_antius_vedrix_hum_m_multhail1_cd2636f5.mp3", "Who are you? You're not the new guy! Get out of here!", "", 3883094832, 1572266881, Spawn, 0)
- end
-end
\ No newline at end of file
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're the new guy, eh? You don't look like someone they'd send.")
+ Dialog.AddVoiceover("voiceover/english/antius_vedrix/fprt_hood04/std_antius_vedrix.mp3", 3589010304, 1953824103)
+ if CanReceiveQuest(Spawn,AntiusPackage) then
+ Dialog.AddOption("I could break your face just for looking at me, fool!", "DialogFail")
+ Dialog.AddOption("[Lie] Looks can be deceiving... What is going on?", "Dialog2")
+ Dialog.AddOption("What are you going on about?", "Dialog2")
+ Dialog.AddOption("I'm not. Bye.")
+
+ elseif GetQuestStep(Spawn,AntiusPackage) ==2 then
+ Dialog.AddOption("Mirin said that it's getting bigger and that he needs more hooks. WHAT IS GOING ON?!", "Dialog3")
+ else
+ Dialog.AddOption("Nope. Not today.")
+ end
+ Dialog.Start()
+end
+
+function DialogFail(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Who are you? You're not the new guy! Get out of here!")
+ Dialog.AddVoiceover("voiceover/english/antius_vedrix/fprt_hood04/100_std_antius_vedrix_hum_m_multhail1_cd2636f5.mp3", 3883094832, 1572266881)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+ Dialog.AddOption("...")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good, good, you know the password. All right, so you are the new guy. Okay, I tied up the package nice and tight like Mirini wanted ... it even has flowers on it. Go ahead, do your thing, and make sure Mirini gets it!")
+ Dialog.AddVoiceover("voiceover/english/antius_vedrix/fprt_hood04/quests/antiusvedrix/antius_x1_initial.mp3", 3222236480, 2970401654)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn, 0)
+ Dialog.AddOption("No, really. What is going on here!?", "Offer")
+ Dialog.AddOption("This whole thing is a mixup. I'm leaving!")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Haha! Good one, sir, good one. Okay, I'll set up the hooks. It was an honor working with you. Here's the payment as promised. Every coin is there.")
+ Dialog.AddVoiceover("voiceover/english/antius_vedrix/fprt_hood04/quests/antiusvedrix/antius_x1_finish.mp3", 90111985, 3240949963)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn, 0)
+ Dialog.AddOption("Thanks...")
+ Dialog.AddOption("[Lie] Thanks.")
+ Dialog.AddOption("I still have no idea what is happening...")
+ Dialog.Start()
+ SetStepComplete(Spawn,AntiusPackage,2)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+
+
+
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/Aquila.lua b/server/SpawnScripts/BeggarsCourt/Aquila.lua
index 863d97d2c..f7b27de8c 100755
--- a/server/SpawnScripts/BeggarsCourt/Aquila.lua
+++ b/server/SpawnScripts/BeggarsCourt/Aquila.lua
@@ -1,11 +1,14 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/Aquila.lua
Script Purpose : Aquila
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes :
--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
function spawn(NPC)
end
@@ -14,7 +17,11 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
end
function RandomGreeting(NPC, Spawn)
diff --git a/server/SpawnScripts/BeggarsCourt/ArmsdealerSilentblade.lua b/server/SpawnScripts/BeggarsCourt/ArmsdealerSilentblade.lua
index 6b8965c72..07a08c571 100755
--- a/server/SpawnScripts/BeggarsCourt/ArmsdealerSilentblade.lua
+++ b/server/SpawnScripts/BeggarsCourt/ArmsdealerSilentblade.lua
@@ -1,10 +1,11 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/ArmsdealerSilentblade.lua
Script Purpose : Armsdealer Silentblade
- Script Author : torsten
+ Script Author : torsten\\Dorbin -- Dialogs added
Script Date : 2022.07.15
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local FreeWaresforSilentblade = 5654
local GetRichQuick = 5655
@@ -19,31 +20,95 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, FreeWaresforSilentblade) and not HasCompletedQuest(Spawn, FreeWaresforSilentblade) then
- OfferQuest(NPC, Spawn, FreeWaresforSilentblade)
- end
- if HasCompletedQuest(Spawn, FreeWaresforSilentblade) then
- if not HasQuest(Spawn, GetRichQuick) and not HasCompletedQuest(Spawn, GetRichQuick) then
- OfferQuest(NPC, Spawn, GetRichQuick)
- end
- end
- if GetQuestStep(Spawn, FreeWaresforSilentblade) == 2 then
- SetStepComplete(Spawn, FreeWaresforSilentblade, 2)
- end
- if GetQuestStep(Spawn, GetRichQuick) == 2 then
- SetStepComplete(Spawn, GetRichQuick, 2)
- end
- RandomGreeting(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You need adventuring gear? Look no further. I got everything you could possibly want.")
+ Dialog.AddVoiceover("voiceover/english/armsdealer_silentblade/fprt_hood04/mer_arms_dealer_silentblade.mp3", 679994876, 2333783393)
+ PlayFlavor(NPC,"","","hello",0,0,Spawn)
+ if CanReceiveQuest(Spawn, FreeWaresforSilentblade) then
+ Dialog.AddOption("Hey, have any tips on making coin?","Dialog1_Quest1")
+ end
+ if GetQuestStep(Spawn, FreeWaresforSilentblade) == 2 then
+ Dialog.AddOption("Here are the maces from the battlepriests.","Dialog3_Quest1")
+ end
+ if CanReceiveQuest(Spawn, GetRichQuick)then
+ Dialog.AddOption("Have any other tricks to make quick coin?","Dialog1_Quest2")
+ end
+ if GetQuestStep(Spawn, GetRichQuick) == 2 then
+ Dialog.AddOption("Blort said he'll soon make a profit.","Dialog2_Quest2")
+ end
+ Dialog.AddOption("I'll take a look.")
+ Dialog.Start()
+end
+
+function Dialog1_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmph...like I'd give you my trade secret, punk. Now go away, you're bothering me.")
+ Dialog.AddVoiceover("voiceover/english/arms_dealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x1_initial.mp3", 1423744061, 732792019)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddOption("You just seemed to know your stuff. I was just curious.","Dialog2_Quest1")
+ Dialog.AddOption("Fine! I didn't want to do buisness anyway.")
+ Dialog.Start()
+end
+
+function Dialog2_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well at least you know a winner when you see one...fine. You can work for me. I'll tell you my trade secret as long as you finish a job for me, understand?")
+ Dialog.AddVoiceover("voiceover/english/arms_dealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x1_initial2.mp3", 1974340371, 3987326918)
+ Dialog.AddOption("Okay. What do you need?","Offer1")
+ Dialog.AddOption("Nope. I wanted answers, not work.")
+ Dialog.Start()
+end
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, FreeWaresforSilentblade)
+end
+
+
+function Dialog3_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn, FreeWaresforSilentblade, 2)
+ Dialog.AddDialog("Good job, kid. Now, here's my secret: Take the maces and soak them in acid for about an hour. The acid will burn off the gunk. After that, apply some paint to the dented spots ... TADA!!! Good as new. Then mark up the price and you're a rich man! Make sure you don't accidentally use the mace on yourself -- those things can kill you. Here's some coin for your time.")
+ Dialog.AddVoiceover("voiceover/english/arms_dealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x1_finish.mp3", 2995073623, 2307732444)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("Well, I suppose that's something...","Continue")
+ Dialog.Start()
+end
+
+function Dialog1_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Didn't I tell you enough secrets? I don't want you stealing my business! But, I do need some help. Since you're here, I'll teach you another valuable trade secret -- if you'll put in some effort. So, are you willing to work, kid?")
+ Dialog.AddVoiceover("voiceover/english/arms_dealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x2_initial.mp3", 0, 0) --NO KEYS
+ Dialog.AddOption("If it helps me make money, sure.","Offer2")
+ Dialog.AddOption("More work? Nope.")
+ Dialog.Start()
+end
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, GetRichQuick)
+end
+
+function Dialog2_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn, GetRichQuick, 2)
+ Dialog.AddDialog("Sure he'll make some cash! Okay, kid, here's your payment. Now, the true secret of a good arms dealer is to not sell weapons to customers, but to sell them to other arms dealers. If you get enough arms dealers under you, you'll be rich. Now, I must get more weapons from my sponsor, so run along, okay? Good luck with your career...")
+ Dialog.AddVoiceover("voiceover/english/arms_dealer_silentblade/fprt_hood04/quests/armsdealersilentblade/silentblade_x2_finish.mp3", 0, 0) --NO KEYS
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Thanks for the tip.")
+ Dialog.Start()
+end
- if choice == 1 then
- PlayFlavor(NPC, "", "Need adventuring gear? Look no further. I've everything you could possibly want.", "", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1022.mp3", 0, 0, Spawn)
- elseif choice == 3 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1022.mp3", 0, 0, Spawn)
- end
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/ArriaFadilla.lua b/server/SpawnScripts/BeggarsCourt/ArriaFadilla.lua
new file mode 100755
index 000000000..5d82e2716
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/ArriaFadilla.lua
@@ -0,0 +1,86 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/ArriaFadilla.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 04:11:38
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
+
+function InRange(NPC,Spawn)
+ GenericRaceCheckCallout(NPC, Spawn)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 50.91, -7.08, 101.7, 2, 1)
+ MovementLoopAddLocation(NPC, 50.91, -7.08, 101.7, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 54.62, -7.08, 97.3, 2, 0)
+ MovementLoopAddLocation(NPC, 57.77, -7.08, 92.14, 2, 0)
+ MovementLoopAddLocation(NPC, 57.36, -7.07, 86.32, 2, 0)
+ MovementLoopAddLocation(NPC, 57.09, -6.61, 84.09, 2, 0)
+ MovementLoopAddLocation(NPC, 53.26, -6.31, 72.98, 2, 0)
+ MovementLoopAddLocation(NPC, 52.59, -7, 69.04, 2, 0)
+ MovementLoopAddLocation(NPC, 50.76, -6.94, 65.11, 2, 0)
+ MovementLoopAddLocation(NPC, 51.52, -7, 54.1, 2, 0)
+ MovementLoopAddLocation(NPC, 54.14, -6.5, 49.72, 2, 1)
+ MovementLoopAddLocation(NPC, 54.14, -6.5, 49.72, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 42.7, -7, 53.16, 2, 0)
+ MovementLoopAddLocation(NPC, 35.28, -7, 54.34, 2, 0)
+ MovementLoopAddLocation(NPC, 16.55, -7, 55.2, 2, 0)
+ MovementLoopAddLocation(NPC, 8.12, -7, 54.22, 2, 0)
+ MovementLoopAddLocation(NPC, 2.35, -7, 50.98, 2, 0)
+ MovementLoopAddLocation(NPC, 1, -6.64, 42.35, 2, 0)
+ MovementLoopAddLocation(NPC, -0.23, -6, 37.28, 2, 0)
+ MovementLoopAddLocation(NPC, -1.03, -6, 33.48, 2, 1)
+ MovementLoopAddLocation(NPC, -1.03, -6, 33.48, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 2.07, -6, 32.62, 2, 0)
+ MovementLoopAddLocation(NPC, 9.72, -5.5, 31.18, 2, 0)
+ MovementLoopAddLocation(NPC, 12.37, -5.5, 32.28, 2, 0)
+ MovementLoopAddLocation(NPC, 15.99, -5.5, 32.38, 2, 0)
+ MovementLoopAddLocation(NPC, 20.59, -5.5, 31.66, 2, 0)
+ MovementLoopAddLocation(NPC, 25.68, -6, 33.46, 2, 0)
+ MovementLoopAddLocation(NPC, 29.49, -5.75, 37.28, 2, 0)
+ MovementLoopAddLocation(NPC, 31.92, -5.5, 37.82, 2, 0)
+ MovementLoopAddLocation(NPC, 33.54, -5.25, 37.01, 2, 0)
+ MovementLoopAddLocation(NPC, 36.7, -5, 35.4, 2, 15)
+ MovementLoopAddLocation(NPC, 38.99, -5, 35.31, 2, 0)
+ MovementLoopAddLocation(NPC, 40.23, -5, 37.18, 2, 0)
+ MovementLoopAddLocation(NPC, 39.25, -5.25, 40.31, 2, 0)
+ MovementLoopAddLocation(NPC, 34.49, -6, 45.11, 2, 0)
+ MovementLoopAddLocation(NPC, 26.32, -7, 56.09, 2, 0)
+ MovementLoopAddLocation(NPC, 20.85, -7, 64.2, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 23.57, -7, 57.06, 2, 0)
+ MovementLoopAddLocation(NPC, 28.69, -7, 53.53, 2, 0)
+ MovementLoopAddLocation(NPC, 39.23, -7, 52.23, 2, 0)
+ MovementLoopAddLocation(NPC, 47.18, -7, 57.08, 2, 0)
+ MovementLoopAddLocation(NPC, 56.63, -6.97, 68.98, 2, 1)
+ MovementLoopAddLocation(NPC, 56.63, -6.97, 68.98, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 55.31, -7, 67.76, 2, 0)
+ MovementLoopAddLocation(NPC, 52.97, -7, 68.62, 2, 0)
+ MovementLoopAddLocation(NPC, 55.09, -6.47, 76.1, 2, 0)
+ MovementLoopAddLocation(NPC, 57.57, -6.53, 82.93, 2, 0)
+ MovementLoopAddLocation(NPC, 58.63, -7.05, 86.71, 2, 0)
+ MovementLoopAddLocation(NPC, 60.11, -7.08, 90.9, 2, 0)
+ MovementLoopAddLocation(NPC, 56.54, -7.08, 95, 2, 0)
+ MovementLoopAddLocation(NPC, 48.89, -7.08, 102.31, 2, 0)
+ MovementLoopAddLocation(NPC, 46.63, -7.08, 111.38, 2, 1)
+ MovementLoopAddLocation(NPC, 46.63, -7.08, 111.38, 2, MakeRandomInt(15,20),"EcologyEmotes")
+end
+
+
diff --git a/server/SpawnScripts/BeggarsCourt/BankerVoranius.lua b/server/SpawnScripts/BeggarsCourt/BankerVoranius.lua
index c489aa37d..86763fd4c 100755
--- a/server/SpawnScripts/BeggarsCourt/BankerVoranius.lua
+++ b/server/SpawnScripts/BeggarsCourt/BankerVoranius.lua
@@ -1,29 +1,112 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/BankerVoranius.lua
Script Purpose : Banker Voranius
- Script Author : John Adams
+ Script Author : John Adams\\Dorbin
Script Date : 2009.04.05
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
local DonationsfromtheBanker = 5657
+require "SpawnScripts/Generic/DialogModule"
+
+local Citizenship = 5861
+
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, DonationsfromtheBanker) == 1 then
- SetStepComplete(Spawn, DonationsfromtheBanker, 1)
- end
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
+ PlayFlavor(NPC, "voiceover/english/banker_quintius_calacicus/fprt_hood1/100_bankerquintiuscalacicus_housing_quest_1_22bf58bf.mp3", "Are you the one opening the new account?", "bye", 1249171681, 483955197, Spawn)
+end
+end
- PlayFlavor(NPC, "voiceover/english/banker_voranius/fprt_hood04/bnk_banker_voranius.mp3", "", "", 2601161199, 994867740, Spawn)
- AddConversationOption(conversation, "Thanks.")
- StartConversation(conversation, NPC, Spawn, "Hello there. Voranius is my name. I can help you with all your banking needs.")
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+elseif HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+Dialog2(NPC, Spawn)
+else
+Dialog1(NPC, Spawn)
+end
+end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello there. Voranius is my name. I can help you with all your banking needs.")
+ Dialog.AddVoiceover("voiceover/english/banker_voranius/fprt_hood04/bnk_banker_voranius.mp3", 2601161199, 994867740)
+ if GetQuestStep(Spawn, DonationsfromtheBanker) == 1 then
+ Dialog.AddOption("The gang is ready for another withdrawl. Do it and you'll avoid any... \"mess\".","Dialog3")
+ end
+ Dialog.AddOption("Thanks.")
+ Dialog.Start()
+
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What in the world are you talking about? I think I'll need to deduct some more -- wait, do you mean Galla's gang? He's asking for more again? I see he's running out of thugs and just using idiots now. Fine, fine, FINE! Here's some money for him. I hope some witch makes his berries rot -- serves him right, I say. Now get out!")
+ Dialog.AddVoiceover("voiceover/english/banker_voranius/fprt_hood04/quests/maniusgalla/banker_manius_x2_initial.mp3", 4218680977, 2049323900)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("Hey!... I'm sure he won't like hearing that.")
+ Dialog.Start()
+ SetStepComplete(Spawn, DonationsfromtheBanker, 1)
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you look like the one Valthun described. Before we can open your account, we need some information from you. What's your name?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval006.mp3", 973761594, 631533180)
+ Dialog.AddOption(""..GetName(Spawn).."","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Occupation?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval007.mp3", 3366909671, 2696654878)
+ Dialog.AddOption("Adventurer","Dialog2b")
+ Dialog.AddOption("Crafter","Dialog2b")
+ if GetRace(Spawn)==6 then
+ Dialog.AddOption("Part-time Adventurer, Part-time Crafter","Dialog2b")
+ elseif GetRace(Spawn)==9 then
+ Dialog.AddOption("Entrepreneur","Dialog2b")
+
+ end
+ Dialog.Start()
+end
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Any surviving relatives, do you ever leave your house unarmed, and are you a deep sleeper?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval008.mp3", 77874907, 3978664262)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No, no, and no.","Dialog2c")
+ Dialog.AddOption("[Lie] No, no, and no.","Dialog2c")
+ Dialog.AddOption("Err... Just... no!","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ SetStepComplete(Spawn, Citizenship,4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How convenient for you. Very well ... we've set aside a place for you within the Freeport Reserve vaults. Feel free to deposit large amounts of coin or valuable artifacts with us anytime. We'll be sure to keep it ... safe. Is there anything else?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval009.mp3", 3196985272, 4183310653)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/BarmaidMelia.lua b/server/SpawnScripts/BeggarsCourt/BarmaidMelia.lua
new file mode 100755
index 000000000..fbcf2d3ea
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/BarmaidMelia.lua
@@ -0,0 +1,138 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/BarmaidMelia.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 05:11:26
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+waypoints(NPC)
+ SetTempVariable(NPC,"BartenderCallout","false")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ local choice = MakeRandomInt(1, 3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_barmaid/ft/eco/evil/human_eco_evil_barmaid_hail_gf_1be602a.mp3", "What will it be? A short beer or ale to get you started?", "tapfoot", 1335469253, 604669752)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_barmaid/ft/eco/evil/human_eco_evil_barmaid_hail_gf_2d4c7e27.mp3", "It's hard to keep folks like you happy around here. If someone's not yelling for more, they're yelling to get a mess cleaned.", "shrug", 1592395791, 2626505941)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_barmaid/ft/eco/evil/human_eco_evil_barmaid_hail_gf_3c0b7748.mp3", "Too many of those refugees pouring in lately, and they almost never tip. I'm ready to complain to the Far Seas that they need to train their castaways better.", "scold", 3617439192, 3468220606)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function BartenderCall(NPC,Spawn)
+ if GetTempVariable(NPC,"BartenderCallout")== "false" and MakeRandomInt(0,100) <=66 then
+ local zone = GetZone(NPC)
+ local Bartender = GetSpawnByLocationID(zone, 402926)
+ SetTempVariable(NPC,"BartenderCallout","true")
+ local choice = MakeRandomInt(1,3)
+ if choice== 1 then
+ SetTarget(Bartender,NPC)
+ FaceTarget(Bartender,NPC)
+ PlayFlavor(Bartender, "voiceover/english/human_eco_evil_bartender/ft/eco/evil/human_eco_evil_bartender_barmaid_gm_fce6ec9a.mp3", "I can't tell this pub from a pigsty. Get to work and clean this mess!", "scold", 1129202055, 4037261409)
+ AddTimer(NPC,1500,"Turn")
+ AddTimer(NPC,4500,"Reset")
+ AddTimer(NPC,6500,"Reset2")
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_bartender/ft/eco/good/human_eco_good_bartender_drunk_gf_a8ee7698.mp3", "I don't have much patience for you today. Watch yourself.", "glare", 3292238371, 2757124824)
+ SetTarget(NPC,Bartender)
+ FaceTarget(NPC,Bartender)
+ AddTimer(NPC,1500,"Turn_2")
+ AddTimer(NPC,4500,"Reset")
+ AddTimer(NPC,6500,"Reset2")
+ elseif choice == 3 then
+ Action(NPC)
+ end
+ else
+ Action(NPC)
+ SetTempVariable(NPC,"BartenderCallout","false")
+end
+end
+
+function Turn(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Bartender = GetSpawnByLocationID(zone, 402926)
+ SetTarget(NPC,Bartender)
+ FaceTarget(NPC,Bartender)
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "grumble", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0)
+ end
+end
+
+ function Turn_2(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Bartender = GetSpawnByLocationID(zone, 402926)
+ SetTarget(Bartender,NPC)
+ FaceTarget(Bartender,NPC)
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ PlayFlavor(Bartender, "", "", "grumble", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(Bartender, "", "", "whome", 0, 0)
+ end
+end
+
+function Reset(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Bartender = GetSpawnByLocationID(zone, 402926)
+ SetTarget(NPC,nil)
+ SetTarget(Bartender,nil)
+end
+
+function Reset2(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Bartender = GetSpawnByLocationID(zone, 402926)
+ SetHeading(Bartender,106)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 3.9, 4.75, -48.17, 2, 0)
+ MovementLoopAddLocation(NPC, 3.99, 4.75, -50.82, 2, 1)
+ MovementLoopAddLocation(NPC, 3.99, 4.75, -50.82, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 3.51, 4.75, -50.43, 2, 0)
+ MovementLoopAddLocation(NPC, 4.13, 4.75, -49.54, 2, 1)
+ MovementLoopAddLocation(NPC, 4.13, 4.75, -49.54, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 4.13, 4.75, -49.54, 2, 0)
+ MovementLoopAddLocation(NPC, 3.81, 4.75, -48.49, 2, 0)
+ MovementLoopAddLocation(NPC, 2.91, 4.75, -46.28, 2, 1)
+ MovementLoopAddLocation(NPC, 2.91, 4.75, -46.28, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 1.85, 4.75, -45.73, 2, 0)
+ MovementLoopAddLocation(NPC, 2.38, 5, -43.5, 2, 0)
+ MovementLoopAddLocation(NPC, 4.62, 5, -41.65, 2, 1)
+ MovementLoopAddLocation(NPC, 4.62, 5, -41.65, 2, 15,"BartenderCall")
+ MovementLoopAddLocation(NPC, 4.62, 5, -41.65, 2, 0)
+ MovementLoopAddLocation(NPC, 3.4, 5, -43.81, 2, 0)
+ MovementLoopAddLocation(NPC, 3.05, 4.75, -45.58, 2, 1)
+ MovementLoopAddLocation(NPC, 3.05, 4.75, -45.58, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 3.62, 4.75, -49.13, 2, 0)
+ MovementLoopAddLocation(NPC, 4.45, 4.75, -51.45, 2, 1)
+ MovementLoopAddLocation(NPC, 4.45, 4.75, -51.45, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 3.53, 4.75, -48.48, 2, 0)
+ MovementLoopAddLocation(NPC, 4, 4.75, -46.28, 2, 1)
+ MovementLoopAddLocation(NPC, 4, 4.75, -46.28, 2, 15,"Action")
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ end
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/Beggars_Court_Wanderers.lua b/server/SpawnScripts/BeggarsCourt/Beggars_Court_Wanderers.lua
index 6f24ab9a8..42711f0df 100755
--- a/server/SpawnScripts/BeggarsCourt/Beggars_Court_Wanderers.lua
+++ b/server/SpawnScripts/BeggarsCourt/Beggars_Court_Wanderers.lua
@@ -1,166 +1,109 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/Beggars_Court_Wanderers.luaBeggars_Court_Wanderers.lua
Script Purpose : Waypoint Path for Beggars_Court_Wanderers.lua
- Script Author : Cynnar
+ Script Author : Cynnar \\ Dorbin
Script Date : 7/8/2018 04:07:20 PM
Script Notes :
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
function spawn(NPC)
- waypoints(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,7)then
+ Garbled(NPC,Spawn)
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
end
-function respawn(NPC)
- spawn(NPC)
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,7)then
+ if math.random(0,100)<40 then
+ Garbled(NPC,Spawn)
+ end
+ else
end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
function waypoints(NPC)
- MovementLoopAddLocation(NPC, 76.51, -7.08, 101.84, 2, 0)
- MovementLoopAddLocation(NPC, 72.4, -7.08, 101.96, 2, 0)
- path = math.random(0, 1)
-
- if path == 1 then
- path_1(NPC)
- else
- path_2(NPC)
- end
- MovementLoopAddLocation(NPC, 62.84, -7.08, 94.95, 2, 0)
- MovementLoopAddLocation(NPC, 58.33, -7.05, 86.02, 2, 0)
- MovementLoopAddLocation(NPC, 57.45, -6.58, 83.55, 2, 0, "ChangeGrid_1")
- MovementLoopAddLocation(NPC, 55.85, -6.5, 79.19, 2, 0)
- MovementLoopAddLocation(NPC, 52.89, -6.99, 69.56, 2, 0, "ChangeGrid_2")
- MovementLoopAddLocation(NPC, 51.17, -6.95, 62.54, 2, 0)
- MovementLoopAddLocation(NPC, 45.78, -7, 55.28, 2,0)
- MovementLoopAddLocation(NPC, 41.8, -7, 51.68, 2, 3)
- path = math.random(0, 1)
-
- if path == 1 then
- path_1_A(NPC)
- end
- MovementLoopAddLocation(NPC, 42.64, -5, 40.87, 2, 3)
- MovementLoopAddLocation(NPC, 43.89, -5, 40.21, 2, 3)
- MovementLoopAddLocation(NPC, 27.27, -6, 40.12, 2, 3)
- MovementLoopAddLocation(NPC, 24.88, -6, 34.74, 2, 3)
- MovementLoopAddLocation(NPC, 16.71, -5.75, 34.48, 2, 3)
- MovementLoopAddLocation(NPC, 13.11, -6, 36.49, 2, 3)
- MovementLoopAddLocation(NPC, 14.42, -6, 40.24, 2, 3)
- MovementLoopAddLocation(NPC, 11.33, -6.25, 43.25, 2, 3)
- MovementLoopAddLocation(NPC, -6.66, -6, 35.16, 2, 3)
- MovementLoopAddLocation(NPC, -7.45, -6, 33.4, 2, 3)
- MovementLoopAddLocation(NPC, -7.41, -6, 33.09, 2, 3)
- MovementLoopAddLocation(NPC, -11.25, -6, 30.03, 2, 3)
- MovementLoopAddLocation(NPC, -13.45, -6, 23.67, 2, 3)
- MovementLoopAddLocation(NPC, -11.78, -5.1, 16.14, 2, 3)
- MovementLoopAddLocation(NPC, -16.93, -5, 12.21, 2, 3)
- MovementLoopAddLocation(NPC, -20.48, -3.96, 9.01, 2, 3)
- MovementLoopAddLocation(NPC, -28.12, -0.75, 5.29, 2, 3)
- MovementLoopAddLocation(NPC, -26.82, -0.76, 2.13, 2, 3)
- MovementLoopAddLocation(NPC, -19.68, 1.82, 4.93, 2, 3)
- MovementLoopAddLocation(NPC, -17.61, 2, 0.15, 2, 3)
- MovementLoopAddLocation(NPC, -19.44, 2, -2.54, 2, 3)
- MovementLoopAddLocation(NPC, -15.69, 2.09, -6.11, 2, 3)
- MovementLoopAddLocation(NPC, -15.05, 3.75, -28.85, 2, 3)
- MovementLoopAddLocation(NPC, -12.61, 4, -34.72, 2, 3)
- MovementLoopAddLocation(NPC, -14.26, 4, -37.55, 2, 3)
- MovementLoopAddLocation(NPC, -8.02, 3, -36.51, 2, 3)
- MovementLoopAddLocation(NPC, -5.93, 3.75, -37.63, 2, 3)
- MovementLoopAddLocation(NPC, -4.4, 4.44, -39.8, 2, 3)
- MovementLoopAddLocation(NPC, 0.06, 5, -38.61, 2, 3)
- MovementLoopAddLocation(NPC, -0.62, 5, -37.87, 2, 3)
- MovementLoopAddLocation(NPC, -1.49, 5, -34.88, 2, 3)
- MovementLoopAddLocation(NPC, 5.47, 4.75, -28.55, 2, 3)
- MovementLoopAddLocation(NPC, 12.6, 4.75, -27.41, 2, 3)
- MovementLoopAddLocation(NPC, 20.15, 5.25, -32.81, 2, 3)
- MovementLoopAddLocation(NPC, 21.55, 5.25, -31.33, 2, 3)
- MovementLoopAddLocation(NPC, 19.59, 5.03, -28.83, 2, 3)
- MovementLoopAddLocation(NPC, 19.96, 5, -23.39, 2, 3)
- MovementLoopAddLocation(NPC, 26.94, 5.25, -20.26, 2, 3)
- MovementLoopAddLocation(NPC, 23.5, 5.25, -14.64, 2, 3)
- MovementLoopAddLocation(NPC, 31.51, 5.25, -11.6, 2, 3)
- MovementLoopAddLocation(NPC, 42.69, 5.25, -15.26, 2, 3)
- MovementLoopAddLocation(NPC, 52.8, 5, -21.17, 2, 3)
- MovementLoopAddLocation(NPC, 58.2, 5.01, -23.22, 2, 3)
- MovementLoopAddLocation(NPC, 53.74, 5, -15.59, 2, 3)
- MovementLoopAddLocation(NPC, 45.41, 3.67, -8.05, 2, 3)
- MovementLoopAddLocation(NPC, 43.38, 3.5, -5.24, 2, 3)
- MovementLoopAddLocation(NPC, 30.73, 3.83, -2.81, 2, 3)
- MovementLoopAddLocation(NPC, 17.58, 3.5, -3.76, 2, 3)
- MovementLoopAddLocation(NPC, 10.47, 3.5, -5.34, 2, 3)
- MovementLoopAddLocation(NPC, 10.93, 3.5, -1.67, 2, 3)
- MovementLoopAddLocation(NPC, 20.03, 3.5, 6.08, 2, 3)
- MovementLoopAddLocation(NPC, 27.67, 2, 15.87, 2, 3)
- MovementLoopAddLocation(NPC, 20.5, 2.08, 17.41, 2, 3)
- MovementLoopAddLocation(NPC, 20.81, 2.98, 20.05, 2, 3)
- MovementLoopAddLocation(NPC, 20.64, 2, 19.12, 2, 3)
- MovementLoopAddLocation(NPC, 34, 2, 14.51, 2, 3)
- MovementLoopAddLocation(NPC, 43.07, 2, 16.15, 2, 3)
- MovementLoopAddLocation(NPC, 48.67, 2, 17.8, 2, 3)
- MovementLoopAddLocation(NPC, 49.89, 2, 22.67, 2, 3)
- MovementLoopAddLocation(NPC, 49.77, 1.9, 24.77, 2, 3)
- MovementLoopAddLocation(NPC, 46.84, 1.27, 25.5, 2, 3)
- MovementLoopAddLocation(NPC, 32.56, -5, 23.54, 2, 3)
- MovementLoopAddLocation(NPC, 31.55, -5, 27.34, 2, 3)
- MovementLoopAddLocation(NPC, 40.3, -5, 36.87, 2, 3)
- MovementLoopAddLocation(NPC, 41.7, -6, 45.4, 2, 3)
- MovementLoopAddLocation(NPC, 47.45, -7, 56.29, 2, 3)
- MovementLoopAddLocation(NPC, 57.56, -6.97, 62.99, 2, 3, "depop")
+ MovementLoopAddLocation(NPC, -2.22, 4.25, -52.19, 2, 0)
+ MovementLoopAddLocation(NPC, 1.12, 4.75, -50.66, 2, 1)
+ MovementLoopAddLocation(NPC, 1.12, 4.75, -50.66, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 1.12, 4.75, -50.66, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 1.12, 4.75, -50.66, 2, 0)
+ MovementLoopAddLocation(NPC, -0.95, 4.62, -48.96, 2, 0)
+ MovementLoopAddLocation(NPC, -3.03, 4.25, -48.47, 2, 0)
+ MovementLoopAddLocation(NPC, -5.82, 4, -46.53, 2, 0)
+ MovementLoopAddLocation(NPC, -5.96, 4, -40.98, 2, 0)
+ MovementLoopAddLocation(NPC, -6.91, 3.49, -37.73, 2, 0)
+ MovementLoopAddLocation(NPC, -7.05, 3, -33.77, 2, 0)
+ MovementLoopAddLocation(NPC, -5.73, 3, -28.01, 2, 0)
+ MovementLoopAddLocation(NPC, -2.71, 3.5, -25.03, 2, 0)
+ MovementLoopAddLocation(NPC, -0.28, 4, -25.22, 2, 0)
+ MovementLoopAddLocation(NPC, 4.83, 4.25, -21.53, 2, 0)
+ MovementLoopAddLocation(NPC, 7.08, 4.25, -19.58, 2, 0)
+ MovementLoopAddLocation(NPC, 11.47, 4.25, -18.33, 2, 0)
+ MovementLoopAddLocation(NPC, 12.02, 4, -15.98, 2, 0)
+ MovementLoopAddLocation(NPC, 8.59, 3.5, -5.93, 2, 1)
+ MovementLoopAddLocation(NPC, 8.59, 3.5, -5.93, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 8.59, 3.5, -5.93, 2, 0)
+ MovementLoopAddLocation(NPC, 8.13, 3.5, -1.38, 2, 0)
+ MovementLoopAddLocation(NPC, 7.68, 3.5, 0.65, 2, 0)
+ MovementLoopAddLocation(NPC, 9.9, 3.5, 1.93, 2, 1)
+ MovementLoopAddLocation(NPC, 9.9, 3.5, 1.93, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 9.5, 3.5, 1.43, 2, 0)
+ MovementLoopAddLocation(NPC, 7.69, 3.5, 0.3, 2, 0)
+ MovementLoopAddLocation(NPC, 3.2, 3.5, -3.73, 2, 0)
+ MovementLoopAddLocation(NPC, -0.57, 3.5, -9.73, 2, 0)
+ MovementLoopAddLocation(NPC, -0.02, 3.5, -14.56, 2, 1)
+ MovementLoopAddLocation(NPC, -0.02, 3.5, -14.56, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -1.46, 3.5, -15.43, 2, 1)
+ MovementLoopAddLocation(NPC, -1.46, 3.5, -15.43, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -1.08, 3.5, -19.37, 2, 0)
+ MovementLoopAddLocation(NPC, -4.98, 3.39, -21.98, 2, 0)
+ MovementLoopAddLocation(NPC, -7.68, 3, -25.86, 2, 0)
+ MovementLoopAddLocation(NPC, -4.99, 4, -38.14, 2, 0)
+ MovementLoopAddLocation(NPC, -6.17, 4, -44.67, 2, 0)
+ MovementLoopAddLocation(NPC, -6.68, 4, -49.76, 2, 0)
end
-function depop(NPC)
- Despawn(NPC)
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
end
-function ChangeGrid_1(NPC)
- SetGridID(NPC, 4022248764)
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ else
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
end
-function ChangeGrid_2(NPC)
- SetGridID(NPC, 2799241780)
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
-function path_1(NPC)
- MovementLoopAddLocation(NPC, 69.32, -7.08, 108.95, 2, 3)
- MovementLoopAddLocation(NPC, 64.66, -7.08, 109.92, 2, 3)
- MovementLoopAddLocation(NPC, 62.35, -7.08, 109.55, 2, 0)
- MovementLoopAddLocation(NPC, 59.48, -7.08, 109.09, 2, 0)
- MovementLoopAddLocation(NPC, 58.84, -7.08, 107.72, 2, 0)
- MovementLoopAddLocation(NPC, 57.73, -7.08, 105.35, 2, 0)
- MovementLoopAddLocation(NPC, 57.57, -7.08, 101.5, 2, 0)
- MovementLoopAddLocation(NPC, 58.9, -7.08, 98.79, 2, 0)
-end
-
-function path_2(NPC)
- MovementLoopAddLocation(NPC, 68.09, -7.08, 97.75, 2, 0)
-end
-
-function path_1_A(NPC)
- MovementLoopAddLocation(NPC, 25, -7, 56.25, 2, 0)
- MovementLoopAddLocation(NPC, 17.17, -7, 58.82, 2, 0)
- MovementLoopAddLocation(NPC, 16.53, -0.75, 72.89, 2, 0)
- MovementLoopAddLocation(NPC, 13.47, -0.12, 75.39, 2, 0)
- MovementLoopAddLocation(NPC, 10.45, -0.05, 76.46, 2, 0)
- MovementLoopAddLocation(NPC, 10.46, 0.01, 77.78, 2, 0)
- MovementLoopAddLocation(NPC, 10.55, -0.05, 76.39, 2, 0)
- MovementLoopAddLocation(NPC, 6.8, -1.93, 70.46, 2, 0)
- MovementLoopAddLocation(NPC, 7.41, -7, 59.23, 2, 0)
- MovementLoopAddLocation(NPC, 2.35, -7, 59.67, 2, 0)
- MovementLoopAddLocation(NPC, -6.62, -7, 58.65, 2, 0)
- MovementLoopAddLocation(NPC, -15.4, -7, 58.49, 2, 0)
- MovementLoopAddLocation(NPC, -20.39, -7, 59.96, 2, 0)
- MovementLoopAddLocation(NPC, -23.43, -7, 58.81, 2, 0)
- MovementLoopAddLocation(NPC, -23.03, -7, 60.95, 2, 0)
- MovementLoopAddLocation(NPC, -23.37, -7, 63.33, 2, 0)
- MovementLoopAddLocation(NPC, -21.73, -7, 66.38, 2, 0)
- MovementLoopAddLocation(NPC, -20.28, -7, 64.77, 2, 0)
- MovementLoopAddLocation(NPC, -15.87, -7, 56.06, 2, 0)
- MovementLoopAddLocation(NPC, -11.31, -7, 57.61, 2, 0)
- MovementLoopAddLocation(NPC, -9.91, -7, 46.9, 2, 0)
- MovementLoopAddLocation(NPC, -10.81, -7, 40.38, 2, 0)
- MovementLoopAddLocation(NPC, -27.28, -6.5, 30.38, 2, 0)
- MovementLoopAddLocation(NPC, -31.12, -5.75, 25.53, 2, 0)
- MovementLoopAddLocation(NPC, -34.9, -5.75, 25, 2, 0)
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/BowyerCinre.lua b/server/SpawnScripts/BeggarsCourt/BowyerCinre.lua
new file mode 100755
index 000000000..4eb9204f6
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/BowyerCinre.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/BowyerCinre.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.30 04:11:09
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/weaponsmith/human_weaponsmith_service_evil_1_aoi_gf_e5231875.mp3", "Don't be caught defenseless when your enemies strike. See our stock of weapons, before it's too late!", "beckon", 309302899, 2401241224, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/weaponsmith/human_weaponsmith_service_evil_1_hail_gf_febc50f4.mp3", "We have a nice selection of previously owned weapons for those with modest funds.", "snicker", 371686597, 174492048, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/weaponsmith/human_weaponsmith_service_evil_1_hail_gf_fa46b6f6.mp3", "Is there a specific way you're looking to kill someone? Disemboweling, beheading, impaling, strangulation? ", "shrug", 501792161, 2107655376, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/weaponsmith/human_weaponsmith_service_evil_1_hail_gf_9d2ef5c4.mp3", "A good weapon at your side is the only real friend you'll ever have!", "agree", 3419843926, 3349211138, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/BrianNichols.lua b/server/SpawnScripts/BeggarsCourt/BrianNichols.lua
new file mode 100755
index 000000000..d20ea5b0e
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/BrianNichols.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/BrianNichols.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 02:11:04
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+ GenericEcology2Callout(NPC, Spawn, faction)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -21.91, -7, 36.27, 2, 0)
+ MovementLoopAddLocation(NPC, -17.66, -7, 40.14, 2, 1)
+ MovementLoopAddLocation(NPC, -17.66, -7, 40.14, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -17.66, -7, 40.14, 2, 0)
+ MovementLoopAddLocation(NPC, -17.81, -7, 37.76, 2, 0)
+ MovementLoopAddLocation(NPC, -23.68, -7, 34.95, 2, 0)
+ MovementLoopAddLocation(NPC, -25.69, -7, 36.16, 2, 1)
+ MovementLoopAddLocation(NPC, -25.69, -7, 36.16, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -24.04, -7, 35.42, 2, 0)
+ MovementLoopAddLocation(NPC, -18.52, -7, 35.83, 2, 0)
+ MovementLoopAddLocation(NPC, -8.57, -6.5, 37.23, 2, 0)
+ MovementLoopAddLocation(NPC, -5.11, -6.5, 39.77, 2, 0)
+ MovementLoopAddLocation(NPC, 0.21, -6.5, 40.79, 2, 0)
+ MovementLoopAddLocation(NPC, 3.73, -6.5, 41.46, 2, 0)
+ MovementLoopAddLocation(NPC, 10.73, -6.5, 44.33, 2, 0)
+ MovementLoopAddLocation(NPC, 14.77, -6.5, 46.21, 2, 0)
+ MovementLoopAddLocation(NPC, 21.25, -6.5, 47.51, 2, 0)
+ MovementLoopAddLocation(NPC, 27.54, -6, 44.17, 2, 0)
+ MovementLoopAddLocation(NPC, 34.2, -6, 44.02, 2, 0)
+ MovementLoopAddLocation(NPC, 37.47, -6, 43.92, 2, 0)
+ MovementLoopAddLocation(NPC, 42.27, -5.75, 44.38, 2, 0)
+ MovementLoopAddLocation(NPC, 47.59, -5.75, 46.05, 2, 0)
+ MovementLoopAddLocation(NPC, 50.95, -5, 40.86, 2, 0)
+ MovementLoopAddLocation(NPC, 49.41, -5, 39.42, 2, 1)
+ MovementLoopAddLocation(NPC, 49.41, -5, 39.42, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 49.41, -5, 39.42, 2, 0)
+ MovementLoopAddLocation(NPC, 50.1, -5, 38.1, 2, 0)
+ MovementLoopAddLocation(NPC, 49.53, -5, 35.61, 2, 0)
+ MovementLoopAddLocation(NPC, 43.83, -5, 35.43, 2, 0)
+ MovementLoopAddLocation(NPC, 41.2, -5, 36.34, 2, 0)
+ MovementLoopAddLocation(NPC, 34.98, -6, 43.89, 2, 0)
+ MovementLoopAddLocation(NPC, 32.52, -6, 45.05, 2, 0)
+ MovementLoopAddLocation(NPC, 27.86, -6.5, 47.69, 2, 0)
+ MovementLoopAddLocation(NPC, 20.32, -6.5, 47.54, 2, 0)
+ MovementLoopAddLocation(NPC, 14.05, -6.5, 46.02, 2, 0)
+ MovementLoopAddLocation(NPC, 8.42, -6.5, 43.37, 2, 0)
+ MovementLoopAddLocation(NPC, 1.87, -7, 47.97, 2, 0)
+ MovementLoopAddLocation(NPC, -12.12, -7, 53.83, 2, 0)
+ MovementLoopAddLocation(NPC, -17.15, -7, 59.64, 2, 0)
+ MovementLoopAddLocation(NPC, -26.04, -7, 68.46, 2, 1)
+ MovementLoopAddLocation(NPC, -26.04, -7, 68.46, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -24.89, -7, 68.15, 2, 0)
+ MovementLoopAddLocation(NPC, -22.57, -7, 64.93, 2, 0)
+ MovementLoopAddLocation(NPC, -19.27, -7, 58.33, 2, 0)
+ MovementLoopAddLocation(NPC, -10.07, -7, 52.52, 2, 0)
+ MovementLoopAddLocation(NPC, -9.6, -7, 42.67, 2, 0)
+ MovementLoopAddLocation(NPC, -15.71, -7, 37.29, 2, 0)
+ MovementLoopAddLocation(NPC, -23.2, -7, 32.79, 2, 0)
+ MovementLoopAddLocation(NPC, -32.98, -5.75, 26.07, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -36.92, -5.77, 24.82, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -41.75, -5.77, 26.16, 2, 0)
+ MovementLoopAddLocation(NPC, -49.91, -5.77, 21.51, 2, 0)
+ MovementLoopAddLocation(NPC, -52, -5.77, 16.43, 2, 1)
+ MovementLoopAddLocation(NPC, -52, -5.77, 16.43, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -47.09, -5.77, 16.75, 2, 1)
+ MovementLoopAddLocation(NPC, -47.09, -5.77, 16.75, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -48.28, -5.77, 18.94, 2, 0)
+ MovementLoopAddLocation(NPC, -47.61, -5.77, 21.34, 2, 0)
+ MovementLoopAddLocation(NPC, -43.56, -5.77, 24.06, 2, 0)
+ MovementLoopAddLocation(NPC, -38.6, -5.77, 24.61, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -31.46, -5.75, 24.87, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -29.64, -5.75, 27.05, 2, 0)
+ MovementLoopAddLocation(NPC, -24.18, -7, 34.87, 2, 0)
+end
+
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370080)
+ UseWidget(door)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/CaiusEbonroot.lua b/server/SpawnScripts/BeggarsCourt/CaiusEbonroot.lua
new file mode 100755
index 000000000..66819d19c
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/CaiusEbonroot.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/CaiusEbonroot.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 02:11:37
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC,7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,7)then
+ Garbled(NPC,Spawn)
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,7)then
+ if math.random(0,100)<40 then
+ Garbled(NPC,Spawn)
+ end
+ else
+end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/CalindraLongshadow.lua b/server/SpawnScripts/BeggarsCourt/CalindraLongshadow.lua
new file mode 100755
index 000000000..7b74dbc79
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/CalindraLongshadow.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/CalindraLongshadow.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 05:11:17
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
+
+function InRange(NPC,Spawn)
+ GenericRaceCheckCallout(NPC, Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 22.82, 5.25, -35.1, 2, 0)
+ MovementLoopAddLocation(NPC, 21.32, 5.25, -33.85, 2, 0)
+ MovementLoopAddLocation(NPC, 21.66, 5.25, -32.47, 2, 1)
+ MovementLoopAddLocation(NPC, 21.66, 5.25, -32.47, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 21.66, 5.25, -32.47, 2, 0)
+ MovementLoopAddLocation(NPC, 20.2, 5.25, -31.38, 2, 0)
+ MovementLoopAddLocation(NPC, 18.76, 5, -29.3, 2, 0)
+ MovementLoopAddLocation(NPC, 13.98, 4.75, -20.78, 2, 0)
+ MovementLoopAddLocation(NPC, 9.49, 3.5, -13.22, 2, 0)
+ MovementLoopAddLocation(NPC, 5.62, 3.5, -8.63, 2, 1)
+ MovementLoopAddLocation(NPC, 5.62, 3.5, -8.63, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 4.64, 3.5, -6.74, 2, 0)
+ MovementLoopAddLocation(NPC, 4.64, 3.5, -6.74, 2, 1)
+ MovementLoopAddLocation(NPC, 4.64, 3.5, -6.74, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 5.11, 3.5, -8.48, 2, 1)
+ MovementLoopAddLocation(NPC, 5.11, 3.5, -8.48, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 4.02, 3.5, -7.06, 2, 1)
+ MovementLoopAddLocation(NPC, 4.02, 3.5, -7.06, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 6.5, 3.5, -10.09, 2, 0)
+ MovementLoopAddLocation(NPC, 9.82, 3.75, -16, 2, 0)
+ MovementLoopAddLocation(NPC, 13.19, 4.75, -21.21, 2, 0)
+ MovementLoopAddLocation(NPC, 15.67, 5, -29.56, 2, 0)
+ MovementLoopAddLocation(NPC, 15.5, 5, -36.5, 2, 1)
+ MovementLoopAddLocation(NPC, 15.5, 5, -36.5, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 16.52, 5, -34.64, 2, 0)
+ MovementLoopAddLocation(NPC, 18.3, 5, -34.67, 2, 0)
+ MovementLoopAddLocation(NPC, 26.62, 5.25, -37.93, 2, 1)
+ MovementLoopAddLocation(NPC, 26.62, 5.25, -37.93, 2, 22,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 24.53, 5.25, -37.49, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/BeggarsCourt/CaptainPaullus.lua b/server/SpawnScripts/BeggarsCourt/CaptainPaullus.lua
index 89568d009..3a53aac48 100755
--- a/server/SpawnScripts/BeggarsCourt/CaptainPaullus.lua
+++ b/server/SpawnScripts/BeggarsCourt/CaptainPaullus.lua
@@ -1,12 +1,17 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/CaptainPaullus.lua
Script Purpose : Captain Paullus
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
function spawn(NPC)
+ SetTempVariable(NPC,"DrunkCallout","false")
+ AddTimer(NPC,2000,"waypoints")
+ --waypoints(NPC)
end
function respawn(NPC)
@@ -14,17 +19,82 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gm_870ae3cb.mp3", "The Overlord commands me to patrol this area, and so I must.", "tapfoot", 1281050619, 1758539799, Spawn, 0)
+
+function DrunkCall(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Drunk = GetSpawnByLocationID(zone, 403002)
+ SetTarget(Drunk,NPC)
+ FaceTarget(Drunk,NPC)
+ FaceTarget(NPC,Drunk)
+ local choice = MakeRandomInt(1,3)
+ if choice==1 then
+ PlayFlavor(Drunk, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gm_153d5a3.mp3", "Let's have a drink together and forget that we ever met.", "hello", 2964980286, 4014491635)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gm_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 3265760930, 1055342916, Spawn, 0)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gm_edb196f8.mp3", "All praises to the Overlord. The Militia protects loyal citizens of Freeport.", "salute_freeport", 1906726944, 247472694, Spawn, 0)
- end
-end
\ No newline at end of file
+ PlayFlavor(Drunk, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_e4fde966.mp3", "I haven't that much to drink yet, I got here when... bah I forgot.", "no", 612325975, 4257910058)
+ else
+ PlayFlavor(Drunk,"voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gm_b5bfa487.mp3","Look sir. I just had'one ale n' hour ago withh dinner.","no",1705294225,1483651602)
+ end
+
+end
+
+function Turn(NPC,Spawn)
+ if GetTempVariable(NPC,"DrunkCallout")== "false" then
+ SetTempVariable(NPC,"DrunkCallout","true")
+ local zone = GetZone(NPC)
+ local Drunk = GetSpawnByLocationID(zone, 403002)
+ SetTarget(NPC,Drunk)
+ FaceTarget(NPC,Drunk)
+ SetTarget(Drunk,NPC)
+ FaceTarget(Drunk,NPC)
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "glare", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0)
+ end
+ AddTimer(NPC,1500,"DrunkCall")
+ AddTimer(NPC,5000,"Reset")
+ else
+ SetTempVariable(NPC,"DrunkCallout","false")
+ SetHeading(NPC,20)
+end
+end
+
+function Reset(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Drunk = GetSpawnByLocationID(zone, 403002)
+ SetTarget(NPC,nil)
+ SetTarget(Drunk,nil)
+end
+
+
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 70.47, -7.08, 94.74, 2, 0)
+ MovementLoopAddLocation(NPC, 73.88, -7.08, 99.74, 2, 0)
+ MovementLoopAddLocation(NPC, 75.64, -7.08, 103.04, 2, 1)
+ MovementLoopAddLocation(NPC, 75.64, -7.08, 103.04, 2, 10,"Turn")
+ MovementLoopAddLocation(NPC, 75.64, -7.08, 103.04, 2, 0)
+ MovementLoopAddLocation(NPC, 72.18, -7.08, 98.09, 2, 0)
+ MovementLoopAddLocation(NPC, 67.44, -7.08, 94.13, 2, 0)
+ MovementLoopAddLocation(NPC, 61.6, -7.08, 94.84, 2, 0)
+ MovementLoopAddLocation(NPC, 57.64, -7.08, 97.9, 2, 0)
+ MovementLoopAddLocation(NPC, 55.38, -7.08, 102.21, 2, 0)
+ MovementLoopAddLocation(NPC, 53.98, -7.08, 108.71, 2, 8)
+ MovementLoopAddLocation(NPC, 55.71, -7.08, 101.37, 2, 0)
+ MovementLoopAddLocation(NPC, 58.92, -7.08, 96.99, 2, 0)
+ MovementLoopAddLocation(NPC, 61.75, -7.08, 94.79, 2, 0)
+ MovementLoopAddLocation(NPC, 63.69, -7.08, 92.53, 2, 0)
+ MovementLoopAddLocation(NPC, 62.13, -7.02, 84.47, 2, 22)
+ MovementLoopAddLocation(NPC, 62.36, -7.07, 86.6, 2, 0)
+ MovementLoopAddLocation(NPC, 62.64, -7.08, 91.06, 2, 0)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/Cordilia.lua b/server/SpawnScripts/BeggarsCourt/Cordilia.lua
index 2f46cc031..c6bb534bd 100755
--- a/server/SpawnScripts/BeggarsCourt/Cordilia.lua
+++ b/server/SpawnScripts/BeggarsCourt/Cordilia.lua
@@ -1,18 +1,35 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/Cordilia.lua
Script Purpose : Cordilia
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 11, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ elseif MakeRandomInt(0,100)<=50 then
+ local choice = MakeRandomInt(1,2)
+ FaceTarget(NPC, Spawn)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn, 0)
+ else
+ PlayFlavor(NPC, "", "", "bye", 0, 0, Spawn, 0)
+ end
+ end
+end
+
+
function hailed(NPC, Spawn)
RandomGreeting(NPC, Spawn)
end
diff --git a/server/SpawnScripts/BeggarsCourt/CordiusSejanius.lua b/server/SpawnScripts/BeggarsCourt/CordiusSejanius.lua
index aa551851c..d6e9efdc9 100755
--- a/server/SpawnScripts/BeggarsCourt/CordiusSejanius.lua
+++ b/server/SpawnScripts/BeggarsCourt/CordiusSejanius.lua
@@ -1,12 +1,46 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/CordiusSejanius.lua
Script Purpose : Cordius Sejanius
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimeCheck","false") -- used to delay between callout uses
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if GetTempVariable(NPC,"CalloutTimeCheck") == "false" then
+ SetTempVariable(NPC,"CalloutTimeCheck","true") -- used to delay between callout uses
+ AddTimer(NPC,25000,"ResetCalloutTimer")
+ if MakeRandomInt(1,2)==1 then
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ else
+ zone = GetZone(NPC)
+ Other = GetSpawnByLocationID(zone,402980)
+ OtherTalk(Other,Spawn)
+ end
+ end
+end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ SetTempVariable(NPC,"CalloutTimeCheck","false")
end
function respawn(NPC)
@@ -14,21 +48,111 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,5)
+function Talk(NPC, Spawn)
+local FP_PriestFaction = GetFactionAmount(Spawn, 105 )
+ if FP_PriestFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_b9254acf.mp3", "The words preached by the Dismal Rage bring spiritual enlightenment to the weak.", "", 116806204, 1893451787, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_5a9793ef.mp3", "The Coalition of Tradesfolke aren't capable of serving anyone other than to serve its own greed.", "", 3353210602, 2809554948, Spawn, 0)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_7d78cf9d.mp3", "The weak souls of the Seafury Buccaneers only cry, running to a priest when facing certain death.", "", 683812929, 1852419614, Spawn, 0)
- elseif choice == 4 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_f7ca6051.mp3", "I find it vile that our great city has entrusted its protection to a group of degenerates such as the Freeport Militia.", "", 1175835727, 2628271838, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_5a9793ef.mp3", "The Coalition of Tradesfolke aren't capable of serving anyone other than to serve its own greed.", "", 3353210602, 2809554948, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_7abc3066.mp3", "Too often the Arcane Scientists at the academy dedicate themselves to useless knowledge that is of no use to our city.", "", 1261386119, 1368644822, Spawn)
elseif choice == 5 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_7abc3066.mp3", "Too often the Arcane Scientists at the academy dedicate themselves to useless knowledge that is of no use to our city.", "", 1261386119, 1368644822, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_7d78cf9d.mp3", "The weak souls of the Seafury Buccaneers only cry, running to a priest when facing certain death.", "", 683812929, 1852419614, Spawn)
+ end
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_PriestFaction = GetFactionAmount(Spawn, 105 )
+ if FP_PriestFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_40_gf_c38c736.mp3", "To aid the Dismal Rage is to worship the One True God for power that binds us to this realm!", "cheer", 0, 0, Spawn)
+ elseif FP_PriestFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_30_gf_350ac522.mp3", "To realize your full potential you must drive all empathy and pity from your heart.", "", 2475957665, 3294345346, Spawn, 0)
+ elseif FP_PriestFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_20_gf_7b836853.mp3", "The ritualistic power of Dismal Rage is what gives spiritual strength to us all.", "", 0, 0, Spawn)
+ elseif FP_PriestFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_10_gf_1a36b724.mp3", "You must learn to release the chaos and destruction of your power.", "", 1739074440, 1700879521, Spawn)
+ end
+end
+
+function OtherTalk(Other, Spawn)
+local FP_MageFaction = GetFactionAmount(Spawn, 104)
+ if FP_MageFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ OtherBasicTalk(Other,Spawn)
+ elseif choice == 2 then
+ OtherBasicTalk(Other,Spawn)
+ elseif choice == 3 then
+ OtherFactionTalk(Other,Spawn)
+ end
+ end
+end
+
+function OtherBasicTalk(Other,Spawn)
+ local choice = MakeRandomInt(1, 5)
+ if choice == 1 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_d4cf5e3d.mp3", "The Dismal Rage is an evil entity that can destroy your soul.", "", 561192192, 3579530691, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_52cf3660.mp3", "The Seafuries are just a bunch of mindless sea dwellers.", "", 2052685278, 167982355, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_6727c950.mp3", "The minds at the Academy of Arcane Science are infinite.", "", 137200926, 848953238, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_43509cc2.mp3", "The Freeport Militia is only as competent as their ability to swing a longsword.", "", 1079669242, 1377863119, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_85a84d51.mp3", "The members within the Coalition of Tradefolke are nothing more than common thieves that empty your pockets before your eyes.", "", 1941815786, 1528387739, Spawn, 0)
end
+end
+
+function OtherFactionTalk(Other,Spawn)
+local FP_MageFaction = GetFactionAmount(Spawn, 104)
+ if FP_MageFaction >=40000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_40_gf_c38c736.mp3", "To aid the Academy of Arcane Science is to unleash the force for power that burns within us all!", "cheer", 0, 0, Spawn)
+ elseif FP_MageFaction >=30000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_30_gf_130c3c71.mp3", "You have helped the Academy of Arcane Science rise in power and brought some invaluable assets within these walls.", "thank", 0, 0, Spawn)
+ elseif FP_MageFaction >=20000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_20_gf_7b836853.mp3", "Your actions have assisted the Academy of Arcane Science in its quest for all knowledge!", "", 0, 0, Spawn)
+ elseif FP_MageFaction >=10000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_10_gf_5547196e.mp3", "Your actions have done well for the Academy of Arcane Science, but there is always more to know.", "nod", 0, 0, Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/CrispinLuviniusBC.lua b/server/SpawnScripts/BeggarsCourt/CrispinLuviniusBC.lua
index df224e71e..df46edfe1 100755
--- a/server/SpawnScripts/BeggarsCourt/CrispinLuviniusBC.lua
+++ b/server/SpawnScripts/BeggarsCourt/CrispinLuviniusBC.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/CrispinLuviniusBC.lua
Script Purpose : Crispin Luvinius
- Script Author : Scatman
+ Script Author : Scatman\\torsten\\Dorbin
Script Date : 2009.07.26 (17.7.2022 by torsten, moved both quests from The Sprawl to Beggar's Court as in classic EverQuest)
Script Notes :
--]]
@@ -14,91 +14,105 @@ local AdvancedProblemSolving = 5662
function spawn(NPC)
ProvidesQuest(NPC, ProblemSolving)
ProvidesQuest(NPC, AdvancedProblemSolving)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
FaceTarget(NPC, Spawn)
-
- if not HasQuest(Spawn, ProblemSolving) and not HasCompletedQuest(Spawn, ProblemSolving) then
- Dialog7(NPC, Spawn)
- end
- if HasCompletedQuest(Spawn, ProblemSolving) then
- if not HasQuest(Spawn, AdvancedProblemSolving) and not HasCompletedQuest(Spawn, AdvancedProblemSolving) then
- Dialog8(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if CanReceiveQuest(Spawn, ProblemSolving) or CanReceiveQuest(Spawn, AdvancedProblemSolving) then
+
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,30000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_callout1_eb27037a.mp3", "Are you looking for trouble? It'll find you if you don't keep walking.", "", 3293258894, 514248132, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true"then
+ PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_multhail1_e039d831.mp3", "Are you looking for trouble? It'll find you if you don't keep walking.", "glare", 2395364912, 2338408737, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "false")
end
- end
- if HasCompletedQuest(Spawn, ProblemSolving) and HasCompletedQuest(Spawn, AdvancedProblemSolving)then
- Dialog3(NPC, Spawn)
end
- if GetQuestStep(Spawn, ProblemSolving) == 2 then
- SetStepComplete(Spawn, ProblemSolving, 2)
- Dialog8(NPC, Spawn)
- end
- if GetQuestStep(Spawn, AdvancedProblemSolving) == 2 then
- SetStepComplete(Spawn, AdvancedProblemSolving, 2)
- Dialog10(NPC, Spawn)
- end
- RandomGreeting(NPC, Spawn)
+ elseif HasQuest(Spawn, ProblemSolving) or HasQuest(Spawn, AdvancedProblemSolving) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,30000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_multhail3_69ad5b7d.mp3","I thought you weren't looking for trouble, problem solver? I suggest you solve my problem or trouble will find you, understand?","glare",3672937879,782097653, Spawn)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true"then
+ PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_multhail3_69ad5b7d.mp3","I thought you weren't looking for trouble, problem solver? I suggest you solve my problem or trouble will find you, understand?","tapfoot",3672937879,782097653, Spawn)
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ end
+end
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,4)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_callout1_eb27037a.mp3", "Are you looking for trouble? It'll find you if you don't keep walking.", "", 3293258894, 514248132, Spawn, 0)
- elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", 0, 0, Spawn)
- elseif choice == 3 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", 0, 0, Spawn)
- elseif choice == 4 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", 0, 0, Spawn)
- end
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","cutthroat",0,0, Spawn)
+elseif GetQuestStep(Spawn,ProblemSolving)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_multhail3_69ad5b7d.mp3","I thought you weren't looking for trouble, problem solver? I suggest you solve my problem or trouble will find you, understand?","glare",3672937879,782097653, Spawn)
+elseif GetQuestStep(Spawn,AdvancedProblemSolving)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/crispin_luvinius/fprt_hood04/100_std_crispin_luvinius_hum_m_multhail3_69ad5b7d.mp3","I thought you weren't looking for trouble, problem solver? I suggest you solve my problem or trouble will find you, understand?","glare",3672937879,782097653, Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
end
-function Dialog3(NPC, Spawn)
+
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Do you have a problem? You're gonna have one soon if you don't keep walking.")
Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/std_crispin_luvinius.mp3", 1982819374, 703450678)
- Dialog.AddOption("I don't want any trouble.")
+ if CanReceiveQuest(Spawn,ProblemSolving) then
+ Dialog.AddOption("I don't have a problem... I solve problems. Anything you need fixed?", "Dialog2")
+ elseif GetQuestStep(Spawn, ProblemSolving) == 2 then
+ Dialog.AddOption("They won't be delivering ANY kind of message.", "Dialog4")
+ end
+ if CanReceiveQuest(Spawn,AdvancedProblemSolving) then
+ Dialog.AddOption("So... have any more problems you can't handle yourself?", "Dialog5")
+ elseif GetQuestStep(Spawn, AdvancedProblemSolving) == 2 then
+ Dialog.AddOption("Those Giantslayers got the 'message'.", "Dialog7")
+ end
+ Dialog.AddOption("I don't want any trouble.")
Dialog.Start()
end
--========================= Quest 1
-function Dialog7(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Do you have a problem? You're gonna have one soon if you don't keep walking.")
- Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/std_crispin_luvinius.mp3", 1982819374, 703450678)
- Dialog.AddOption("I don't have a problem... I solve problems. Anything you need fixed?", "Dialog11")
- Dialog.AddOption("I don't want any trouble.")
- Dialog.Start()
-end
-
-function Dialog11(NPC, Spawn)
+function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("A problem solver, huh? You can talk the talk, but can you walk the walk? Yeah ... I got a problem. One of our customers isn't paying us for our \"services,\" if you know what I'm saying. Maybe you can fix this problem for us, huh?")
- Dialog.AddOption("Of course I can. I said I was a problem solver, didn't I?", "Dialog12")
+ Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/quests/crispinluvinius/crispin_x1_initial.mp3", 1249000377, 1908833201)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ Dialog.AddOption("Of course I can. I said I was a problem solver, didn't I?", "Offer1")
Dialog.AddOption("Not really... I've got too many other things to do. Maybe some other time.")
Dialog.Start()
end
-function Dialog12(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Okay, here's the deal. The guy is a vagrant who lives out in the ruins, right? We want to send the message that no one messes with us. You need to head south of here and do some dirty work to his buddies, understand?")
- Dialog.AddOption("Sounds like an easy job.", "Dialog1")
- Dialog.Start()
+function Offer1(NPC, Spawn)
OfferQuest(NPC, Spawn, ProblemSolving)
end
-function Dialog1(NPC, Spawn)
+function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Come back when you're done.")
@@ -106,33 +120,33 @@ function Dialog1(NPC, Spawn)
Dialog.Start()
end
---==================== Quest 2
-
-function Dialog8(NPC, Spawn)
+function Dialog4(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Do you have a problem? You're gonna have one soon if you don't keep walking.")
- Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/std_crispin_luvinius.mp3", 1982819374, 703450678)
- Dialog.AddOption("So... have any more problems you can't handle yourself?", "Dialog9")
- Dialog.AddOption("I don't want any trouble.")
+ Dialog.AddDialog("You mean ... you actually killed him?! Whoa ... you are tough! I never... Well, I didn't think you would actually... kill him. Okay, friend, here's your money. I don't want you thinking I'm not a man of my word ... Wow. You actually killed him! I must tell Manius about this!")
+ Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/quests/crispinluvinius/crispin_x1_finish.mp3", 439266675, 1963599984)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ Dialog.AddOption("That would be good. Do that for me.")
Dialog.Start()
+ SetStepComplete(Spawn, ProblemSolving, 2)
end
-function Dialog9(NPC, Spawn)
+--==================== Quest 2
+
+
+
+function Dialog5(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Oh! I recognize you. Glad you came along ... yeah ... very glad. I hope your uh ... services ... are available again because ... uh ... there's this little matter... and I'm too busy to take care of it. Yes, too busy.")
- Dialog.AddOption("As long as you have the money, I'm willing to do it.", "Dialog13")
+ Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/quests/crispinluvinius/crispin_x2_initial.mp3", 1982819374, 703450678)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn, 0)
+ Dialog.AddOption("As long as you have the money, I'm willing to do it.", "Offer2")
Dialog.AddOption("Sorry... I don't work for lazy people... or cowards.")
Dialog.Start()
end
-function Dialog13(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("That's what I like to hear! Remember that dirty vagrant you delivered the message to? Rumor has it he's hiding among rogues and scoundrels from the other districts -- a gang called the Giantslayers. And his ... brethren ... have gotten their feathers all ruffled and are planning to come here to ... pay court ... if you understand me. They want to send a message to their leader. Now, I enjoy a good tussle as much as anyone, of course, but, uh ... we don't want to rob you of an opportunity to prove your fighting skills. So, why don't you go to the Giantslayers and tan their mangy hides for us?")
- Dialog.AddOption("Don't worry... I'll handle it.", "Dialog6")
- Dialog.Start()
+function Offer2(NPC, Spawn)
OfferQuest(NPC, Spawn, AdvancedProblemSolving)
end
@@ -144,11 +158,14 @@ function Dialog6(NPC, Spawn)
Dialog.Start()
end
-function Dialog10(NPC, Spawn)
+function Dialog7(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("I knew you'd take care of 'em! Good show! Oh, and here's a bit-o-coin for all your hard work. Heh, heh.")
+ Dialog.AddVoiceover("voiceover/english/crispin_luvinius/fprt_hood04/quests/crispinluvinius/crispin_x2_finish.mp3", 156925709, 1579873115)
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn, 0)
Dialog.AddOption("Maybe I might, maybe not. We'll see what my schedule is like.")
Dialog.Start()
+ SetStepComplete(Spawn, AdvancedProblemSolving, 2)
end
diff --git a/server/SpawnScripts/BeggarsCourt/DrunkArtorius.lua b/server/SpawnScripts/BeggarsCourt/DrunkArtorius.lua
new file mode 100755
index 000000000..7ca26a15a
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/DrunkArtorius.lua
@@ -0,0 +1,116 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/DrunkArtorius.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 04:11:56
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ waypoints(NPC)
+SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+-- GenericDrunkCallout(NPC, Spawn, faction)
+ end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericDrunkHail(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","hungry",0,0)
+ else
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC) -- Checks if the guard is near
+ local zone = GetZone(NPC)
+ local Guard = GetSpawnByLocationID(zone, 403010)
+ local Distance = GetDistance(NPC,Guard)
+ if Distance>5 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ else
+ PlayFlavor(NPC,"","","sniff",0,0)
+ end
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 82.03, -7.08, 102.12, 2, 0)
+ MovementLoopAddLocation(NPC, 81.23, -7.08, 100.5, 2, MakeRandomInt(7,13))
+ MovementLoopAddLocation(NPC, 81.23, -7.08, 100.5, 2, 0)
+ MovementLoopAddLocation(NPC, 80.05, -7.08, 103.32, 2, 1)
+ MovementLoopAddLocation(NPC, 80.05, -7.08, 103.32, 2, MakeRandomInt(10,13),"Drink3")
+ MovementLoopAddLocation(NPC, 82.53, -7.08, 103.57, 2, 1)
+ MovementLoopAddLocation(NPC, 82.53, -7.08, 103.57, 2, MakeRandomInt(7,13),"Drink3")
+ MovementLoopAddLocation(NPC, 80.79, -7.08, 102.37, 2, MakeRandomInt(7,13))
+ MovementLoopAddLocation(NPC, 80.79, -7.08, 102.37, 2, 1)
+ MovementLoopAddLocation(NPC, 80.62, -7.08, 99.52, 2, MakeRandomInt(10,13),"Drink3")
+ MovementLoopAddLocation(NPC, 80.29, -7.08, 104.09, 2, 1)
+ MovementLoopAddLocation(NPC, 80.29, -7.08, 104.09, 2, MakeRandomInt(10,13),"Drink3")
+ MovementLoopAddLocation(NPC, 78.36, -7.08, 106.45, 2, 0)
+ MovementLoopAddLocation(NPC, 76.59, -7.08, 106.76, 2, MakeRandomInt(7,13))
+ MovementLoopAddLocation(NPC, 76.76, -7.08, 104.63, 2, MakeRandomInt(7,13))
+ MovementLoopAddLocation(NPC, 81.06, -7.08, 102.97, 2, 1)
+ MovementLoopAddLocation(NPC, 81.06, -7.08, 102.97, 2, MakeRandomInt(10,13),"Drink3")
+ MovementLoopAddLocation(NPC, 77.14, -7.08, 104, 2, MakeRandomInt(7,13))
+ MovementLoopAddLocation(NPC, 75.78, -7.08, 106.22, 2, 1)
+ MovementLoopAddLocation(NPC, 75.78, -7.08, 106.22, 2, MakeRandomInt(10,13),"Drink3")
+
+--[[
+ MovementLoopAddLocation(NPC, 56.11, 3.75, 3.2, 2, 0)
+ MovementLoopAddLocation(NPC, 57.67, 3.75, 2.29, 2, 1)
+ MovementLoopAddLocation(NPC, 57.67, 3.75, 2.29, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 57.67, 3.75, 2.29, 2, 0)
+ MovementLoopAddLocation(NPC, 55.42, 3.5, 6.09, 2, 0)
+ MovementLoopAddLocation(NPC, 53.94, 3.25, 7.23, 2, 1)
+ MovementLoopAddLocation(NPC, 53.94, 3.25, 7.23, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 53.94, 3.25, 7.23, 2, 0)
+ MovementLoopAddLocation(NPC, 51.7, 3, 6.61, 2, 4)
+ MovementLoopAddLocation(NPC, 53.21, 3.25, 5.09, 2, 0)
+ MovementLoopAddLocation(NPC, 54.95, 3.5, 4.58, 2, 0)
+ MovementLoopAddLocation(NPC, 57.96, 3.75, 2.31, 2, 0)
+ MovementLoopAddLocation(NPC, 61.03, 4.03, -0.82, 2, 1)
+ MovementLoopAddLocation(NPC, 61.03, 4.03, -0.82, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 59.2, 3.75, 1.12, 2, 0)
+ MovementLoopAddLocation(NPC, 57.38, 4, -0.45, 2, 0)
+ MovementLoopAddLocation(NPC, 58.03, 4, -2.76, 2, 0)
+ MovementLoopAddLocation(NPC, 56.89, 4.25, -6.52, 2, 0)
+ MovementLoopAddLocation(NPC, 60.23, 5, -13.88, 2, 1)
+ MovementLoopAddLocation(NPC, 61.85, 5, -23.46, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 61.74, 5, -23.56, 2, 0)
+ MovementLoopAddLocation(NPC, 62.2, 5, -22.15, 2, 0)
+ MovementLoopAddLocation(NPC, 58.93, 5, -15.42, 2, 0)
+ MovementLoopAddLocation(NPC, 54.5, 4.38, -7.86, 2, 0)
+ MovementLoopAddLocation(NPC, 53.25, 4, -4.82, 2, 0)
+ MovementLoopAddLocation(NPC, 53.16, 4, -3.62, 2, 1)
+ MovementLoopAddLocation(NPC, 53.16, 4, -3.62, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 53.16, 4, -3.62, 2, 0)
+ MovementLoopAddLocation(NPC, 52.99, 4, -1.23, 2, 0)
+ MovementLoopAddLocation(NPC, 57.73, 3.75, 4.32, 2, 1)
+ MovementLoopAddLocation(NPC, 57.73, 3.75, 4.32, 2, 30,"Drink")]]--
+end
+
+
diff --git a/server/SpawnScripts/BeggarsCourt/ElduinProceus.lua b/server/SpawnScripts/BeggarsCourt/ElduinProceus.lua
index 7e2bbd8d3..c94b48e6e 100755
--- a/server/SpawnScripts/BeggarsCourt/ElduinProceus.lua
+++ b/server/SpawnScripts/BeggarsCourt/ElduinProceus.lua
@@ -1,28 +1,54 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/ElduinProceus.lua
Script Purpose : Elduin Proceus
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 20 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_aoi_gm_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "bye", 139349589, 782938435, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/petretailer/barbarian_petretailer_service_good_1_notcitizen_gm_820dc7e.mp3", "I'm afraid that I'm closed for the day. I'm going to have to ask you to leave now.", "heckno", 1325380097, 3928490350
+, Spawn)
+ end
+end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 343341765, 3197108031, Spawn, 0)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1100358951, 329280246, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 1237696600, 1447318033, Spawn)
end
-end
\ No newline at end of file
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/ElowynEquitus.lua b/server/SpawnScripts/BeggarsCourt/ElowynEquitus.lua
index 2f2e5b7cf..b30888f0b 100755
--- a/server/SpawnScripts/BeggarsCourt/ElowynEquitus.lua
+++ b/server/SpawnScripts/BeggarsCourt/ElowynEquitus.lua
@@ -1,12 +1,47 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/ElowynEquitus.lua
Script Purpose : Elowyn Equitus
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
+
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 50 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ AddTimer(NPC,25000,"ResetCalloutTimer")
+ if MakeRandomInt(1,2)==1 then
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ else
+ zone = GetZone(NPC)
+ Other = GetSpawnByLocationID(zone,402973)
+ OtherTalk(Other,Spawn)
+ end
+ end
+ end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
end
function respawn(NPC)
@@ -14,12 +49,37 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,4)
+function Talk(NPC, Spawn)
+local FP_ScoutFaction = GetFactionAmount(Spawn, 103)
+ if FP_ScoutFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gm_ab3834b1.mp3", "The Dismal Rage is hideous I tell you. I always get the shivers when I pass by them.", "", 2064337459, 2051437235, Spawn, 0)
elseif choice == 2 then
@@ -28,5 +88,73 @@ function RandomGreeting(NPC, Spawn)
PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gm_475fe075.mp3", "Arcane Scientists couldn't navigate their way through shallow waters without a map if they tried.", "", 298409119, 3305039750, Spawn, 0)
elseif choice == 4 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gm_cf6319e5.mp3", "I don't trust the Freeport Militia. Neither should you, mate.", "", 3920018301, 2026151663, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gm_6b316487.mp3", "The Seafury Buccaneers dominate the high seas. There is no competition, matey.", "", 566560198, 3072439079, Spawn, 0)
end
-end
\ No newline at end of file
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_ScoutFaction = GetFactionAmount(Spawn, 103)
+ if FP_ScoutFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_40_gm_844f23c4.mp3", "You're no longer just a Seafury Buccaneer with us matey. If port space weren't such a problem, we'd let you captain your own ship.", "", 208759, 293786669, Spawn)
+ elseif FP_ScoutFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_30_gm_e6790307.mp3", "Avast ye! I just wanted to thank you for the plunder you bring to the Seafury Buccaneers.", "", 2403558940, 3041491321, Spawn)
+ elseif FP_ScoutFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_20_gm_e6790307.mp3", "A landlubber be interested in working for the Seafury Buccaneers? I'm not saying it's impossible, but I'll keep steady eyes on you, mate.", "", 2403558940, 3041491321, Spawn)
+ elseif FP_ScoutFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_10_gm_e6790307.mp3", "The Seafury Buccaneers demand the most out of thier crew. Are you up to the task?", "", 2403558940, 3041491321, Spawn)
+ end
+end
+
+function OtherTalk(Other, Spawn)
+local FP_ScoutFaction = GetFactionAmount(Spawn, 103)
+ if FP_ScoutFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ OtherBasicTalk(Other,Spawn)
+ elseif choice == 2 then
+ OtherBasicTalk(Other,Spawn)
+ elseif choice == 3 then
+ FactionTalk(Other,Spawn)
+ end
+ end
+end
+
+function OtherBasicTalk(Other,Spawn)
+ local choice = MakeRandomInt(1, 5)
+ if choice == 1 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_8d7c7902.mp3", "I'd rather be stranded overboard than be converted by the dark beliefs that Dismal Rage preaches.", "", 398195151, 3450382472, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_cf6319e5.mp3", "I don't trust the Freeport Militia. Neither should you, mate.", "", 841757214, 1711434021, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_a6172442.mp3", "You might as well hand your loot to the Coalition of Tradesfolke if you ever decide to work for them.", "", 3500427050, 3119081965, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_1606a6dc.mp3", "It's weak to rely on magic for everything. If ye have the same weakness, the Academy of Arcane Sciences is for you.", "", 582247664, 3802790481, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_b1479083.mp3", "The Seafury Buccaneers are feared by all others on the open sea. They show no mercy to the dogs that try to sail the sea unprotected.", "", 1087502675, 64319081, Spawn, 0)
+ end
+end
+
+function FactionTalk(Other,Spawn)
+local FP_ScoutFaction = GetFactionAmount(Spawn, 103)
+ if FP_ScoutFaction >=40000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_40_gf_844f23c4.mp3", "You're no longer just a Seafury Buccaneer with us, matey. If port space weren't such a problem, we'd let you captain your own ship.", "", 2955148126, 830655827, Spawn)
+ elseif FP_ScoutFaction >=30000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_30_gf_e6790307.mp3", "Avast ye! I just wanted to thank you for the plunder you bring to the Seafury Buccaneers.", "", 2403558940, 3041491321, Spawn)
+ elseif FP_ScoutFaction >=20000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_20_gf_e6790307.mp3", "A landlubber be interested in working for the Seafury Buccaneers? I'm not saying it's impossible, but I'll keep steady eyes on you, mate.", "", 2403558940, 3041491321, Spawn)
+ elseif FP_ScoutFaction >=10000 then
+ FaceTarget(Other, Spawn)
+ PlayFlavor(Other, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_10_gf_e6790307.mp3", "The Seafury Buccaneers demand the most out of thier crew. Are you up to the task?", "", 2403558940, 3041491321, Spawn)
+ end
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/FavoniusSeneca.lua b/server/SpawnScripts/BeggarsCourt/FavoniusSeneca.lua
index 22a03d226..9ef93a713 100755
--- a/server/SpawnScripts/BeggarsCourt/FavoniusSeneca.lua
+++ b/server/SpawnScripts/BeggarsCourt/FavoniusSeneca.lua
@@ -7,6 +7,7 @@
--]]
require "SpawnScripts/Generic/DialogModule"
+local Fighter = 5898
function spawn(NPC)
end
@@ -24,7 +25,49 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Mind your own business. If you keep gawking, you'll walk away with a limp--and that's because I'm in a good mood today.")
Dialog.AddVoiceover("voiceover/english/favonius_seneca/fprt_hood04/favoniusseneca000.mp3", 4143618696, 2550129080)
+ if HasQuest(Spawn,Fighter) and GetQuestStep(Spawn,Fighter)>=7 and GetQuestStep(Spawn,Fighter)<=97 and GetQuestStepProgress(Spawn,Fighter,7)==0 then
+ Dialog.AddOption("Overlord Lucan would prefer that you didn't allow the Guttersnipes into Beggars Court.","Dialog2")
+ end
Dialog.AddOption("Some mood... ")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh yeah? Well, I'd \"prefer\" that the Overlord pay me some of his cold hard cash before I stop serving the Guttersnipes. You know what I'm saying?")
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/favonius_seneca/fprt_hood04/favoniusseneca001.mp3", 2651374016, 1797185719)
+ Dialog.AddOption("Offering a bribe! That's another charge we can add to your file.","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey! That's not what I said! Don't you dare tell the Overlord or anyone else that I said that! If you do, I swear to you that I'll...")
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/favonius_seneca/fprt_hood04/favoniusseneca002.mp3", 2763282382, 509438701)
+ Dialog.AddOption("Or you'll what?","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "stare", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog4",1,Spawn)
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn,Fighter,7)
+ Dialog.AddDialog("Umm ... I'll ... uh ... I'll make ... I'll make sure that the Guttersnipes don't show up here in Beggar's Court, okay?")
+ PlayFlavor(NPC, "", "", "cringe", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/favonius_seneca/fprt_hood04/favoniusseneca003.mp3", 1546990870, 1516965845)
+ Dialog.AddOption("Finally, you see reason. All hail the Overlord!")
+ Dialog.Start()
+end
+
+--
+
diff --git a/server/SpawnScripts/BeggarsCourt/FestusSeptimius.lua b/server/SpawnScripts/BeggarsCourt/FestusSeptimius.lua
index 44c96ec1e..e01c3a7cb 100755
--- a/server/SpawnScripts/BeggarsCourt/FestusSeptimius.lua
+++ b/server/SpawnScripts/BeggarsCourt/FestusSeptimius.lua
@@ -1,9 +1,9 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/FestusSeptimius.lua
Script Purpose : Festus Septimius
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.15
- Script Notes :
+ Script Notes : Cleaned up script, added emotes/callouts/finish text - Dorbin
--]]
require "SpawnScripts/Generic/DialogModule"
@@ -11,52 +11,74 @@ require "SpawnScripts/Generic/DialogModule"
local BottlesOfBeerInMyHand = 5649
function spawn(NPC)
- ProvidesQuest(NPC, BottlesOfBeerInMyHand)
+ ProvidesQuest(NPC, BottlesOfBeerInMyHand)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
end
+function InRange(NPC,Spawn)
+if CanReceiveQuest(Spawn,BottlesOfBeerInMyHand) and GetTempVariable(NPC,"CalloutTimer") ~= "true" then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/festus_septimus/fprt_hood04/100_std_festus_septimius_hum_m_callout_bff82cf.mp3", "This is hand blown, custom made glass. You break it, and I'll break something of yours, got it?", "glare", 202406317, 1807424794, Spawn, 0)
+ AddTimer(NPC,60000,"ResetCallout",1,Spawn)
+elseif HasCompletedQuest(Spawn,BottlesOfBeerInMyHand) and GetTempVariable(NPC,"CalloutTimer") ~= "true" then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/festus_septimus/fprt_hood04/100_std_festus_septimius_hum_m_multhail4_73ae922d.mp3", "Leave before you break something. I no longer need your services.", "no", 266472789, 272800124, Spawn, 0)
+ AddTimer(NPC,100000,"ResetCallout",1,Spawn)
+end
+end
-
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, BottlesOfBeerInMyHand) and not HasCompletedQuest(Spawn, BottlesOfBeerInMyHand) then
- Dialog2(NPC, Spawn)
- elseif GetQuestStep(Spawn, BottlesOfBeerInMyHand) == 2 then
- SetStepComplete(Spawn, BottlesOfBeerInMyHand, 2)
- --Dialog6(NPC, Spawn)
- end
+ Dialog1(NPC, Spawn)
+end
+
+function Offer(NPC, Spawn)
+ OfferQuest(NPC, Spawn, BottlesOfBeerInMyHand)
end
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I need gritty sand to craft glass. Glass made from beach sand is too sturdy, so I must use my old standby - crab gizzard sand. Go to the Sunken City and find some bulky crabs. Kill them, open up their gizzards, and sift out the sand. Return with the gritty sand from several crabs and I'll pay you for your work.")
- Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/quests/festusseptimus/festus_x1_accept.mp3", 395004029, 46881327)
- Dialog.AddOption("I'll go get some for you.")
+ Dialog.AddDialog("This glass is all hand blown and custom made. If you break it, then I break something of yours, got it?")
+ Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/std_festus_septimius.mp3", 692395193, 2329059486)
+ if CanReceiveQuest(Spawn,BottlesOfBeerInMyHand) then
+ Dialog.AddOption("What would you do if I broke all of them?", "Dialog2")
+ elseif GetQuestStep(Spawn,BottlesOfBeerInMyHand) ==2 then
+ Dialog.AddOption("I've got some of sand. Is this what you needed?", "Dialog3")
+ end
+ Dialog.AddOption("I'll be careful.")
Dialog.Start()
- OfferQuest(NPC, Spawn, BottlesOfBeerInMyHand)
end
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("This glass is all hand blown and custom made. If you break it, then I break something of yours, got it?")
- Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/std_festus_septimius.mp3", 692395193, 2329059486)
- Dialog.AddOption("What would you do if I broke all of them?", "Dialog3")
- Dialog.AddOption("I'll be careful.")
+ Dialog.AddDialog("Ha ha! Good luck, buddy. I'd like to see you try and break my sturdy glassware! Now, instead of throwing back and forth useless threats, how 'bout I hire you? I need someone with your attitude. Are you willing to do some hunting?")
+ Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/quests/festusseptimus/festus_x1_initial.mp3", 2997850121, 1619430784)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn, 0)
+ Dialog.AddOption("What did you have in mind?", "Offer")
+ Dialog.AddOption("No, I'm not.")
Dialog.Start()
end
function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Ha ha! Good luck, buddy. I'd like to see you try and break my sturdy glassware! Now, instead of throwing back and forth useless threats, how 'bout I hire you? I need someone with your attitude. Are you willing to do some hunting?")
- Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/quests/festusseptimus/festus_x1_initial.mp3", 2997850121, 1619430784)
- Dialog.AddOption("What did you have in mind?", "Dialog1")
- Dialog.AddOption("No, I'm not.")
+ Dialog.AddDialog("Yeah, that's the stuff ... look at how gritty it is. Using this sand in my compound, I can make bottles that don't shatter. Who wants to be in a tavern brawl with a bottle that breaks into pieces? Yes, my bottles shall break with nice, jagged edges, perfect for gutting someone. Now, leave before you break something. I no longer need your services.")
+ Dialog.AddVoiceover("voiceover/english/festus_septimus/fprt_hood04/quests/festusseptimus/festus_x1_finish.mp3", 1838584375, 682330236)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn, 0)
+ Dialog.AddOption("I see. I'll think of you the next time I gut someone in a tavern.")
Dialog.Start()
-end
-
+ SetStepComplete(Spawn,BottlesOfBeerInMyHand,2)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/GalusPomponius.lua b/server/SpawnScripts/BeggarsCourt/GalusPomponius.lua
new file mode 100755
index 000000000..9281b1749
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/GalusPomponius.lua
@@ -0,0 +1,143 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/GalusPomponius.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 07:11:11
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 56.59, 5, -23.36, 2, 1)
+ MovementLoopAddLocation(NPC, 56.59, 5, -23.36, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 56.59, 5, -23.36, 2, 0)
+ MovementLoopAddLocation(NPC, 56.37, 5, -20.98, 2, 0)
+ MovementLoopAddLocation(NPC, 51.86, 5, -15.47, 2, 0)
+ MovementLoopAddLocation(NPC, 50.42, 4.75, -11.99, 2, 0)
+ MovementLoopAddLocation(NPC, 49.27, 4, -7.35, 2, 0)
+ MovementLoopAddLocation(NPC, 50.53, 4, -5.35, 2, 0)
+ MovementLoopAddLocation(NPC, 52.94, 4, -0.98, 2, 0)
+ MovementLoopAddLocation(NPC, 55.05, 3.66, 1.8, 2, 0)
+ MovementLoopAddLocation(NPC, 53.02, 3.25, 2.46, 2, 0)
+ MovementLoopAddLocation(NPC, 50.09, 3, 4.2, 2, 0)
+ MovementLoopAddLocation(NPC, 49.25, 3, 7.27, 2, 0)
+ MovementLoopAddLocation(NPC, 47.2, 2.5, 10.27, 2, 0)
+ MovementLoopAddLocation(NPC, 42.6, 2.25, 11.24, 2, 0)
+ MovementLoopAddLocation(NPC, 37.84, 2, 12.6, 2, 0)
+ MovementLoopAddLocation(NPC, 32.01, 2, 15.65, 2, 20)
+ MovementLoopAddLocation(NPC, 32.01, 2, 15.65, 2, 0)
+ MovementLoopAddLocation(NPC, 31.48, 2.01, 13.85, 2, 0)
+ MovementLoopAddLocation(NPC, 29.98, 2.29, 13.02, 2, 0)
+ MovementLoopAddLocation(NPC, 26.95, 2.25, 13.33, 2, 0)
+ MovementLoopAddLocation(NPC, 24.33, 2.25, 14.13, 2, 0)
+ MovementLoopAddLocation(NPC, 20.31, 2.25, 16.43, 2, 0)
+ MovementLoopAddLocation(NPC, 14.54, 2.25, 16.41, 2, 0)
+ MovementLoopAddLocation(NPC, 10.67, 2, 16.13, 2, 0)
+ MovementLoopAddLocation(NPC, 4.29, 2, 12.77, 2, 0)
+ MovementLoopAddLocation(NPC, 1.93, 2, 11.25, 2, 0)
+ MovementLoopAddLocation(NPC, 0.6, 2.02, 13.01, 2, 0)
+ MovementLoopAddLocation(NPC, -0.22, 1.95, 14.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1.92, 1.91, 15.18, 2, 0)
+ MovementLoopAddLocation(NPC, -3.78, 1.45, 14.96, 2, 0)
+ MovementLoopAddLocation(NPC, -9.02, -1.38, 12.73, 2, 0)
+ MovementLoopAddLocation(NPC, -11.49, -2.89, 11.07, 2, 0)
+ MovementLoopAddLocation(NPC, -14.49, -4.99, 8.03, 2, 0)
+ MovementLoopAddLocation(NPC, -15.17, -5, 8.98, 2, 0)
+ MovementLoopAddLocation(NPC, -15.11, -5, 10.15, 2, 0)
+ MovementLoopAddLocation(NPC, -13.29, -5, 12.61, 2, 0)
+ MovementLoopAddLocation(NPC, -10.74, -5, 15.16, 2, 0)
+ MovementLoopAddLocation(NPC, -5.99, -5.25, 19.61, 2, 0)
+ MovementLoopAddLocation(NPC, -5.08, -5.5, 21.54, 2, 0)
+ MovementLoopAddLocation(NPC, 0.69, -5.5, 22.23, 2, 0)
+ MovementLoopAddLocation(NPC, 2.69, -5.5, 22.91, 2, 0)
+ MovementLoopAddLocation(NPC, 4.32, -5.5, 27.3, 2, 0)
+ MovementLoopAddLocation(NPC, 8.87, -5.5, 30.72, 2, 0)
+ MovementLoopAddLocation(NPC, 13.89, -5.5, 32.62, 2, 0)
+ MovementLoopAddLocation(NPC, 14.2, -5.75, 34.73, 2, 0)
+ MovementLoopAddLocation(NPC, 12.99, -6, 36.26, 2, 30)
+ MovementLoopAddLocation(NPC, 12.99, -6, 36.26, 2, 0)
+ MovementLoopAddLocation(NPC, 14.43, -6, 35.89, 2, 0)
+ MovementLoopAddLocation(NPC, 18.78, -6, 35.17, 2, 0)
+ MovementLoopAddLocation(NPC, 22.34, -6, 35.64, 2, 0)
+ MovementLoopAddLocation(NPC, 24.65, -6, 33.8, 2, 0)
+ MovementLoopAddLocation(NPC, 27.91, -5.25, 30.13, 2, 0)
+ MovementLoopAddLocation(NPC, 35.48, -5, 31.14, 2, 0)
+ MovementLoopAddLocation(NPC, 37.5, -5, 31.83, 2, 0)
+ MovementLoopAddLocation(NPC, 46.63, -5, 33.93, 2, 0)
+ MovementLoopAddLocation(NPC, 51.05, -5, 35.28, 2, 0)
+ MovementLoopAddLocation(NPC, 51.79, -5, 38.03, 2, 0)
+ MovementLoopAddLocation(NPC, 52.3, -6.25, 48.1, 2, 0)
+ MovementLoopAddLocation(NPC, 51.35, -6.53, 51.57, 2, 0)
+ MovementLoopAddLocation(NPC, 46.15, -6.91, 64.68, 2, 20)
+ MovementLoopAddLocation(NPC, 46.92, -6.92, 62.68, 2, 0)
+ MovementLoopAddLocation(NPC, 45.14, -6.94, 60, 2, 0)
+ MovementLoopAddLocation(NPC, 41.27, -7, 55.16, 2, 0)
+ MovementLoopAddLocation(NPC, 38.05, -7, 53.58, 2, 0)
+ MovementLoopAddLocation(NPC, 16.08, -7, 51.23, 2, 0)
+ MovementLoopAddLocation(NPC, 3.03, -7, 46.82, 2, 0)
+ MovementLoopAddLocation(NPC, 3.64, -6.5, 42.06, 2, 0)
+ MovementLoopAddLocation(NPC, 5.09, -6, 37.23, 2, 0)
+ MovementLoopAddLocation(NPC, 6.94, -5.75, 32.12, 2, 0)
+ MovementLoopAddLocation(NPC, 13.22, -5, 28.38, 2, 0)
+ MovementLoopAddLocation(NPC, 17.25, -5, 26.51, 2, 0)
+ MovementLoopAddLocation(NPC, 24.06, -5, 24.71, 2, 0)
+ MovementLoopAddLocation(NPC, 31.39, -5, 23.08, 2, 0)
+ MovementLoopAddLocation(NPC, 35.45, -4.37, 22.8, 2, 0)
+ MovementLoopAddLocation(NPC, 39.69, -2.26, 23.72, 2, 0)
+ MovementLoopAddLocation(NPC, 45.16, 0.45, 24.74, 2, 0)
+ MovementLoopAddLocation(NPC, 49.07, 1.89, 24.7, 2, 0)
+ MovementLoopAddLocation(NPC, 49.51, 2, 23.65, 2, 0)
+ MovementLoopAddLocation(NPC, 48.63, 2, 19.79, 2, 0)
+ MovementLoopAddLocation(NPC, 47.8, 2, 15.42, 2, 0)
+ MovementLoopAddLocation(NPC, 36.86, 2, 11.68, 2, 0)
+ MovementLoopAddLocation(NPC, 33.37, 2.5, 10.68, 2, 0)
+ MovementLoopAddLocation(NPC, 29.42, 3.5, 5.52, 2, 0)
+ MovementLoopAddLocation(NPC, 28.22, 3.5, -0.55, 2, 0)
+ MovementLoopAddLocation(NPC, 30.71, 5.25, -8.57, 2, 0)
+ MovementLoopAddLocation(NPC, 33.05, 5.25, -11.71, 2, 0)
+ MovementLoopAddLocation(NPC, 36.01, 5.25, -14.42, 2, 0)
+ MovementLoopAddLocation(NPC, 42.85, 5.25, -16.72, 2, 0)
+ MovementLoopAddLocation(NPC, 51.05, 5, -21.04, 2, 0)
+end
+
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ else
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/GilrielCypria.lua b/server/SpawnScripts/BeggarsCourt/GilrielCypria.lua
index 84650ac1e..16d4cbfe4 100755
--- a/server/SpawnScripts/BeggarsCourt/GilrielCypria.lua
+++ b/server/SpawnScripts/BeggarsCourt/GilrielCypria.lua
@@ -1,12 +1,41 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/GilrielCypria.lua
Script Purpose : Gilriel Cypria
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
+
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 50 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,25000,"ResetCalloutTimer")
+ Talk(NPC, Spawn)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
end
function respawn(NPC)
@@ -14,12 +43,37 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,5)
+function Talk(NPC, Spawn)
+local FP_ScoutFaction = GetFactionAmount(Spawn, 103)
+ if FP_ScoutFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_8d7c7902.mp3", "I'd rather be stranded overboard than be converted by the dark beliefs that Dismal Rage preaches.", "", 398195151, 3450382472, Spawn, 0)
elseif choice == 2 then
@@ -31,4 +85,22 @@ function RandomGreeting(NPC, Spawn)
elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_hail_gf_b1479083.mp3", "The Seafury Buccaneers are feared by all others on the open sea. They show no mercy to the dogs that try to sail the sea unprotected.", "", 1087502675, 64319081, Spawn, 0)
end
-end
\ No newline at end of file
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_ScoutFaction = GetFactionAmount(Spawn, 103)
+ if FP_ScoutFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_40_gf_844f23c4.mp3", "You're no longer just a Seafury Buccaneer with us, matey. If port space weren't such a problem, we'd let you captain your own ship.", "", 2955148126, 830655827, Spawn)
+ elseif FP_ScoutFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_30_gf_e6790307.mp3", "Avast ye! I just wanted to thank you for the plunder you bring to the Seafury Buccaneers.", "", 2403558940, 3041491321, Spawn)
+ elseif FP_ScoutFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_20_gf_e6790307.mp3", "A landlubber be interested in working for the Seafury Buccaneers? I'm not saying it's impossible, but I'll keep steady eyes on you, mate.", "", 2403558940, 3041491321, Spawn)
+ elseif FP_ScoutFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seafurybuccaneers/ft/eco/evil/human_eco_evil_seafurybuccaneers_10_gf_e6790307.mp3", "The Seafury Buccaneers demand the most out of thier crew. Are you up to the task?", "", 2403558940, 3041491321, Spawn)
+ end
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/GuardNolia.lua b/server/SpawnScripts/BeggarsCourt/GuardNolia.lua
new file mode 100755
index 000000000..3e9a2aec0
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/GuardNolia.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/GuardNolia.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 04:11:20
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
diff --git a/server/SpawnScripts/BeggarsCourt/GuardValerian.lua b/server/SpawnScripts/BeggarsCourt/GuardValerian.lua
new file mode 100755
index 000000000..962131e53
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/GuardValerian.lua
@@ -0,0 +1,94 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/GuardValerian.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 04:11:41
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function spawn(NPC)
+ waypoints(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -15.55, 3.75, -30.53, 2, 0)
+ MovementLoopAddLocation(NPC, -10.51, 3.25, -27.13, 2, 0)
+ MovementLoopAddLocation(NPC, -8.21, 3, -24.92, 2, 0)
+ MovementLoopAddLocation(NPC, -6.21, 3.25, -17.11, 2, 0)
+ MovementLoopAddLocation(NPC, -5.41, 3.25, -11.43, 2, 0)
+ MovementLoopAddLocation(NPC, -3.85, 3.25, -6.35, 2, 0)
+ MovementLoopAddLocation(NPC, 0.96, 3.5, -3.49, 2, 0)
+ MovementLoopAddLocation(NPC, 5.49, 3.5, -0.06, 2, 0)
+ MovementLoopAddLocation(NPC, 11.41, 3.5, 5.29, 2, 0)
+ MovementLoopAddLocation(NPC, 16.72, 3.5, 5.57, 2, 0)
+ MovementLoopAddLocation(NPC, 23.78, 3.5, 7.13, 2, 0)
+ MovementLoopAddLocation(NPC, 31.21, 3.15, 7.42, 2, 0)
+ MovementLoopAddLocation(NPC, 34.6, 3, 6.34, 2, 0)
+ MovementLoopAddLocation(NPC, 40.73, 3, 4.05, 2, 0)
+ MovementLoopAddLocation(NPC, 44.32, 3, 3.95, 2, 0)
+ MovementLoopAddLocation(NPC, 48.23, 3, 2.97, 2, 0)
+ MovementLoopAddLocation(NPC, 48.23, 3, 2.97, 2, 6)
+ MovementLoopAddLocation(NPC, 47.92, 3.5, -2.36, 2, 0)
+ MovementLoopAddLocation(NPC, 48.01, 3.75, -5.81, 2, 0)
+ MovementLoopAddLocation(NPC, 43.98, 3.75, -9.07, 2, 0)
+ MovementLoopAddLocation(NPC, 40.13, 4.51, -9.92, 2, 0)
+ MovementLoopAddLocation(NPC, 36.93, 5.25, -11.12, 2, 0)
+ MovementLoopAddLocation(NPC, 28.96, 5.25, -9.06, 2, 0)
+ MovementLoopAddLocation(NPC, 24.02, 5.25, -11.09, 2, 0)
+ MovementLoopAddLocation(NPC, 20.92, 5.25, -14.09, 2, 0)
+ MovementLoopAddLocation(NPC, 17.4, 4.75, -17.79, 2, 0)
+ MovementLoopAddLocation(NPC, 15.17, 4.75, -20.15, 2, 0)
+ MovementLoopAddLocation(NPC, 9.03, 4.75, -22.65, 2, 0)
+ MovementLoopAddLocation(NPC, -0.63, 3.5, -22.11, 2, 0)
+ MovementLoopAddLocation(NPC, -7.31, 3, -27.28, 2, 0)
+ MovementLoopAddLocation(NPC, -16.66, 3.75, -31.7, 2, 6)
+ MovementLoopAddLocation(NPC, -16.08, 3, -24.4, 2, 0)
+ MovementLoopAddLocation(NPC, -16.67, 3, -16.29, 2, 0)
+ MovementLoopAddLocation(NPC, -16.69, 2.5, -11.6, 2, 0)
+ MovementLoopAddLocation(NPC, -10.35, 2.25, -6.55, 2, 0)
+ MovementLoopAddLocation(NPC, -5.69, 2.75, -3.01, 2, 0)
+ MovementLoopAddLocation(NPC, -1.24, 3.25, -2.38, 2, 0)
+ MovementLoopAddLocation(NPC, 1.98, 3.5, -2.19, 2, 0)
+ MovementLoopAddLocation(NPC, 8.33, 3.5, 2.61, 2, 0)
+ MovementLoopAddLocation(NPC, 13.24, 3.5, 6.62, 2, 0)
+ MovementLoopAddLocation(NPC, 18.3, 3.5, 8.14, 2, 0)
+ MovementLoopAddLocation(NPC, 25.4, 3.5, 6.72, 2, 0)
+ MovementLoopAddLocation(NPC, 32.86, 3.25, 5.7, 2, 0)
+ MovementLoopAddLocation(NPC, 36.19, 3, 5.74, 2, 0)
+ MovementLoopAddLocation(NPC, 40.36, 3, 4.25, 2, 0)
+ MovementLoopAddLocation(NPC, 43.93, 3, 3.91, 2, 0)
+ MovementLoopAddLocation(NPC, 47.06, 3, 3.13, 2, 0)
+ MovementLoopAddLocation(NPC, 49.16, 3, 2.85, 2, 6)
+ MovementLoopAddLocation(NPC, 53.36, 3.25, 3.12, 2, 10)
+ MovementLoopAddLocation(NPC, 50.14, 3, 1.46, 2, 0)
+ MovementLoopAddLocation(NPC, 48.2, 3.75, -4.36, 2, 0)
+ MovementLoopAddLocation(NPC, 46.64, 3.75, -8.54, 2, 0)
+ MovementLoopAddLocation(NPC, 41.13, 4.22, -9.05, 2, 0)
+ MovementLoopAddLocation(NPC, 34.75, 5.25, -11.08, 2, 0)
+ MovementLoopAddLocation(NPC, 27.35, 5.25, -9.25, 2, 0)
+ MovementLoopAddLocation(NPC, 21.6, 5.25, -10.64, 2, 0)
+ MovementLoopAddLocation(NPC, 21.46, 5.25, -15.43, 2, 0)
+ MovementLoopAddLocation(NPC, 18.05, 4.75, -17.59, 2, 0)
+ MovementLoopAddLocation(NPC, 13.15, 4.75, -21.2, 2, 0)
+ MovementLoopAddLocation(NPC, 9.15, 4.75, -22.85, 2, 0)
+ MovementLoopAddLocation(NPC, 0.32, 3.75, -22.11, 2, 0)
+ MovementLoopAddLocation(NPC, -6.5, 3, -26.32, 2, 0)
+ MovementLoopAddLocation(NPC, -12.92, 3.75, -30.29, 2, 0)
+ MovementLoopAddLocation(NPC, -17.41, 3.75, -32.54, 2, 6)
+end
+
+
diff --git a/server/SpawnScripts/BeggarsCourt/Hodstock.lua b/server/SpawnScripts/BeggarsCourt/Hodstock.lua
index 4878036c5..7e7d6c1e5 100755
--- a/server/SpawnScripts/BeggarsCourt/Hodstock.lua
+++ b/server/SpawnScripts/BeggarsCourt/Hodstock.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
function spawn(NPC)
waypoints(NPC)
@@ -19,17 +20,17 @@ function respawn(NPC)
end
function waypoints(NPC)
- MovementLoopAddLocation(NPC, -7.81, 3, -19.57, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, -3.46, 3.5, -21.79, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, 7.94, 4.75, -27.61, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, 18.88, 5, -23.11, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, 24.79, 5.25, -12.29, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, 32.19, 3.5, 1.29, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, 19.57, 3.5, 3.37, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, 3.06, 2.5, 6.1, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, -21.48, 2, -8.8, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, -22.21, 3, -29.52, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, -2.74, 4.75, -41.91, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, -11.8, 3.75, -32.19, 2, math.random(2,12))
- MovementLoopAddLocation(NPC, -6.42, 3.25, -19.49, 2, math.random(2,12))
+ MovementLoopAddLocation(NPC, -7.81, 3, -19.57, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, -3.46, 3.5, -21.79, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, 7.94, 4.75, -27.61, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, 18.88, 5, -23.11, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, 24.79, 5.25, -12.29, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, 32.19, 3.5, 1.29, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, 19.57, 3.5, 3.37, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, 3.06, 2.5, 6.1, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, -21.48, 2, -8.8, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, -22.21, 3, -29.52, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, -2.74, 4.75, -41.91, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, -11.8, 3.75, -32.19, 1, math.random(2,12))
+ MovementLoopAddLocation(NPC, -6.42, 3.25, -19.49, 1, math.random(2,12))
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/InnkeeperMelus.lua b/server/SpawnScripts/BeggarsCourt/InnkeeperMelus.lua
index d583bc446..46e68716e 100755
--- a/server/SpawnScripts/BeggarsCourt/InnkeeperMelus.lua
+++ b/server/SpawnScripts/BeggarsCourt/InnkeeperMelus.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/InnkeeperMelus.lua
Script Purpose : Innkeeper Melus
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
@@ -9,42 +9,76 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "hello", 2131223265, 1605898906, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 4267987983, 4115199119, Spawn, 0)
+ end
end
function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
+ local choice = MakeRandomInt(1,4)
+ FaceTarget(NPC, Spawn)
if choice == 1 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", 0, 0, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_252bf582.mp3", "Room rates are by the night not by the hour!", "scold", 1428065610, 3259602252, Spawn, 0)
elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", 0, 0, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_a81dfaee.mp3", "Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ", "stare", 2206861027, 3893730348, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", "What! What do you want?", "boggle", 1358705787, 1083758044, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_cac7726b.mp3", "Look I'm no cook, but I was going to have some fresh kidneys myself. You want me to get you a pair?", "shrug", 2253071510, 109270441, Spawn, 0)
end
- Dialog1(NPC, Spawn)
end
-function Dialog1(NPC, Spawn)
+--[[function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Hello Gaikichi, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
+ Dialog.AddDialog("Hello, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper010.mp3", 328655352, 2391913046)
Dialog.AddOption("Yes.", "Dialog9")
Dialog.AddOption("No thanks.")
Dialog.Start()
-end
+end]]--
-function Dialog9(NPC, Spawn)
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("What would you like to know?")
- Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper001.mp3", 1649814488, 96870422)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ Dialog.AddDialog("Room rates are by the night not by the hour!")
+ Dialog.AddVoiceover("voiceover/english/human_eco_evil_1/ft/service/innkeeper/human_innkeeper_service_evil_1_hail_gm_252bf582.mp3", 925112517, 1550850765)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ Dialog.AddDialog("Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ")
+ Dialog.AddVoiceover("voiceover/english/human_eco_evil_1/ft/service/innkeeper/human_innkeeper_service_evil_1_hail_gm_a81dfaee.mp3", 575045448, 3537343785)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ Dialog.AddDialog("What! What do you want?")
+ Dialog.AddVoiceover("voiceover/english/human_eco_evil_1/ft/service/innkeeper/human_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", 1602010016, 1978444643)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn, 0)
+ end
Dialog.AddOption("How can I place an item in my house?", "Dialog7")
Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
Dialog.AddOption("What is the marketboard for?", "Dialog6")
@@ -85,7 +119,7 @@ function Dialog2(NPC, Spawn)
Dialog.AddOption("How can I place an item in my house?", "Dialog7")
Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
Dialog.AddOption("What is the marketboard for?", "Dialog6")
- Dialog.AddOption("That’s enough for now, thanks.")
+ Dialog.AddOption("That's enough for now, thanks.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/BeggarsCourt/JuniaCalvina.lua b/server/SpawnScripts/BeggarsCourt/JuniaCalvina.lua
new file mode 100755
index 000000000..65c84c8d0
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/JuniaCalvina.lua
@@ -0,0 +1,149 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/JuniaCalvina.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 05:11:10
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
+
+function InRange(NPC,Spawn)
+ GenericRaceCheckCallout(NPC, Spawn)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ else
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
+
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -13.6, 4, -43, 2, 0)
+ MovementLoopAddLocation(NPC, -17.5, 4, -45.15, 2, 0)
+ MovementLoopAddLocation(NPC, -20.06, 4, -42.64, 2, 0)
+ MovementLoopAddLocation(NPC, -22.21, 4, -39.74, 2, 1)
+ MovementLoopAddLocation(NPC, -22.21, 4, -39.74, 2, 10,"Action")
+ MovementLoopAddLocation(NPC, -21.46, 4, -38.12, 2, 0)
+ MovementLoopAddLocation(NPC, -18.87, 4, -35.27, 2, 0)
+ MovementLoopAddLocation(NPC, -19.17, 3.75, -32.9, 2, 0)
+ MovementLoopAddLocation(NPC, -22.19, 3, -31.23, 2, 0)
+ MovementLoopAddLocation(NPC, -25.31, 2.5, -27.22, 2, 0)
+ MovementLoopAddLocation(NPC, -23.61, 2.5, -20.45, 2, 0)
+ MovementLoopAddLocation(NPC, -19.28, 2.5, -16.28, 2, 0)
+ MovementLoopAddLocation(NPC, -13.81, 3, -13.86, 2, 0)
+ MovementLoopAddLocation(NPC, -9.56, 3, -14.45, 2, 0)
+ MovementLoopAddLocation(NPC, -7.88, 3, -15.75, 2, 0)
+ MovementLoopAddLocation(NPC, -8.7, 3, -18.45, 2, 0)
+ MovementLoopAddLocation(NPC, -12.29, 3, -17.9, 2, 1)
+ MovementLoopAddLocation(NPC, -12.29, 3, -17.9, 2, 30,"Action")
+ MovementLoopAddLocation(NPC, -12.29, 3, -17.9, 2, 0)
+ MovementLoopAddLocation(NPC, -11.32, 3, -20.1, 2, 0)
+ MovementLoopAddLocation(NPC, -16.54, 3, -21.25, 2, 0)
+ MovementLoopAddLocation(NPC, -17.88, 3, -20.04, 2, 0)
+ MovementLoopAddLocation(NPC, -17.96, 2.75, -15.76, 2, 0)
+ MovementLoopAddLocation(NPC, -16.67, 2.5, -10.4, 2, 0)
+ MovementLoopAddLocation(NPC, -15.58, 2, -4.67, 2, 0)
+ MovementLoopAddLocation(NPC, -17.52, 2.04, 1.75, 2, 0)
+ MovementLoopAddLocation(NPC, -19.4, 1.92, 5.66, 2, 0)
+ MovementLoopAddLocation(NPC, -20.84, 1.88, 5.26, 2, 0)
+ MovementLoopAddLocation(NPC, -23.52, 0.82, 3.94, 2, 0)
+ MovementLoopAddLocation(NPC, -26.6, -0.75, 2.91, 2, 0)
+ MovementLoopAddLocation(NPC, -27.16, -0.75, 4.86, 2, 0)
+ MovementLoopAddLocation(NPC, -26.06, -0.86, 5.82, 2, 0)
+ MovementLoopAddLocation(NPC, -24.88, -1.38, 6.04, 2, 0)
+ MovementLoopAddLocation(NPC, -19.29, -4.51, 8.76, 2, 0)
+ MovementLoopAddLocation(NPC, -18.05, -5.04, 9.61, 2, 0)
+ MovementLoopAddLocation(NPC, -14, -5, 13.48, 2, 0)
+ MovementLoopAddLocation(NPC, -12.85, -5.25, 15.89, 2, 0)
+ MovementLoopAddLocation(NPC, -10.25, -5.5, 20.95, 2, 0)
+ MovementLoopAddLocation(NPC, -9.5, -6, 25.22, 2, 0)
+ MovementLoopAddLocation(NPC, -6.97, -6, 28.64, 2, 1)
+ MovementLoopAddLocation(NPC, -6.97, -6, 28.64, 2, 30,"Action")
+ MovementLoopAddLocation(NPC, -6.97, -6, 28.64, 2, 0)
+ MovementLoopAddLocation(NPC, -10.74, -6, 27.61, 2, 0)
+ MovementLoopAddLocation(NPC, -20.47, -6.8, 27.46, 2, 0)
+ MovementLoopAddLocation(NPC, -26.93, -5.75, 24.54, 2, 0)
+ MovementLoopAddLocation(NPC, -28.51, -5.5, 20.83, 2, 0)
+ MovementLoopAddLocation(NPC, -28.02, -5.21, 18.75, 2, 0)
+ MovementLoopAddLocation(NPC, -25.75, -5, 17.26, 2, 0)
+ MovementLoopAddLocation(NPC, -22.16, -5, 15.75, 2, 0)
+ MovementLoopAddLocation(NPC, -21.54, -5, 14.68, 2, 1)
+ MovementLoopAddLocation(NPC, -21.54, -5, 14.68, 2, 10,"Action")
+ MovementLoopAddLocation(NPC, -18.92, -5, 11.18, 2, 0)
+ MovementLoopAddLocation(NPC, -19.54, -4.72, 10.22, 2, 0)
+ MovementLoopAddLocation(NPC, -22.18, -3.33, 9.17, 2, 0)
+ MovementLoopAddLocation(NPC, -27.88, -0.75, 6.76, 2, 0)
+ MovementLoopAddLocation(NPC, -28.03, -0.75, 4.63, 2, 0)
+ MovementLoopAddLocation(NPC, -27.35, -0.75, 2.02, 2, 0)
+ MovementLoopAddLocation(NPC, -24.68, -0.11, 1.93, 2, 0)
+ MovementLoopAddLocation(NPC, -20.03, 1.83, 3.85, 2, 0)
+ MovementLoopAddLocation(NPC, -18.65, 2.04, 1.71, 2, 0)
+ MovementLoopAddLocation(NPC, -16.5, 2, -3.57, 2, 0)
+ MovementLoopAddLocation(NPC, -16.95, 2, -5.81, 2, 0)
+ MovementLoopAddLocation(NPC, -20.7, 2.5, -13.77, 2, 0)
+ MovementLoopAddLocation(NPC, -22.29, 2.5, -21.23, 2, 0)
+ MovementLoopAddLocation(NPC, -24.58, 2.5, -25.95, 2, 0)
+ MovementLoopAddLocation(NPC, -21.01, 3, -28.74, 2, 0)
+ MovementLoopAddLocation(NPC, -18.07, 3.75, -32.73, 2, 0)
+ MovementLoopAddLocation(NPC, -20.68, 4, -38.3, 2, 0)
+ MovementLoopAddLocation(NPC, -18.64, 4, -43.86, 2, 0)
+ MovementLoopAddLocation(NPC, -17.16, 4, -44.9, 2, 1)
+ MovementLoopAddLocation(NPC, -17.16, 4, -44.9, 2, 10,"Action")
+ MovementLoopAddLocation(NPC, -15.36, 4, -44.36, 2, 0)
+ MovementLoopAddLocation(NPC, -13.5, 4, -44.04, 2, 0)
+ MovementLoopAddLocation(NPC, -1.68, 4.75, -46.14, 2, 0)
+ MovementLoopAddLocation(NPC, 0.42, 4.75, -48.58, 2, 1)
+ MovementLoopAddLocation(NPC, 0.42, 4.75, -48.58, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 0.42, 4.75, -48.58, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 0.42, 4.75, -48.58, 2, 0)
+ MovementLoopAddLocation(NPC, -0.69, 4.75, -46.76, 2, 0)
+ MovementLoopAddLocation(NPC, -6.93, 4, -43.67, 2, 0)
+ MovementLoopAddLocation(NPC, -10.95, 4, -41.51, 2, 0)
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "mood_angry", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ end
+end
diff --git a/server/SpawnScripts/BeggarsCourt/Kith.lua b/server/SpawnScripts/BeggarsCourt/Kith.lua
index d3dd94571..a49aeade5 100755
--- a/server/SpawnScripts/BeggarsCourt/Kith.lua
+++ b/server/SpawnScripts/BeggarsCourt/Kith.lua
@@ -1,29 +1,248 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/Kith.lua
- Script Author : Cynnar
+ Script Author : Dorbin
Script Date : 2018.07.08 10:07:36
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
function spawn(NPC)
- waypoints(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+SetTempVariable(NPC,"HissTimer", "0")
+AddTimer(NPC,MakeRandomInt(3000,6000),"waypoints")
end
-function respawn(NPC)
- spawn(NPC)
+function InRange(NPC,Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HissTimer")~="1" then
+ local Choice = MakeRandomInt(0,100)
+ if GetRace(Spawn)== 13 then
+ if Choice <=60 then
+ InRange_Attack(NPC,Spawn)
+ end
+ elseif Choice <= 15 then
+ InRange_Attack(NPC,Spawn)
+ end
+end
end
-function waypoints(NPC)local X = GetX(NPC)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MoveToLocation(NPC, 24.70, 3.50, 1.07)
- MovementLoopAddLocation(NPC, X + math.random(3,10), Y, Z + math.random(3,10), 2, math.random(20,45))
- MovementLoopAddLocation(NPC, 24.70, 3.50, 1.07, 2, 0)
- MovementLoopAddLocation(NPC, X - math.random(3,10), Y, Z - math.random(3,10), 2, math.random(20,45))
- MovementLoopAddLocation(NPC, 24.70, 3.50, 1.07, 2, 0)
- MovementLoopAddLocation(NPC, X + math.random(3,10), Y, Z + math.random(3,10), 2, math.random(20,45))
- MovementLoopAddLocation(NPC, 24.70, 3.50, 1.07, 2, 0)
- MovementLoopAddLocation(NPC, X - math.random(3,10), Y, Z - math.random(3,10), 2, math.random(20,45))
+function InRange_Attack(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ FaceTarget(NPC,Spawn)
+ AddTimer(NPC,1000,"HissAttack",1,Spawn)
+ elseif Choice == 2 then
+ AddTimer(NPC,500,"Hiss",1,Spawn)
+ end
+ SetTempVariable(NPC,"HissTimer", "1")
+ AddTimer(NPC,65000,"HissReset",1,Spawn)
+end
+
+
+function HissAttack(NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function Hiss(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ else
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss002.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+end
+
+function HissReset(NPC,Spawn)
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+
+function waypoints(NPC)
+ if MakeRandomInt(1,2) == 1 then
+ MovementLoopAddLocation(NPC, 29.96, 3.5, 4.4, 1, 0)
+ MovementLoopAddLocation(NPC, 37.9, 3.5, 2.99, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 45.43, 3.5, -0.12, 1, 0)
+ MovementLoopAddLocation(NPC, 46.58, 3.5, -2.74, 1, 0)
+ MovementLoopAddLocation(NPC, 48.04, 4, -8.21, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 43.66, 3.76, -9.6, 1, 0)
+ MovementLoopAddLocation(NPC, 39.2, 5.15, -11.27, 1, 0)
+ MovementLoopAddLocation(NPC, 39.2, 5.15, -11.27, 1, 0)
+ MovementLoopAddLocation(NPC, 37.88, 5.25, -11.96, 1, 0)
+ MovementLoopAddLocation(NPC, 29.44, 5.25, -15.14, 1, 0)
+ MovementLoopAddLocation(NPC, 23.76, 5.25, -17.37, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 22.52, 5.25, -20.46, 1, 0)
+ MovementLoopAddLocation(NPC, 21.59, 5.25, -26.12, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 17.35, 5, -25.97, 1, 0)
+ MovementLoopAddLocation(NPC, 10.61, 4.75, -24.79, 1, 0)
+ MovementLoopAddLocation(NPC, 3.95, 4.75, -29.18, 1, 0)
+ MovementLoopAddLocation(NPC, 2.8, 5, -32.38, 1, 0)
+ MovementLoopAddLocation(NPC, 3.51, 6.05, -36.6, 1, 30)
+ MovementLoopAddLocation(NPC, 1.62, 5, -35.55, 1, 0)
+ MovementLoopAddLocation(NPC, 1.69, 4.75, -31.27, 1, 0)
+ MovementLoopAddLocation(NPC, 0.14, 4.25, -27.79, 1, 0)
+ MovementLoopAddLocation(NPC, -1.15, 3.75, -24.35, 1, 0)
+ MovementLoopAddLocation(NPC, -2.43, 3.5, -20.94, 1, 0)
+ MovementLoopAddLocation(NPC, -1.45, 3.5, -17.13, 1, 0)
+ MovementLoopAddLocation(NPC, 0.6, 3.5, -13.28, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -0.35, 3.5, -10.13, 1, 0)
+ MovementLoopAddLocation(NPC, -2.81, 3.5, -8.76, 1, 0)
+ MovementLoopAddLocation(NPC, -6.82, 3, -9.05, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -9.17, 3, -9.37, 1, 0)
+ MovementLoopAddLocation(NPC, -8.68, 3, -12.98, 1, 0)
+ MovementLoopAddLocation(NPC, -8.44, 3, -18, 1, 0)
+ MovementLoopAddLocation(NPC, -10.69, 3, -17.97, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -13.06, 3, -20.7, 1, 0)
+ MovementLoopAddLocation(NPC, -14.85, 3, -20.62, 1, 0)
+ MovementLoopAddLocation(NPC, -15.72, 3, -16.58, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -15.4, 3, -13.91, 1, 0)
+ MovementLoopAddLocation(NPC, -14.95, 2.5, -8.4, 1, 0)
+ MovementLoopAddLocation(NPC, -11.73, 2, -0.16, 1, 0)
+ MovementLoopAddLocation(NPC, -8.85, 2.02, 4.76, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -12.77, 2, 1.04, 1, 0)
+ MovementLoopAddLocation(NPC, -15.05, 2, 0.7, 4, 2)
+ MovementLoopAddLocation(NPC, -17.55, 2.04, 1.72, 4, 0)
+ MovementLoopAddLocation(NPC, -20.93, 1.87, 5.23, 4, 0)
+ MovementLoopAddLocation(NPC, -26.59, -0.75, 2.94, 4, 0)
+ MovementLoopAddLocation(NPC, -27.35, -0.75, 4.8, 4, 0)
+ MovementLoopAddLocation(NPC, -26.43, -0.8, 5.55, 4, 0)
+ MovementLoopAddLocation(NPC, -18.26, -5.04, 9.36, 4, 0)
+ MovementLoopAddLocation(NPC, -18.1, -5, 11.52, 4, 0)
+ MovementLoopAddLocation(NPC, -20.64, -5, 13.69, 4, 2)
+ MovementLoopAddLocation(NPC, -21.32, -5, 19.96, 1, 30)
+ MovementLoopAddLocation(NPC, -23.79, -5, 19.76, 1, 0)
+ MovementLoopAddLocation(NPC, -25.77, -5, 19, 1, 0)
+ MovementLoopAddLocation(NPC, -29, -5.25, 19.07, 1, 0)
+ MovementLoopAddLocation(NPC, -26.26, -5.75, 23.49, 1, 0)
+ MovementLoopAddLocation(NPC, -17.58, -7, 30.99, 1, 0)
+ MovementLoopAddLocation(NPC, -10.25, -7, 42.6, 1, 0)
+ MovementLoopAddLocation(NPC, -11.31, -7, 48.66, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 4.71, -7, 59.52, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 16.21, -7, 50.4, 1, 0)
+ MovementLoopAddLocation(NPC, 17.53, -6, 43.91, 1, 0)
+ MovementLoopAddLocation(NPC, 17.33, -6, 39.91, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 13.67, -5.5, 32.8, 1, 0)
+ MovementLoopAddLocation(NPC, 8.68, -5.5, 30.84, 1, 0)
+ MovementLoopAddLocation(NPC, 4.82, -5.5, 27.91, 1, 0)
+ MovementLoopAddLocation(NPC, 5.9, -5, 21.06, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 15, -5, 26.38, 1, 0)
+ MovementLoopAddLocation(NPC, 21.19, -5, 26.16, 1, 0)
+ MovementLoopAddLocation(NPC, 33.62, -5, 28.12, 1, 0)
+ MovementLoopAddLocation(NPC, 45.73, -5, 30.41, 1, 0)
+ MovementLoopAddLocation(NPC, 48.05, -5, 36.37, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 33.34, -5, 30.22, 1, 0)
+ MovementLoopAddLocation(NPC, 31.44, -5, 23.24, 4, 2)
+ MovementLoopAddLocation(NPC, 37.17, -3.56, 23.02, 4, 0)
+ MovementLoopAddLocation(NPC, 41.93, -1.1, 24.14, 4, 0)
+ MovementLoopAddLocation(NPC, 48.26, 1.86, 25.26, 4, 0)
+ MovementLoopAddLocation(NPC, 49.49, 1.91, 24.58, 4, 0)
+ MovementLoopAddLocation(NPC, 49.05, 2, 21.4, 4, 0)
+ MovementLoopAddLocation(NPC, 52.68, 2, 18.88, 4, 2)
+ MovementLoopAddLocation(NPC, 42.93, 2, 15.24, 1, 0)
+ MovementLoopAddLocation(NPC, 36.16, 3.5, -1.75, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 34.14, 5.25, -10.41, 1, 0)
+ MovementLoopAddLocation(NPC, 32.3, 5.25, -14.52, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 20.04, 5.25, -10.78, 1, 30)
+ MovementLoopAddLocation(NPC, 20.04, 5.25, -10.78, 1, 0)
+ MovementLoopAddLocation(NPC, 21.63, 5.25, -9.94, 1, 0)
+ MovementLoopAddLocation(NPC, 23.33, 5.25, -9.37, 1, 0)
+ MovementLoopAddLocation(NPC, 24.22, 5.01, -7.44, 1, 0)
+ MovementLoopAddLocation(NPC, 30.13, 3.5, 4.37, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 14.46, 3.5, 1.5, 1, MakeRandomInt(8,16))
+
+ else
+
+
+ MovementLoopAddLocation(NPC, 14.46, 3.5, 1.5, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 30.13, 3.5, 4.37, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 24.22, 5.01, -7.44, 1, 0)
+ MovementLoopAddLocation(NPC, 23.33, 5.25, -9.37, 1, 0)
+ MovementLoopAddLocation(NPC, 21.63, 5.25, -9.94, 1, 0)
+ MovementLoopAddLocation(NPC, 20.04, 5.25, -10.78, 1, 0)
+ MovementLoopAddLocation(NPC, 20.04, 5.25, -10.78, 1, 30)
+ MovementLoopAddLocation(NPC, 20.04, 5.25, -10.78, 1, 0)
+ MovementLoopAddLocation(NPC, 32.3, 5.25, -14.52, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 34.14, 5.25, -10.41, 1, 0)
+ MovementLoopAddLocation(NPC, 36.16, 3.5, -1.75, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 42.93, 2, 15.24, 1, 0)
+ MovementLoopAddLocation(NPC, 52.68, 2, 18.88, 4, 2)
+ MovementLoopAddLocation(NPC, 49.05, 2, 21.4, 4, 0)
+ MovementLoopAddLocation(NPC, 49.49, 1.91, 24.58, 4, 0)
+ MovementLoopAddLocation(NPC, 48.26, 1.86, 25.26, 4, 0)
+ MovementLoopAddLocation(NPC, 41.93, -1.1, 24.14, 4, 0)
+ MovementLoopAddLocation(NPC, 37.17, -3.56, 23.02, 4, 0)
+ MovementLoopAddLocation(NPC, 31.44, -5, 23.24, 4, 2)
+ MovementLoopAddLocation(NPC, 33.34, -5, 30.22, 1, 0)
+ MovementLoopAddLocation(NPC, 48.05, -5, 36.37, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 45.73, -5, 30.41, 1, 0)
+ MovementLoopAddLocation(NPC, 33.62, -5, 28.12, 1, 0)
+ MovementLoopAddLocation(NPC, 21.19, -5, 26.16, 1, 0)
+ MovementLoopAddLocation(NPC, 15, -5, 26.38, 1, 0)
+ MovementLoopAddLocation(NPC, 5.9, -5, 21.06, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 4.82, -5.5, 27.91, 1, 0)
+ MovementLoopAddLocation(NPC, 8.68, -5.5, 30.84, 1, 0)
+ MovementLoopAddLocation(NPC, 13.67, -5.5, 32.8, 1, 0)
+ MovementLoopAddLocation(NPC, 17.33, -6, 39.91, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 17.53, -6, 43.91, 1, 0)
+ MovementLoopAddLocation(NPC, 16.21, -7, 50.4, 1, 0)
+ MovementLoopAddLocation(NPC, 4.71, -7, 59.52, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -11.31, -7, 48.66, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -10.25, -7, 42.6, 1, 0)
+ MovementLoopAddLocation(NPC, -17.58, -7, 30.99, 1, 0)
+ MovementLoopAddLocation(NPC, -26.26, -5.75, 23.49, 1, 0)
+ MovementLoopAddLocation(NPC, -29, -5.25, 19.07, 1, 0)
+ MovementLoopAddLocation(NPC, -25.77, -5, 19, 1, 0)
+ MovementLoopAddLocation(NPC, -23.79, -5, 19.76, 1, 0)
+ MovementLoopAddLocation(NPC, -21.32, -5, 19.96, 1, 30)
+ MovementLoopAddLocation(NPC, -23.79, -5, 19.76, 1, 0)
+ MovementLoopAddLocation(NPC, -20.64, -5, 13.69, 4, 2)
+ MovementLoopAddLocation(NPC, -18.1, -5, 11.52, 4, 0)
+ MovementLoopAddLocation(NPC, -18.26, -5.04, 9.36, 4, 0)
+ MovementLoopAddLocation(NPC, -26.43, -0.8, 5.55, 4, 0)
+ MovementLoopAddLocation(NPC, -27.35, -0.75, 4.8, 4, 0)
+ MovementLoopAddLocation(NPC, -26.59, -0.75, 2.94, 4, 0)
+ MovementLoopAddLocation(NPC, -20.93, 1.87, 5.23, 4, 0)
+ MovementLoopAddLocation(NPC, -17.55, 2.04, 1.72, 4, 0)
+ MovementLoopAddLocation(NPC, -15.05, 2, 0.7, 4, 2)
+ MovementLoopAddLocation(NPC, -12.77, 2, 1.04, 1, 0)
+ MovementLoopAddLocation(NPC, -8.85, 2.02, 4.76, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -11.73, 2, -0.16, 1, 0)
+ MovementLoopAddLocation(NPC, -14.95, 2.5, -8.4, 1, 0)
+ MovementLoopAddLocation(NPC, -15.4, 3, -13.91, 1, 0)
+ MovementLoopAddLocation(NPC, -15.72, 3, -16.58, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -14.85, 3, -20.62, 1, 0)
+ MovementLoopAddLocation(NPC, -13.06, 3, -20.7, 1, 0)
+ MovementLoopAddLocation(NPC, -10.69, 3, -17.97, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -8.44, 3, -18, 1, 0)
+ MovementLoopAddLocation(NPC, -8.68, 3, -12.98, 1, 0)
+ MovementLoopAddLocation(NPC, -9.17, 3, -9.37, 1, 0)
+ MovementLoopAddLocation(NPC, -6.82, 3, -9.05, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -2.81, 3.5, -8.76, 1, 0)
+ MovementLoopAddLocation(NPC, -0.35, 3.5, -10.13, 1, 0)
+ MovementLoopAddLocation(NPC, 0.6, 3.5, -13.28, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -1.45, 3.5, -17.13, 1, 0)
+ MovementLoopAddLocation(NPC, -2.43, 3.5, -20.94, 1, 0)
+ MovementLoopAddLocation(NPC, -1.15, 3.75, -24.35, 1, 0)
+ MovementLoopAddLocation(NPC, 0.14, 4.25, -27.79, 1, 0)
+ MovementLoopAddLocation(NPC, 1.69, 4.75, -31.27, 1, 0)
+ MovementLoopAddLocation(NPC, 1.62, 5, -35.55, 1, 0)
+ MovementLoopAddLocation(NPC, 3.51, 6.05, -36.6, 1, 30)
+ MovementLoopAddLocation(NPC, 3.51, 6.05, -36.6, 1, 0)
+ MovementLoopAddLocation(NPC, 2.8, 5, -32.38, 1, 0)
+ MovementLoopAddLocation(NPC, 3.95, 4.75, -29.18, 1, 0)
+ MovementLoopAddLocation(NPC, 10.61, 4.75, -24.79, 1, 0)
+ MovementLoopAddLocation(NPC, 17.35, 5, -25.97, 1, 0)
+ MovementLoopAddLocation(NPC, 21.59, 5.25, -26.12, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 22.52, 5.25, -20.46, 1, 0)
+ MovementLoopAddLocation(NPC, 23.76, 5.25, -17.37, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 29.44, 5.25, -15.14, 1, 0)
+ MovementLoopAddLocation(NPC, 37.88, 5.25, -11.96, 1, 0)
+ MovementLoopAddLocation(NPC, 39.2, 5.15, -11.27, 1, 0)
+ MovementLoopAddLocation(NPC, 39.2, 5.15, -11.27, 1, 0)
+ MovementLoopAddLocation(NPC, 43.66, 3.76, -9.6, 1, 0)
+ MovementLoopAddLocation(NPC, 48.04, 4, -8.21, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 46.58, 3.5, -2.74, 1, 0)
+ MovementLoopAddLocation(NPC, 45.43, 3.5, -0.12, 1, 0)
+ MovementLoopAddLocation(NPC, 37.9, 3.5, 2.99, 1, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 29.96, 3.5, 4.4, 1, 0)
+ end
end
diff --git a/server/SpawnScripts/BeggarsCourt/LiviaDrusilla.lua b/server/SpawnScripts/BeggarsCourt/LiviaDrusilla.lua
index 757815807..816cc8f2e 100755
--- a/server/SpawnScripts/BeggarsCourt/LiviaDrusilla.lua
+++ b/server/SpawnScripts/BeggarsCourt/LiviaDrusilla.lua
@@ -6,31 +6,122 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+ GenericEcologyCallout(NPC, Spawn, faction)
+ end
+
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 49.97, -5, 31.7, 2, 0)
+ MovementLoopAddLocation(NPC, 53.41, -5, 35.77, 2, 0)
+ MovementLoopAddLocation(NPC, 58.2, -5, 37.61, 2, 1)
+ MovementLoopAddLocation(NPC, 58.2, -5, 37.61, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 55.35, -5.25, 39.88, 2, 0)
+ MovementLoopAddLocation(NPC, 51.29, -5.75, 45.01, 2, 0)
+ MovementLoopAddLocation(NPC, 50.52, -6.15, 48.24, 2, 0)
+ MovementLoopAddLocation(NPC, 48.3, -6.92, 51.49, 2, 0)
+ MovementLoopAddLocation(NPC, 44.72, -7, 52.68, 2, 0)
+ MovementLoopAddLocation(NPC, 35.14, -7, 55.1, 2, 0)
+ MovementLoopAddLocation(NPC, 26.76, -7, 56.1, 2, 0)
+ MovementLoopAddLocation(NPC, 16.05, -7, 54.99, 2, 0)
+ MovementLoopAddLocation(NPC, -3.93, -7, 55.81, 2, 0)
+ MovementLoopAddLocation(NPC, -22.67, -7, 58.57, 2, 1)
+ MovementLoopAddLocation(NPC, -22.67, -7, 58.57, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -22.67, -7, 58.57, 2, 0)
+ MovementLoopAddLocation(NPC, -20.59, -7, 57, 2, 0)
+ MovementLoopAddLocation(NPC, -15.82, -7, 54.67, 2, 0)
+ MovementLoopAddLocation(NPC, -8.86, -7, 52.55, 2, 0)
+ MovementLoopAddLocation(NPC, -7.87, -7, 48.21, 2, 0)
+ MovementLoopAddLocation(NPC, -7.24, -7, 45.44, 2, 0)
+ MovementLoopAddLocation(NPC, -12.15, -7, 39.27, 2, 0)
+ MovementLoopAddLocation(NPC, -19.09, -7, 33.77, 2, 0)
+ MovementLoopAddLocation(NPC, -13.92, -6, 25.93, 2, 0)
+ MovementLoopAddLocation(NPC, -12.44, -5.5, 20.27, 2, 0)
+ MovementLoopAddLocation(NPC, -12.62, -5.25, 16.52, 2, 0)
+ MovementLoopAddLocation(NPC, -15.35, -5, 14.12, 2, 0)
+ MovementLoopAddLocation(NPC, -18.34, -5.02, 10.48, 2, 0)
+ MovementLoopAddLocation(NPC, -27.05, -0.75, 6.71, 2, 0)
+ MovementLoopAddLocation(NPC, -27.89, -0.75, 5.47, 2, 0)
+ MovementLoopAddLocation(NPC, -27.87, -0.75, 3.66, 2, 0)
+ MovementLoopAddLocation(NPC, -26.74, -0.76, 1.88, 2, 0)
+ MovementLoopAddLocation(NPC, -22.25, 1.14, 2.87, 2, 0)
+ MovementLoopAddLocation(NPC, -20.22, 1.86, 3.52, 2, 0)
+ MovementLoopAddLocation(NPC, -18.6, 2.07, 1.58, 2, 0)
+ MovementLoopAddLocation(NPC, -17.77, 2, 0.15, 2, 0)
+ MovementLoopAddLocation(NPC, -14.73, 2, -4.41, 2, 0)
+ MovementLoopAddLocation(NPC, -18.08, 2.5, -11.76, 2, 0)
+ MovementLoopAddLocation(NPC, -26.9, 2.5, -18.46, 2, 1)
+ MovementLoopAddLocation(NPC, -26.9, 2.5, -18.46, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -24.43, 2.5, -18.37, 2, 0)
+ MovementLoopAddLocation(NPC, -17.3, 3, -18.7, 2, 0)
+ MovementLoopAddLocation(NPC, -13.29, 3, -21.7, 2, 0)
+ MovementLoopAddLocation(NPC, -4.47, 3.5, -20.59, 2, 0)
+ MovementLoopAddLocation(NPC, 0.11, 3.5, -19.13, 2, 1)
+ MovementLoopAddLocation(NPC, 0.11, 3.5, -19.13, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 0.19, 3.5, -20.6, 2, 0)
+ MovementLoopAddLocation(NPC, 2.62, 3.87, -21.13, 2, 0)
+ MovementLoopAddLocation(NPC, 12.41, 4.75, -22.26, 2, 0)
+ MovementLoopAddLocation(NPC, 18.6, 5, -23.15, 2, 0)
+ MovementLoopAddLocation(NPC, 21, 5.25, -21.08, 2, 0)
+ MovementLoopAddLocation(NPC, 23.9, 5.25, -13.95, 2, 0)
+ MovementLoopAddLocation(NPC, 30.72, 5.25, -12.03, 2, 0)
+ MovementLoopAddLocation(NPC, 38.52, 5.25, -15.59, 2, 0)
+ MovementLoopAddLocation(NPC, 46.22, 5.25, -18.95, 2, 0)
+ MovementLoopAddLocation(NPC, 47.34, 5.25, -22.59, 2, 0)
+ MovementLoopAddLocation(NPC, 50.1, 5, -29.25, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, 51.57, 5.01, -32.3, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, 52.29, 5.01, -35.54, 2, 0)
+ MovementLoopAddLocation(NPC, 54.11, 5.01, -37.73, 2, 0)
+ MovementLoopAddLocation(NPC, 62.45, 5.01, -42.53, 2, 1)
+ MovementLoopAddLocation(NPC, 62.45, 5.01, -42.53, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 58.09, 5.04, -42.59, 2, 0)
+ MovementLoopAddLocation(NPC, 53.13, 5.01, -40.84, 2, 1)
+ MovementLoopAddLocation(NPC, 53.13, 5.01, -40.84, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 54.61, 5.01, -40.69, 2, 0)
+ MovementLoopAddLocation(NPC, 55.25, 5.01, -39.02, 2, 0)
+ MovementLoopAddLocation(NPC, 51.83, 5.01, -32.73, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, 49.42, 5, -28.74, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, 51.08, 5, -24.52, 2, 0)
+ MovementLoopAddLocation(NPC, 51.69, 5, -15.39, 2, 0)
+ MovementLoopAddLocation(NPC, 51.65, 4.5, -9.56, 2, 0)
+ MovementLoopAddLocation(NPC, 49.57, 3.75, -3.81, 2, 0)
+ MovementLoopAddLocation(NPC, 47.58, 3.5, -1.12, 2, 0)
+ MovementLoopAddLocation(NPC, 44.9, 2.78, 7.3, 2, 0)
+ MovementLoopAddLocation(NPC, 44.72, 2.25, 12.98, 2, 0)
+ MovementLoopAddLocation(NPC, 43.82, 2, 20.24, 2, 1)
+ MovementLoopAddLocation(NPC, 43.82, 2, 20.24, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 45.65, 2, 19.17, 2, 0)
+ MovementLoopAddLocation(NPC, 49.24, 2, 19.64, 2, 0)
+ MovementLoopAddLocation(NPC, 50.28, 2, 22.26, 2, 0)
+ MovementLoopAddLocation(NPC, 50.29, 1.95, 24.96, 2, 0)
+ MovementLoopAddLocation(NPC, 47, 1.39, 26.64, 2, 0)
+ MovementLoopAddLocation(NPC, 42.61, -0.8, 25.86, 2, 0)
+ MovementLoopAddLocation(NPC, 33.77, -5.01, 24.89, 2, 0)
+ MovementLoopAddLocation(NPC, 33.19, -5, 27.23, 2, 0)
+ MovementLoopAddLocation(NPC, 40.34, -5, 28.49, 2, 1)
+ MovementLoopAddLocation(NPC, 40.34, -5, 28.49, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 41.7, -5, 29.76, 2, 0)
+ MovementLoopAddLocation(NPC, 44.54, -5, 29.97, 2, 0)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,6)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_hail_gf_216216bd.mp3", "The next time that guy leers at me, I'm gonna punch him in the throat.", "threaten", 3620511003, 1079805953, Spawn, 0)
- elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_hail_gf_ed2258.mp3", "If you keep bothering me, I'll scream for help!!", "scream", 3517182304, 1940512214, Spawn, 0)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_hail_gf_e0c9d202.mp3", "I'd give anything to leave this godsforsaken cesspool of a city.", "beg", 167506951, 845500735, Spawn, 0)
- elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_hail_gf_e1648d49.mp3", "What made you think I wanted to talk to you?", "shrug", 739774986, 813162418, Spawn, 0)
- elseif choice == 5 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_hail_gf_b0f7eb94.mp3", "Unless you know of a way to make some quick coin, we have no reason to talk.", "scold", 3652661564, 2025834564, Spawn, 0)
- elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_hail_gf_d2844e25.mp3", "You can avoid trouble around here as long as you don't make eye contact with anyone.", "lookaway", 2224595311, 1879007102, Spawn, 0)
- end
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370078)
+ UseWidget(door)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/LuciusVulso.lua b/server/SpawnScripts/BeggarsCourt/LuciusVulso.lua
index 724f70b53..1445d0e86 100755
--- a/server/SpawnScripts/BeggarsCourt/LuciusVulso.lua
+++ b/server/SpawnScripts/BeggarsCourt/LuciusVulso.lua
@@ -1,10 +1,11 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/LuciusVulso.lua
Script Purpose : Lucius Vulso
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.15
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local CasingtheJoint = 5652
local IntoTheSewersForLucius = 5653
@@ -12,34 +13,149 @@ local IntoTheSewersForLucius = 5653
function spawn(NPC)
ProvidesQuest(NPC, CasingtheJoint)
ProvidesQuest(NPC, IntoTheSewersForLucius)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ SetTempVariable(NPC, "CalloutTimer2", "false")
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if CanReceiveQuest(Spawn, CasingtheJoint) or CanReceiveQuest(Spawn, IntoTheSewersForLucius) then
+
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,25000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/lucius_vulso/fprt_hood04/100_std_lucius_vulso_hum_m_callout1_96f04ea2.mp3", "What do you need? I've no time for small talk.", "no", 1224233, 3736016050, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true" and GetTempVariable(NPC, "CalloutTimer2")== "false" then
+ PlayFlavor(NPC, "voiceover/english/lucius_vulso/fprt_hood04/100_std_lucius_vulso_hum_m_multhail1_18444fa9.mp3", "I'm in the middle of a deal. I'll talk to you later.", "sniff", 4080304669, 3804087598, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer2", "true")
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true" and GetTempVariable(NPC, "CalloutTimer2")== "true" then
+ PlayFlavor(NPC, "voiceover/english/lucius_vulso/fprt_hood04/100_std_lucius_vulso_hum_m_multhail2_3c417282.mp3", "I'm in the middle of a deal. What do you need?", "nod", 1601702374, 1327844746, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ SetTempVariable(NPC, "CalloutTimer2", "false")
+ end
+ end
+ else
+end
+end
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
end
function respawn(NPC)
spawn(NPC)
end
+
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, CasingtheJoint) and not HasCompletedQuest(Spawn, CasingtheJoint) then
- OfferQuest(NPC, Spawn, CasingtheJoint)
- end
- if HasCompletedQuest(Spawn, CasingtheJoint) then
- if not HasQuest(Spawn, IntoTheSewersForLucius) and not HasCompletedQuest(Spawn, IntoTheSewersForLucius) then
- OfferQuest(NPC, Spawn, IntoTheSewersForLucius)
- end
- end
- if GetQuestStep(Spawn, CasingtheJoint) == 2 then
- SetStepComplete(Spawn, CasingtheJoint, 2)
- end
- if GetQuestStep(Spawn, IntoTheSewersForLucius) == 2 then
- SetStepComplete(Spawn, IntoTheSewersForLucius, 2)
- end
- RandomGreeting(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn,CasingtheJoint) then
+ Dialog1(NPC, Spawn)
+elseif GetQuestStep(Spawn, CasingtheJoint)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","I'm still waiting to hear about the bank... Are you up to this job or not? Get out to Stonestair Byway and find me some information!","tapfoot",0,0, Spawn)
+elseif CanReceiveQuest(Spawn,IntoTheSewersForLucius) then
+ Dialog4(NPC, Spawn)
+elseif GetQuestStep(Spawn, IntoTheSewersForLucius)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","Hmmm ... maybe you're not the new guy. You did have the password, but you didn't deliver Mirini's package. Deliver it now, or I'll have you arrested!","glare",0,0, Spawn)
+else
+ Dialog1(NPC, Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/lucius_vulso/fprt_hood04/100_std_lucius_vulso_hum_m_callout1_96f04ea2.mp3", "What do you need? I've no time for small talk.", "", 1224233, 3736016050, Spawn, 0)
- end
-end
\ No newline at end of file
+function Offer1(NPC, Spawn)
+ OfferQuest(NPC, Spawn, CasingtheJoint)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm in the middle of a deal. I'll talk to you later.")
+ Dialog.AddVoiceover("voiceover/english/lucius_vulso/fprt_hood04/std_lucius_vulso.mp3", 2804190422, 1062724591)
+ if CanReceiveQuest(Spawn,CasingtheJoint) then
+ Dialog.AddOption("A deal? Have any work I can do?", "Dialog2")
+ elseif GetQuestStep(Spawn,CasingtheJoint) ==2 then
+ Dialog.AddOption("There's a rumor running around that the vault can be tunneled into through the sewers.", "Dialog3")
+ else
+ end
+ Dialog.AddOption("Alright.")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What do I look like, a goodwill ambassador? Well ... actually, I might just need your help ... Yes. I do have a job, and it pays well. Interested?")
+ Dialog.AddVoiceover("voiceover/english/lucius_vulso/fprt_hood04/quests/luciusvulso/lucius_x1_initial.mp3", 23416108, 1883932119)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn, 0)
+ Dialog.AddOption("Sure. What's the job?", "Offer1")
+ Dialog.AddOption("Wait, nevermind.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh really??? Hmmm ... I never thought of that. That just might work ... hmmm ... Why are you still here? Oh yeah ... you want money. Well, here's your coin. Thanks for helping me ... ")
+ Dialog.AddVoiceover("voiceover/english/lucius_vulso/fprt_hood04/quests/luciusvulso/lucius_x1_finish.mp3", 1554547629, 3981882396)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn, 0)
+ Dialog.AddOption("Sure. Good luck on that 'deal'.")
+ Dialog.Start()
+ SetStepComplete(Spawn,CasingtheJoint,2)
+end
+
+--Quest2
+
+function Offer2(NPC, Spawn)
+ OfferQuest(NPC, Spawn, IntoTheSewersForLucius)
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm in the middle of a deal. What do you need?")
+ Dialog.AddVoiceover("voiceover/english/lucius_vulso/fprt_hood04/100_std_lucius_vulso_hum_m_multhail2_3c417282.mp3",1601702374, 1327844746)
+ if CanReceiveQuest(Spawn,IntoTheSewersForLucius) then
+ Dialog.AddOption("Have you broken into the bank yet?", "Dialog5")
+ elseif GetQuestStep(Spawn,IntoTheSewersForLucius) ==2 then
+ Dialog.AddOption("I've collected the slime from the frogs.", "Dialog6")
+ else
+ Dialog.AddOption("Alright.")
+ end
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Shhh ... Keep it down! Don't broadcast my plan - someone might run off with my brilliant, moneymaking scheme and rob the bank! I need a few things before my plan is complete. Are you interested in earning more coin?")
+ PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn, 0)
+ Dialog.AddOption("I might regret this.", "Offer2")
+ Dialog.AddOption("A heist? No, not right now.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Great! It doesn't smell too bad. When I dig into their home, I bet I'll fit right in with those frogs. Here, take this coin, friend. If I pull off this robbery, we'll be famous. Fortunately, I'll have enough money to buy a boat and escape. You best start saving for a boat as well. Good luck...")
+ PlayFlavor(NPC, "", "", "yes", 0, 0, Spawn, 0)
+ Dialog.AddOption("I knew I would regret this.")
+ Dialog.Start()
+ SetStepComplete(Spawn,IntoTheSewersForLucius,2)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/LurinaGalla.lua b/server/SpawnScripts/BeggarsCourt/LurinaGalla.lua
index 475a5a8ff..5d7af9e9f 100755
--- a/server/SpawnScripts/BeggarsCourt/LurinaGalla.lua
+++ b/server/SpawnScripts/BeggarsCourt/LurinaGalla.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/LurinaGalla.lua
Script Purpose : Lurina Galla
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.17
Script Notes :
--]]
@@ -18,9 +18,6 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, RunningForACandidate) == 1 then
- SetStepComplete(Spawn, RunningForACandidate, 1)
- end
Dialog1(NPC, Spawn)
end
@@ -29,7 +26,19 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("You had better leave before my husband gets home. I'm not supposed to have guests while he's not around.")
Dialog.AddVoiceover("voiceover/english/lurina_galla/fprt_hood04/std_lurina_galla.mp3", 2277358416, 3185524841)
+ if GetQuestStep(Spawn, RunningForACandidate) ==1 then
+ Dialog.AddOption("Mariana said Elowyn is a perfect candidate.","Dialog2")
+ end
Dialog.AddOption("I guess I'll leave then.")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ SetStepComplete(Spawn, RunningForACandidate, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Elowyn? You know, I never thought of him ... but yes, he is perfect! Great! Now, look, you must leave before my husband sees you. Please, go!")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Not sure what this is about, but I'm done with this.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/BeggarsCourt/Maecenus.lua b/server/SpawnScripts/BeggarsCourt/Maecenus.lua
index 1fe6ba698..421d03f0a 100755
--- a/server/SpawnScripts/BeggarsCourt/Maecenus.lua
+++ b/server/SpawnScripts/BeggarsCourt/Maecenus.lua
@@ -9,6 +9,7 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
@@ -28,3 +29,4 @@ function Dialog1(NPC, Spawn)
Dialog.Start()
end
+
diff --git a/server/SpawnScripts/BeggarsCourt/ManiusGallaBC.lua b/server/SpawnScripts/BeggarsCourt/ManiusGallaBC.lua
index 7f6de2f73..69eb5cd5d 100755
--- a/server/SpawnScripts/BeggarsCourt/ManiusGallaBC.lua
+++ b/server/SpawnScripts/BeggarsCourt/ManiusGallaBC.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/ManiusGallaBC.lua
Script Purpose : Manius Galla
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.15
Script Notes :
--]]
@@ -21,92 +21,98 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-
- if not HasQuest(Spawn, JoiningtheGang) and not HasCompletedQuest(Spawn, JoiningtheGang) then
- OfferQuest(NPC, Spawn, JoiningtheGang)
- Dialog1(NPC, Spawn)
- end
- if HasCompletedQuest(Spawn, JoiningtheGang) then
- if not HasQuest(Spawn, DonationsfromtheBanker) and not HasCompletedQuest(Spawn, DonationsfromtheBanker) then
- OfferQuest(NPC, Spawn, DonationsfromtheBanker)
- end
- end
- if GetQuestStep(Spawn, JoiningtheGang) == 2 then
- SetStepComplete(Spawn, JoiningtheGang, 2)
- Dialog5(NPC, Spawn)
- end
- if GetQuestStep(Spawn, DonationsfromtheBanker) == 2 then
- SetStepComplete(Spawn, DonationsfromtheBanker, 2)
- end
- Dialog4(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","taunt",0,0, Spawn)
+elseif GetQuestStep(Spawn,JoiningtheGang)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","You best be dealing with those raiders, unless you're too much of whimp. We don't allow wimps in our ranks, now scram!","sneer",0,0, Spawn)
+elseif GetQuestStep(Spawn,DonationsfromtheBanker)==1 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","Well, where is it? I don't see our \"donation\" on you. Get to the bank already!","glare",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
end
+--Mind your own business. If you keep gawking, you'll walk away with a limp--and that's because I'm in a good mood today.
+
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Mind your own business. If you keep gawking, you'll be walking away with a limp. And that's only because I'm in a good mood today.")
- Dialog.AddOption("I want to join your gang.", "Dialog7")
- Dialog.AddOption("I didn't see anything.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1004.mp3", 0, 0)
+ if CanReceiveQuest(Spawn,JoiningtheGang) then
+ Dialog.AddOption("I want to join your gang.", "Dialog2")
+ elseif GetQuestStep(Spawn,JoiningtheGang)==2 then
+ Dialog.AddOption("I've killed the raiders.", "Dialog4")
+ end
+ if CanReceiveQuest(Spawn,DonationsfromtheBanker) then
+ Dialog.AddOption("So, can I join your gang now?", "Dialog5")
+ elseif GetQuestStep(Spawn,DonationsfromtheBanker)==2 then
+ Dialog.AddOption("Here's the money. He said you should eat rotten berries given to you by witches.", "Dialog6")
+ end
+ Dialog.AddOption("I didn't see anything.")
Dialog.Start()
end
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Don't even bother coming back if they ain't!")
- Dialog.AddOption("Don't worry about it.")
+ Dialog.AddDialog("Did you hear that, boys? This runt wants to join our gang! HA HA HA HA! You couldn't fight your way out of a wet parchment bag let alone join us. HA HA HA! We keep people safe inside the city districts! You're better off paying us for protection, runt.")
+ PlayFlavor(NPC, "","","chuckle",0,0, Spawn)
+ Dialog.AddOption("Why don't you give me a test?", "Offer1")
+ Dialog.AddOption("I don't need to take this from you. Good bye.")
Dialog.Start()
end
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC,Spawn,JoiningtheGang)
+end
+
function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("A test, huh? Yeah ... hey, boys ... let's give this runt a bit of a test. Okay, here's your test: Go deeper in this place and find some of the lackeys who hang around the raiders. Kill some of them and maybe you can work for us.")
- Dialog.AddOption("Okay, I'll be back when they're dead.", "Dialog2")
+ Dialog.AddDialog("Don't even bother coming back if they ain't!")
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddOption("Don't worry about it.")
Dialog.Start()
end
function Dialog4(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Mind your own business. If you keep gawking, you'll be walking away with a limp. And that's only because I'm in a good mood today.")
- Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", 0, 0)
- Dialog.AddOption("I didn't see anything.")
+ Dialog.AddDialog("Crispin already heard. Hpmh ... You got lucky, I guess. Either way, those Raiders won't bother our clients in the Court anymore. I don't know if I should let you join our gang ... let me think about it.")
+ PlayFlavor(NPC, "","","agree",0,0, Spawn)
+ Dialog.AddOption("I'll check back.")
Dialog.Start()
+ SetStepComplete(Spawn,JoiningtheGang,2)
end
+
function Dialog5(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Crispin already heard. Hpmh ... You got lucky, I guess. Either way, those Raiders won't bother our clients in the Court anymore. I don't know if I should let you join our gang ... let me think about it.")
- Dialog.AddOption("I'll check back.")
+ Dialog.AddDialog("Hpmh ... You got lucky, I guess. Either way, those Raiders won't bother our clients in the Court anymore. I don't know if I should let you join our gang ... let me think about it. ")
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ Dialog.AddOption("Oh, come on. How else can I prove myself?","Offer2")
+ Dialog.AddOption("You're impossible!")
Dialog.Start()
end
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC,Spawn,DonationsfromtheBanker)
+end
+
function Dialog6(NPC, Spawn)
+ SetStepComplete(Spawn,DonationsfromtheBanker,2)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Mind your own business. If you keep gawking, you'll be walking away with a limp. And that's only because I'm in a good mood today.")
- Dialog.AddOption("I want to join your gang.", "Dialog7")
- Dialog.AddOption("I didn't see anything.")
+ Dialog.AddDialog("So he's in with the witches now is he? I'll keep my eye on all of 'em. What's this paltry sum? He's cheated me, he has! That old miser will have an accident before the sun is down, or I won't rest. Here's a coin for you. Get lost while I decide that banker's fate. GRRRR!!!")
+ PlayFlavor(NPC, "","","grumble",0,0, Spawn)
+ Dialog.AddOption("Whoa, Don't get angry at me! I'm out of here...")
Dialog.Start()
end
-function Dialog7(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Did you hear that, boys? This runt wants to join our gang! HA HA HA HA! You couldn't fight your way out of a wet parchment bag let alone join us. HA HA HA! We keep people safe inside the city districts! You're better off paying us for protection, runt.")
- Dialog.AddOption("Why don't you give me a test?", "Dialog3")
- Dialog.AddOption("I don't need to take this from you. Good bye.")
- Dialog.Start()
-end
-function Dialog8(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Mind your own business. If you keep gawking, you'll be walking away with a limp. And that's only because I'm in a good mood today.")
- Dialog.AddOption("I've killed the raiders.", "Dialog5")
- Dialog.AddOption("I didn't see anything.")
- Dialog.Start()
-end
\ No newline at end of file
+--
diff --git a/server/SpawnScripts/BeggarsCourt/MarcusCantarius.lua b/server/SpawnScripts/BeggarsCourt/MarcusCantarius.lua
index cc40669a8..e43386dfe 100755
--- a/server/SpawnScripts/BeggarsCourt/MarcusCantarius.lua
+++ b/server/SpawnScripts/BeggarsCourt/MarcusCantarius.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/MarcusCantarius.lua
Script Purpose : Marcus Cantarius
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.16
Script Notes :
--]]
@@ -14,24 +14,40 @@ local DeliverHelptoJanusFieri = 5660
function spawn(NPC)
ProvidesQuest(NPC, MarcusMonumentalHatred)
ProvidesQuest(NPC, DeliverHelptoJanusFieri)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
end
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if not HasCompletedQuest(Spawn, MarcusMonumentalHatred) then
+
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,40000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/marcus_cantarius/fprt_hood04/qst_marcus_cantarius_aoicallout01_fece1813.mp3", "Death to the dervish thugs! Who's with me?!", "fient", 1434684372, 2320572215, Spawn, 0)
+
+ end
+ end
+end
+end
+
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, MarcusMonumentalHatred) and not HasCompletedQuest(Spawn, MarcusMonumentalHatred) then
- OfferQuest(NPC, Spawn, MarcusMonumentalHatred)
- end
- if HasCompletedQuest(Spawn, MarcusMonumentalHatred) then
- if not HasQuest(Spawn, DeliverHelptoJanusFieri) and not HasCompletedQuest(Spawn, DeliverHelptoJanusFieri) then
- OfferQuest(NPC, Spawn, DeliverHelptoJanusFieri)
- end
- end
- if GetQuestStep(Spawn, MarcusMonumentalHatred) == 2 then
- SetStepComplete(Spawn, MarcusMonumentalHatred, 2)
- end
Dialog1(NPC, Spawn)
end
@@ -40,7 +56,77 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("I've dedicated my life to eradicating the dervishes.")
Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcuscantarius001.mp3", 1085537039, 2873606329)
- Dialog.AddOption("I'll keep that in mind. ")
+ if CanReceiveQuest(Spawn, MarcusMonumentalHatred) then
+ Dialog.AddOption("I would gladly slay some dervish thugs!","Dialog2")
+ end
+ if CanReceiveQuest(Spawn, DeliverHelptoJanusFieri) then
+ Dialog.AddOption("That must keep you busy. Have anything I can do?","Dialog4")
+ end
+ if GetQuestStep(Spawn, MarcusMonumentalHatred) == 2 then
+ Dialog.AddOption("Here are the dervish scalps. They got what they deserved.","Dialog3")
+ end
+ Dialog.AddOption("I'll keep that in mind.")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Very well then. You had better be prepared for battle!")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcuscantarius002.mp3", 2375491986, 3205126535)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn, 0)
+ Dialog.AddOption("I am more than ready for bloodshed.", "Offer1")
+ Dialog.AddOption("Wait, nevermind...")
+ Dialog.Start()
+end
+
+function Offer1(NPC, Spawn)
+ OfferQuest(NPC, Spawn, MarcusMonumentalHatred)
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ha HA! Yes! These will do nicely on my wall! Well done on ending the lives of these dervish filth! I hope you made them squirm during their last breath. Please, take one of the as a sign of my thanks for helping the cause.")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcuscantarius004.mp3", 0, 0) --NO KEYS
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn, 0)
+ Dialog.AddOption("Thanks. The only good dervish is a dead one.")
+ Dialog.Start()
+ SetStepComplete(Spawn,MarcusMonumentalHatred,2)
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perhaps. Want to do me a favor?")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcus_cantarius2_000.mp3", 3613294861, 4212596636)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn, 0)
+ Dialog.AddOption("What do you need?","Dialog5")
+ Dialog.AddOption("No. I don't do favors, fool.")
+ Dialog.Start()
+end
+
+function Dialog5 (NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Nothing too big and there's a reward in it for you. I need to send a note to my friend Janus Fieri out in the Crossroads. He's working on a murder investigation. I have a lead for him.")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcus_cantarius2_001.mp3", 3005578740, 3392739960)
+ Dialog.AddOption("If there is pay... Where is Janus?","Dialog6")
+ Dialog.AddOption("Nope. Find someone else.")
+ Dialog.Start()
+end
+
+function Dialog6 (NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Out in the Commonlands. It's a fairly safe location, considering what's out in the wilds. Delivering this note to him will speed up his investigation. Maybe you could even do some detective work for me. What do you say?")
+ Dialog.AddVoiceover("voiceover/english/marcus_cantarius/fprt_hood04/quests/marcuscantarius/marcus_cantarius2_002.mp3", 3250398674, 3776310471)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn, 0)
+ Dialog.AddOption("Okay, I'll take the note.","Offer2")
+ Dialog.AddOption("I've got better things to do than poke around.")
+ Dialog.Start()
+end
+
+function Offer2(NPC, Spawn)
+ OfferQuest(NPC, Spawn, DeliverHelptoJanusFieri)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/MarcusLevidius.lua b/server/SpawnScripts/BeggarsCourt/MarcusLevidius.lua
index 510bb15a1..30df4a8c8 100755
--- a/server/SpawnScripts/BeggarsCourt/MarcusLevidius.lua
+++ b/server/SpawnScripts/BeggarsCourt/MarcusLevidius.lua
@@ -2,56 +2,110 @@
Script Name : SpawnScripts/BeggarsCourt/MarcusLevidius.lua
Script Purpose : Marcus Levidius
Script Author : John Adams
- Script Date : 2009.04.05 (18.7.2022 by torsten, waypoints)
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Date : 2009.04.05 (18.7.2022 by torsten, waypoints)(New setup 27.11.2023 by Dorbin)
+ Script Notes :
--]]
-function spawn(NPC)
- waypoints(NPC)
-end
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
-function respawn(NPC)
- spawn(NPC)
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+waypoints(NPC)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
-
- choice = math.random(1, 4)
-
- if choice == 1 then
- PlayFlavor(NPC, "", "Yes, yes, hello. I'm busy.", "hello", 1689589577, 4560189, Spawn)
- elseif choice == 2 then
- PlayFlavor(NPC, "", "Oh, drat, I hope not. Oh, sorry, I thought you might have meant the weather.", "confused", 1689589577, 4560189, Spawn)
- elseif choice == 3 then
- PlayFlavor(NPC, "", "Grim determination has gotten us to where we are now.", "agree", 1689589577, 4560189, Spawn)
- elseif choice == 4 then
- PlayFlavor(NPC, "", "One day, we shall reign supreme over the lessers.", "brandish", 1689589577, 4560189, Spawn)
- end
+GenericEcologyHail(NPC, Spawn, faction)
end
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
function waypoints(NPC)
- MovementLoopAddLocation(NPC, 39.71, -6.25, 46.31, 2, 0)
- MovementLoopAddLocation(NPC, 29.43, -5.75, 40.97, 2, math.random(8,12))
- MovementLoopAddLocation(NPC, 34.18, -5, 33, 2, 0)
- MovementLoopAddLocation(NPC, 26.31, -5.75, 32.09, 2, math.random(8,12))
- MovementLoopAddLocation(NPC, -17.58, -5, 17.83, 2, 0)
- MovementLoopAddLocation(NPC, -15.27, -4.99, 7.51, 2, 0)
- MovementLoopAddLocation(NPC, -10.51, -2.31, 11.61, 2, 0)
- MovementLoopAddLocation(NPC, -1.01, 1.94, 15.71, 2, math.random(8,12))
- MovementLoopAddLocation(NPC, 3.24, 2.66, 5.35, 2, 0)
- MovementLoopAddLocation(NPC, 15.59, 3.5, 7.75, 2, 0)
- MovementLoopAddLocation(NPC, 19.71, 3.5, 2.88, 2, 0)
- MovementLoopAddLocation(NPC, 21.91, 5.25, -14.45, 2, math.random(8,12))
- MovementLoopAddLocation(NPC, 7.21, 4.75, -23.88, 2, 0)
- MovementLoopAddLocation(NPC, -0.71, 3.75, -24.3, 2, math.random(8,12))
- MovementLoopAddLocation(NPC, -13.99, 2, -4.07, 2, 0)
- MovementLoopAddLocation(NPC, 7, 2.71, 8.39, 2, 0)
- MovementLoopAddLocation(NPC, 48.64, 2.59, 9.6, 2, 0)
- MovementLoopAddLocation(NPC, 28.38, 2, 14.39, 2, 0)
- MovementLoopAddLocation(NPC, 47.81, 2.5, 10.96, 2, 0)
- MovementLoopAddLocation(NPC, 50, 1.93, 26.01, 2, math.random(8,12))
- MovementLoopAddLocation(NPC, 32.54, -5, 24.13, 2, 0)
- MovementLoopAddLocation(NPC, 29.27, -6.25, 46.87, 2, 0)
- MovementLoopAddLocation(NPC, 11.54, -6.51, 46.06, 2, 0)
-end
\ No newline at end of file
+ MovementLoopAddLocation(NPC, -27.1, -5, 11.44, 2, 1)
+ MovementLoopAddLocation(NPC, -27.1, -5, 11.44, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -26.97, -5, 12.35, 2, 0)
+ MovementLoopAddLocation(NPC, -29.35, -5, 13.85, 2, 0)
+ MovementLoopAddLocation(NPC, -27.49, -5, 15.97, 2, 0)
+ MovementLoopAddLocation(NPC, -22.58, -5, 16.37, 2, 0)
+ MovementLoopAddLocation(NPC, -15.73, -5, 16.57, 2, 0)
+ MovementLoopAddLocation(NPC, -11.15, -5.5, 20.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1.17, -5.5, 22.13, 2, 0)
+ MovementLoopAddLocation(NPC, 2.35, -5.5, 22.98, 2, 0)
+ MovementLoopAddLocation(NPC, 5.33, -5.5, 27.74, 2, 0)
+ MovementLoopAddLocation(NPC, 8.08, -5.5, 30.1, 2, 0)
+ MovementLoopAddLocation(NPC, 14.44, -5.5, 32.63, 2, 0)
+ MovementLoopAddLocation(NPC, 20.18, -5.75, 33.33, 2, 0)
+ MovementLoopAddLocation(NPC, 22.17, -6, 37.28, 2, 1)
+ MovementLoopAddLocation(NPC, 22.17, -6, 37.28, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 22.43, -6, 37.65, 2, 0)
+ MovementLoopAddLocation(NPC, 22.68, -6, 39.18, 2, 0)
+ MovementLoopAddLocation(NPC, 21.35, -6, 39.81, 2, 1)
+ MovementLoopAddLocation(NPC, 21.35, -6, 39.81, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 21.35, -6, 39.81, 2, 0)
+ MovementLoopAddLocation(NPC, 21.76, -6, 42.26, 2, 0)
+ MovementLoopAddLocation(NPC, 17.62, -6.89, 50.15, 2, 0)
+ MovementLoopAddLocation(NPC, 16.1, -7, 51.15, 2, 0)
+ MovementLoopAddLocation(NPC, 3.3, -7, 52.41, 2, 0)
+ MovementLoopAddLocation(NPC, -4.53, -7, 48.12, 2, 0)
+ MovementLoopAddLocation(NPC, -10.06, -7, 52.32, 2, 0)
+ MovementLoopAddLocation(NPC, -14.75, -7, 54.81, 2, 0)
+ MovementLoopAddLocation(NPC, -14.97, -7, 50.53, 2, 1)
+ MovementLoopAddLocation(NPC, -14.97, -7, 50.53, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -14.97, -7, 50.53, 2, 0)
+ MovementLoopAddLocation(NPC, -14.67, -7, 52.3, 2, 0)
+ MovementLoopAddLocation(NPC, -12.68, -7, 53.78, 2, 0)
+ MovementLoopAddLocation(NPC, -11.17, -7, 51.86, 2, 0)
+ MovementLoopAddLocation(NPC, -10.36, -7, 44.81, 2, 0)
+ MovementLoopAddLocation(NPC, -13.84, -7, 39.83, 2, 0)
+ MovementLoopAddLocation(NPC, -19.36, -7, 36.38, 2, 0)
+ MovementLoopAddLocation(NPC, -28.54, -5.75, 25.17, 2, 0)
+ MovementLoopAddLocation(NPC, -34.48, -5.5, 18.8, 2, 0)
+ MovementLoopAddLocation(NPC, -34.48, -5.5, 18.8, 2, 1)
+ MovementLoopAddLocation(NPC, -34.48, -5.5, 18.8, 2, 20,"EcologyEmotes")
+
+ MovementLoopAddLocation(NPC, -28.54, -5.75, 25.17, 2, 0)
+ MovementLoopAddLocation(NPC, -19.36, -7, 36.38, 2, 0)
+ MovementLoopAddLocation(NPC, -13.84, -7, 39.83, 2, 0)
+ MovementLoopAddLocation(NPC, -10.36, -7, 44.81, 2, 0)
+ MovementLoopAddLocation(NPC, -11.17, -7, 51.86, 2, 0)
+ MovementLoopAddLocation(NPC, -12.68, -7, 53.78, 2, 0)
+ MovementLoopAddLocation(NPC, -14.67, -7, 52.3, 2, 0)
+ MovementLoopAddLocation(NPC, -14.97, -7, 50.53, 2, 0)
+ MovementLoopAddLocation(NPC, -14.97, -7, 50.53, 2, 1)
+ MovementLoopAddLocation(NPC, -14.97, -7, 50.53, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -14.75, -7, 54.81, 2, 0)
+ MovementLoopAddLocation(NPC, -10.06, -7, 52.32, 2, 0)
+ MovementLoopAddLocation(NPC, -4.53, -7, 48.12, 2, 0)
+ MovementLoopAddLocation(NPC, 3.3, -7, 52.41, 2, 0)
+ MovementLoopAddLocation(NPC, 16.1, -7, 51.15, 2, 0)
+ MovementLoopAddLocation(NPC, 17.62, -6.89, 50.15, 2, 0)
+ MovementLoopAddLocation(NPC, 21.76, -6, 42.26, 2, 0)
+ MovementLoopAddLocation(NPC, 21.35, -6, 39.81, 2, 0)
+ MovementLoopAddLocation(NPC, 21.35, -6, 39.81, 2, 1)
+ MovementLoopAddLocation(NPC, 21.35, -6, 39.81, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 22.68, -6, 39.18, 2, 0)
+ MovementLoopAddLocation(NPC, 22.43, -6, 37.65, 2, 0)
+ MovementLoopAddLocation(NPC, 22.17, -6, 37.28, 2, 1)
+ MovementLoopAddLocation(NPC, 22.17, -6, 37.28, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 20.18, -5.75, 33.33, 2, 0)
+ MovementLoopAddLocation(NPC, 14.44, -5.5, 32.63, 2, 0)
+ MovementLoopAddLocation(NPC, 8.08, -5.5, 30.1, 2, 0)
+ MovementLoopAddLocation(NPC, 5.33, -5.5, 27.74, 2, 0)
+ MovementLoopAddLocation(NPC, 2.35, -5.5, 22.98, 2, 0)
+ MovementLoopAddLocation(NPC, -1.17, -5.5, 22.13, 2, 0)
+ MovementLoopAddLocation(NPC, -11.15, -5.5, 20.23, 2, 0)
+ MovementLoopAddLocation(NPC, -15.73, -5, 16.57, 2, 0)
+ MovementLoopAddLocation(NPC, -22.58, -5, 16.37, 2, 0)
+ MovementLoopAddLocation(NPC, -27.49, -5, 15.97, 2, 0)
+ MovementLoopAddLocation(NPC, -29.35, -5, 13.85, 2, 0)
+ MovementLoopAddLocation(NPC, -26.97, -5, 12.35, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/BeggarsCourt/MarianaDarkleaf.lua b/server/SpawnScripts/BeggarsCourt/MarianaDarkleaf.lua
index 31e931f2b..209a4727b 100755
--- a/server/SpawnScripts/BeggarsCourt/MarianaDarkleaf.lua
+++ b/server/SpawnScripts/BeggarsCourt/MarianaDarkleaf.lua
@@ -1,10 +1,12 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/MarianaDarkleaf.lua
Script Purpose : Mariana Darkleaf
- Script Author : torsten
+ Script Author : torsten\\Dorbin - Dialog is fabricated.
Script Date : 2022.07.17
Script Notes :
--]]
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+require "SpawnScripts/Generic/DialogModule"
local ToSpiteaDarkleaf = 5665
local RunningForACandidate = 5666
@@ -12,42 +14,132 @@ local RunningForACandidate = 5666
function spawn(NPC)
ProvidesQuest(NPC, ToSpiteaDarkleaf)
ProvidesQuest(NPC, RunningForACandidate)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if HasLanguage(Spawn, 7) then
- if not HasQuest(Spawn, ToSpiteaDarkleaf) and not HasCompletedQuest(Spawn, ToSpiteaDarkleaf) then
- OfferQuest(NPC, Spawn, ToSpiteaDarkleaf)
- end
- if HasCompletedQuest(Spawn, ToSpiteaDarkleaf) then
- if not HasQuest(Spawn, RunningForACandidate) and not HasCompletedQuest(Spawn, RunningForACandidate) then
- OfferQuest(NPC, Spawn, RunningForACandidate)
- end
- end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif GetTempVariable(NPC,"CalloutTimer")=="false"then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ AddTimer(NPC,24000,"ResetCallout",1,Spawn)
+if not HasLanguage(Spawn,7) then
+ Garbled(NPC,Spawn)
+ elseif CanReceiveQuest(Spawn, ToSpiteaDarkleaf) then
+ PlayFlavor(NPC, "voiceover/english/mariana_darkleaf/fprt_hood04/100_std_mariana_darkleaf_elf_f_callout1_3a667a53.mp3", "Elowyn is a treat for the eyes ... and even better, he's as handsome as he is stupid ...", "", 578977669, 3350940430, Spawn, 7)
+ elseif CanReceiveQuest(Spawn, RunningForACandidate) then
+ PlayFlavor(NPC, "", "You again? Haven't you bothered me enough?!", "", 578977669, 3350940430, Spawn, 7)
end
- if GetQuestStep(Spawn, ToSpiteaDarkleaf) == 2 then
- SetStepComplete(Spawn, ToSpiteaDarkleaf, 2)
- end
- if GetQuestStep(Spawn, RunningForACandidate) == 2 then
- SetStepComplete(Spawn, RunningForACandidate, 2)
- end
- RandomGreeting(NPC, Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,4)
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_2/ft/halfelf/halfelf_base_2_1_garbled_gf_c175ec10.mp3", "people call me a half elf im really a three quarter elf", "", 1655768806, 1430035197, Spawn, 7)
- elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_2/ft/halfelf/halfelf_base_2_1_garbled_gf_84555678.mp3", "half is better than nothing", "", 1222734846, 1658567854, Spawn, 7)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_2/ft/halfelf/halfelf_base_2_1_garbled_gf_feb1d2e4.mp3", "i am a half helf and im rude", "", 1628841617, 2548194304, Spawn, 7)
- elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/mariana_darkleaf/fprt_hood04/100_std_mariana_darkleaf_elf_f_callout1_3a667a53.mp3", "Elowyn is a treat for the eyes ... and even better, he's as handsome as he is stupid ...\t\r\n\r\n", "", 578977669, 3350940430, Spawn, 7)
- end
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif not HasLanguage(Spawn,7) then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, ToSpiteaDarkleaf) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, ToSpiteaDarkleaf) and GetQuestStep(Spawn,ToSpiteaDarkleaf) >=1 then
+ DialogWait_Quest1(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, RunningForACandidate) then
+ Dialog3_Quest2 (NPC,Spawn)
+elseif HasQuest(Spawn, RunningForACandidate) and GetQuestStep(Spawn,RunningForACandidate) ==1 then
+ DialogWait_Quest2(NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Elowyn is a treat for the eyes ... and even better, he's as handsome as he is stupid ...")
+ Dialog.AddVoiceover("voiceover/english/mariana_darkleaf/fprt_hood04/100_std_mariana_darkleaf_elf_f_callout1_3a667a53.mp3", 578977669, 3350940430)
+ PlayFlavor(NPC,"","","sit_exit",0,0,Spawn)
+ if CanReceiveQuest(Spawn, ToSpiteaDarkleaf) then
+ Dialog.AddOption("Excuse me... what about Elowyn?","Dialog1_Quest1")
+ end
+ Dialog.AddOption("Whatever you say...")
+ Dialog.Start()
+end
+
+function Dialog1_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You seem lost ... Do you often wander into people's homes and start asking questions? Perhaps if the Militia were made aware of the worthless filth entering our streets, we might have less skulking about attempting to listen in on other's thoughts ... Oh, if only someone would deal with this rubbish...")
+ PlayFlavor(NPC, "", "", "shame", 0, 0, Spawn)
+ Dialog.AddOption("Hey! I'm not rubbish!","Offer1")
+ Dialog.AddOption("Fine. Sit here in your hovel, fool.")
+ Dialog.Start()
+end
+
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, ToSpiteaDarkleaf)
+end
+
+function DialogWait_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm pretty sure I told you to get out of my face! Begone!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1023.mp3", 0, 0)
+ PlayFlavor(NPC, "", "", "sit_exit", 0, 0, Spawn)
+ if GetQuestStep(Spawn, ToSpiteaDarkleaf)==2 then
+ Dialog.AddOption("Even snakes can't get rid of me. ","Dialog2_Quest1")
+ else
+ Dialog.AddOption("...")
+ end
+ Dialog.Start()
+end
+
+function Dialog2_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn, ToSpiteaDarkleaf, 2)
+ Dialog.AddDialog("UHG! You survived?! Why can't a single thing go right?! Why why WHY?!... Fine. No matter. You refuse to die? Perhaps you have other uses. Still, why must you be so infuriating?!")
+ PlayFlavor(NPC, "", "", "swear", 0, 0, Spawn)
+ Dialog.AddOption("I'm glad I could dissapoint you.")
+ Dialog.Start()
+end
+
+
+function Dialog3_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("If you keep pestering me, I will have to report you to the Freeport Militia.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1023.mp3", 0, 0)
+ PlayFlavor(NPC, "", "", "sit_exit", 0, 0, Spawn)
+ if CanReceiveQuest(Spawn,RunningForACandidate) then
+ Dialog.AddOption("Perhaps you should. I'm not going anywhere.","Dialog4_Quest2")
+ end
+ Dialog.AddOption("Fine.")
+ Dialog.Start()
+end
+
+function Dialog4_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Your insolence has no limit... I have a task you can do if it will get you out of my hair. I've been keeping my eye open for someone to... protect... a friend of mine. We need to look out for eachother here in Beggar's Court, and sometimes we need a little help keeping our households in one piece... Do something with yourself and deliver this message for me?")
+ Dialog.AddOption("Perhaps, but I expect payment.","Offer2")
+ Dialog.AddOption("Nope. I just enjoy pestering you.")
+ Dialog.Start()
+end
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, RunningForACandidate)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/MenderGlanae.lua b/server/SpawnScripts/BeggarsCourt/MenderGlanae.lua
new file mode 100755
index 000000000..cd07fd54e
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/MenderGlanae.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/MenderGlanae.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 08:11:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ RandomGreeting(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 0, 0, Spawn, 0)
+ end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/mender/halfelf_mender_service_evil_1_hail_gf_4ed48294.mp3", " You need help fixing that pile of junk? Well it's going to cost you.", "tapfoot", 1130600737, 842291437, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/mender/halfelf_mender_service_evil_1_hail_gf_96a8c8ad.mp3", "Nah, no need to buy a completely new set. I'll use some of this special solvent I have. It'll fix it up good as new!", "no", 3728396589, 931657398, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/mender/halfelf_mender_service_evil_1_hail_gf_3e98b953.mp3", "Once we're done, you'll have the strongest armor in all of the city! I guarantee it!", "wink", 2490056209, 515351357, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/mender/halfelf_mender_service_evil_1_hail_gf_3b60608.mp3", "I can emphatically say repairing weapons is much more reliable than buying new ones. Would I lie?", "agree", 3199641459, 497635483, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/MolinDriftwater.lua b/server/SpawnScripts/BeggarsCourt/MolinDriftwater.lua
index 71957ddbf..2b5adf1e9 100755
--- a/server/SpawnScripts/BeggarsCourt/MolinDriftwater.lua
+++ b/server/SpawnScripts/BeggarsCourt/MolinDriftwater.lua
@@ -1,30 +1,58 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/MolinDriftwater.lua
Script Purpose : Molin Driftwater
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 11, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ elseif MakeRandomInt(0,100)<=50 then
+ local choice = MakeRandomInt(1,2)
+ FaceTarget(NPC, Spawn)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "beckon", 0, 0, Spawn, 0)
+ else
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn, 0)
+ end
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/petretailer/barbarian_petretailer_service_good_1_notcitizen_gm_820dc7e.mp3", "I'm afraid that I'm closed for the day. I'm going to have to ask you to leave now.", "heckno", 1325380097, 3928490350
+, Spawn)
+ end
+end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
- PlayFlavor(NPC, "", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayFlavor(NPC, "", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 0, 0, Spawn, 0)
- elseif choice == 3 then
- PlayFlavor(NPC, "", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 0, 0, Spawn, 0)
- end
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 175282120, 2443997290, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 2378717460, 740610806, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3198881432, 747888667, Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/NilniarUrsus.lua b/server/SpawnScripts/BeggarsCourt/NilniarUrsus.lua
index 0b9ed29e2..15a484731 100755
--- a/server/SpawnScripts/BeggarsCourt/NilniarUrsus.lua
+++ b/server/SpawnScripts/BeggarsCourt/NilniarUrsus.lua
@@ -1,12 +1,39 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/NilniarUrsus.lua
Script Purpose : Nilniar Ursus
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
function spawn(NPC)
+-- SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 30 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,25000,"ResetCalloutTimer")
+ Talk(NPC, Spawn)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
end
function respawn(NPC)
@@ -14,19 +41,63 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,4)
-
+function Talk(NPC, Spawn)
+local FP_MageFaction = GetFactionAmount(Spawn, 104)
+ if FP_MageFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_52cf3660.mp3", "The Seafuries are just a bunch of mindless sea dwellers.", "", 2052685278, 167982355, Spawn, 0)
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_d4cf5e3d.mp3", "The Dismal Rage is an evil entity that can destroy your soul.", "", 561192192, 3579530691, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_6727c950.mp3", "The minds at the Academy of Arcane Science are infinite.", "", 137200926, 848953238, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_52cf3660.mp3", "The Seafuries are just a bunch of mindless sea dwellers.", "", 2052685278, 167982355, Spawn, 0)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_43509cc2.mp3", "The Freeport Militia is only as competent as their ability to swing a longsword.", "", 1079669242, 1377863119, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_6727c950.mp3", "The minds at the Academy of Arcane Science are infinite.", "", 137200926, 848953238, Spawn, 0)
elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_43509cc2.mp3", "The Freeport Militia is only as competent as their ability to swing a longsword.", "", 1079669242, 1377863119, Spawn, 0)
+ elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_arcanescientists/ft/eco/evil/human_male_eco_evil_arcanescientists_hail_gm_85a84d51.mp3", "The members within the Coalition of Tradefolke are nothing more than common thieves that empty your pockets before your eyes.", "", 1941815786, 1528387739, Spawn, 0)
end
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_MageFaction = GetFactionAmount(Spawn, 104)
+ if FP_MageFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_40_gf_c38c736.mp3", "To aid the Academy of Arcane Science is to unleash the force for power that burns within us all!", "cheer", 0, 0, Spawn)
+ elseif FP_MageFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_30_gf_130c3c71.mp3", "You have helped the Academy of Arcane Science rise in power and brought some invaluable assets within these walls.", "thank", 0, 0, Spawn)
+ elseif FP_MageFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_20_gf_7b836853.mp3", "Your actions have assisted the Academy of Arcane Science in its quest for all knowledge!", "", 0, 0, Spawn)
+ elseif FP_MageFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_10_gf_5547196e.mp3", "Your actions have done well for the Academy of Arcane Science, but there is always more to know.", "nod", 0, 0, Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/OctaviaJovina.lua b/server/SpawnScripts/BeggarsCourt/OctaviaJovina.lua
index c7c59100e..83ce336fe 100755
--- a/server/SpawnScripts/BeggarsCourt/OctaviaJovina.lua
+++ b/server/SpawnScripts/BeggarsCourt/OctaviaJovina.lua
@@ -1,25 +1,77 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/OctaviaJovina.lua
Script Purpose : Octavia Jovina
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
function spawn(NPC)
+ waypoints(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 30 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,60000,"ResetCalloutTimer")
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,5)
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
+end
+
+function Talk(NPC, Spawn)
+local FP_FighterFaction = GetFactionAmount(Spawn, 102)
+ if FP_FighterFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_freeportmilitia/ft/eco/evil/human_eco_evil_freeportmilitia_hail_gf_6509ed3d.mp3", "The Arcane Scientists are just a cowardly bunch that can't stand getting their hands dirty.", "", 1024489319, 2331992073, Spawn, 0)
elseif choice == 2 then
@@ -31,4 +83,66 @@ function RandomGreeting(NPC, Spawn)
elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_freeportmilitia/ft/eco/evil/human_eco_evil_freeportmilitia_hail_gf_2972d442.mp3", "What does a thief and a trader from Coalition of Tradesfolke have in common? They both will strip you of your coins.", "", 1516863043, 2498897125, Spawn, 0)
end
-end
\ No newline at end of file
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_FighterFaction = GetFactionAmount(Spawn, 102)
+ if FP_MageFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_40_gf_c38c736.mp3", "To aid the Freeport Militia is to weild the blade of The Overlord! Bravo!", "cheer", 0, 0, Spawn)
+ elseif FP_MageFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_30_gf_130c3c71.mp3", "You have helped the Freeport Militia remain steadfast in these dark times.", "salute", 0, 0, Spawn)
+ elseif FP_MageFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_20_gf_7b836853.mp3", "Your actions have assisted the Freeport Militia, but there is more you can do to tighten its grip!", "", 0, 0, Spawn)
+ elseif FP_MageFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_freeportmilitia/ft/eco/evil/human_eco_evil_freeportmilitia_10_gf_1236a75.mp3", "The Freeport Militia demands unconditional obedience among its ranks.", "", 70786309, 2889649459, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 42.39, 3.5, 0.08, 2, 1)
+ MovementLoopAddLocation(NPC, 42.39, 3.5, 0.08, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 42.39, 3.5, 0.08, 2, 0)
+ MovementLoopAddLocation(NPC, 40.65, 3.5, 0.51, 2, 0)
+ MovementLoopAddLocation(NPC, 39.35, 3.5, -2.47, 2, 0)
+ MovementLoopAddLocation(NPC, 37.65, 3.75, -4.75, 2, 0)
+ MovementLoopAddLocation(NPC, 35.29, 5.25, -11.22, 2, 0)
+ MovementLoopAddLocation(NPC, 33.69, 5.25, -17.74, 2, 1)
+ MovementLoopAddLocation(NPC, 33.69, 5.25, -17.74, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 34.46, 5.25, -16.87, 2, 0)
+ MovementLoopAddLocation(NPC, 36.85, 5.25, -17.99, 2, 0)
+ MovementLoopAddLocation(NPC, 37.56, 5.25, -18.94, 2, 0)
+ MovementLoopAddLocation(NPC, 36.84, 5.25, -19.89, 2, 0)
+ MovementLoopAddLocation(NPC, 34, 6.65, -21.18, 2, 0)
+ MovementLoopAddLocation(NPC, 29.59, 9.12, -23.44, 2, 0)
+ MovementLoopAddLocation(NPC, 26.83, 9.46, -24.65, 2, 1)
+ MovementLoopAddLocation(NPC, 26.83, 9.46, -24.65, 2, 35,"Action")
+ MovementLoopAddLocation(NPC, 26.83, 9.46, -24.65, 2, 0)
+ MovementLoopAddLocation(NPC, 27.74, 9.46, -24.83, 2, 0)
+ MovementLoopAddLocation(NPC, 31.31, 8.58, -24.29, 2, 0)
+ MovementLoopAddLocation(NPC, 34.24, 6.93, -23.07, 2, 0)
+ MovementLoopAddLocation(NPC, 38.8, 5.25, -20.4, 2, 0)
+ MovementLoopAddLocation(NPC, 40.73, 5.25, -16.68, 2, 1)
+ MovementLoopAddLocation(NPC, 40.73, 5.25, -16.68, 2, 15,"Action")
+ MovementLoopAddLocation(NPC, 36.63, 5.25, -10.9, 2, 0)
+ MovementLoopAddLocation(NPC, 35.68, 4.75, -7.51, 2, 0)
+ MovementLoopAddLocation(NPC, 36.8, 3.5, -1.57, 2, 0)
+ MovementLoopAddLocation(NPC, 37.17, 3.5, -0.14, 2, 1)
+ MovementLoopAddLocation(NPC, 37.17, 3.5, -0.14, 2, 15,"Action")
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ end
+end
diff --git a/server/SpawnScripts/BeggarsCourt/OverseerZerrin.lua b/server/SpawnScripts/BeggarsCourt/OverseerZerrin.lua
index ecf4d8df3..a5975e5df 100755
--- a/server/SpawnScripts/BeggarsCourt/OverseerZerrin.lua
+++ b/server/SpawnScripts/BeggarsCourt/OverseerZerrin.lua
@@ -2,26 +2,101 @@
Script Name : SpawnScripts/BeggarsCourt/OverseerZerrin.lua
Script Author : Dorbin
Script Date : 2022.10.02 07:10:39
- Script Purpose :
+ Script Purpose : -FABRICATED HAIL. MISSING VOs/Logs. Most likely out of order.
:
--]]
-function spawn(NPC)
+local Welcome = 5861
+require "SpawnScripts/Generic/DialogModule"
+local CalloutTimer = false
+
+function spawn(NPC)
+ProvidesQuest(NPC,Welcome)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+if GetFactionAmount(Spawn,12)<0 then
+PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+FaceTarget(NPC, Spawn)
+elseif GetRace(Spawn)== 12 or GetRace(Spawn) == 14 then
+ if CanReceiveQuest(Spawn, Welcome)then
+ PlayFlavor(NPC,"","Refugees will report to me at once!","nod",0,0,Spawn)
+ elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+end
+
+
+
+function ResetCallout(NPC,Spawn)
+ CalloutTimer = false
end
function hailed(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
- if choice == 1 then
- PlayFlavor(NPC,"voiceover/english/overseer_zerrin/fprt_hood04/qst_overseer_zerrin_callout1_5fcc363d.mp3","Ever wonder how long you can breathe water? Keep talking to me and you'll find out.","glare",1789839755,3380246682,Spawn)
- elseif choice == 2 then
- PlayFlavor(NPC,"","Did you just drop off the boat here or something? I'm not making money by giving it away. I'd like to retire someday, you know.","no",50468124,3582989183,Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+ else
+if GetRace(Spawn)== 9 or GetRace(Spawn) == 6 then --FABRICATED HAIL. MISSING VOs/Logs. Most likely out of order.
+ if not HasQuest(Spawn, Welcome) and not HasCompletedQuest(Spawn,Welcome)then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You've got the look of a drowned rat! I have nothing for you needy types. Be on your way before I summon the Malitia.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", 0, 0)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("I'm suppose to meet an Overseer here. Is that you?","Dialog1")
+ Dialog.AddOption("But... I'll be back.")
+ Dialog.Start()
+ else
+ Talk(NPC,Spawn)
end
- if GetQuestStep(Spawn, 5758)==2 then
- SetStepComplete(Spawn, 5758,2)
- end
+else
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+function Talk(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC,"","Refugees will report to me at once!","sniff",850117394,1406850605,Spawn) --FABRICATED
+ else
+ PlayFlavor(NPC,"voiceover/english/overseer_zerrin/fprt_hood04/qst_overseer_zerrin_callout1_5fcc363d.mp3","Ever wonder how long you can breathe water? Keep talking to me and you'll find out.","glare",1789839755,3380246682,Spawn)
+ end
end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Let's cut to the chase, shall we? I don't know you. I don't want to know you, and come to think of it, I'd rather chew on glass than even talk to you. Unfortunately, my position requires me to help you. So, refugee, welcome to Freeport, City of the Free.")
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ Dialog.AddOption("I don't quite like your tone.", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn) --
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No one ever does. Now shut up and listen to what I say; The Overlord, all praise him, has ordered that all new refugees receive a house. In exchange, you are indebted to him. Pray that he never asks you to pay him back, understand?")
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("A 'free' house? I'll take my chances.", "QuestStart")
+ Dialog.Start()
+end
+
+function QuestStart(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Welcome)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/PavoNightfire.lua b/server/SpawnScripts/BeggarsCourt/PavoNightfire.lua
index f04490736..566c7941b 100755
--- a/server/SpawnScripts/BeggarsCourt/PavoNightfire.lua
+++ b/server/SpawnScripts/BeggarsCourt/PavoNightfire.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/PavoNightfire.lua
Script Purpose : Pavo Nightfire
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
@@ -18,9 +18,6 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, ADramaticPerformance) == 1 then
- SetStepComplete(Spawn, ADramaticPerformance, 1)
- end
Dialog1(NPC, Spawn)
end
@@ -29,7 +26,21 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("The guards don't patrol for our protection they patrol to keep us in line. This part of the city is a holding cell; it's more of a prison than Freeport! Ah, Freeport, I hear its streets are paved with gold!")
Dialog.AddVoiceover("voiceover/english/pavo_nightfire/fprt_hood04/std_pavo_nightfire.mp3", 318731360, 4037507119)
- Dialog.AddOption("I highly doubt that.")
+ if GetQuestStep(Spawn, ADramaticPerformance) == 1 then
+ Dialog.AddOption("Maliz T'Raan says his 'friend was brought to tears by the acting troupe's performance'.","Dialog2")
+ end
+ Dialog.AddOption("I highly doubt that.")
Dialog.Start()
end
+function Dialog2(NPC,Spawn)
+ SetStepComplete(Spawn, ADramaticPerformance, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddDialog("What? That's impossible! Those miscreants promised me they would ma--I'm going to kill them, that's what I'm going to do! Okay, think Pavo, think, think, think, think ... got it! Tell him not to worry. The understudies are performing tomorrow night. He needs to make sure the stage is set for the next performance. Make sure he gets that message!")
+ Dialog.AddOption("I'll see that he does...")
+ Dialog.Start()
+end
+
+--
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/ReanaAstia.lua b/server/SpawnScripts/BeggarsCourt/ReanaAstia.lua
index 97cfa50c9..2eb44e934 100755
--- a/server/SpawnScripts/BeggarsCourt/ReanaAstia.lua
+++ b/server/SpawnScripts/BeggarsCourt/ReanaAstia.lua
@@ -7,6 +7,7 @@
--]]
require "SpawnScripts/Generic/DialogModule"
+local Mage1 = 5902
function spawn(NPC)
end
@@ -16,7 +17,11 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
Dialog3(NPC, Spawn)
+ else
+ PlayFlavor(NPC,"","","cutthroat",0,0,Spawn)
+ end
end
function Dialog1(NPC, Spawn)
@@ -44,6 +49,20 @@ function Dialog3(NPC, Spawn)
Dialog.AddVoiceover("voiceover/english/reana_astia/fprt_hood04/std_reana_astia.mp3", 3795939248, 4147514993)
Dialog.AddOption("Then I have no need to talk to you.")
Dialog.AddOption("Are you a farmer?", "Dialog1")
+ if HasQuest(Spawn,Mage1) and GetQuestStepProgress(Spawn,Mage1,7)== 0 then
+ Dialog.AddOption("I understand you witnessed a summoning today. What was summoned?", "Dialog4")
+ end
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ SetStepComplete(Spawn,Mage1,7)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Dunno for certain. There was this bright light right before it showed up, so we couldn't see it. That's what made it hard to run out of there, too... this guy summoned up a whole bunch of enormous spears! I know they were spears, because as I was running away, I ran right into one of them! I was gored open by that spear and barely made it to a Priest in time... if you find out who did it, kill them for me, got it?")
+ Dialog.AddVoiceover("voiceover/english/merchant_reana_astia/fprt_hood04/std_reana_astia002.mp3", 1441981908, 166520196)
+ PlayFlavor(NPC,"","","shrug",0,0,Spawn)
+ Dialog.AddOption("I'll consider it. So this person summoned some spears... thank you.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/BeggarsCourt/Ro.lua b/server/SpawnScripts/BeggarsCourt/Ro.lua
index a31bc94b0..a5386fe2c 100755
--- a/server/SpawnScripts/BeggarsCourt/Ro.lua
+++ b/server/SpawnScripts/BeggarsCourt/Ro.lua
@@ -5,272 +5,307 @@
Script Date : 6/24/2018 12:06:55 PM
Script Notes :
--]]
+require "SpawnScripts/Generic/CombatModule"
+local AttackTimer = false --TIMER FOR ATTACK RESPONSE (ATTACKS KERRAN)
function spawn(NPC)
waypoints(NPC)
+ SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+function InRange(NPC, Spawn) --FOLLOW TARGET SCRIPT IS TOO SLOW. DOG WALKS, BUT SPEED IS NOT ADJUSTABLE.
+if not IsInCombat(NPC) then
+if GetRace(Spawn)==11 or GetFactionAmount(Spawn,12)<-10000 then --KERRAN RESPONSE
+ if AttackTimer == false then
+ if FollowTimer == false then
+ FollowTimer = true
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "attack", 0, 0)
+ local choice = math.random(1, 2)
+ if choice == 1 then
+ SendMessage(Spawn, "Ro snarls and eyes you closely.")
+ elseif choice == 2 then
+ SendMessage(Spawn, "Ro leers at you with a quivering jowl.")
+ end
+ AddTimer(NPC,10000,"ResetFollow",1,Spawn)
+ AddTimer(NPC,45000,"ResetFollowTimer",1,Spawn)
+ end
+end
end
+end
+end
+
+function ResetFollow(NPC)
+ if IsFollowing(NPC) then
+ SetTarget(NPC,nil)
+ ToggleFollow(NPC)
+ AttackTimer = false
+end
+end
+
+function ResetFollowTimer(NPC)
+FollowTimer = false
+SetTarget(NPC,nil)
+end
+
+
function respawn(NPC)
end
function waypoints(NPC)
- MovementLoopAddLocation(NPC, 31.89, 5.25, -13.94, 2, 3)
- MovementLoopAddLocation(NPC, 39.12, 5.25, -20.88, 2, 3)
- MovementLoopAddLocation(NPC, 45.32, 5.25, -18.9, 2, 3)
- MovementLoopAddLocation(NPC, 51.19, 5, -23.3, 2, 3)
- MovementLoopAddLocation(NPC, 57.85, 5, -22.87, 2, 3)
- MovementLoopAddLocation(NPC, 58.4, 5, -23.09, 2, 3)
- MovementLoopAddLocation(NPC, 58.69, 5, -22.28, 2, 3)
- MovementLoopAddLocation(NPC, 54.85, 4.23, -6.04, 2, 3)
- MovementLoopAddLocation(NPC, 44.46, 3.5, -1.09, 2, 3)
- MovementLoopAddLocation(NPC, 29.14, 2, 16.16, 2, 3)
- MovementLoopAddLocation(NPC, 21.76, 2, 17.66, 2, 3)
- MovementLoopAddLocation(NPC, 21.6, 2, 18.49, 2, 3)
- MovementLoopAddLocation(NPC, 19.53, 2, 18.84, 2, 3)
- MovementLoopAddLocation(NPC, 12.68, 3.5, 1.59, 2, 3)
- MovementLoopAddLocation(NPC, 12.97, 3.62, -1.71, 2, 3)
- MovementLoopAddLocation(NPC, 9.07, 3.5, -3.65, 2, 3)
- MovementLoopAddLocation(NPC, 6.06, 3.5, -3.35, 2, 3)
- MovementLoopAddLocation(NPC, 3.66, 3.5, -4.42, 2, 3)
- MovementLoopAddLocation(NPC, 4.28, 3.5, -5.76, 2, 3)
- MovementLoopAddLocation(NPC, 3.9, 3.5, -8.04, 2, 3)
- MovementLoopAddLocation(NPC, 6.76, 3.5, -9.58, 2, 3)
- MovementLoopAddLocation(NPC, 8.22, 3.5, -10.58, 2, 3)
- MovementLoopAddLocation(NPC, 20.09, 5, -24.6, 2, 3)
- MovementLoopAddLocation(NPC, 23.36, 5.25, -27.31, 2, 3)
- MovementLoopAddLocation(NPC, 25.49, 5.25, -31.64, 2, 3)
- MovementLoopAddLocation(NPC, 24.52, 5.25, -31.48, 2, 3)
- MovementLoopAddLocation(NPC, 23.62, 5.25, -34.22, 2, 3)
- MovementLoopAddLocation(NPC, 12.21, 4.75, -27.85, 2, 3)
- MovementLoopAddLocation(NPC, 9.67, 4.93, -29.19, 2, 3)
- MovementLoopAddLocation(NPC, 11.36, 9.07, -37.79, 2, 3)
- MovementLoopAddLocation(NPC, 7.93, 8.48, -37.17, 2, 3)
- MovementLoopAddLocation(NPC, 4.76, 5, -30.44, 2, 3)
- MovementLoopAddLocation(NPC, -2.63, 5, -36.63, 2, 3)
- MovementLoopAddLocation(NPC, 1.2, 5, -42.64, 2, 3)
- MovementLoopAddLocation(NPC, 2.48, 5, -41.18, 2, 3)
- MovementLoopAddLocation(NPC, 2.13, 5, -39.2, 2, 3)
- MovementLoopAddLocation(NPC, 3.5, 5, -41.23, 2, 3)
- MovementLoopAddLocation(NPC, 3.78, 5, -42.99, 2, 3)
- MovementLoopAddLocation(NPC, -5.63, 4, -49.31, 2, 3)
- MovementLoopAddLocation(NPC, -9.08, 4, -50.88, 2, 3)
- MovementLoopAddLocation(NPC, -10.09, 4.14, -52.67, 2, 3)
- MovementLoopAddLocation(NPC, -13.84, 4.35, -59.91, 2, 3)
- MovementLoopAddLocation(NPC, -15.72, 4.18, -64.15, 2, 3)
- MovementLoopAddLocation(NPC, -13.52, 4.18, -65.1, 2, 3)
- MovementLoopAddLocation(NPC, -12.5, 4.18, -66.55, 2, 3)
- MovementLoopAddLocation(NPC, -6.27, 4.18, -69.28, 2, 3)
- MovementLoopAddLocation(NPC, -8.27, 4.18, -69.36, 2, 3)
- MovementLoopAddLocation(NPC, -13.49, 4.18, -67.45, 2, 3)
- MovementLoopAddLocation(NPC, -17.19, 4.18, -61.48, 2, 3)
- MovementLoopAddLocation(NPC, -15.69, 4.18, -60.48, 2, 3)
- MovementLoopAddLocation(NPC, -14.42, 4.45, -58.83, 2, 3)
- MovementLoopAddLocation(NPC, -10.21, 4, -50.77, 2, 3)
- MovementLoopAddLocation(NPC, -17.42, 4, -45.27, 2, 3)
- MovementLoopAddLocation(NPC, -18.65, 4, -42.65, 2, 3)
- MovementLoopAddLocation(NPC, -17.96, 4, -41.09, 2, 3)
- MovementLoopAddLocation(NPC, -16.12, 4, -40.04, 2, 3)
- MovementLoopAddLocation(NPC, -19.01, 4, -41.14, 2, 3)
- MovementLoopAddLocation(NPC, -20.76, 4, -38.65, 2, 3)
- MovementLoopAddLocation(NPC, -20.24, 3, -26.52, 2, 3)
- MovementLoopAddLocation(NPC, -22.28, 2.75, -23.44, 2, 3)
- MovementLoopAddLocation(NPC, -21.15, 2, -5.33, 2, 3)
- MovementLoopAddLocation(NPC, -17.39, 2, -3.77, 2, 3)
- MovementLoopAddLocation(NPC, -18.6, 2, 2.82, 2, 3)
- MovementLoopAddLocation(NPC, -19.16, 1.93, 3.8, 2, 3)
- MovementLoopAddLocation(NPC, -20.82, 1.86, 3.45, 2, 3)
- MovementLoopAddLocation(NPC, -26.74, -0.75, 3.32, 2, 3)
- MovementLoopAddLocation(NPC, -27.73, -0.75, 4, 2, 3)
- MovementLoopAddLocation(NPC, -27.18, -0.75, 4.97, 2, 3)
- MovementLoopAddLocation(NPC, -19.11, -4.9, 10.33, 2, 3)
- MovementLoopAddLocation(NPC, -10.74, -6, 28.45, 2, 3)
- MovementLoopAddLocation(NPC, -10.09, -6, 31.7, 2, 3)
- MovementLoopAddLocation(NPC, -8.78, -6, 32.02, 2, 3)
- MovementLoopAddLocation(NPC, -11.76, -7, 46.34, 2, 3)
- MovementLoopAddLocation(NPC, -10.38, -7, 52.35, 2, 3)
- MovementLoopAddLocation(NPC, -20.36, -7, 59.75, 2, 3)
- MovementLoopAddLocation(NPC, -28.29, -7, 62.64, 2, 3)
- MovementLoopAddLocation(NPC, -29.92, -7, 61.09, 2, 3)
- MovementLoopAddLocation(NPC, -28, -7, 58.89, 2, 3)
- MovementLoopAddLocation(NPC, -29.5, -7, 59.88, 2, 3)
- MovementLoopAddLocation(NPC, -27.3, -7, 64.82, 2, 3)
- MovementLoopAddLocation(NPC, -17.91, -7, 64.97, 2, 3)
- MovementLoopAddLocation(NPC, -16.2, -7, 58.23, 2, 3)
- MovementLoopAddLocation(NPC, -5.41, -7, 60.05, 2, 3)
- MovementLoopAddLocation(NPC, -4.88, -7, 69.88, 2, 3)
- MovementLoopAddLocation(NPC, -2.36, -7, 72.47, 2, 3)
- MovementLoopAddLocation(NPC, -0.2, -7, 71.85, 2, 3)
- MovementLoopAddLocation(NPC, 1.37, -7, 68.81, 2, 3)
- MovementLoopAddLocation(NPC, 1.22, -7, 65.93, 2, 3)
- MovementLoopAddLocation(NPC, 1.08, -7, 61.67, 2, 3)
- MovementLoopAddLocation(NPC, 5.09, -7, 58.3, 2, 3)
- MovementLoopAddLocation(NPC, 9.73, -0.07, 76.07, 2, 3)
- MovementLoopAddLocation(NPC, 11.93, -0.12, 75.38, 2, 3)
- MovementLoopAddLocation(NPC, 14.12, -0.8, 72.82, 2, 3)
- MovementLoopAddLocation(NPC, 14.99, -2.13, 70.12, 2, 3)
- MovementLoopAddLocation(NPC, 16.25, -2.88, 68.48, 2, 3)
- MovementLoopAddLocation(NPC, 15.86, -4.25, 65.81, 2, 3)
- MovementLoopAddLocation(NPC, 17.35, -6, 62.35, 2, 3)
- MovementLoopAddLocation(NPC, 18.89, -7, 58.81, 2, 3)
- MovementLoopAddLocation(NPC, 20.95, -7, 60.44, 2, 3)
- MovementLoopAddLocation(NPC, 22.46, -7.07, 62.96, 2, 3)
- MovementLoopAddLocation(NPC, 23.77, -7.18, 66.11, 2, 3)
- MovementLoopAddLocation(NPC, 25.7, -7.24, 72.83, 2, 3)
- MovementLoopAddLocation(NPC, 23.85, -7.18, 73.26, 2, 3)
- MovementLoopAddLocation(NPC, 22.32, -7.06, 71.8, 2, 3)
- MovementLoopAddLocation(NPC, 23.21, -7.13, 69.35, 2, 3)
- MovementLoopAddLocation(NPC, 26.34, -7, 57.37, 2, 3)
- MovementLoopAddLocation(NPC, 12.3, -6, 41.11, 2, 3)
- MovementLoopAddLocation(NPC, 11.81, -6, 39.58, 2, 3)
- MovementLoopAddLocation(NPC, 13.49, -6, 39.86, 2, 3)
- MovementLoopAddLocation(NPC, 18.17, -5.95, 35.19, 2, 3)
- MovementLoopAddLocation(NPC, 26.94, -6, 35.45, 2, 3)
- MovementLoopAddLocation(NPC, 26.08, -6, 38.73, 2, 3)
- MovementLoopAddLocation(NPC, 40.11, -5, 37.63, 2, 3)
- MovementLoopAddLocation(NPC, 50.26, -5, 35.59, 2, 3)
- MovementLoopAddLocation(NPC, 51.44, -5, 40.02, 2, 3)
- MovementLoopAddLocation(NPC, 48.81, -5, 40.49, 2, 3)
- MovementLoopAddLocation(NPC, 48.14, -5.25, 44.05, 2, 3)
- MovementLoopAddLocation(NPC, 49.21, -6.75, 50.11, 2, 3)
- MovementLoopAddLocation(NPC, 55.7, -7, 55.11, 2, 3)
- MovementLoopAddLocation(NPC, 53.09, -7, 68.61, 2, 3)
- MovementLoopAddLocation(NPC, 58.77, -7.05, 86.46, 2, 3)
- MovementLoopAddLocation(NPC, 64.03, -7.08, 92.59, 2, 3)
- MovementLoopAddLocation(NPC, 74.3, -7.08, 105.02, 2, 3)
- MovementLoopAddLocation(NPC, 69.89, -7.08, 109.34, 2, 3)
- MovementLoopAddLocation(NPC, 63.19, -7.08, 111.79, 2, 3)
- MovementLoopAddLocation(NPC, 59.29, -7.08, 108.61, 2, 3)
- MovementLoopAddLocation(NPC, 57.09, -7.08, 99.65, 2, 3)
- MovementLoopAddLocation(NPC, 59.29, -7.08, 108.61, 2, 3)
- MovementLoopAddLocation(NPC, 63.19, -7.08, 111.79, 2, 3)
- MovementLoopAddLocation(NPC, 69.89, -7.08, 109.34, 2, 3)
- MovementLoopAddLocation(NPC, 74.3, -7.08, 105.02, 2, 3)
- MovementLoopAddLocation(NPC, 64.03, -7.08, 92.59, 2, 3)
- MovementLoopAddLocation(NPC, 58.77, -7.05, 86.46, 2, 3)
- MovementLoopAddLocation(NPC, 53.09, -7, 68.61, 2, 3)
- MovementLoopAddLocation(NPC, 55.7, -7, 55.11, 2, 3)
- MovementLoopAddLocation(NPC, 49.21, -6.75, 50.11, 2, 3)
- MovementLoopAddLocation(NPC, 48.14, -5.25, 44.05, 2, 3)
- MovementLoopAddLocation(NPC, 48.81, -5, 40.49, 2, 3)
- MovementLoopAddLocation(NPC, 51.44, -5, 40.02, 2, 3)
- MovementLoopAddLocation(NPC, 50.26, -5, 35.59, 2, 3)
- MovementLoopAddLocation(NPC, 40.11, -5, 37.63, 2, 3)
- MovementLoopAddLocation(NPC, 26.08, -6, 38.73, 2, 3)
- MovementLoopAddLocation(NPC, 26.94, -6, 35.45, 2, 3)
- MovementLoopAddLocation(NPC, 18.17, -5.95, 35.19, 2, 3)
- MovementLoopAddLocation(NPC, 13.49, -6, 39.86, 2, 3)
- MovementLoopAddLocation(NPC, 11.81, -6, 39.58, 2, 3)
- MovementLoopAddLocation(NPC, 12.3, -6, 41.11, 2, 3)
- MovementLoopAddLocation(NPC, 26.34, -7, 57.37, 2, 3)
- MovementLoopAddLocation(NPC, 23.21, -7.13, 69.35, 2, 3)
- MovementLoopAddLocation(NPC, 22.32, -7.06, 71.8, 2, 3)
- MovementLoopAddLocation(NPC, 23.85, -7.18, 73.26, 2, 3)
- MovementLoopAddLocation(NPC, 25.7, -7.24, 72.83, 2, 3)
- MovementLoopAddLocation(NPC, 23.77, -7.18, 66.11, 2, 3)
- MovementLoopAddLocation(NPC, 22.46, -7.07, 62.96, 2, 3)
- MovementLoopAddLocation(NPC, 20.95, -7, 60.44, 2, 3)
- MovementLoopAddLocation(NPC, 18.89, -7, 58.81, 2, 3)
- MovementLoopAddLocation(NPC, 17.35, -6, 62.35, 2, 3)
- MovementLoopAddLocation(NPC, 15.86, -4.25, 65.81, 2, 3)
- MovementLoopAddLocation(NPC, 16.25, -2.88, 68.48, 2, 3)
- MovementLoopAddLocation(NPC, 14.99, -2.13, 70.12, 2, 3)
- MovementLoopAddLocation(NPC, 14.12, -0.8, 72.82, 2, 3)
- MovementLoopAddLocation(NPC, 11.93, -0.12, 75.38, 2, 3)
- MovementLoopAddLocation(NPC, 9.73, -0.07, 76.07, 2, 3)
- MovementLoopAddLocation(NPC, 5.09, -7, 58.3, 2, 3)
- MovementLoopAddLocation(NPC, 1.08, -7, 61.67, 2, 3)
- MovementLoopAddLocation(NPC, 1.22, -7, 65.93, 2, 3)
- MovementLoopAddLocation(NPC, 1.37, -7, 68.81, 2, 3)
- MovementLoopAddLocation(NPC, -0.2, -7, 71.85, 2, 3)
- MovementLoopAddLocation(NPC, -2.36, -7, 72.47, 2, 3)
- MovementLoopAddLocation(NPC, -4.88, -7, 69.88, 2, 3)
- MovementLoopAddLocation(NPC, -5.41, -7, 60.05, 2, 3)
- MovementLoopAddLocation(NPC, -16.2, -7, 58.23, 2, 3)
- MovementLoopAddLocation(NPC, -17.91, -7, 64.97, 2, 3)
- MovementLoopAddLocation(NPC, -27.3, -7, 64.82, 2, 3)
- MovementLoopAddLocation(NPC, -29.5, -7, 59.88, 2, 3)
- MovementLoopAddLocation(NPC, -28, -7, 58.89, 2, 3)
- MovementLoopAddLocation(NPC, -29.92, -7, 61.09, 2, 3)
- MovementLoopAddLocation(NPC, -28.29, -7, 62.64, 2, 3)
- MovementLoopAddLocation(NPC, -20.36, -7, 59.75, 2, 3)
- MovementLoopAddLocation(NPC, -10.38, -7, 52.35, 2, 3)
- MovementLoopAddLocation(NPC, -11.76, -7, 46.34, 2, 3)
- MovementLoopAddLocation(NPC, -8.78, -6, 32.02, 2, 3)
- MovementLoopAddLocation(NPC, -10.09, -6, 31.7, 2, 3)
- MovementLoopAddLocation(NPC, -10.74, -6, 28.45, 2, 3)
- MovementLoopAddLocation(NPC, -19.11, -4.9, 10.33, 2, 3)
- MovementLoopAddLocation(NPC, -27.18, -0.75, 4.97, 2, 3)
- MovementLoopAddLocation(NPC, -27.73, -0.75, 4, 2, 3)
- MovementLoopAddLocation(NPC, -26.74, -0.75, 3.32, 2, 3)
- MovementLoopAddLocation(NPC, -20.82, 1.86, 3.45, 2, 3)
- MovementLoopAddLocation(NPC, -19.16, 1.93, 3.8, 2, 3)
- MovementLoopAddLocation(NPC, -18.6, 2, 2.82, 2, 3)
- MovementLoopAddLocation(NPC, -17.39, 2, -3.77, 2, 3)
- MovementLoopAddLocation(NPC, -21.15, 2, -5.33, 2, 3)
- MovementLoopAddLocation(NPC, -22.28, 2.75, -23.44, 2, 3)
- MovementLoopAddLocation(NPC, -20.24, 3, -26.52, 2, 3)
- MovementLoopAddLocation(NPC, -20.76, 4, -38.65, 2, 3)
- MovementLoopAddLocation(NPC, -19.01, 4, -41.14, 2, 3)
- MovementLoopAddLocation(NPC, -16.12, 4, -40.04, 2, 3)
- MovementLoopAddLocation(NPC, -17.96, 4, -41.09, 2, 3)
- MovementLoopAddLocation(NPC, -18.65, 4, -42.65, 2, 3)
- MovementLoopAddLocation(NPC, -17.42, 4, -45.27, 2, 3)
- MovementLoopAddLocation(NPC, -10.21, 4, -50.77, 2, 3)
- MovementLoopAddLocation(NPC, -14.42, 4.45, -58.83, 2, 3)
- MovementLoopAddLocation(NPC, -15.69, 4.18, -60.48, 2, 3)
- MovementLoopAddLocation(NPC, -17.19, 4.18, -61.48, 2, 3)
- MovementLoopAddLocation(NPC, -13.49, 4.18, -67.45, 2, 3)
- MovementLoopAddLocation(NPC, -8.27, 4.18, -69.36, 2, 3)
- MovementLoopAddLocation(NPC, -6.27, 4.18, -69.28, 2, 3)
- MovementLoopAddLocation(NPC, -12.5, 4.18, -66.55, 2, 3)
- MovementLoopAddLocation(NPC, -13.52, 4.18, -65.1, 2, 3)
- MovementLoopAddLocation(NPC, -15.72, 4.18, -64.15, 2, 3)
- MovementLoopAddLocation(NPC, -13.84, 4.35, -59.91, 2, 3)
- MovementLoopAddLocation(NPC, -10.09, 4.14, -52.67, 2, 3)
- MovementLoopAddLocation(NPC, -9.08, 4, -50.88, 2, 3)
- MovementLoopAddLocation(NPC, -5.63, 4, -49.31, 2, 3)
- MovementLoopAddLocation(NPC, 3.78, 5, -42.99, 2, 3)
- MovementLoopAddLocation(NPC, 3.5, 5, -41.23, 2, 3)
- MovementLoopAddLocation(NPC, 2.13, 5, -39.2, 2, 3)
- MovementLoopAddLocation(NPC, 2.48, 5, -41.18, 2, 3)
- MovementLoopAddLocation(NPC, 1.2, 5, -42.64, 2, 3)
- MovementLoopAddLocation(NPC, -2.63, 5, -36.63, 2, 3)
- MovementLoopAddLocation(NPC, 4.76, 5, -30.44, 2, 3)
- MovementLoopAddLocation(NPC, 7.93, 8.48, -37.17, 2, 3)
- MovementLoopAddLocation(NPC, 11.36, 9.07, -37.79, 2, 3)
- MovementLoopAddLocation(NPC, 9.67, 4.93, -29.19, 2, 3)
- MovementLoopAddLocation(NPC, 12.21, 4.75, -27.85, 2, 3)
- MovementLoopAddLocation(NPC, 23.62, 5.25, -34.22, 2, 3)
- MovementLoopAddLocation(NPC, 24.52, 5.25, -31.48, 2, 3)
- MovementLoopAddLocation(NPC, 25.49, 5.25, -31.64, 2, 3)
- MovementLoopAddLocation(NPC, 23.36, 5.25, -27.31, 2, 3)
- MovementLoopAddLocation(NPC, 20.09, 5, -24.6, 2, 3)
- MovementLoopAddLocation(NPC, 8.22, 3.5, -10.58, 2, 3)
- MovementLoopAddLocation(NPC, 6.76, 3.5, -9.58, 2, 3)
- MovementLoopAddLocation(NPC, 3.9, 3.5, -8.04, 2, 3)
- MovementLoopAddLocation(NPC, 4.28, 3.5, -5.76, 2, 3)
- MovementLoopAddLocation(NPC, 3.66, 3.5, -4.42, 2, 3)
- MovementLoopAddLocation(NPC, 6.06, 3.5, -3.35, 2, 3)
- MovementLoopAddLocation(NPC, 9.07, 3.5, -3.65, 2, 3)
- MovementLoopAddLocation(NPC, 12.97, 3.62, -1.71, 2, 3)
- MovementLoopAddLocation(NPC, 12.68, 3.5, 1.59, 2, 3)
- MovementLoopAddLocation(NPC, 19.53, 2, 18.84, 2, 3)
- MovementLoopAddLocation(NPC, 21.6, 2, 18.49, 2, 3)
- MovementLoopAddLocation(NPC, 21.76, 2, 17.66, 2, 3)
- MovementLoopAddLocation(NPC, 29.14, 2, 16.16, 2, 3)
- MovementLoopAddLocation(NPC, 44.46, 3.5, -1.09, 2, 3)
- MovementLoopAddLocation(NPC, 54.85, 4.23, -6.04, 2, 3)
- MovementLoopAddLocation(NPC, 58.69, 5, -22.28, 2, 3)
- MovementLoopAddLocation(NPC, 58.4, 5, -23.09, 2, 3)
- MovementLoopAddLocation(NPC, 57.85, 5, -22.87, 2, 3)
- MovementLoopAddLocation(NPC, 51.19, 5, -23.3, 2, 3)
- MovementLoopAddLocation(NPC, 45.32, 5.25, -18.9, 2, 3)
- MovementLoopAddLocation(NPC, 39.12, 5.25, -20.88, 2, 3)
- MovementLoopAddLocation(NPC, 31.89, 5.25, -13.94, 2, 3)
+ MovementLoopAddLocation(NPC, 31.89, 5.25, -13.94, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 39.12, 5.25, -20.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 45.32, 5.25, -18.9, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 51.19, 5, -23.3, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 57.85, 5, -22.87, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 58.4, 5, -23.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 58.69, 5, -22.28, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 54.85, 4.23, -6.04, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 44.46, 3.5, -1.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 29.14, 2, 16.16, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 21.76, 2, 17.66, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 21.6, 2, 18.49, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 19.53, 2, 18.84, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.68, 3.5, 1.59, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.97, 3.62, -1.71, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 9.07, 3.5, -3.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 6.06, 3.5, -3.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.66, 3.5, -4.42, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 4.28, 3.5, -5.76, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.9, 3.5, -8.04, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 6.76, 3.5, -9.58, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 8.22, 3.5, -10.58, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 20.09, 5, -24.6, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.36, 5.25, -27.31, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 25.49, 5.25, -31.64, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 24.52, 5.25, -31.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.62, 5.25, -34.22, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.21, 4.75, -27.85, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 9.67, 4.93, -29.19, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 11.36, 9.07, -37.79, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 7.93, 8.48, -37.17, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 4.76, 5, -30.44, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -2.63, 5, -36.63, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.2, 5, -42.64, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 2.48, 5, -41.18, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 2.13, 5, -39.2, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.5, 5, -41.23, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.78, 5, -42.99, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -5.63, 4, -49.31, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -9.08, 4, -50.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.09, 4.14, -52.67, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -13.84, 4.35, -59.91, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -15.72, 4.18, -64.15, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -13.52, 4.18, -65.1, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -12.5, 4.18, -66.55, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -6.27, 4.18, -69.28, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -8.27, 4.18, -69.36, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -13.49, 4.18, -67.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.19, 4.18, -61.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -15.69, 4.18, -60.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -14.42, 4.45, -58.83, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.21, 4, -50.77, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.42, 4, -45.27, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -18.65, 4, -42.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.96, 4, -41.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -16.12, 4, -40.04, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -19.01, 4, -41.14, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.76, 4, -38.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.24, 3, -26.52, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -22.28, 2.75, -23.44, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -21.15, 2, -5.33, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.39, 2, -3.77, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -18.6, 2, 2.82, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -19.16, 1.93, 3.8, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.82, 1.86, 3.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -26.74, -0.75, 3.32, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -27.73, -0.75, 4, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -27.18, -0.75, 4.97, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -19.11, -4.9, 10.33, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.74, -6, 28.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.09, -6, 31.7, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -8.78, -6, 32.02, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -11.76, -7, 46.34, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.38, -7, 52.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.36, -7, 59.75, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -28.29, -7, 62.64, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -29.92, -7, 61.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -28, -7, 58.89, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -29.5, -7, 59.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -27.3, -7, 64.82, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.91, -7, 64.97, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -16.2, -7, 58.23, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -5.41, -7, 60.05, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -4.88, -7, 69.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -2.36, -7, 72.47, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -0.2, -7, 71.85, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.37, -7, 68.81, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.22, -7, 65.93, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.08, -7, 61.67, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 5.09, -7, 58.3, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 9.73, -0.07, 76.07, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 11.93, -0.12, 75.38, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 14.12, -0.8, 72.82, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 14.99, -2.13, 70.12, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 16.25, -2.88, 68.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 15.86, -4.25, 65.81, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 17.35, -6, 62.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 18.89, -7, 58.81, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 20.95, -7, 60.44, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 22.46, -7.07, 62.96, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.77, -7.18, 66.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 25.7, -7.24, 72.83, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.85, -7.18, 73.26, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 22.32, -7.06, 71.8, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.21, -7.13, 69.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 26.34, -7, 57.37, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.3, -6, 41.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 11.81, -6, 39.58, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 13.49, -6, 39.86, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 18.17, -5.95, 35.19, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 26.94, -6, 35.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 26.08, -6, 38.73, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 40.11, -5, 37.63, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 50.26, -5, 35.59, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 51.44, -5, 40.02, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 48.81, -5, 40.49, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 48.14, -5.25, 44.05, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 49.21, -6.75, 50.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 55.7, -7, 55.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 53.09, -7, 68.61, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 58.77, -7.05, 86.46, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 64.03, -7.08, 92.59, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 74.3, -7.08, 105.02, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 69.89, -7.08, 109.34, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 63.19, -7.08, 111.79, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 59.29, -7.08, 108.61, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 57.09, -7.08, 99.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 59.29, -7.08, 108.61, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 63.19, -7.08, 111.79, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 69.89, -7.08, 109.34, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 74.3, -7.08, 105.02, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 64.03, -7.08, 92.59, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 58.77, -7.05, 86.46, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 53.09, -7, 68.61, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 55.7, -7, 55.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 49.21, -6.75, 50.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 48.14, -5.25, 44.05, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 48.81, -5, 40.49, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 51.44, -5, 40.02, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 50.26, -5, 35.59, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 40.11, -5, 37.63, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 26.08, -6, 38.73, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 26.94, -6, 35.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 18.17, -5.95, 35.19, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 13.49, -6, 39.86, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 11.81, -6, 39.58, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.3, -6, 41.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 26.34, -7, 57.37, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.21, -7.13, 69.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 22.32, -7.06, 71.8, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.85, -7.18, 73.26, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 25.7, -7.24, 72.83, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.77, -7.18, 66.11, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 22.46, -7.07, 62.96, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 20.95, -7, 60.44, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 18.89, -7, 58.81, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 17.35, -6, 62.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 15.86, -4.25, 65.81, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 16.25, -2.88, 68.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 14.99, -2.13, 70.12, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 14.12, -0.8, 72.82, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 11.93, -0.12, 75.38, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 9.73, -0.07, 76.07, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 5.09, -7, 58.3, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.08, -7, 61.67, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.22, -7, 65.93, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.37, -7, 68.81, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -0.2, -7, 71.85, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -2.36, -7, 72.47, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -4.88, -7, 69.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -5.41, -7, 60.05, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -16.2, -7, 58.23, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.91, -7, 64.97, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -27.3, -7, 64.82, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -29.5, -7, 59.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -28, -7, 58.89, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -29.92, -7, 61.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -28.29, -7, 62.64, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.36, -7, 59.75, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.38, -7, 52.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -11.76, -7, 46.34, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -8.78, -6, 32.02, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.09, -6, 31.7, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.74, -6, 28.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -19.11, -4.9, 10.33, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -27.18, -0.75, 4.97, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -27.73, -0.75, 4, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -26.74, -0.75, 3.32, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.82, 1.86, 3.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -19.16, 1.93, 3.8, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -18.6, 2, 2.82, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.39, 2, -3.77, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -21.15, 2, -5.33, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -22.28, 2.75, -23.44, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.24, 3, -26.52, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -20.76, 4, -38.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -19.01, 4, -41.14, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -16.12, 4, -40.04, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.96, 4, -41.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -18.65, 4, -42.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.42, 4, -45.27, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.21, 4, -50.77, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -14.42, 4.45, -58.83, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -15.69, 4.18, -60.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -17.19, 4.18, -61.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -13.49, 4.18, -67.45, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -8.27, 4.18, -69.36, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -6.27, 4.18, -69.28, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -12.5, 4.18, -66.55, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -13.52, 4.18, -65.1, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -15.72, 4.18, -64.15, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -13.84, 4.35, -59.91, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -10.09, 4.14, -52.67, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -9.08, 4, -50.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -5.63, 4, -49.31, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.78, 5, -42.99, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.5, 5, -41.23, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 2.13, 5, -39.2, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 2.48, 5, -41.18, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 1.2, 5, -42.64, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, -2.63, 5, -36.63, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 4.76, 5, -30.44, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 7.93, 8.48, -37.17, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 11.36, 9.07, -37.79, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 9.67, 4.93, -29.19, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.21, 4.75, -27.85, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.62, 5.25, -34.22, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 24.52, 5.25, -31.48, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 25.49, 5.25, -31.64, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 23.36, 5.25, -27.31, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 20.09, 5, -24.6, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 8.22, 3.5, -10.58, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 6.76, 3.5, -9.58, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.9, 3.5, -8.04, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 4.28, 3.5, -5.76, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 3.66, 3.5, -4.42, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 6.06, 3.5, -3.35, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 9.07, 3.5, -3.65, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.97, 3.62, -1.71, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 12.68, 3.5, 1.59, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 19.53, 2, 18.84, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 21.6, 2, 18.49, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 21.76, 2, 17.66, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 29.14, 2, 16.16, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 44.46, 3.5, -1.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 54.85, 4.23, -6.04, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 58.69, 5, -22.28, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 58.4, 5, -23.09, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 57.85, 5, -22.87, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 51.19, 5, -23.3, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 45.32, 5.25, -18.9, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 39.12, 5.25, -20.88, 2, MakeRandomInt(0,3))
+ MovementLoopAddLocation(NPC, 31.89, 5.25, -13.94, 2, MakeRandomInt(0,3))
end
-
diff --git a/server/SpawnScripts/BeggarsCourt/RolanSunstar.lua b/server/SpawnScripts/BeggarsCourt/RolanSunstar.lua
index 425990b0a..c192ca79e 100755
--- a/server/SpawnScripts/BeggarsCourt/RolanSunstar.lua
+++ b/server/SpawnScripts/BeggarsCourt/RolanSunstar.lua
@@ -6,17 +6,138 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -50.8, -5.77, 35.19, 2, 1)
+ MovementLoopAddLocation(NPC, -50.8, -5.77, 35.19, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -48.18, -5.77, 30.47, 2, 0)
+ MovementLoopAddLocation(NPC, -41.56, -5.77, 25.08, 2, 0)
+ MovementLoopAddLocation(NPC, -38.58, -5.77, 25, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -33.29, -5.75, 24.85, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -30.27, -5.5, 21.44, 2, 0)
+ MovementLoopAddLocation(NPC, -29.55, -5.25, 18.55, 2, 0)
+ MovementLoopAddLocation(NPC, -25.23, -5, 16.87, 2, 0)
+ MovementLoopAddLocation(NPC, -21.57, -5, 15.55, 2, 0)
+ MovementLoopAddLocation(NPC, -17.67, -5, 14.01, 2, 0)
+ MovementLoopAddLocation(NPC, -16.83, -5.01, 8.3, 2, 0)
+ MovementLoopAddLocation(NPC, -14.74, -5, 6.15, 2, 0)
+ MovementLoopAddLocation(NPC, -12.29, -3.87, 8.31, 2, 0)
+ MovementLoopAddLocation(NPC, -10.28, -2.35, 10.96, 2, 0)
+ MovementLoopAddLocation(NPC, -1.82, 1.91, 14.36, 2, 0)
+ MovementLoopAddLocation(NPC, -0.9, 1.94, 14.5, 2, 0)
+ MovementLoopAddLocation(NPC, 0.34, 2.02, 10.96, 2, 0)
+ MovementLoopAddLocation(NPC, -0.36, 2.01, 7.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1.9, 2.25, 4.79, 2, 0)
+ MovementLoopAddLocation(NPC, -6.28, 2.25, 1.69, 2, 0)
+ MovementLoopAddLocation(NPC, -9.28, 2.01, 3.07, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -7.19, 2.49, -0.98, 2, 0)
+ MovementLoopAddLocation(NPC, -4.81, 3.1, -5.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2.94, 3.5, -8.86, 2, 0)
+ MovementLoopAddLocation(NPC, -4.76, 3.5, -16.2, 2, 0)
+ MovementLoopAddLocation(NPC, -3.96, 3.5, -20.4, 2, 0)
+ MovementLoopAddLocation(NPC, -6.07, 3, -28.68, 2, 0)
+ MovementLoopAddLocation(NPC, -5.77, 3.25, -31.53, 2, 0)
+ MovementLoopAddLocation(NPC, -5.29, 3.61, -33.96, 2, 0)
+ MovementLoopAddLocation(NPC, -5.69, 3.5, -35.87, 2, 0)
+ MovementLoopAddLocation(NPC, -5.65, 3.79, -37.68, 2, 0)
+ MovementLoopAddLocation(NPC, -4.42, 4.49, -40.81, 2, 0)
+ MovementLoopAddLocation(NPC, -3.22, 4.75, -42.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1.1, 5, -42.38, 2, 0)
+ MovementLoopAddLocation(NPC, 1.62, 5, -42.27, 2, 1)
+ MovementLoopAddLocation(NPC, 1.62, 5, -42.27, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 1.62, 5, -42.27, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 1.26, 5, -41.69, 2, 0)
+ MovementLoopAddLocation(NPC, -0.14, 5, -40.52, 2, 0)
+ MovementLoopAddLocation(NPC, -1.64, 5, -38.57, 2, 0)
+ MovementLoopAddLocation(NPC, -1.45, 5, -34.32, 2, 0)
+ MovementLoopAddLocation(NPC, 2.1, 5, -33, 2, 0)
+ MovementLoopAddLocation(NPC, 3.96, 5, -31.63, 2, 0)
+ MovementLoopAddLocation(NPC, 6.16, 4.75, -28.59, 2, 0)
+ MovementLoopAddLocation(NPC, 11.87, 4.75, -27.47, 2, 0)
+ MovementLoopAddLocation(NPC, 14.74, 4.75, -25.93, 2, 0)
+ MovementLoopAddLocation(NPC, 20.74, 5.25, -22.17, 2, 0)
+ MovementLoopAddLocation(NPC, 24.86, 5.25, -16.76, 2, 0)
+ MovementLoopAddLocation(NPC, 25.46, 5.25, -16.42, 2, 1)
+ MovementLoopAddLocation(NPC, 25.46, 5.25, -16.42, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 25.69, 5.25, -17.06, 2, 0)
+ MovementLoopAddLocation(NPC, 25.26, 5.25, -18.47, 2, 0)
+ MovementLoopAddLocation(NPC, 24.21, 5.25, -19.05, 2, 0)
+ MovementLoopAddLocation(NPC, 23.03, 5.25, -18.13, 2, 0)
+ MovementLoopAddLocation(NPC, 16.93, 4.75, -17.02, 2, 0)
+ MovementLoopAddLocation(NPC, 11.88, 3.5, -10.79, 2, 0)
+ MovementLoopAddLocation(NPC, 8.7, 3.5, -6.3, 2, 0)
+ MovementLoopAddLocation(NPC, 5.7, 3.5, -3.05, 2, 0)
+ MovementLoopAddLocation(NPC, 4.23, 3.5, -0.26, 2, 0)
+ MovementLoopAddLocation(NPC, 2.81, 2.5, 5.66, 2, 0)
+ MovementLoopAddLocation(NPC, 0.87, 2.02, 12.53, 2, 0)
+ MovementLoopAddLocation(NPC, -0.83, 1.91, 15.44, 2, 0)
+ MovementLoopAddLocation(NPC, -2.13, 1.96, 15.89, 2, 0)
+ MovementLoopAddLocation(NPC, -6.38, 0.15, 14.08, 2, 0)
+ MovementLoopAddLocation(NPC, -11.05, -2.48, 11.89, 2, 0)
+ MovementLoopAddLocation(NPC, -14.72, -4.99, 8.45, 2, 0)
+ MovementLoopAddLocation(NPC, -15.71, -5.01, 11.76, 2, 0)
+ MovementLoopAddLocation(NPC, -20.45, -5, 20.25, 2, 1)
+ MovementLoopAddLocation(NPC, -20.45, -5, 20.25, 2, 30)
+ MovementLoopAddLocation(NPC, -20.45, -5, 20.25, 2, 0)
+ MovementLoopAddLocation(NPC, -22.57, -5, 20.34, 2, 0)
+ MovementLoopAddLocation(NPC, -25.03, -5, 19.98, 2, 0)
+ MovementLoopAddLocation(NPC, -29.16, -5.75, 22.88, 2, 0)
+ MovementLoopAddLocation(NPC, -33.63, -5.75, 24.86, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -40.25, -5.77, 25.08, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -52.29, -5.77, 27.85, 2, 1)
+ MovementLoopAddLocation(NPC, -52.29, -5.77, 27.85, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -48.97, -5.77, 29.06, 2, 0)
end
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ else
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370080)
+ UseWidget(door)
+end
+
+
function RandomGreeting(NPC, Spawn)
local choice = MakeRandomInt(1,5)
diff --git a/server/SpawnScripts/BeggarsCourt/Saltprow.lua b/server/SpawnScripts/BeggarsCourt/Saltprow.lua
index 31e21891c..121138e90 100755
--- a/server/SpawnScripts/BeggarsCourt/Saltprow.lua
+++ b/server/SpawnScripts/BeggarsCourt/Saltprow.lua
@@ -5,26 +5,46 @@
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/petretailer/barbarian_petretailer_service_good_1_notcitizen_gm_820dc7e.mp3", "I'm afraid that I'm closed for the day. I'm going to have to ask you to leave now.", "heckno", 1325380097, 3928490350
+, Spawn)
+ end
+end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 1237696600, 1447318033, Spawn, 0)
- elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 343341765, 3197108031, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1100358951, 329280246, Spawn, 0)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_aoi_gm_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 139349589, 782938435, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 1237696600, 1447318033, Spawn)
end
-end
\ No newline at end of file
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/SandonBreezebender.lua b/server/SpawnScripts/BeggarsCourt/SandonBreezebender.lua
new file mode 100755
index 000000000..501035040
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/SandonBreezebender.lua
@@ -0,0 +1,127 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/SandonBreezebender.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 08:06:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
+
+-- Item ID's
+local ARTISAN_ESSENTIALS_VOLUME_2 = 31373
+
+function spawn(NPC)
+end
+
+function RandomGreeting(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1052.mp3", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1052.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1052.mp3", 0, 0, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861) == 8 then
+ Dialog1(NPC,Spawn)
+ elseif GetTradeskillLevel(Spawn) <2 then
+ RandomGreeting(NPC,Spawn)
+
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ RandomGreeting(NPC,Spawn)
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ else
+ RandomGreeting(NPC,Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in West Freeport. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ end
+end
+
+
+function dlg_39_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5861)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
+ StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
+end
+
+function Dialog1(NPC,Spawn)
+ SetStepComplete(Spawn,5861,8)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddDialog("We don't tolerate loafers and filchers in the Ring of Wanderlust. If you're willing to work hard, I might be able to find a spot for you.")
+ RandomGreeting(NPC,Spawn)
+ Dialog.AddOption("Just looking around. As you were.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddDialog("Many things can be done at a tradeskill society and there are many in the city... but ours is obviously the best! Each is equipped with quality crafting stations and fuels needed to become proficient at any tradeskill class you might desire.")
+ Dialog.AddOption("Anything else I should know?", "CanDo2")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function HelpMe(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("In order to be competitive in today's marketplace, the Ring of Wanderlust provides you with this basic guide to commerce. You will learn many things on your own over time, so do not consider this book your only guide to success. Rely on your own resources and skills and you will prosper.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn) <2 then
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/SentiusPoisonleaf.lua b/server/SpawnScripts/BeggarsCourt/SentiusPoisonleaf.lua
index f5ef234b6..37896832f 100755
--- a/server/SpawnScripts/BeggarsCourt/SentiusPoisonleaf.lua
+++ b/server/SpawnScripts/BeggarsCourt/SentiusPoisonleaf.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/SentiusPoisonleaf.lua
Script Purpose : Sentius Poisonleaf
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.17
Script Notes :
--]]
@@ -18,9 +18,7 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, SiricusandtheMilitia) == 1 then
- SetStepComplete(Spawn, SiricusandtheMilitia, 1)
- end
+
Dialog1(NPC, Spawn)
end
@@ -29,7 +27,21 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("This mead is quite exquisite! It's a good thing I just came into some money. I've seen what Banwyn does to people who don't pay their tab.")
Dialog.AddVoiceover("voiceover/english/guard_sentius_verus/fprt_hood04/std_sentius_poisonleaf.mp3", 3476707665, 1763780062)
+ if GetQuestStep(Spawn, SiricusandtheMilitia) == 1 then
+ Dialog.AddOption("Siricus is asking about his Militia application fee.","Dialog2")
+ end
Dialog.AddOption("I don't really care.")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ SetStepComplete(Spawn, SiricusandtheMilitia, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh... ummm... tell that gimp - er - guy that things like this take time. They - uhh - are seriously considering it but it might take some more money. If it does, I'll come around to get some more. Let him know I'm working on it, okay?")
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ Dialog.AddVoiceover("voiceover/english/guard_sentius_verus/fprt_hood04/quests/siricuscalventius/sentius_siricus_x1_initial.mp3", 4034795420, 833256719)
+ Dialog.AddOption("I'll let him know...")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/SestiusBuccio.lua b/server/SpawnScripts/BeggarsCourt/SestiusBuccio.lua
index 8bfdaf641..747988115 100755
--- a/server/SpawnScripts/BeggarsCourt/SestiusBuccio.lua
+++ b/server/SpawnScripts/BeggarsCourt/SestiusBuccio.lua
@@ -14,13 +14,16 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
RandomGreeting(NPC, Spawn)
end
function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+ local choice = MakeRandomInt(1,2)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_bartender/ft/eco/evil/human_eco_evil_bartender_barmaid_gm_fce6ec9a.mp3", "I can't tell this pub from a pigsty. Get to work and clean this mess!", "", 1129202055, 4037261409, Spawn, 0)
- end
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_bartender/ft/eco/evil/human_eco_evil_bartender_hail_gm_35e6e167.mp3", "Just so ya know, I'm not in the business to hear your sad stories. Now what will it be?", "nod", 1595668242, 2514401652, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_bartender/ft/eco/evil/human_eco_evil_bartender_hail_gm_201b6d6a.mp3", "What can I get for ya?", "hello", 2895097847, 2686872643, Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/ShieldsmithPebblemark.lua b/server/SpawnScripts/BeggarsCourt/ShieldsmithPebblemark.lua
new file mode 100755
index 000000000..b6925bccc
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/ShieldsmithPebblemark.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/ShieldsmithPebblemark.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 07:11:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/petretailer/barbarian_petretailer_service_good_1_notcitizen_gm_820dc7e.mp3", "I'm afraid that I'm closed for the day. I'm going to have to ask you to leave now.", "heckno", 1325380097, 3928490350
+, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 175282120, 2443997290, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 2378717460, 740610806, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/merchant/halfelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3198881432, 747888667, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/SiricusCalventius.lua b/server/SpawnScripts/BeggarsCourt/SiricusCalventius.lua
index dcb470fc7..47c4db56c 100755
--- a/server/SpawnScripts/BeggarsCourt/SiricusCalventius.lua
+++ b/server/SpawnScripts/BeggarsCourt/SiricusCalventius.lua
@@ -1,15 +1,37 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/SiricusCalventius.lua
Script Purpose : Siricus Calventius
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.17
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
local SiricusandtheMilitia = 5663
function spawn(NPC)
ProvidesQuest(NPC, SiricusandtheMilitia)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
+end
+
+function InRange(NPC,Spawn)
+if CanReceiveQuest(Spawn,SiricusandtheMilitia) and GetTempVariable(NPC,"CalloutTimer") ~= "true" then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/siricus_calventius/fprt_hood04/100_std_siricus_calventius_hum_m_callout1_12a2e93c.mp3", "How dare you enter my house, scoundrel! This time you're not destroying my figurines!", "shakefist", 2618163617, 4254987101, Spawn, 0)
+ AddTimer(NPC,45000,"ResetCallout",1,Spawn)
+elseif HasCompletedQuest(Spawn,SiricusandtheMilitia) and GetTempVariable(NPC,"CalloutTimer") ~= "true" then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/siricus_calventius/fprt_hood04/100_std_siricus_calventius_hum_m_multhail1_577c7e4c.mp3", "Get out of my house! I'm calling the Militia!", "glare", 1299689554, 3591558619, Spawn, 0)
+ AddTimer(NPC,45000,"ResetCallout",1,Spawn)
+end
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
end
function respawn(NPC)
@@ -17,19 +39,81 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, SiricusandtheMilitia) and not HasCompletedQuest(Spawn, SiricusandtheMilitia) then
- OfferQuest(NPC, Spawn, SiricusandtheMilitia)
- end
- if GetQuestStep(Spawn, SiricusandtheMilitia) == 2 then
- SetStepComplete(Spawn, SiricusandtheMilitia, 2)
- end
- RandomGreeting(NPC, Spawn)
+ if GetQuestStep(Spawn, SiricusandtheMilitia)>=1 then
+ Dialog_Wait(NPC, Spawn)
+ else
+ Dialog1(NPC, Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+function Offer(NPC, Spawn)
+ OfferQuest(NPC, Spawn, SiricusandtheMilitia)
+end
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/siricus_calventius/fprt_hood04/100_std_siricus_calventius_hum_m_callout1_12a2e93c.mp3", "How dare you enter my house, scoundrel! This time you're not destroying my figurines!\r\n\r\n", "", 2618163617, 4254987101, Spawn, 0)
- end
-end
\ No newline at end of file
+function Dialog_Wait(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, did my application go through? It's been weeks! I must know! Please hurry and find Sentius!")
+ Dialog.AddVoiceover("voiceover/english/siricus_calventius/fprt_hood04/std_siricus_calventius.mp3", 0, 0)
+ if GetQuestStep(Spawn,SiricusandtheMilitia) ==2 then
+ Dialog.AddOption("Sentius said he's still working on it but it will take time.", "Dialog4")
+ else
+ Dialog.AddOption("I'm still looking for him.")
+ end
+ Dialog.Start()
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Get out of my house, before I call the Militia and tell them you attacked me!")
+ Dialog.AddVoiceover("voiceover/english/siricus_calventius/fprt_hood04/std_siricus_calventius.mp3", 606767278, 3005517410)
+ if CanReceiveQuest(Spawn,SiricusandtheMilitia) then
+ Dialog.AddOption("I'm not here to hurt you.", "Dialog2")
+ elseif GetQuestStep(Spawn,SiricusandtheMilitia) ==2 then
+ Dialog.AddOption("Sentius said he's still working on it but it will take time.", "Dialog4")
+ end
+ Dialog.AddOption("Alright! I'm going.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's what you guys said last time, then you destroyed my glass figurines! By your looks I bet you're one of Manius Galla's guys. What are you going to break now?! ")
+ Dialog.AddVoiceover("voiceover/english/siricus_calventius/fprt_hood04/quests/siricuscalventius/siricus_x1_initial.mp3", 541429721, 1155169623)
+ PlayFlavor(NPC, "", "", "cringe", 0, 0, Spawn, 0)
+ Dialog.AddOption("Seriously, I'm not here to hurt you.", "Dialog3")
+ Dialog.AddOption("You most likely deserved it, you snivelling fool.","Fool")
+ Dialog.Start()
+end
+
+
+function Fool(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/siricus_calventius/fprt_hood04/100_std_siricus_calventius_hum_m_multhail1_577c7e4c.mp3", "Get out of my house! I'm calling the Militia!", "point", 1299689554, 3591558619, Spawn, 0)
+end
+
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Really? Please, accept my apology. I thought you were with Manius. Just for fun, he sends his guys here to rough me up. In fact, I'm paying my way through the Freeport Militia. One day I'll take pleasure in arresting that tyrant for his cruelty. Hey, would you do me a favor and ask my friend how my bribe is coming along?")
+ Dialog.AddVoiceover("voiceover/english/siricus_calventius/fprt_hood04/quests/siricuscalventius/siricus_x1_initial2.mp3", 1937410613, 2279067190)
+ PlayFlavor(NPC, "", "", "sigh", 0, 0, Spawn, 0)
+ Dialog.AddOption("Sure. Why not.", "Offer")
+ Dialog.AddOption("Nope. You should learn your place!","Fool")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh no. I've waited several weeks now ... Gosh, I didn't know the Militia had such a long waiting list. I guess I have no choice but to wait. Thank you for your help, good friend. ")
+ Dialog.AddVoiceover("voiceover/english/siricus_calventius/fprt_hood04/quests/siricuscalventius/siricus_x1_finish.mp3", 1070794522, 2366770692)
+ PlayFlavor(NPC, "", "", "pout", 0, 0, Spawn, 0)
+ Dialog.AddOption("Yeah, good luck with that.")
+ Dialog.Start()
+ SetStepComplete(Spawn,SiricusandtheMilitia,2)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/StatiaViatrix.lua b/server/SpawnScripts/BeggarsCourt/StatiaViatrix.lua
index 1e0330055..5b945cfde 100755
--- a/server/SpawnScripts/BeggarsCourt/StatiaViatrix.lua
+++ b/server/SpawnScripts/BeggarsCourt/StatiaViatrix.lua
@@ -5,8 +5,11 @@
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+local TimeCheck = false -- used to delay between hail uses
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
@@ -14,10 +17,24 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function Talk(NPC, Spawn)
local choice = MakeRandomInt(1,5)
if choice == 1 then
diff --git a/server/SpawnScripts/BeggarsCourt/TabiththeHag.lua b/server/SpawnScripts/BeggarsCourt/TabiththeHag.lua
index f64acf336..4ad13e351 100755
--- a/server/SpawnScripts/BeggarsCourt/TabiththeHag.lua
+++ b/server/SpawnScripts/BeggarsCourt/TabiththeHag.lua
@@ -1,21 +1,133 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/TabiththeHag.lua
Script Purpose : Tabith the Hag
- Script Author : torsten
- Script Date : 2022.07.18
+ Script Author : Dorbin
+ Script Date : 2023.11.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+local PRIEST = 11
+local CLERIC = 12
+local TEMPLAR = 13
+local INQUISITOR = 14
+local DRUID = 15
+local WARDEN = 16
+local FURY = 17
+local SHAMAN = 18
+local MYSTIC = 19
+local DEFILER = 20
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+local SCOUT = 31
+local ROGUE = 32
+local SWASHBUCKLER = 33
+local BRIGAND = 34
+local BARD = 35
+local TROUBADOR = 36
+local DIRGE = 37
+local PREDATOR = 38
+local RANGER = 39
+local ASSASSIN = 40
+local ANIMALIST = 41
+local BEASTLORD = 42
+local SHAPER = 43
+local CHANNELER = 44
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Seer(NPC,Spawn)
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+local CalloutTimeCheck = false -- used to delay between callout uses
+
+
+function InRange(NPC, Spawn) --Quest Callout
+ if CalloutTimeCheck == false then
+ if math.random(1, 100) <= 20 then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ SeerShout(NPC, Spawn)
+ AddTimer(NPC,50000,"ResetCalloutTimer")
+ end
end
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
+end
+
+function Seer(NPC,Spawn)
+ choice = math.random(1,2)
+ FaceTarget(NPC, Spawn)
+ if choice ==1 then
+ PlayFlavor(NPC, "","", "ponder", 0, 0, Spawn)
+ else
+
+ if GetClass(Spawn)==SCOUT or GetClass(Spawn)==ROGUE or GetClass(Spawn)==SWASHBUCKLER or GetClass(Spawn)==BRIGAND or GetClass(Spawn)==BARD or GetClass(Spawn)==TROUBADOR or GetClass(Spawn)==DIRGE or GetClass(Spawn)==PREDATOR or GetClass(Spawn)==RANGER or GetClass(Spawn)==ASSASSIN or GetClass(Spawn)==ANIMALIST or GetClass(Spawn)==BEASTLORD then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_scout_gf_a250f41f.mp3", "Stealth, guile and bravado shall follow you on your path to greatness.", "", 1797841506, 2868715164, Spawn)
+
+ elseif GetClass(Spawn)==MAGE or GetClass(Spawn)==SORCERER or GetClass(Spawn)==WIZARD or GetClass(Spawn)==WARLOCK or GetClass(Spawn)==ENCHANTER or GetClass(Spawn)==ILLUSIONIST or GetClass(Spawn)==COERCER or GetClass(Spawn)==SUMMONER or GetClass(Spawn)==CONJUROR or GetClass(Spawn)==NECROMANCER then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_mage_gf_f18445ae.mp3", "Clearly your intellect is your best asset. The world shall marvel at the wonders you control.", "", 2374480230, 2549502692, Spawn, 0)
+
+ elseif GetClass(Spawn)==CLERIC or GetClass(Spawn)==TEMPLAR or GetClass(Spawn)==INQUISITOR or GetClass(Spawn)==DRUID or GetClass(Spawn)==WARDEN or GetClass(Spawn)==FURY or GetClass(Spawn)==SHAMAN or GetClass(Spawn)==MYSTIC or GetClass(Spawn)==DEFILER or GetClass(Spawn)==PRIEST or GetClass(Spawn)==SHAPER or GetClass(Spawn)==CHANNELER then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_priest_gf_5c80506d.mp3", "Your spirit is strong, as is your faith. You shall move more than mountains, you shall move souls.", "", 894403956, 265994277, Spawn)
+
+ elseif GetClass(Spawn)==FIGHTER or GetClass(Spawn)==WARRIOR or GetClass(Spawn)==GUARDIAN or GetClass(Spawn)==BERSERKER or GetClass(Spawn)==BRAWLER or GetClass(Spawn)==MONK or GetClass(Spawn)==BRUISER or GetClass(Spawn)==CRUSADER or GetClass(Spawn)==SHADOWKNIGHT or GetClass(Spawn)==PALADIN then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_fighter_gf_544e4a58.mp3", "Epic battles await your future, but the strength of your arm shall tame them all!", "", 3412016143, 1212387502, Spawn, 0)
+ end
+ end
+end
+
+function SeerShout(NPC,Spawn)
+ if GetClass(Spawn)==SCOUT or GetClass(Spawn)==ROGUE or GetClass(Spawn)==SWASHBUCKLER or GetClass(Spawn)==BRIGAND or GetClass(Spawn)==BARD or GetClass(Spawn)==TROUBADOR or GetClass(Spawn)==DIRGE or GetClass(Spawn)==PREDATOR or GetClass(Spawn)==RANGER or GetClass(Spawn)==ASSASSIN or GetClass(Spawn)==ANIMALIST or GetClass(Spawn)==BEASTLORD or GetClass(Spawn)==SHAPER or GetClass(Spawn)==CHANNELER then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_scout_gf_a250f41f.mp3", "Stealth, guile and bravado shall follow you on your path to greatness.", "", 1797841506, 2868715164)
+
+ elseif GetClass(Spawn)==MAGE or GetClass(Spawn)==SORCERER or GetClass(Spawn)==WIZARD or GetClass(Spawn)==WARLOCK or GetClass(Spawn)==ENCHANTER or GetClass(Spawn)==ILLUSIONIST or GetClass(Spawn)==COERCER or GetClass(Spawn)==SUMMONER or GetClass(Spawn)==CONJUROR or GetClass(Spawn)==NECROMANCER then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_mage_gf_f18445ae.mp3", "Clearly your intellect is your best asset. The world shall marvel at the wonders you control.", "", 2374480230, 2549502692)
+
+ elseif GetClass(Spawn)==CLERIC or GetClass(Spawn)==TEMPLAR or GetClass(Spawn)==INQUISITOR or GetClass(Spawn)==DRUID or GetClass(Spawn)==WARDEN or GetClass(Spawn)==FURY or GetClass(Spawn)==SHAMAN or GetClass(Spawn)==MYSTIC or GetClass(Spawn)==DEFILER or GetClass(Spawn)==PRIEST then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_priest_gf_5c80506d.mp3", "Your spirit is strong, as is your faith. You shall move more than mountains, you shall move souls.", "", 894403956, 265994277)
+
+ elseif GetClass(Spawn)==FIGHTER or GetClass(Spawn)==WARRIOR or GetClass(Spawn)==GUARDIAN or GetClass(Spawn)==BERSERKER or GetClass(Spawn)==BRAWLER or GetClass(Spawn)==MONK or GetClass(Spawn)==BRUISER or GetClass(Spawn)==CRUSADER or GetClass(Spawn)==SHADOWKNIGHT or GetClass(Spawn)==PALADIN then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_fighter_gf_544e4a58.mp3", "Epic battles await your future, but the strength of your arm shall tame them all!", "", 3412016143, 1212387502)
+
+ end
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+ end
function RandomGreeting(NPC, Spawn)
local choice = MakeRandomInt(1,2)
@@ -25,4 +137,129 @@ function RandomGreeting(NPC, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_seer/ft/eco/evil/human_eco_evil_seer_mage_gf_f18445ae.mp3", "Clearly your intellect is your best asset. The world shall marvel at the wonders you control.", "", 2374480230, 2549502692, Spawn, 0)
end
-end
\ No newline at end of file
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -32.49, -6.92, 83.09, 2, 0)
+ MovementLoopAddLocation(NPC, -33.52, -6.92, 82.02, 2, 22)
+ MovementLoopAddLocation(NPC, -29.41, -6.92, 80.82, 2, 0)
+ MovementLoopAddLocation(NPC, -29.38, -6.92, 78.86, 2, 0)
+ MovementLoopAddLocation(NPC, -32.89, -6.92, 72.32, 2, 0)
+ MovementLoopAddLocation(NPC, -32.09, -6.92, 68.26, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -26.72, -7, 64.44, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -22.05, -7, 59.95, 2, 0)
+ MovementLoopAddLocation(NPC, -17.5, -7, 57.1, 2, 0)
+ MovementLoopAddLocation(NPC, -12.35, -7, 55.77, 2, 0)
+ MovementLoopAddLocation(NPC, -1.99, -7, 58.68, 2, 0)
+ MovementLoopAddLocation(NPC, -0.8, -7, 58.6, 2, 11)
+ MovementLoopAddLocation(NPC, 1.83, -7, 56.13, 2, 0)
+ MovementLoopAddLocation(NPC, 4.96, -7, 49.3, 2, 0)
+ MovementLoopAddLocation(NPC, 5.51, -7, 48.25, 2, 11)
+ MovementLoopAddLocation(NPC, -0.6, -7, 47.38, 2, 11)
+ MovementLoopAddLocation(NPC, 2.69, -7, 51.56, 2, 0)
+ MovementLoopAddLocation(NPC, 10.37, -7, 56.87, 2, 0)
+ MovementLoopAddLocation(NPC, 13.27, -7, 60.05, 2, 11)
+ MovementLoopAddLocation(NPC, 27.52, -6.42, 47.47, 2, 0)
+ MovementLoopAddLocation(NPC, 32.31, -6, 44.9, 2, 0)
+ MovementLoopAddLocation(NPC, 36.13, -6, 43.04, 2, 11)
+ MovementLoopAddLocation(NPC, 36.69, -6, 43.78, 2, 0)
+ MovementLoopAddLocation(NPC, 38.44, -6, 44.28, 2, 0)
+ MovementLoopAddLocation(NPC, 39.48, -5.5, 42.01, 2, 0)
+ MovementLoopAddLocation(NPC, 37.49, -5.25, 40.23, 2, 0)
+ MovementLoopAddLocation(NPC, 34.72, -5.25, 38.62, 2, 0)
+ MovementLoopAddLocation(NPC, 30.95, -5.25, 32.06, 2, 0)
+ MovementLoopAddLocation(NPC, 31.83, -5.01, 26.61, 2, 0)
+ MovementLoopAddLocation(NPC, 33.46, -5.01, 23.35, 2, 0)
+ MovementLoopAddLocation(NPC, 36.1, -4.09, 22.99, 2, 0)
+ MovementLoopAddLocation(NPC, 41.32, -1.41, 23.92, 2, 0)
+ MovementLoopAddLocation(NPC, 48.08, 1.85, 25.05, 2, 0)
+ MovementLoopAddLocation(NPC, 49.53, 1.95, 24.27, 2, 0)
+ MovementLoopAddLocation(NPC, 49.38, 2, 21.86, 2, 0)
+ MovementLoopAddLocation(NPC, 47.87, 2, 19.41, 2, 0)
+ MovementLoopAddLocation(NPC, 46.79, 2, 14.88, 2, 0)
+ MovementLoopAddLocation(NPC, 43.12, 2, 13.32, 2, 0)
+ MovementLoopAddLocation(NPC, 38.22, 2, 10.97, 2, 11)
+ MovementLoopAddLocation(NPC, 39.86, 2, 11.69, 2, 0)
+ MovementLoopAddLocation(NPC, 40.52, 2.25, 10.02, 2, 0)
+ MovementLoopAddLocation(NPC, 38.52, 2.6, 7.01, 2, 0)
+ MovementLoopAddLocation(NPC, 34.64, 3.3, 4.66, 2, 0)
+ MovementLoopAddLocation(NPC, 33.65, 3.5, 2.76, 2, 11)
+ MovementLoopAddLocation(NPC, 32.82, 3.5, 1.17, 2, 0)
+ MovementLoopAddLocation(NPC, 33.2, 3.5, -0.59, 2, 22)
+ MovementLoopAddLocation(NPC, 31.73, 3.5, -1.6, 2, 0)
+ MovementLoopAddLocation(NPC, 30.63, 5.25, -8.53, 2, 0)
+ MovementLoopAddLocation(NPC, 34.64, 5.25, -12.61, 2, 0)
+ MovementLoopAddLocation(NPC, 40.17, 5.25, -15.35, 2, 0)
+ MovementLoopAddLocation(NPC, 44.68, 5.25, -16.87, 2, 0)
+ MovementLoopAddLocation(NPC, 51.46, 5, -17.92, 2, 11)
+ MovementLoopAddLocation(NPC, 57.21, 5, -15.93, 2, 11)
+ MovementLoopAddLocation(NPC, 53.62, 5, -19.84, 2, 0)
+ MovementLoopAddLocation(NPC, 47.13, 5.25, -25.42, 2, 11)
+ MovementLoopAddLocation(NPC, 49.58, 5, -28.78, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, 52.14, 5.01, -32.93, 2, 0,"Door2")
+ MovementLoopAddLocation(NPC, 54.28, 5.05, -38.06, 2, 0)
+ MovementLoopAddLocation(NPC, 57.4, 5.01, -45.59, 2, 22)
+ MovementLoopAddLocation(NPC, 57.69, 5.04, -43.5, 2, 0)
+ MovementLoopAddLocation(NPC, 57.67, 5.08, -37.28, 2, 22)
+ MovementLoopAddLocation(NPC, 54.36, 5.01, -35.77, 2, 0)
+ MovementLoopAddLocation(NPC, 52.59, 5.01, -33.19, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, 49.8, 5, -28.11, 2, 0,"Door2")
+ MovementLoopAddLocation(NPC, 49.65, 5, -22.79, 2, 0)
+ MovementLoopAddLocation(NPC, 45.52, 5.25, -17.05, 2, 0)
+ MovementLoopAddLocation(NPC, 41.52, 5.25, -16.15, 2, 0)
+ MovementLoopAddLocation(NPC, 30.57, 5.25, -10.2, 2, 0)
+ MovementLoopAddLocation(NPC, 26.9, 3.5, -0.02, 2, 0)
+ MovementLoopAddLocation(NPC, 23.71, 3.5, 4.19, 2, 11)
+ MovementLoopAddLocation(NPC, 20.65, 3.5, 0.41, 2, 0)
+ MovementLoopAddLocation(NPC, 20.65, 3.5, 0.41, 2, 11)
+ MovementLoopAddLocation(NPC, 19.2, 3.5, 5.5, 2, 11)
+ MovementLoopAddLocation(NPC, 12.92, 3.37, 9.65, 2, 0)
+ MovementLoopAddLocation(NPC, 2.96, 2, 9.64, 2, 0)
+ MovementLoopAddLocation(NPC, 1.5, 2, 11.21, 2, 0)
+ MovementLoopAddLocation(NPC, -0.87, 1.92, 15.45, 2, 0)
+ MovementLoopAddLocation(NPC, -0.87, 1.92, 15.45, 2, 0) --Guard Stop
+ MovementLoopAddLocation(NPC, -2.06, 1.92, 15.37, 2, 0)
+ MovementLoopAddLocation(NPC, -9.84, -1.81, 12.71, 2, 0)
+ MovementLoopAddLocation(NPC, -14.92, -4.99, 8.1, 2, 0)
+ MovementLoopAddLocation(NPC, -15.64, -5.01, 10.49, 2, 0)
+ MovementLoopAddLocation(NPC, -20.23, -5, 15.88, 2, 0)
+ MovementLoopAddLocation(NPC, -25.49, -5, 19.16, 2, 0)
+ MovementLoopAddLocation(NPC, -27.46, -5, 18.7, 2, 0)
+ MovementLoopAddLocation(NPC, -28.87, -5.25, 19.17, 2, 0)
+ MovementLoopAddLocation(NPC, -28.78, -5.5, 20.96, 2, 0)
+ MovementLoopAddLocation(NPC, -26.8, -5.75, 22.98, 2, 0)
+ MovementLoopAddLocation(NPC, -23.66, -6.25, 24.75, 2, 0)
+ MovementLoopAddLocation(NPC, -19.31, -7, 24, 2, 11)
+ MovementLoopAddLocation(NPC, -18.87, -7, 28.4, 2, 0)
+ MovementLoopAddLocation(NPC, -18.52, -7, 31.62, 2, 0)
+ MovementLoopAddLocation(NPC, -13.1, -6.75, 34.8, 2, 0)
+ MovementLoopAddLocation(NPC, -8.02, -6.73, 39.82, 2, 0)
+ MovementLoopAddLocation(NPC, -7.06, -7, 45.05, 2, 0)
+ MovementLoopAddLocation(NPC, -6.03, -7, 51.61, 2, 0)
+ MovementLoopAddLocation(NPC, -8.03, -7, 55.57, 2, 0)
+ MovementLoopAddLocation(NPC, -14.2, -7, 58.52, 2, 0)
+ MovementLoopAddLocation(NPC, -15.75, -7, 59.4, 2, 0)
+ MovementLoopAddLocation(NPC, -16.61, -7, 64.52, 2, 11)
+ MovementLoopAddLocation(NPC, -17.79, -7, 64.27, 2, 0)
+ MovementLoopAddLocation(NPC, -29.98, -7, 62.42, 2, 11)
+ MovementLoopAddLocation(NPC, -27.94, -7, 63.06, 2, 0)
+ MovementLoopAddLocation(NPC, -27.29, -7, 65.09, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -32.43, -6.92, 68.37, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -31.21, -6.92, 70.95, 2, 0)
+ MovementLoopAddLocation(NPC, -27.82, -6.92, 76.71, 2, 0)
+ MovementLoopAddLocation(NPC, -26.17, -6.92, 80.89, 2, 11)
+ MovementLoopAddLocation(NPC, -28.62, -6.92, 80.46, 2, 0)
+ MovementLoopAddLocation(NPC, -30.08, -6.92, 82.29, 2, 0)
+end
+
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370082)
+ UseWidget(door)
+end
+
+function Door2(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370078)
+ UseWidget(door)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/Thesta.lua b/server/SpawnScripts/BeggarsCourt/Thesta.lua
index d22f92ebd..0f6e99b16 100755
--- a/server/SpawnScripts/BeggarsCourt/Thesta.lua
+++ b/server/SpawnScripts/BeggarsCourt/Thesta.lua
@@ -1,26 +1,52 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/Thesta.lua
Script Purpose : Thesta
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/petretailer/barbarian_petretailer_service_good_1_notcitizen_gm_820dc7e.mp3", "I'm afraid that I'm closed for the day. I'm going to have to ask you to leave now.", "heckno", 1325380097, 3928490350
+, Spawn)
+ end
+end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,4)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 1817378690, 2459690771, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_7d521aa2.mp3", "Hello! Can I offer you one of our new lifetime extended warranties for any merchandise you purchase? ", "nod", 1377121065, 1621186679, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1299723818, 3048193330, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 2963689917, 1457704094, Spawn, 0)
end
-end
\ No newline at end of file
+end
diff --git a/server/SpawnScripts/BeggarsCourt/TsuulNyghtfallow.lua b/server/SpawnScripts/BeggarsCourt/TsuulNyghtfallow.lua
index a666e6ce8..634dd86d5 100755
--- a/server/SpawnScripts/BeggarsCourt/TsuulNyghtfallow.lua
+++ b/server/SpawnScripts/BeggarsCourt/TsuulNyghtfallow.lua
@@ -1,10 +1,12 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/TsuulNyghtfallow.lua
Script Purpose : Tsuul Nyghtfallow
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.17
- Script Notes :
+ Script Notes : MANUFACTURED MOST DIALOG. NO VOs nor RECORDS. -- Dorbin
--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
local TheNyghtfallowHeirloom = 5664
@@ -16,32 +18,98 @@ function respawn(NPC)
spawn(NPC)
end
+
function hailed(NPC, Spawn)
- if HasLanguage(Spawn, 7) then
- if not HasQuest(Spawn, TheNyghtfallowHeirloom) and not HasCompletedQuest(Spawn, TheNyghtfallowHeirloom) then
- OfferQuest(NPC, Spawn, TheNyghtfallowHeirloom)
- end
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif not HasLanguage(Spawn,7) then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+else
+ if CanReceiveQuest(Spawn, TheNyghtfallowHeirloom) then
+ Dialog1(NPC,Spawn)
+ elseif GetQuestStep(Spawn,TheNyghtfallowHeirloom) >=1 then
+ DialogWait_Quest1(NPC,Spawn)
+ else
+ Dialog1(NPC,Spawn)
end
- if GetQuestStep(Spawn, TheNyghtfallowHeirloom) == 2 then
- SetStepComplete(Spawn, TheNyghtfallowHeirloom, 2)
end
- RandomGreeting(NPC, Spawn)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,6)
- if choice == 1 then
- PlayFlavor(NPC, "", "im only half the man i used to be", "", 0, 0, Spawn, 7)
- elseif choice == 2 then
- PlayFlavor(NPC, "", "...", "", 0, 0, Spawn, 7)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/halfelf/ft/halfelf/halfelf_eco_garble_garbled_gm_2e8f1542.mp3", "some good advice in freeport dont drink the water or you get lucans revenge", "", 1894354512, 3476177255, Spawn, 7)
- elseif choice == 4 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1022.mp3", 0, 0, Spawn)
- elseif choice == 5 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1022.mp3", 0, 0, Spawn)
- elseif choice == 6 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1022.mp3", 0, 0, Spawn)
- end
-end
\ No newline at end of file
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddLanguage(7)
+ Dialog.AddDialog("Better for us to watch eachother's backs than to find a blade in them.")
+ Dialog.AddVoiceover("voiceover/english/halfelf_eco_race_good/ft/eco/good/halfelf_eco_race_good_halfelf_gm_7a593271.mp3", 2010917197, 1213460588)
+ PlayFlavor(NPC,"","","hello",0,0,Spawn)
+ if CanReceiveQuest(Spawn, TheNyghtfallowHeirloom) then
+ Dialog.AddOption("I'd agree with that.","Dialog1_Quest1")
+ end
+ Dialog.AddOption("I might just stick you with one.","Whoa")
+ Dialog.Start()
+end
+
+function Whoa(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","lookaway",0,0,Spawn)
+end
+
+function Dialog1_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddLanguage(7)
+ Dialog.AddDialog("Ahh, it is nice to find someone who understands Ayr'Dal. Attempts to fit in here have been... stressful... to say the least... I've only come to realize something very important to me has slipped through my fingers after we arrived from the island. Good luck trying to get the Militia to help with anything! Worthless! My family's name deserves respect!")
+ PlayFlavor(NPC,"","","grumble",0,0,Spawn)
+ Dialog.AddOption("What are you looking for?","Dialog2_Quest1")
+ Dialog.AddOption("Good luck with that.")
+ Dialog.Start()
+end
+
+function Dialog2_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddLanguage(7)
+ Dialog.AddDialog("My brother, in his efforts to gain citizenship to the city proper, was slain two nights ago in the Sprawl. He had a family heirloom with him when he died. I'd like to have the pendant returned. If you can arrange this, the coin is yours.")
+ Dialog.AddOption("I could use some coin. Who might have your pendant?","Offer")
+ Dialog.AddOption("Your brother was weak. You don't deserve to find your trinket!","Whoa")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC, Spawn, TheNyghtfallowHeirloom)
+end
+
+
+function DialogWait_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddLanguage(7)
+ Dialog.AddDialog("Did you find my precious heirloom? What became of my foolhardy brother? I must know!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1022.mp3", 0, 0)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ if GetQuestStep(Spawn, TheNyghtfallowHeirloom)==2 then
+ Dialog.AddOption("I found your pendant on a Guttersnipe, but there was no sign of your brother.","Dialog3_Quest1")
+ else
+ Dialog.AddOption("Still looking...")
+ end
+ Dialog.Start()
+end
+
+function Dialog3_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddLanguage(7)
+ Dialog.AddDialog("No luck, eh? Well, you've been so helpful tracking down that blasted heirloom that I think it'd be downright cruel of me not to give you anything. Here, why don't you take this necklace?")
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
+ Dialog.AddOption("Sounds fair enough. Thanks.","Finish")
+ Dialog.Start()
+end
+
+function Finish(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ SetStepComplete(Spawn, TheNyghtfallowHeirloom, 2)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+end
diff --git a/server/SpawnScripts/BeggarsCourt/TulliaDomna.lua b/server/SpawnScripts/BeggarsCourt/TulliaDomna.lua
index 02e0fdb01..8cd1142dc 100755
--- a/server/SpawnScripts/BeggarsCourt/TulliaDomna.lua
+++ b/server/SpawnScripts/BeggarsCourt/TulliaDomna.lua
@@ -1,35 +1,104 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/TulliaDomna.lua
Script Purpose : Tullia Domna
- Script Author : torsten
- Script Date : 2022.07.15
+ Script Author : Dorbin
+ Script Date : 11.17.2023
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local AnErrandfortheQueen = 5650
function spawn(NPC)
ProvidesQuest(NPC, AnErrandfortheQueen)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if not HasQuest(Spawn, AnErrandfortheQueen) and not HasCompletedQuest(Spawn, AnErrandfortheQueen) then
- OfferQuest(NPC, Spawn, AnErrandfortheQueen)
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if CanReceiveQuest(Spawn, AnErrandfortheQueen) then
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,30000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/tullia_domna/fprt_hood04/100_std_tullia_domna_hum_f_callout1_77869ddd.mp3", "Come hither ... how can I, Queen Antonia Bayle, serve you?", "royalwave", 3532309135, 780107631, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true"then
+ PlayFlavor(NPC, "voiceover/english/tullia_domna/fprt_hood04/100_std_tullia_domna_hum_f_multhail1_d22d25ec.mp3", "A person of my fine breeding doesn't do business with lowly half-breeds. Get out of my sight, peasant.", "sniff", 3463656577, 661872862, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ end
end
- if GetQuestStep(Spawn, AnErrandfortheQueen) == 2 then
- SetStepComplete(Spawn, AnErrandfortheQueen, 2)
- end
- RandomGreeting(NPC, Spawn)
+else
+end
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC, Spawn)
+end
+end
+
+function Offer(NPC, Spawn)
+ OfferQuest(NPC, Spawn, AnErrandfortheQueen)
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's disgusting that a person of my fine breeding has to do business with lowly half-breeds.")
+ Dialog.AddVoiceover("voiceover/english/tullia_domna/fprt_hood04/std_tullia_domna.mp3", 4000439764, 2378172444)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn, 0)
+ if CanReceiveQuest(Spawn,AnErrandfortheQueen) then
+ Dialog.AddOption("I'm not sure what kind of breeding made you, but it certainly wasn't fine!", "Dialog2")
+ elseif GetQuestStep(Spawn,AnErrandfortheQueen) ==2 then
+ Dialog.AddOption("I've dealt with the Giantslayer bashers.", "Dialog3")
+ elseif HasCompletedQuest(Spawn,AnErrandfortheQueen) then
+ Dialog.AddOption("It IS truly digusting, my 'Queen'...")
+ end
+ Dialog.AddOption("With that, I'm out of here.")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("HOW DARE YOU ADDRESS ME LIKE THAT! I am Queen Antonia Bayle, lord and protector of the UNIVERSE! I'm on a top-secret mission, so do not spread word of my presence, understand? My mission is to eat all the cheese before my husband, Lucan, finds it. I need my public executioner, NOW! Is that you?")
+ Dialog.AddVoiceover("voiceover/english/tullia_domna/fprt_hood04/quests/tulladomna/tulla_x1_initial.mp3", 309451026, 621524268)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn, 0)
+ Dialog.AddOption("Whoa, are you okay?", "Offer")
+ Dialog.AddOption("Wow, talk about a basket case! I've heard enough.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perfect timing! The Royal Cricket King informed me that the ogres planned to blow down these walls with their beastly breath! You just saved everyone's life! You, noble executioner, deserve a knighting for your valor. From here on, we shall call you Champion Knight Executioner Wall Saver Extraordinaire! Please, let me anoint you with your sword.")
+ Dialog.AddVoiceover("voiceover/english/tullia_domna/fprt_hood04/quests/tulladomna/tulla_x1_finish.mp3", 2821413761, 1097570580)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn, 0)
+ Dialog.AddOption("I thank you for the honor... No need to use anything sharp.")
+ Dialog.Start()
+ SetStepComplete(Spawn,AnErrandfortheQueen,2)
+end
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/tullia_domna/fprt_hood04/100_std_tullia_domna_hum_f_callout1_77869ddd.mp3", "Come hither ... how can I, Queen Antonia Bayle, serve you?", "", 3532309135, 780107631, Spawn, 0)
- end
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/Ventora.lua b/server/SpawnScripts/BeggarsCourt/Ventora.lua
index 3cf089387..24e61d533 100755
--- a/server/SpawnScripts/BeggarsCourt/Ventora.lua
+++ b/server/SpawnScripts/BeggarsCourt/Ventora.lua
@@ -1,11 +1,13 @@
--[[
Script Name : SpawnScripts/BeggarsCourt/Ventora.lua
Script Purpose : Ventora
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.18
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
function spawn(NPC)
end
@@ -14,7 +16,11 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
end
function RandomGreeting(NPC, Spawn)
diff --git a/server/SpawnScripts/BeggarsCourt/VilnaDarkhart.lua b/server/SpawnScripts/BeggarsCourt/VilnaDarkhart.lua
new file mode 100755
index 000000000..02b6a44c2
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/VilnaDarkhart.lua
@@ -0,0 +1,120 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/VilnaDarkhart.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.27 01:11:48
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+ GenericEcologyCallout(NPC, Spawn, faction)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -13.98, -2.95, 69.12, 2, 1)
+ MovementLoopAddLocation(NPC, -13.98, -2.95, 69.12, 2, MakeRandomInt(18,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -13.42, -3.28, 67.25, 2, 0)
+ MovementLoopAddLocation(NPC, -11.16, -7, 58.85, 2, 0)
+ MovementLoopAddLocation(NPC, -6.03, -7, 53.49, 2, 0)
+ MovementLoopAddLocation(NPC, 2.27, -7, 49.75, 2, 0)
+ MovementLoopAddLocation(NPC, 12.56, -7, 50.32, 2, 0)
+ MovementLoopAddLocation(NPC, 15.03, -7, 50.59, 2, 0)
+ MovementLoopAddLocation(NPC, 23.18, -7, 57.81, 2, 0)
+ MovementLoopAddLocation(NPC, 25.9, -7.11, 60.83, 2, 0)
+ MovementLoopAddLocation(NPC, 28.76, -5.92, 60.51, 2, 0)
+ MovementLoopAddLocation(NPC, 35.23, -2.78, 58.94, 2, 0)
+ MovementLoopAddLocation(NPC, 37.63, -2.78, 60.18, 2, 0)
+ MovementLoopAddLocation(NPC, 38.07, -2.78, 63.1, 2, 0)
+ MovementLoopAddLocation(NPC, 35.62, -1.9, 64.11, 2, 0)
+ MovementLoopAddLocation(NPC, 29.59, -0.07, 64.22, 2, 1)
+ MovementLoopAddLocation(NPC, 29.59, -0.07, 64.22, 2, 15,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 29.59, -0.07, 64.22, 2, 15,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 29.59, -0.07, 64.22, 2, 0)
+ MovementLoopAddLocation(NPC, 31.94, -0.17, 63.74, 2, 0)
+ MovementLoopAddLocation(NPC, 36.74, -2.25, 62.22, 2, 0)
+ MovementLoopAddLocation(NPC, 37.2, -2.78, 62.18, 2, 0)
+ MovementLoopAddLocation(NPC, 37.15, -2.78, 61.28, 2, 0)
+ MovementLoopAddLocation(NPC, 36.53, -2.78, 60.06, 2, 0)
+ MovementLoopAddLocation(NPC, 26.28, -7.19, 62.36, 2, 0)
+ MovementLoopAddLocation(NPC, 20.6, -7, 60.02, 2, 0)
+ MovementLoopAddLocation(NPC, 20.15, -6.77, 50.04, 2, 0)
+ MovementLoopAddLocation(NPC, 22.11, -6.25, 45.68, 2, 0)
+ MovementLoopAddLocation(NPC, 24.7, -6, 42.44, 2, 1)
+ MovementLoopAddLocation(NPC, 24.7, -6, 42.44, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 25.75, -6, 41.39, 2, 0)
+ MovementLoopAddLocation(NPC, 26.85, -6, 40.92, 2, 0)
+ MovementLoopAddLocation(NPC, 29.85, -5.75, 39.73, 2, 0)
+ MovementLoopAddLocation(NPC, 32.46, -5.25, 35.2, 2, 0)
+ MovementLoopAddLocation(NPC, 37.14, -5, 33.31, 2, 0)
+ MovementLoopAddLocation(NPC, 51.36, -5, 29.88, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, 56.01, -4.99, 29.61, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, 57.37, -4.99, 27.95, 2, 0)
+ MovementLoopAddLocation(NPC, 59.99, -4.99, 23.73, 2, 1)
+ MovementLoopAddLocation(NPC, 59.99, -4.99, 23.73, 2, MakeRandomInt(20,35),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 60.42, -4.99, 25.16, 2, 0)
+ MovementLoopAddLocation(NPC, 60.36, -4.99, 27.29, 2, 0)
+ MovementLoopAddLocation(NPC, 60.22, -4.99, 32.25, 2, 1)
+ MovementLoopAddLocation(NPC, 60.22, -4.99, 32.25, 2, MakeRandomInt(20,35),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 58.54, -4.99, 29.97, 2, 0)
+ MovementLoopAddLocation(NPC, 56.17, -4.99, 29.69, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, 51.19, -5, 29.41, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, 48.48, -5, 31.82, 2, 0)
+ MovementLoopAddLocation(NPC, 36.1, -5, 31.12, 2, 0)
+ MovementLoopAddLocation(NPC, 31.59, -5, 29.45, 2, 0)
+ MovementLoopAddLocation(NPC, 28.69, -5, 27.68, 2, 0)
+ MovementLoopAddLocation(NPC, 24.46, -5, 27.64, 2, 0)
+ MovementLoopAddLocation(NPC, 17.82, -5, 28.95, 2, 0)
+ MovementLoopAddLocation(NPC, 11.18, -5, 27.4, 2, 0)
+ MovementLoopAddLocation(NPC, 4.3, -5.75, 30.41, 2, 0)
+ MovementLoopAddLocation(NPC, 0.54, -6, 32.04, 2, 1)
+ MovementLoopAddLocation(NPC, 0.54, -6, 32.04, 2, MakeRandomInt(18,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 0.98, -6, 35.29, 2, 0)
+ MovementLoopAddLocation(NPC, -1.92, -7, 47.35, 2, 0)
+ MovementLoopAddLocation(NPC, -7.18, -7, 73.4, 2, 1)
+ MovementLoopAddLocation(NPC, -7.18, -7, 73.4, 2, MakeRandomInt(18,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -6.06, -7, 71.99, 2, 0)
+ MovementLoopAddLocation(NPC, -6.22, -7, 67.14, 2, 0)
+ MovementLoopAddLocation(NPC, -5.33, -7, 60.3, 2, 0)
+ MovementLoopAddLocation(NPC, -7.44, -7, 59.2, 2, 0)
+ MovementLoopAddLocation(NPC, -8.79, -5.06, 64.26, 2, 0)
+ MovementLoopAddLocation(NPC, -10.06, -3, 69.02, 2, 0)
+ MovementLoopAddLocation(NPC, -12.48, -2.82, 71.68, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -13.41, -2.83, 76.45, 2, 0,"Door2")
+ MovementLoopAddLocation(NPC, -13.41, -2.33, 78.95, 2, 0)
+ MovementLoopAddLocation(NPC, -17.71, -2.33, 79.99, 2, 1)
+ MovementLoopAddLocation(NPC, -17.71, -2.33, 79.99, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -16.25, -2.33, 80.18, 2, 0)
+ MovementLoopAddLocation(NPC, -12.88, -2.33, 80.57, 2, 1)
+ MovementLoopAddLocation(NPC, -12.88, -2.33, 80.57, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -13.25, -2.34, 78.82, 2, 0)
+ MovementLoopAddLocation(NPC, -13.07, -2.83, 76.96, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -12.19, -2.82, 71.79, 2, 0,"Door2")
+ MovementLoopAddLocation(NPC, -13.09, -2.86, 70.43, 2, 0)
+end
+
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370073)
+ UseWidget(door)
+end
+
+function Door2(NPC,Spawn)
+ local door = GetSpawn(NPC, 1370079)
+ UseWidget(door)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/arat.lua b/server/SpawnScripts/BeggarsCourt/arat.lua
new file mode 100755
index 000000000..f0d0b89c2
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/arat.lua
@@ -0,0 +1,778 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/arat.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.28 02:11:12
+ Script Purpose :
+ :
+--]]
+
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(3000,6000),"waypoints")
+AddTimer(NPC,MakeRandomInt(3000,6000),"CatCheck")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function CatCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(2000,4000),"CatCheck")
+
+ local zone = GetZone(NPC)
+ local Cat = GetSpawnByLocationID(zone,402996)
+ if not IsInCombat(NPC) and Cat~= nil and not IsInCombat(Cat)then
+ local Distance = GetDistance(NPC,Cat,1)
+ if Distance <=5 then
+ Attack(Cat,NPC)
+ Attack(NPC,Cat)
+ local x = GetX(Cat)
+ local y = GetY(Cat)
+ local z = GetZ(Cat)
+ SetFollowTarget(Cat,NPC)
+ SetFollowTarget(NPC,Cat)
+ ToggleFollow(Cat)
+ ToggleFollow(NPC)
+ SetTarget(Cat,NPC)
+ FaceTarget(Cat,NPC)
+ FaceTarget(NPC,Cat)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"kill",1,Spawn)
+ end
+ end
+end
+end
+
+function kill (NPC,Spawn)
+ ApplySpellVisual(NPC,51)
+ local zone = GetZone(NPC)
+ local Cat = GetSpawnByLocationID(zone,402996)
+ PlayFlavor(Cat,"","","attack",0,0)
+ KillSpawn(NPC)
+ AddTimer(Cat,2500,"scoop")
+ AddTimer(NPC,3000,"Despawning")
+end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+
+function waypoints(NPC)
+ if GetSpawnLocationID(NPC) == 402872 then
+ MovementLoopAddLocation(NPC, -25.69, 2, -4.01, 4, 0)
+ MovementLoopAddLocation(NPC, -26.28, 2, -2.81, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -25.13, 2, -5.04, 4, 0)
+ MovementLoopAddLocation(NPC, -23.58, 2, -7.44, 4, 0)
+ MovementLoopAddLocation(NPC, -18.5, 2, -6.74, 4, 0)
+ MovementLoopAddLocation(NPC, -9.28, 2.25, -2.86, 4, 0)
+ MovementLoopAddLocation(NPC, -3.85, 3, -2.24, 4, 0)
+ MovementLoopAddLocation(NPC, -0.59, 3.3, -2.33, 4, 0)
+ MovementLoopAddLocation(NPC, 1.6, 3.5, -5.91, 4, 0)
+ MovementLoopAddLocation(NPC, 5.47, 3.5, -7.62, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -0.8, 3.5, -3.7, 4, 0)
+ MovementLoopAddLocation(NPC, -0.93, 3, 0.5, 4, 0)
+ MovementLoopAddLocation(NPC, 2.17, 2.75, 3.58, 4, 0)
+ MovementLoopAddLocation(NPC, 8.18, 2.75, 8.65, 4, 0)
+ MovementLoopAddLocation(NPC, 9.65, 2.75, 10.63, 4, 0)
+ MovementLoopAddLocation(NPC, 12.53, 2.75, 12.06, 4, 0)
+ MovementLoopAddLocation(NPC, 14.54, 2.75, 13.5, 4, 0)
+ MovementLoopAddLocation(NPC, 16.15, 2.75, 14.3, 4, 0)
+ MovementLoopAddLocation(NPC, 18.62, 2.75, 14.22, 4, 0)
+ MovementLoopAddLocation(NPC, 24.8, 2, 17.56, 4, 0)
+ MovementLoopAddLocation(NPC, 28.59, 2, 19.06, 4, 0)
+ MovementLoopAddLocation(NPC, 31.43, 2.19, 19.65, 4, 0)
+ MovementLoopAddLocation(NPC, 32.09, 2, 19.88, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 32.56, 2, 18.07, 4, 0)
+ MovementLoopAddLocation(NPC, 34.7, 2, 14.49, 4, 0)
+ MovementLoopAddLocation(NPC, 34.98, 2.73, 8.01, 4, 0)
+ MovementLoopAddLocation(NPC, 32.44, 3.5, -0.11, 4, 0)
+ MovementLoopAddLocation(NPC, 33.63, 3.5, -0.37, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 32.14, 3.5, -1.36, 4, 0)
+ MovementLoopAddLocation(NPC, 31.54, 3.54, -1.77, 4, 0)
+ MovementLoopAddLocation(NPC, 27.66, 3.5, -1.36, 4, 0)
+ MovementLoopAddLocation(NPC, 24.84, 3.5, -1.74, 4, 0)
+ MovementLoopAddLocation(NPC, 19.16, 3.5, -3.61, 4, 0)
+ MovementLoopAddLocation(NPC, 18.05, 3.5, -7.38, 4, 0)
+ MovementLoopAddLocation(NPC, 14.1, 3.5, -10.08, 4, 0)
+ MovementLoopAddLocation(NPC, 9.23, 3.5, -11.58, 4, 0)
+ MovementLoopAddLocation(NPC, 5.38, 3.5, -12.38, 4, 0)
+ MovementLoopAddLocation(NPC, -1.82, 3.5, -15.79, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -1.72, 3.5, -18.77, 4, 0)
+ MovementLoopAddLocation(NPC, -7.04, 3.25, -18.53, 4, 0)
+ MovementLoopAddLocation(NPC, -8.52, 3, -18.53, 4, 0)
+ MovementLoopAddLocation(NPC, -12.66, 3, -17.13, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -11.97, 3, -18.45, 4, 0)
+ MovementLoopAddLocation(NPC, -12.13, 3, -19.93, 4, 0)
+ MovementLoopAddLocation(NPC, -15.16, 3.25, -25.85, 4, 0)
+ MovementLoopAddLocation(NPC, -17.21, 3.25, -27.24, 4, 0)
+ MovementLoopAddLocation(NPC, -20.47, 3.25, -31.18, 4, 0)
+ MovementLoopAddLocation(NPC, -19.89, 3.58, -32.53, 4, 0)
+ MovementLoopAddLocation(NPC, -19.28, 3.76, -33.44, 4, 0)
+ MovementLoopAddLocation(NPC, -18.73, 4, -35.16, 4, 0)
+ MovementLoopAddLocation(NPC, -20.38, 4, -38.86, 4, 0)
+ MovementLoopAddLocation(NPC, -19.79, 4, -40.42, 4, 0)
+ MovementLoopAddLocation(NPC, -16.27, 4, -41.12, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -18.89, 4, -40.56, 4, 0)
+ MovementLoopAddLocation(NPC, -20.06, 4, -40.31, 4, 0)
+ MovementLoopAddLocation(NPC, -19.76, 4, -38.3, 4, 0)
+ MovementLoopAddLocation(NPC, -19.04, 3.75, -33.3, 4, 0)
+ MovementLoopAddLocation(NPC, -20.34, 3.45, -32.06, 4, 0)
+ MovementLoopAddLocation(NPC, -21.3, 3, -29.21, 4, 0)
+ MovementLoopAddLocation(NPC, -22.69, 2.75, -26.72, 4, 0)
+ MovementLoopAddLocation(NPC, -20.99, 2.5, -15.38, 4, 0)
+
+ elseif GetSpawnLocationID(NPC) == 402881 then
+ MovementLoopAddLocation(NPC, -7.41, -0.62, 13.03, 4, 0)
+ MovementLoopAddLocation(NPC, -3.56, 1.39, 14.13, 4, 0)
+ MovementLoopAddLocation(NPC, -0.81, 1.97, 14.24, 4, 0)
+ MovementLoopAddLocation(NPC, 0.26, 2.03, 12.72, 4, 0)
+ MovementLoopAddLocation(NPC, 1.09, 2.01, 11.49, 4, 0)
+ MovementLoopAddLocation(NPC, 5.55, 2, 13.7, 4, 0)
+ MovementLoopAddLocation(NPC, 7.94, 2, 15.9, 4, 0)
+ MovementLoopAddLocation(NPC, 10.23, 2, 18.74, 4, 0)
+ MovementLoopAddLocation(NPC, 13.14, 2, 21.74, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 13.29, 2, 20.26, 4, 0)
+ MovementLoopAddLocation(NPC, 14.25, 2.25, 16.78, 4, 0)
+ MovementLoopAddLocation(NPC, 7.53, 2.25, 12.67, 4, 0)
+ MovementLoopAddLocation(NPC, 0.31, 2.02, 11.48, 4, 0)
+ MovementLoopAddLocation(NPC, -3.82, 2.03, 9.96, 4, 0)
+ MovementLoopAddLocation(NPC, -4.98, 2.03, 9.73, 4, 0)
+ MovementLoopAddLocation(NPC, -6.95, 2.04, 8.96, 4, 0)
+ MovementLoopAddLocation(NPC, -7.58, 2.04, 8.72, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -8.8, 2.02, 5.74, 4, 0)
+ MovementLoopAddLocation(NPC, -9.99, 2.01, 3.81, 4, 0)
+ MovementLoopAddLocation(NPC, -11.52, 2, 1.88, 4, 0)
+ MovementLoopAddLocation(NPC, -15.18, 2, -0.29, 4, 0)
+ MovementLoopAddLocation(NPC, -18.83, 2, -1.06, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -17.13, 2, -0.26, 4, 0)
+ MovementLoopAddLocation(NPC, -11.03, 2, -0.81, 4, 0)
+ MovementLoopAddLocation(NPC, -8.87, 2.02, 5.64, 4, 0)
+ MovementLoopAddLocation(NPC, -7.91, 2.04, 8.58, 4, 0)
+ MovementLoopAddLocation(NPC, -6.59, 2.03, 9.1, 4, 0)
+ MovementLoopAddLocation(NPC, -3.03, 2.03, 10.48, 4, 0)
+ MovementLoopAddLocation(NPC, -1.58, 2.03, 10.81, 4, 0)
+ MovementLoopAddLocation(NPC, 0.42, 2.01, 13.5, 4, 0)
+ MovementLoopAddLocation(NPC, -0.58, 1.91, 15.49, 4, 0)
+ MovementLoopAddLocation(NPC, -5.57, 0.33, 13.46, 4, 0)
+ MovementLoopAddLocation(NPC, -9.29, -1.69, 12.06, 4, 0)
+ MovementLoopAddLocation(NPC, -11.14, -2.89, 10.41, 4, 0)
+ MovementLoopAddLocation(NPC, -13.54, -4.48, 8.27, 4, 0)
+ MovementLoopAddLocation(NPC, -15.59, -5, 7.97, 4, 0)
+ MovementLoopAddLocation(NPC, -17.55, -5.01, 11.51, 4, 0)
+ MovementLoopAddLocation(NPC, -21.29, -5, 13.25, 4, 0)
+ MovementLoopAddLocation(NPC, -23.4, -5, 12.93, 4, 0)
+ MovementLoopAddLocation(NPC, -24.16, -5, 14.44, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -22.79, -5, 16.99, 4, 0)
+ MovementLoopAddLocation(NPC, -19.48, -5, 17.28, 4, 0)
+ MovementLoopAddLocation(NPC, -14.61, -5, 12.97, 4, 0)
+ MovementLoopAddLocation(NPC, -12.89, -5, 12.66, 4, 0)
+ MovementLoopAddLocation(NPC, -10.58, -5, 14.7, 4, 0)
+ MovementLoopAddLocation(NPC, -5.14, -5, 16.86, 4, 0)
+ MovementLoopAddLocation(NPC, -2.72, -5.29, 21.3, 4, 0)
+ MovementLoopAddLocation(NPC, -0.08, -6, 25.79, 4, 0)
+ MovementLoopAddLocation(NPC, 1.26, -6, 28.49, 4, 0)
+ MovementLoopAddLocation(NPC, 1.76, -6, 32.41, 4, 0)
+ MovementLoopAddLocation(NPC, -0.48, -6, 36.8, 4, 0)
+ MovementLoopAddLocation(NPC, -3.53, -6, 36.71, 4, 0)
+ MovementLoopAddLocation(NPC, -3.53, -6, 36.71, 4, 0)
+ MovementLoopAddLocation(NPC, -4.53, -6, 35.22, 4, 0)
+ MovementLoopAddLocation(NPC, -5.49, -6, 32.42, 4, 0)
+ MovementLoopAddLocation(NPC, -3.19, -6, 31.36, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -4.18, -6, 32.04, 4, 0)
+ MovementLoopAddLocation(NPC, -5.43, -6, 34.08, 4, 0)
+ MovementLoopAddLocation(NPC, -2.54, -6, 35.54, 4, 0)
+ MovementLoopAddLocation(NPC, -0.86, -6, 33.74, 4, 0)
+ MovementLoopAddLocation(NPC, 1.78, -6, 30.81, 4, 0)
+ MovementLoopAddLocation(NPC, 5.82, -5, 23.62, 4, 0)
+ MovementLoopAddLocation(NPC, 4.42, -5, 21, 4, 0)
+ MovementLoopAddLocation(NPC, 4.42, -5, 21, 4, 0)
+ MovementLoopAddLocation(NPC, 1.87, -5, 19.47, 4, 0)
+ MovementLoopAddLocation(NPC, -2.26, -5, 18.32, 4, 0)
+ MovementLoopAddLocation(NPC, -6.61, -5, 17.42, 4, 0)
+ MovementLoopAddLocation(NPC, -11.49, -5, 15.1, 4, 0)
+ MovementLoopAddLocation(NPC, -15.13, -5.01, 11.82, 4, 0)
+ MovementLoopAddLocation(NPC, -16.04, -5.01, 9.14, 4, 0)
+ MovementLoopAddLocation(NPC, -14.65, -4.98, 6.78, 4, 0)
+ MovementLoopAddLocation(NPC, -12.04, -3.53, 9.3, 4, 0)
+ MovementLoopAddLocation(NPC, -9.31, -1.64, 12.31, 4, 0)
+
+elseif GetSpawnLocationID(NPC) == 402904 then
+ MovementLoopAddLocation(NPC, 27.52, 5.25, -13.3, 4, 0)
+ MovementLoopAddLocation(NPC, 31.61, 5.25, -19.41, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 29.66, 5.25, -15.7, 4, 0)
+ MovementLoopAddLocation(NPC, 29.79, 5.25, -14.52, 4, 0)
+ MovementLoopAddLocation(NPC, 31.84, 5.25, -14.15, 4, 0)
+ MovementLoopAddLocation(NPC, 34.73, 5.25, -15.65, 4, 0)
+ MovementLoopAddLocation(NPC, 40.91, 5.25, -19.78, 4, 0)
+ MovementLoopAddLocation(NPC, 41.22, 5.25, -21.76, 4, 0)
+ MovementLoopAddLocation(NPC, 40.33, 5.25, -24.46, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 42.19, 5.25, -23.02, 4, 0)
+ MovementLoopAddLocation(NPC, 42.4, 5.25, -21.17, 4, 0)
+ MovementLoopAddLocation(NPC, 43.61, 5.25, -19.87, 4, 0)
+ MovementLoopAddLocation(NPC, 45.41, 5.25, -19.91, 4, 0)
+ MovementLoopAddLocation(NPC, 46.96, 5.25, -20.79, 4, 0)
+ MovementLoopAddLocation(NPC, 48.86, 5.12, -23.18, 4, 0)
+ MovementLoopAddLocation(NPC, 52.82, 5, -26.39, 4, 0)
+ MovementLoopAddLocation(NPC, 55.44, 5, -27.45, 4, 0)
+ MovementLoopAddLocation(NPC, 57.94, 5, -27.89, 4, 0)
+ MovementLoopAddLocation(NPC, 60.45, 5, -27.32, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 62.86, 5, -27.74, 4, 0)
+ MovementLoopAddLocation(NPC, 63.6, 5, -26.44, 4, 0)
+ MovementLoopAddLocation(NPC, 64.01, 5, -23.14, 4, 0)
+ MovementLoopAddLocation(NPC, 63.85, 5, -18.76, 4, 0)
+ MovementLoopAddLocation(NPC, 63.37, 5, -14.91, 4, 0)
+ MovementLoopAddLocation(NPC, 60.45, 4.75, -10.55, 4, 0)
+ MovementLoopAddLocation(NPC, 58.84, 4.29, -7.75, 4, 0)
+ MovementLoopAddLocation(NPC, 57.53, 4, -5.45, 4, 0)
+ MovementLoopAddLocation(NPC, 58.15, 4, -1.86, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 57.37, 4, -0.8, 4, 0)
+ MovementLoopAddLocation(NPC, 56.78, 3.98, 0.92, 4, 0)
+ MovementLoopAddLocation(NPC, 55.01, 3.66, 2.04, 4, 0)
+ MovementLoopAddLocation(NPC, 52.6, 3.25, 4.66, 4, 0)
+ MovementLoopAddLocation(NPC, 47.22, 2.75, 8.99, 4, 0)
+ MovementLoopAddLocation(NPC, 42.5, 2.75, 7.02, 4, 0)
+ MovementLoopAddLocation(NPC, 39.61, 2.75, 5.61, 4, 0)
+ MovementLoopAddLocation(NPC, 35.6, 2.75, 7.12, 4, 0)
+ MovementLoopAddLocation(NPC, 31.22, 2.75, 9.87, 4, 0)
+ MovementLoopAddLocation(NPC, 26.61, 2.75, 10.55, 4, 0)
+ MovementLoopAddLocation(NPC, 22.79, 2.75, 12.47, 4, 0)
+ MovementLoopAddLocation(NPC, 17.12, 3.5, 9.38, 4, 0)
+ MovementLoopAddLocation(NPC, 16, 3.5, 5.79, 4, 0)
+ MovementLoopAddLocation(NPC, 13.65, 3.5, -0.37, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 12.52, 3.5, -1.34, 4, 0)
+ MovementLoopAddLocation(NPC, 12.68, 3.5, -2.86, 4, 0)
+ MovementLoopAddLocation(NPC, 13.18, 3.5, -10.14, 4, 0)
+ MovementLoopAddLocation(NPC, 12.71, 4, -15.12, 4, 0)
+ MovementLoopAddLocation(NPC, 13.34, 4.5, -18.38, 4, 0)
+ MovementLoopAddLocation(NPC, 14.5, 4.75, -21.21, 4, 0)
+ MovementLoopAddLocation(NPC, 15.93, 5, -27.42, 4, 0)
+ MovementLoopAddLocation(NPC, 16.6, 5, -31.99, 4, 0)
+ MovementLoopAddLocation(NPC, 19.55, 5, -38.53, 4, 0)
+ MovementLoopAddLocation(NPC, 22.28, 5.25, -42.47, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 22.31, 5.25, -40.68, 4, 0)
+ MovementLoopAddLocation(NPC, 23.51, 5.25, -38.49, 4, 0)
+ MovementLoopAddLocation(NPC, 26.04, 5.25, -33.64, 4, 0)
+ MovementLoopAddLocation(NPC, 24.22, 5.25, -28.13, 4, 0)
+ MovementLoopAddLocation(NPC, 23.02, 5.25, -26.12, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 22.68, 5.25, -23.52, 4, 0)
+
+ MovementLoopAddLocation(NPC, 22.68, 5.25, -23.52, 4, 0)
+ MovementLoopAddLocation(NPC, 23.02, 5.25, -26.12, 4, 0)
+ MovementLoopAddLocation(NPC, 24.22, 5.25, -28.13, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 26.04, 5.25, -33.64, 4, 0)
+ MovementLoopAddLocation(NPC, 23.51, 5.25, -38.49, 4, 0)
+ MovementLoopAddLocation(NPC, 22.31, 5.25, -40.68, 4, 0)
+ MovementLoopAddLocation(NPC, 22.28, 5.25, -42.47, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 19.55, 5, -38.53, 4, 0)
+ MovementLoopAddLocation(NPC, 16.6, 5, -31.99, 4, 0)
+ MovementLoopAddLocation(NPC, 15.93, 5, -27.42, 4, 0)
+ MovementLoopAddLocation(NPC, 14.5, 4.75, -21.21, 4, 0)
+ MovementLoopAddLocation(NPC, 13.34, 4.5, -18.38, 4, 0)
+ MovementLoopAddLocation(NPC, 12.71, 4, -15.12, 4, 0)
+ MovementLoopAddLocation(NPC, 13.18, 3.5, -10.14, 4, 0)
+ MovementLoopAddLocation(NPC, 12.68, 3.5, -2.86, 4, 0)
+ MovementLoopAddLocation(NPC, 12.52, 3.5, -1.34, 4, 0)
+ MovementLoopAddLocation(NPC, 13.65, 3.5, -0.37, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 16, 3.5, 5.79, 4, 0)
+ MovementLoopAddLocation(NPC, 17.12, 3.5, 9.38, 4, 0)
+ MovementLoopAddLocation(NPC, 22.79, 2.75, 12.47, 4, 0)
+ MovementLoopAddLocation(NPC, 26.61, 2.75, 10.55, 4, 0)
+ MovementLoopAddLocation(NPC, 31.22, 2.75, 9.87, 4, 0)
+ MovementLoopAddLocation(NPC, 35.6, 2.75, 7.12, 4, 0)
+ MovementLoopAddLocation(NPC, 39.61, 2.75, 5.61, 4, 0)
+ MovementLoopAddLocation(NPC, 42.5, 2.75, 7.02, 4, 0)
+ MovementLoopAddLocation(NPC, 47.22, 2.75, 8.99, 4, 0)
+ MovementLoopAddLocation(NPC, 52.6, 3.25, 4.66, 4, 0)
+ MovementLoopAddLocation(NPC, 55.01, 3.66, 2.04, 4, 0)
+ MovementLoopAddLocation(NPC, 56.78, 3.98, 0.92, 4, 0)
+ MovementLoopAddLocation(NPC, 57.37, 4, -0.8, 4, 0)
+ MovementLoopAddLocation(NPC, 58.15, 4, -1.86, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 57.53, 4, -5.45, 4, 0)
+ MovementLoopAddLocation(NPC, 58.84, 4.29, -7.75, 4, 0)
+ MovementLoopAddLocation(NPC, 60.45, 4.75, -10.55, 4, 0)
+ MovementLoopAddLocation(NPC, 63.37, 5, -14.91, 4, 0)
+ MovementLoopAddLocation(NPC, 63.85, 5, -18.76, 4, 0)
+ MovementLoopAddLocation(NPC, 64.01, 5, -23.14, 4, 0)
+ MovementLoopAddLocation(NPC, 63.6, 5, -26.44, 4, 0)
+ MovementLoopAddLocation(NPC, 62.86, 5, -27.74, 4, 0)
+ MovementLoopAddLocation(NPC, 60.45, 5, -27.32, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 57.94, 5, -27.89, 4, 0)
+ MovementLoopAddLocation(NPC, 55.44, 5, -27.45, 4, 0)
+ MovementLoopAddLocation(NPC, 52.82, 5, -26.39, 4, 0)
+ MovementLoopAddLocation(NPC, 48.86, 5.12, -23.18, 4, 0)
+ MovementLoopAddLocation(NPC, 46.96, 5.25, -20.79, 4, 0)
+ MovementLoopAddLocation(NPC, 45.41, 5.25, -19.91, 4, 0)
+ MovementLoopAddLocation(NPC, 43.61, 5.25, -19.87, 4, 0)
+ MovementLoopAddLocation(NPC, 42.4, 5.25, -21.17, 4, 0)
+ MovementLoopAddLocation(NPC, 42.19, 5.25, -23.02, 4, 0)
+ MovementLoopAddLocation(NPC, 40.33, 5.25, -24.46, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 41.22, 5.25, -21.76, 4, 0)
+ MovementLoopAddLocation(NPC, 40.91, 5.25, -19.78, 4, 0)
+ MovementLoopAddLocation(NPC, 34.73, 5.25, -15.65, 4, 0)
+ MovementLoopAddLocation(NPC, 31.84, 5.25, -14.15, 4, 0)
+ MovementLoopAddLocation(NPC, 29.79, 5.25, -14.52, 4, 0)
+ MovementLoopAddLocation(NPC, 29.66, 5.25, -15.7, 4, 0)
+ MovementLoopAddLocation(NPC, 31.61, 5.25, -19.41, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 27.52, 5.25, -13.3, 4, 0)
+
+elseif GetSpawnLocationID(NPC) == 402914 then
+ MovementLoopAddLocation(NPC, 41.87, 2.25, 12.16, 4, 0)
+ MovementLoopAddLocation(NPC, 40.39, 2, 14.41, 4, 0)
+ MovementLoopAddLocation(NPC, 40.76, 2, 17.09, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 39.53, 2, 14.96, 4, 0)
+ MovementLoopAddLocation(NPC, 40.19, 2, 13.32, 4, 0)
+ MovementLoopAddLocation(NPC, 45.26, 2.48, 10.97, 4, 0)
+ MovementLoopAddLocation(NPC, 48.44, 2.75, 8.76, 4, 0)
+ MovementLoopAddLocation(NPC, 49.84, 3, 6.7, 4, 0)
+ MovementLoopAddLocation(NPC, 54.17, 3.47, 5.8, 4, 0)
+ MovementLoopAddLocation(NPC, 56.49, 3.75, 4.46, 4, 0)
+ MovementLoopAddLocation(NPC, 59.8, 3.75, 1.95, 4, 0)
+ MovementLoopAddLocation(NPC, 61.49, 4, -0.34, 4, 0)
+ MovementLoopAddLocation(NPC, 61.93, 4, -1.14, 4, 0)
+ MovementLoopAddLocation(NPC, 61.02, 4, -4.05, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 61.19, 4, -5.62, 4, 0)
+ MovementLoopAddLocation(NPC, 59.83, 4.25, -7.14, 4, 0)
+ MovementLoopAddLocation(NPC, 56.37, 4.25, -7.18, 4, 0)
+ MovementLoopAddLocation(NPC, 51.21, 4.25, -8.17, 4, 0)
+ MovementLoopAddLocation(NPC, 48.95, 4.25, -9.49, 4, 0)
+ MovementLoopAddLocation(NPC, 46.77, 3.75, -9.82, 4, 0)
+ MovementLoopAddLocation(NPC, 45.9, 3.75, -9.5, 4, 0)
+ MovementLoopAddLocation(NPC, 42.29, 3.75, -8.03, 4, 0)
+ MovementLoopAddLocation(NPC, 41.36, 3.5, -5.14, 4, 0)
+ MovementLoopAddLocation(NPC, 43.99, 3.5, -3.29, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 41.5, 3.5, -3.25, 4, 0)
+ MovementLoopAddLocation(NPC, 40.15, 3.5, -1.19, 4, 0)
+ MovementLoopAddLocation(NPC, 39.23, 3.5, 2.15, 4, 0)
+ MovementLoopAddLocation(NPC, 35.86, 3.25, 4.68, 4, 0)
+ MovementLoopAddLocation(NPC, 33.9, 3, 6.49, 4, 0)
+ MovementLoopAddLocation(NPC, 29.32, 3.5, 4.54, 4, 0)
+ MovementLoopAddLocation(NPC, 25.19, 3.5, -0.95, 4, 0)
+ MovementLoopAddLocation(NPC, 25.19, 3.5, -0.95, 4, 0)
+ MovementLoopAddLocation(NPC, 21.35, 3.62, -3.56, 4, 0)
+ MovementLoopAddLocation(NPC, 14.37, 3.5, -4.68, 4, 0)
+ MovementLoopAddLocation(NPC, 9.88, 3.5, -7.86, 4, 0)
+ MovementLoopAddLocation(NPC, 5.79, 3.5, -11.23, 4, 0)
+ MovementLoopAddLocation(NPC, 3.51, 3.5, -14.44, 4, 0)
+ MovementLoopAddLocation(NPC, 1.75, 3.5, -18.22, 4, 0)
+ MovementLoopAddLocation(NPC, 0.62, 3.5, -20.15, 4, 0)
+ MovementLoopAddLocation(NPC, -1.29, 3.5, -17.96, 4, 0)
+ MovementLoopAddLocation(NPC, -1.63, 3.5, -17.03, 4, 0)
+ MovementLoopAddLocation(NPC, -1.53, 3.5, -15.82, 4, 0)
+ MovementLoopAddLocation(NPC, -0.84, 3.5, -13.74, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 1.16, 3.5, -12.4, 4, 0)
+ MovementLoopAddLocation(NPC, 3.17, 3.5, -12.37, 4, 0)
+ MovementLoopAddLocation(NPC, 4.21, 3.5, -14.89, 4, 0)
+ MovementLoopAddLocation(NPC, 4.21, 3.94, -19.6, 4, 0)
+ MovementLoopAddLocation(NPC, 1.78, 4, -22.92, 4, 0)
+ MovementLoopAddLocation(NPC, 0.72, 4, -24.87, 4, 0)
+ MovementLoopAddLocation(NPC, -2.81, 4, -28.53, 4, 0)
+ MovementLoopAddLocation(NPC, -4.26, 3.75, -33.4, 4, 0)
+ MovementLoopAddLocation(NPC, -4.69, 3.75, -35.5, 4, 0)
+ MovementLoopAddLocation(NPC, -5.86, 3.82, -38.58, 4, 0)
+ MovementLoopAddLocation(NPC, -6.21, 4, -41.03, 4, 0)
+ MovementLoopAddLocation(NPC, -6.15, 4, -44.25, 4, 0)
+ MovementLoopAddLocation(NPC, -8.86, 4, -49, 4, 0)
+ MovementLoopAddLocation(NPC, -12.89, 4.35, -56.23, 4, 0)
+ MovementLoopAddLocation(NPC, -16.55, 4.18, -63.29, 4, 0)
+ MovementLoopAddLocation(NPC, -22.07, 4.18, -61.86, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -20.24, 4.18, -61.94, 4, 0)
+ MovementLoopAddLocation(NPC, -13.37, 4.18, -65.29, 4, 0)
+ MovementLoopAddLocation(NPC, -9.04, 4.18, -68.32, 4, 0)
+ MovementLoopAddLocation(NPC, -6.44, 4.18, -70.71, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -11.68, 4.18, -66.85, 4, 0)
+ MovementLoopAddLocation(NPC, -14.87, 4.18, -65.11, 4, 0)
+ MovementLoopAddLocation(NPC, -19.16, 4.18, -67.27, 4, 0)
+ MovementLoopAddLocation(NPC, -21.02, 4.18, -70.34, 4, 0)
+ MovementLoopAddLocation(NPC, -22.16, 4.18, -73.77, 4, 0)
+ MovementLoopAddLocation(NPC, -28.92, 4.17, -81.67, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -28.92, 4.17, -81.67, 4, 0)
+ MovementLoopAddLocation(NPC, -24.23, 4.18, -76.5, 4, 0)
+ MovementLoopAddLocation(NPC, -20.26, 4.18, -72.13, 4, 0)
+ MovementLoopAddLocation(NPC, -14.33, 4.18, -59.88, 4, 0)
+ MovementLoopAddLocation(NPC, -10.02, 4.14, -52.5, 4, 0)
+ MovementLoopAddLocation(NPC, -7.9, 4, -48.62, 4, 0)
+ MovementLoopAddLocation(NPC, -2.37, 4.75, -45.25, 4, 0)
+ MovementLoopAddLocation(NPC, 1.31, 5, -43.12, 4, 0)
+ MovementLoopAddLocation(NPC, 2.74, 5, -41.35, 4, 0)
+ MovementLoopAddLocation(NPC, 3.5, 5, -38.83, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 3.95, 5, -42.98, 4, 0)
+ MovementLoopAddLocation(NPC, 3.85, 4.75, -47.63, 4, 0)
+ MovementLoopAddLocation(NPC, 3.63, 4.75, -49.72, 4, 0)
+ MovementLoopAddLocation(NPC, 4.39, 4.99, -52.12, 4, 2)
+ MovementLoopAddLocation(NPC, 3.63, 4.75, -49.72, 4, 0)
+ MovementLoopAddLocation(NPC, 3.85, 4.75, -47.63, 4, 0)
+ MovementLoopAddLocation(NPC, 3.95, 5, -42.98, 4, 0)
+ MovementLoopAddLocation(NPC, 3.5, 5, -38.83, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 2.74, 5, -41.35, 4, 0)
+ MovementLoopAddLocation(NPC, 1.31, 5, -43.12, 4, 0)
+ MovementLoopAddLocation(NPC, -2.37, 4.75, -45.25, 4, 0)
+ MovementLoopAddLocation(NPC, -7.9, 4, -48.62, 4, 0)
+ MovementLoopAddLocation(NPC, -10.02, 4.14, -52.5, 4, 0)
+ MovementLoopAddLocation(NPC, -14.33, 4.18, -59.88, 4, 0)
+ MovementLoopAddLocation(NPC, -20.26, 4.18, -72.13, 4, 0)
+ MovementLoopAddLocation(NPC, -24.23, 4.18, -76.5, 4, 0)
+ MovementLoopAddLocation(NPC, -28.92, 4.17, -81.67, 4, 0)
+ MovementLoopAddLocation(NPC, -28.92, 4.17, -81.67, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -22.16, 4.18, -73.77, 4, 0)
+ MovementLoopAddLocation(NPC, -21.02, 4.18, -70.34, 4, 0)
+ MovementLoopAddLocation(NPC, -19.16, 4.18, -67.27, 4, 0)
+ MovementLoopAddLocation(NPC, -14.87, 4.18, -65.11, 4, 0)
+ MovementLoopAddLocation(NPC, -11.68, 4.18, -66.85, 4, 0)
+ MovementLoopAddLocation(NPC, -6.44, 4.18, -70.71, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -9.04, 4.18, -68.32, 4, 0)
+ MovementLoopAddLocation(NPC, -13.37, 4.18, -65.29, 4, 0)
+ MovementLoopAddLocation(NPC, -20.24, 4.18, -61.94, 4, 0)
+ MovementLoopAddLocation(NPC, -22.07, 4.18, -61.86, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -16.55, 4.18, -63.29, 4, 0)
+ MovementLoopAddLocation(NPC, -12.89, 4.35, -56.23, 4, 0)
+ MovementLoopAddLocation(NPC, -8.86, 4, -49, 4, 0)
+ MovementLoopAddLocation(NPC, -6.15, 4, -44.25, 4, 0)
+ MovementLoopAddLocation(NPC, -6.21, 4, -41.03, 4, 0)
+ MovementLoopAddLocation(NPC, -5.86, 3.82, -38.58, 4, 0)
+ MovementLoopAddLocation(NPC, -4.69, 3.75, -35.5, 4, 0)
+ MovementLoopAddLocation(NPC, -4.26, 3.75, -33.4, 4, 0)
+ MovementLoopAddLocation(NPC, -2.81, 4, -28.53, 4, 0)
+ MovementLoopAddLocation(NPC, 0.72, 4, -24.87, 4, 0)
+ MovementLoopAddLocation(NPC, 1.78, 4, -22.92, 4, 0)
+ MovementLoopAddLocation(NPC, 4.21, 3.94, -19.6, 4, 0)
+ MovementLoopAddLocation(NPC, 4.21, 3.5, -14.89, 4, 0)
+ MovementLoopAddLocation(NPC, 3.17, 3.5, -12.37, 4, 0)
+ MovementLoopAddLocation(NPC, 1.16, 3.5, -12.4, 4, 0)
+ MovementLoopAddLocation(NPC, -0.84, 3.5, -13.74, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -1.53, 3.5, -15.82, 4, 0)
+ MovementLoopAddLocation(NPC, -1.63, 3.5, -17.03, 4, 0)
+ MovementLoopAddLocation(NPC, -1.29, 3.5, -17.96, 4, 0)
+ MovementLoopAddLocation(NPC, 0.62, 3.5, -20.15, 4, 0)
+ MovementLoopAddLocation(NPC, 1.75, 3.5, -18.22, 4, 0)
+ MovementLoopAddLocation(NPC, 3.51, 3.5, -14.44, 4, 0)
+ MovementLoopAddLocation(NPC, 5.79, 3.5, -11.23, 4, 0)
+ MovementLoopAddLocation(NPC, 9.88, 3.5, -7.86, 4, 0)
+ MovementLoopAddLocation(NPC, 14.37, 3.5, -4.68, 4, 0)
+ MovementLoopAddLocation(NPC, 21.35, 3.62, -3.56, 4, 0)
+ MovementLoopAddLocation(NPC, 25.19, 3.5, -0.95, 4, 0)
+ MovementLoopAddLocation(NPC, 25.19, 3.5, -0.95, 4, 0)
+ MovementLoopAddLocation(NPC, 29.32, 3.5, 4.54, 4, 0)
+ MovementLoopAddLocation(NPC, 33.9, 3, 6.49, 4, 0)
+ MovementLoopAddLocation(NPC, 35.86, 3.25, 4.68, 4, 0)
+ MovementLoopAddLocation(NPC, 39.23, 3.5, 2.15, 4, 0)
+ MovementLoopAddLocation(NPC, 40.15, 3.5, -1.19, 4, 0)
+ MovementLoopAddLocation(NPC, 41.5, 3.5, -3.25, 4, 0)
+ MovementLoopAddLocation(NPC, 43.99, 3.5, -3.29, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 41.36, 3.5, -5.14, 4, 0)
+ MovementLoopAddLocation(NPC, 42.29, 3.75, -8.03, 4, 0)
+ MovementLoopAddLocation(NPC, 45.9, 3.75, -9.5, 4, 0)
+ MovementLoopAddLocation(NPC, 46.77, 3.75, -9.82, 4, 0)
+ MovementLoopAddLocation(NPC, 48.95, 4.25, -9.49, 4, 0)
+ MovementLoopAddLocation(NPC, 51.21, 4.25, -8.17, 4, 0)
+ MovementLoopAddLocation(NPC, 56.37, 4.25, -7.18, 4, 0)
+ MovementLoopAddLocation(NPC, 59.83, 4.25, -7.14, 4, 0)
+ MovementLoopAddLocation(NPC, 61.19, 4, -5.62, 4, 0)
+ MovementLoopAddLocation(NPC, 61.02, 4, -4.05, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 61.93, 4, -1.14, 4, 0)
+ MovementLoopAddLocation(NPC, 61.49, 4, -0.34, 4, 0)
+ MovementLoopAddLocation(NPC, 59.8, 3.75, 1.95, 4, 0)
+ MovementLoopAddLocation(NPC, 56.49, 3.75, 4.46, 4, 0)
+ MovementLoopAddLocation(NPC, 54.17, 3.47, 5.8, 4, 0)
+ MovementLoopAddLocation(NPC, 49.84, 3, 6.7, 4, 0)
+ MovementLoopAddLocation(NPC, 48.44, 2.75, 8.76, 4, 0)
+ MovementLoopAddLocation(NPC, 45.26, 2.48, 10.97, 4, 0)
+ MovementLoopAddLocation(NPC, 40.19, 2, 13.32, 4, 0)
+ MovementLoopAddLocation(NPC, 39.53, 2, 14.96, 4, 0)
+ MovementLoopAddLocation(NPC, 40.76, 2, 17.09, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 40.39, 2, 14.41, 4, 0)
+ MovementLoopAddLocation(NPC, 41.87, 2.25, 12.16, 4, 0)
+
+ elseif GetSpawnLocationID(NPC) == 402893 then
+ MovementLoopAddLocation(NPC, 17.74, -6.5, 47.03, 4, 0)
+ MovementLoopAddLocation(NPC, 19.56, -6.5, 47.35, 4, 0)
+ MovementLoopAddLocation(NPC, 23.82, -6.5, 47.57, 4, 0)
+ MovementLoopAddLocation(NPC, 27.69, -6.5, 48.42, 4, 0)
+ MovementLoopAddLocation(NPC, 31.37, -6.5, 48.73, 4, 0)
+ MovementLoopAddLocation(NPC, 35.84, -6.5, 47.63, 4, 0)
+ MovementLoopAddLocation(NPC, 36.97, -6.5, 47.32, 4, 0)
+ MovementLoopAddLocation(NPC, 41.95, -6.5, 47.98, 4, 0)
+ MovementLoopAddLocation(NPC, 46, -7, 50.83, 4, 0)
+ MovementLoopAddLocation(NPC, 52.15, -7, 55.55, 4, 0)
+ MovementLoopAddLocation(NPC, 57.63, -7, 59.75, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 56.11, -6.99, 61.26, 4, 0)
+ MovementLoopAddLocation(NPC, 53.39, -6.96, 62.03, 4, 0)
+ MovementLoopAddLocation(NPC, 49.46, -6.99, 59.01, 4, 0)
+ MovementLoopAddLocation(NPC, 47.74, -7, 54.95, 4, 0)
+ MovementLoopAddLocation(NPC, 49.67, -6, 47.72, 4, 0)
+ MovementLoopAddLocation(NPC, 51, -5.5, 44.37, 4, 0)
+ MovementLoopAddLocation(NPC, 52.35, -5, 39.12, 4, 0)
+ MovementLoopAddLocation(NPC, 50.72, -5, 36.77, 4, 0)
+ MovementLoopAddLocation(NPC, 48.66, -5, 36.54, 4, 0)
+ MovementLoopAddLocation(NPC, 46.04, -5, 37.16, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 43.96, -5, 35.1, 4, 0)
+ MovementLoopAddLocation(NPC, 37.8, -5, 33.31, 4, 0)
+ MovementLoopAddLocation(NPC, 32.66, -5.05, 32.26, 4, 0)
+ MovementLoopAddLocation(NPC, 28.17, -6, 32.67, 4, 0)
+ MovementLoopAddLocation(NPC, 24.57, -6, 34.2, 4, 0)
+ MovementLoopAddLocation(NPC, 20.83, -6, 35.36, 4, 0)
+ MovementLoopAddLocation(NPC, 18.78, -6, 35.39, 4, 0)
+ MovementLoopAddLocation(NPC, 18.69, -6, 36.07, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 17.69, -6, 36.99, 4, 0)
+ MovementLoopAddLocation(NPC, 17.58, -6, 39.94, 4, 0)
+ MovementLoopAddLocation(NPC, 18.29, -5.97, 40.75, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 18.29, -5.97, 40.75, 4, 0)
+ MovementLoopAddLocation(NPC, 17.52, -6, 41.9, 4, 0)
+ MovementLoopAddLocation(NPC, 12.32, -6.25, 43.54, 4, 0)
+ MovementLoopAddLocation(NPC, 8.07, -6.25, 41.48, 4, 0)
+ MovementLoopAddLocation(NPC, 1.85, -6.25, 39.71, 4, 0)
+ MovementLoopAddLocation(NPC, -3.41, -6.25, 39.37, 4, 0)
+ MovementLoopAddLocation(NPC, -6.94, -6.5, 40.07, 4, 0)
+ MovementLoopAddLocation(NPC, -12.98, -7, 40.86, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -12.98, -7, 40.86, 4, 0)
+ MovementLoopAddLocation(NPC, -11.03, -7, 42.96, 4, 0)
+ MovementLoopAddLocation(NPC, -9, -7, 48.27, 4, 0)
+ MovementLoopAddLocation(NPC, -5.82, -7, 54.34, 4, 0)
+ MovementLoopAddLocation(NPC, -4.59, -7, 62.37, 4, 0)
+ MovementLoopAddLocation(NPC, -3, -7, 69.92, 4, 0)
+ MovementLoopAddLocation(NPC, 0.22, -6.49, 79.37, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -0.09, -7, 78.81, 4, 0)
+ MovementLoopAddLocation(NPC, -1.14, -7, 75.7, 4, 0)
+ MovementLoopAddLocation(NPC, -4.57, -7, 62.61, 4, 0)
+ MovementLoopAddLocation(NPC, -6.45, -7, 58.98, 4, 0)
+ MovementLoopAddLocation(NPC, -12.92, -7, 57.33, 4, 0)
+ MovementLoopAddLocation(NPC, -14.39, -7, 53.7, 4, 0)
+ MovementLoopAddLocation(NPC, -15.76, -7, 49.89, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -14.63, -7, 51.33, 4, 0)
+ MovementLoopAddLocation(NPC, -13.83, -7, 53.33, 4, 0)
+ MovementLoopAddLocation(NPC, -11.43, -7, 52.64, 4, 0)
+ MovementLoopAddLocation(NPC, -1.99, -7, 46.07, 4, 0)
+ MovementLoopAddLocation(NPC, 1.72, -6.75, 43.49, 4, 0)
+ MovementLoopAddLocation(NPC, 2.49, -6.75, 42.96, 4, 0)
+ MovementLoopAddLocation(NPC, 7.7, -6.75, 44.8, 4, 0)
+ MovementLoopAddLocation(NPC, 13.37, -6.75, 47.94, 4, 0)
+ MovementLoopAddLocation(NPC, 19.02, -6.75, 48.94, 4, 0)
+ MovementLoopAddLocation(NPC, 23.2, -7, 56.42, 4, 0)
+ MovementLoopAddLocation(NPC, 25.93, -7.25, 63.48, 4, 0)
+ MovementLoopAddLocation(NPC, 26.56, -7.36, 67.57, 4, 0)
+ MovementLoopAddLocation(NPC, 23.7, -7.17, 69.78, 4, 0)
+ MovementLoopAddLocation(NPC, 21.52, -7, 69.1, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 23.88, -7.19, 68.66, 4, 0)
+ MovementLoopAddLocation(NPC, 22.2, -7.05, 60.89, 4, 0)
+ MovementLoopAddLocation(NPC, 17.94, -7, 54.02, 4, 0)
+ MovementLoopAddLocation(NPC, 15.38, -6.75, 48.89, 4, 0)
+ MovementLoopAddLocation(NPC, 14.81, -6, 42.72, 4, 0)
+ MovementLoopAddLocation(NPC, 14.26, -6, 37.09, 4, 0)
+ MovementLoopAddLocation(NPC, 13.17, -5.75, 34.5, 4, 0)
+ MovementLoopAddLocation(NPC, 9.96, -5.75, 34, 4, 0)
+ MovementLoopAddLocation(NPC, 9.36, -6, 35.07, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 9.96, -5.75, 34, 4, 0)
+ MovementLoopAddLocation(NPC, 13.17, -5.75, 34.5, 4, 0)
+ MovementLoopAddLocation(NPC, 14.26, -6, 37.09, 4, 0)
+ MovementLoopAddLocation(NPC, 14.81, -6, 42.72, 4, 0)
+ MovementLoopAddLocation(NPC, 15.38, -6.75, 48.89, 4, 0)
+ MovementLoopAddLocation(NPC, 17.94, -7, 54.02, 4, 0)
+ MovementLoopAddLocation(NPC, 22.2, -7.05, 60.89, 4, 0)
+ MovementLoopAddLocation(NPC, 23.88, -7.19, 68.66, 4, 0)
+ MovementLoopAddLocation(NPC, 21.52, -7, 69.1, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 23.7, -7.17, 69.78, 4, 0)
+ MovementLoopAddLocation(NPC, 26.56, -7.36, 67.57, 4, 0)
+ MovementLoopAddLocation(NPC, 25.93, -7.25, 63.48, 4, 0)
+ MovementLoopAddLocation(NPC, 23.2, -7, 56.42, 4, 0)
+ MovementLoopAddLocation(NPC, 19.02, -6.75, 48.94, 4, 0)
+ MovementLoopAddLocation(NPC, 13.37, -6.75, 47.94, 4, 0)
+ MovementLoopAddLocation(NPC, 7.7, -6.75, 44.8, 4, 0)
+ MovementLoopAddLocation(NPC, 2.49, -6.75, 42.96, 4, 0)
+ MovementLoopAddLocation(NPC, 1.72, -6.75, 43.49, 4, 0)
+ MovementLoopAddLocation(NPC, -1.99, -7, 46.07, 4, 0)
+ MovementLoopAddLocation(NPC, -11.43, -7, 52.64, 4, 0)
+ MovementLoopAddLocation(NPC, -13.83, -7, 53.33, 4, 0)
+ MovementLoopAddLocation(NPC, -14.63, -7, 51.33, 4, 0)
+ MovementLoopAddLocation(NPC, -15.76, -7, 49.89, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -14.39, -7, 53.7, 4, 0)
+ MovementLoopAddLocation(NPC, -12.92, -7, 57.33, 4, 0)
+ MovementLoopAddLocation(NPC, -6.45, -7, 58.98, 4, 0)
+ MovementLoopAddLocation(NPC, -4.57, -7, 62.61, 4, 0)
+ MovementLoopAddLocation(NPC, -1.14, -7, 75.7, 4, 0)
+ MovementLoopAddLocation(NPC, -0.09, -7, 78.81, 4, 0)
+ MovementLoopAddLocation(NPC, 0.22, -6.49, 79.37, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -3, -7, 69.92, 4, 0)
+ MovementLoopAddLocation(NPC, -4.59, -7, 62.37, 4, 0)
+ MovementLoopAddLocation(NPC, -5.82, -7, 54.34, 4, 0)
+ MovementLoopAddLocation(NPC, -9, -7, 48.27, 4, 0)
+ MovementLoopAddLocation(NPC, -11.03, -7, 42.96, 4, 0)
+ MovementLoopAddLocation(NPC, -12.98, -7, 40.86, 4, 0)
+ MovementLoopAddLocation(NPC, -12.98, -7, 40.86, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -6.94, -6.5, 40.07, 4, 0)
+ MovementLoopAddLocation(NPC, -3.41, -6.25, 39.37, 4, 0)
+ MovementLoopAddLocation(NPC, 1.85, -6.25, 39.71, 4, 0)
+ MovementLoopAddLocation(NPC, 8.07, -6.25, 41.48, 4, 0)
+ MovementLoopAddLocation(NPC, 12.32, -6.25, 43.54, 4, 0)
+ MovementLoopAddLocation(NPC, 17.52, -6, 41.9, 4, 0)
+ MovementLoopAddLocation(NPC, 18.29, -5.97, 40.75, 4, 0)
+ MovementLoopAddLocation(NPC, 18.29, -5.97, 40.75, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 17.58, -6, 39.94, 4, 0)
+ MovementLoopAddLocation(NPC, 17.69, -6, 36.99, 4, 0)
+ MovementLoopAddLocation(NPC, 18.69, -6, 36.07, 4, 15)
+ MovementLoopAddLocation(NPC, 18.78, -6, 35.39, 4, 0)
+ MovementLoopAddLocation(NPC, 20.83, -6, 35.36, 4, 0)
+ MovementLoopAddLocation(NPC, 24.57, -6, 34.2, 4, 0)
+ MovementLoopAddLocation(NPC, 28.17, -6, 32.67, 4, 0)
+ MovementLoopAddLocation(NPC, 32.66, -5.05, 32.26, 4, 0)
+ MovementLoopAddLocation(NPC, 37.8, -5, 33.31, 4, 0)
+ MovementLoopAddLocation(NPC, 43.96, -5, 35.1, 4, 0)
+ MovementLoopAddLocation(NPC, 46.04, -5, 37.16, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 48.66, -5, 36.54, 4, 0)
+ MovementLoopAddLocation(NPC, 50.72, -5, 36.77, 4, 0)
+ MovementLoopAddLocation(NPC, 52.35, -5, 39.12, 4, 0)
+ MovementLoopAddLocation(NPC, 51, -5.5, 44.37, 4, 0)
+ MovementLoopAddLocation(NPC, 49.67, -6, 47.72, 4, 0)
+ MovementLoopAddLocation(NPC, 47.74, -7, 54.95, 4, 0)
+ MovementLoopAddLocation(NPC, 49.46, -6.99, 59.01, 4, 0)
+ MovementLoopAddLocation(NPC, 53.39, -6.96, 62.03, 4, 0)
+ MovementLoopAddLocation(NPC, 56.11, -6.99, 61.26, 4, 0)
+ MovementLoopAddLocation(NPC, 57.63, -7, 59.75, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, 52.15, -7, 55.55, 4, 0)
+ MovementLoopAddLocation(NPC, 46, -7, 50.83, 4, 0)
+ MovementLoopAddLocation(NPC, 41.95, -6.5, 47.98, 4, 0)
+ MovementLoopAddLocation(NPC, 36.97, -6.5, 47.32, 4, 0)
+ MovementLoopAddLocation(NPC, 35.84, -6.5, 47.63, 4, 0)
+ MovementLoopAddLocation(NPC, 31.37, -6.5, 48.73, 4, 0)
+ MovementLoopAddLocation(NPC, 27.69, -6.5, 48.42, 4, 0)
+ MovementLoopAddLocation(NPC, 23.82, -6.5, 47.57, 4, 0)
+ MovementLoopAddLocation(NPC, 19.56, -6.5, 47.35, 4, 0)
+ MovementLoopAddLocation(NPC, 17.74, -6.5, 47.03, 4, 0)
+
+
+ elseif GetSpawnLocationID(NPC) == 402869 then
+ MovementLoopAddLocation(NPC, -30.78, -5.75, 22.15, 4, 0)
+ MovementLoopAddLocation(NPC, -30.67, -5.25, 17.51, 4, 0)
+ MovementLoopAddLocation(NPC, -31, -5.2, 14.66, 4, 0)
+ MovementLoopAddLocation(NPC, -32.15, -5, 10.84, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -30.29, -5, 14.11, 4, 0)
+ MovementLoopAddLocation(NPC, -28.71, -5, 15.16, 4, 0)
+ MovementLoopAddLocation(NPC, -25.94, -5, 15.84, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -28.86, -5.25, 19.07, 4, 0)
+ MovementLoopAddLocation(NPC, -29.86, -5.5, 21.13, 4, 0)
+ MovementLoopAddLocation(NPC, -27.67, -5.75, 23.64, 4, 0)
+ MovementLoopAddLocation(NPC, -18.78, -7, 30.85, 4, 0)
+ MovementLoopAddLocation(NPC, -13.54, -6.75, 34.55, 4, 0)
+ MovementLoopAddLocation(NPC, -9.13, -6.75, 39.29, 4, 0)
+ MovementLoopAddLocation(NPC, -8.21, -7, 48.96, 4, 0)
+ MovementLoopAddLocation(NPC, -9.84, -7, 54.89, 4, 0)
+ MovementLoopAddLocation(NPC, -17.46, -7, 59.88, 4, 0)
+ MovementLoopAddLocation(NPC, -17.3, -7, 64.56, 4, 0)
+ MovementLoopAddLocation(NPC, -17.91, -6.93, 72.4, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -18.08, -7, 69.15, 4, 0)
+ MovementLoopAddLocation(NPC, -17.59, -7, 65.26, 4, 0)
+ MovementLoopAddLocation(NPC, -20.34, -7, 64.88, 4, 0)
+ MovementLoopAddLocation(NPC, -29.55, -7, 61.91, 4, 0)
+ MovementLoopAddLocation(NPC, -30.35, -7, 59.91, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -30.35, -7, 59.91, 4, 0)
+ MovementLoopAddLocation(NPC, -28.38, -7, 57.87, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -29.38, -7, 59.79, 4, 0)
+ MovementLoopAddLocation(NPC, -29.06, -7, 61.56, 4, 0)
+ MovementLoopAddLocation(NPC, -28.18, -7, 62.75, 4, 0)
+ MovementLoopAddLocation(NPC, -24.02, -7, 61.12, 4, 0)
+ MovementLoopAddLocation(NPC, -22.88, -7, 58.92, 4, 0)
+ MovementLoopAddLocation(NPC, -16.97, -7, 56.33, 4, 0)
+ MovementLoopAddLocation(NPC, -12.76, -7, 55.73, 4, 0)
+ MovementLoopAddLocation(NPC, -9.91, -7, 51.69, 4, 0)
+ MovementLoopAddLocation(NPC, -11.58, -7, 48.2, 4, 0)
+ MovementLoopAddLocation(NPC, -14.76, -7, 45.45, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -13.63, -7, 47.25, 4, 0)
+ MovementLoopAddLocation(NPC, -10.71, -7, 45.21, 4, 0)
+ MovementLoopAddLocation(NPC, -11.27, -7, 41.4, 4, 0)
+ MovementLoopAddLocation(NPC, -13.64, -7, 39.39, 4, 0)
+ MovementLoopAddLocation(NPC, -18.41, -7, 38.09, 4, 0)
+ MovementLoopAddLocation(NPC, -24.03, -7, 35.43, 4, 0)
+ MovementLoopAddLocation(NPC, -33.63, -6.85, 34.05, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -30.91, -5.75, 25.88, 4, 0)
+ MovementLoopAddLocation(NPC, -30.65, -5.5, 21.06, 4, 0)
+ MovementLoopAddLocation(NPC, -33.71, -5.5, 19.09, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -30.65, -5.5, 21.06, 4, 0)
+ MovementLoopAddLocation(NPC, -30.91, -5.75, 25.88, 4, 0)
+ MovementLoopAddLocation(NPC, -33.63, -6.85, 34.05, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -24.03, -7, 35.43, 4, 0)
+ MovementLoopAddLocation(NPC, -18.41, -7, 38.09, 4, 0)
+ MovementLoopAddLocation(NPC, -13.64, -7, 39.39, 4, 0)
+ MovementLoopAddLocation(NPC, -11.27, -7, 41.4, 4, 0)
+ MovementLoopAddLocation(NPC, -10.71, -7, 45.21, 4, 0)
+ MovementLoopAddLocation(NPC, -13.63, -7, 47.25, 4, 0)
+ MovementLoopAddLocation(NPC, -14.76, -7, 45.45, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -11.58, -7, 48.2, 4, 0)
+ MovementLoopAddLocation(NPC, -9.91, -7, 51.69, 4, 0)
+ MovementLoopAddLocation(NPC, -12.76, -7, 55.73, 4, 0)
+ MovementLoopAddLocation(NPC, -16.97, -7, 56.33, 4, 0)
+ MovementLoopAddLocation(NPC, -22.88, -7, 58.92, 4, 0)
+ MovementLoopAddLocation(NPC, -24.02, -7, 61.12, 4, 0)
+ MovementLoopAddLocation(NPC, -28.18, -7, 62.75, 4, 0)
+ MovementLoopAddLocation(NPC, -29.06, -7, 61.56, 4, 0)
+ MovementLoopAddLocation(NPC, -29.38, -7, 59.79, 4, 0)
+ MovementLoopAddLocation(NPC, -28.38, -7, 57.87, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -30.35, -7, 59.91, 4, 0)
+ MovementLoopAddLocation(NPC, -30.35, -7, 59.91, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -29.55, -7, 61.91, 4, 0)
+ MovementLoopAddLocation(NPC, -20.34, -7, 64.88, 4, 0)
+ MovementLoopAddLocation(NPC, -17.59, -7, 65.26, 4, 0)
+ MovementLoopAddLocation(NPC, -18.08, -7, 69.15, 4, 0)
+ MovementLoopAddLocation(NPC, -17.91, -6.93, 72.4, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -17.3, -7, 64.56, 4, 0)
+ MovementLoopAddLocation(NPC, -17.46, -7, 59.88, 4, 0)
+ MovementLoopAddLocation(NPC, -9.84, -7, 54.89, 4, 0)
+ MovementLoopAddLocation(NPC, -8.21, -7, 48.96, 4, 0)
+ MovementLoopAddLocation(NPC, -9.13, -6.75, 39.29, 4, 0)
+ MovementLoopAddLocation(NPC, -13.54, -6.75, 34.55, 4, 0)
+ MovementLoopAddLocation(NPC, -18.78, -7, 30.85, 4, 0)
+ MovementLoopAddLocation(NPC, -27.67, -5.75, 23.64, 4, 0)
+ MovementLoopAddLocation(NPC, -29.86, -5.5, 21.13, 4, 0)
+ MovementLoopAddLocation(NPC, -28.86, -5.25, 19.07, 4, 0)
+ MovementLoopAddLocation(NPC, -25.94, -5, 15.84, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -28.71, -5, 15.16, 4, 0)
+ MovementLoopAddLocation(NPC, -30.29, -5, 14.11, 4, 0)
+ MovementLoopAddLocation(NPC, -32.15, -5, 10.84, 4, MakeRandomInt(8,16))
+ MovementLoopAddLocation(NPC, -31, -5.2, 14.66, 4, 0)
+ MovementLoopAddLocation(NPC, -30.67, -5.25, 17.51, 4, 0)
+ MovementLoopAddLocation(NPC, -30.78, -5.75, 22.15, 4, 0)
+
+ elseif GetSpawnLocationID(NPC) == 133788262 then
+ MovementLoopAddLocation(NPC, 77.61, 5.02, -34.97, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 77.61, 5.02, -34.97, 2, 0)
+ MovementLoopAddLocation(NPC, 75.62, 5.02, -33.15, 2, 0)
+ MovementLoopAddLocation(NPC, 73.74, 5.02, -31.86, 2, 0)
+ MovementLoopAddLocation(NPC, 73.24, 5.02, -29.53, 2, 0)
+ MovementLoopAddLocation(NPC, 76.61, 5.02, -23.29, 2, 0)
+ MovementLoopAddLocation(NPC, 76.05, 5.02, -17.99, 2, 0)
+ MovementLoopAddLocation(NPC, 75.48, 5.02, -14.69, 2, 0)
+ MovementLoopAddLocation(NPC, 71.61, 5.02, -8.12, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 71.61, 5.02, -8.12, 2, 0)
+ MovementLoopAddLocation(NPC, 73.15, 5.02, -9.02, 2, 0)
+ MovementLoopAddLocation(NPC, 75.78, 5.02, -10.55, 2, 0)
+ MovementLoopAddLocation(NPC, 77.07, 5.02, -11.3, 2, 0)
+ MovementLoopAddLocation(NPC, 85.03, 5.02, -8.05, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 85.03, 5.02, -8.05, 2, 0)
+ MovementLoopAddLocation(NPC, 82.12, 5.02, -7.35, 2, 0)
+ MovementLoopAddLocation(NPC, 79.81, 5.02, -6.79, 2, 0)
+ MovementLoopAddLocation(NPC, 77.59, 5.02, -7.67, 2, 0)
+ MovementLoopAddLocation(NPC, 77.1, 5.02, -9.06, 2, 0)
+ MovementLoopAddLocation(NPC, 76.29, 5.02, -10.25, 2, 0)
+ MovementLoopAddLocation(NPC, 75.49, 5.02, -10.73, 2, 0)
+ MovementLoopAddLocation(NPC, 74.51, 5.02, -13.86, 2, 0)
+ MovementLoopAddLocation(NPC, 75.64, 5.02, -18.09, 2, 0)
+ MovementLoopAddLocation(NPC, 79.27, 5.02, -20.23, 2, 0)
+ MovementLoopAddLocation(NPC, 80.78, 5.02, -17.85, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 80.78, 5.02, -17.85, 2, 0)
+ MovementLoopAddLocation(NPC, 83.36, 5.02, -15.76, 2, 0)
+ MovementLoopAddLocation(NPC, 86.51, 5.02, -13.89, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 86.51, 5.02, -13.89, 2, 0)
+ MovementLoopAddLocation(NPC, 82.21, 5.02, -15.64, 2, 0)
+ MovementLoopAddLocation(NPC, 79.55, 5.02, -15.74, 2, 0)
+ MovementLoopAddLocation(NPC, 78.12, 5.02, -18.21, 2, 0)
+ MovementLoopAddLocation(NPC, 75.03, 5.02, -21.79, 2, 0)
+ MovementLoopAddLocation(NPC, 73.58, 5.02, -27.67, 2, 0)
+ MovementLoopAddLocation(NPC, 73.78, 5.03, -34.47, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 73.78, 5.03, -34.47, 2, 0)
+ MovementLoopAddLocation(NPC, 87.81, 5.02, -30.69, 2, MakeRandomInt(8,12))
+ MovementLoopAddLocation(NPC, 87.81, 5.02, -30.69, 2, 0)
+ MovementLoopAddLocation(NPC, 77.15, 5.02, -32.83, 2, 0)
+ end
+end
+
diff --git a/server/SpawnScripts/BeggarsCourt/tofprtcitizenshiptrial.lua b/server/SpawnScripts/BeggarsCourt/tofprtcitizenshiptrial.lua
new file mode 100755
index 000000000..639833612
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/tofprtcitizenshiptrial.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/tofprtcitizenshiptrial.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.30 07:06:56
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC, 5861, 13)
+SetRequiredQuest(NPC, 5867, 2)
+SetRequiredQuest(NPC, 5867, 3)
+SetRequiredQuest(NPC, 5867, 4)
+SetRequiredQuest(NPC, 5867, 5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+local TaskSheet = 4212
+local WelcomeQuest = 5861
+local TaskQuest = 5867
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Use citizenship sign' then
+ if HasQuest(Spawn,WelcomeQuest) and not HasCompletedQuest(Spawn,TaskQuest) and not HasItem(Spawn, TaskSheet,1) then
+ Quest = GetQuest(Spawn,WelcomeQuest)
+ SendMessage(Spawn, "You pull an application for citizenship from the wall.")
+ GiveQuestItem(Quest, Spawn, "I must complete this task to become a Citizen of Qeynos.", TaskSheet)
+
+ elseif not HasQuest(Spawn, TaskQuest) and HasItem(Spawn, TaskSheet,1) or GetQuestStep(Spawn,TaskQuest)==1 and HasItem(Spawn, TaskSheet,1) then
+ SendMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.")
+ SendPopUpMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.", 200, 200, 200)
+
+ elseif HasQuest(Spawn, TaskQuest) and GetQuestStep(Spawn,TaskQuest)>=2 and GetQuestStep(Spawn,TaskQuest)<=5 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+end
+end
+end
+
+ function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ if GetQuestStep(Spawn,TaskQuest)==2 then
+ SetStepComplete(Spawn,TaskQuest,2)
+ end
+ ZoneRef = GetZone("FreeportCitizenshipTrialChamber")
+ Zone(ZoneRef,Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BeggarsCourt/zonetofprtnorth.lua b/server/SpawnScripts/BeggarsCourt/zonetofprtnorth.lua
new file mode 100755
index 000000000..bd6ff3a05
--- /dev/null
+++ b/server/SpawnScripts/BeggarsCourt/zonetofprtnorth.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/BeggarsCourt/zonetofprtnorth.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 01:06:29
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn,SpellName)
+ local invul = IsInvulnerable(Spawn)
+if SpellName == 'Enter North Freeport' then
+ if not HasCompletedQuest(Spawn,5866) and
+ not HasCompletedQuest(Spawn,5867) and
+ not HasCompletedQuest(Spawn,5868) and
+ not HasCompletedQuest(Spawn,5869) and
+ not HasCompletedQuest(Spawn,5870) and
+ not HasCompletedQuest(Spawn,5871)
+ and GetFactionAmount(Spawn,12)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==10 then
+ SetStepComplete(Spawn,5861,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only Freeport citizens may enter the city.",255,50,50)
+ SendMessage(Spawn,"Only Freeport citizens may enter the city.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,12) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-149.38, -50.6, -376.76, 204.84)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BigBend/CrantiktheCrazed.lua b/server/SpawnScripts/BigBend/CrantiktheCrazed.lua
index 25814eb0c..63a6f3202 100755
--- a/server/SpawnScripts/BigBend/CrantiktheCrazed.lua
+++ b/server/SpawnScripts/BigBend/CrantiktheCrazed.lua
@@ -7,6 +7,7 @@
--]]
require "SpawnScripts/Generic/DialogModule"
+local MucksQuest = 5874
function spawn(NPC)
end
@@ -24,7 +25,22 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Up is down and down is up, yet both are still sideways! Hoooooooo hee hee haaaaaaaa!")
Dialog.AddVoiceover("voiceover/english/crantik_the_crazed/fprt_hood1/qst_crantikthecrazed.mp3", 1553641466, 3781649488)
+
+ if GetQuestStep(Spawn,MucksQuest)==1 then
+ Dialog.AddOption("I need a vial of the something that Old Man Muckwort wants.","Dialog2")
+ end
+
Dialog.AddOption("Um, ya....right....")
Dialog.Start()
end
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Whooo hooo heee heee! Crantik makes some more of the droopy-gloppy! Muckwort always gets my droopy-gloppy, weee heee!!! Crantik makes it from his own body, he does! Ratsies and Catsies drop dead when they do the licky licky licky, then they make a lot of sizzzzzzzle sounds! Yeeee wooo heee! Crantik gives you a vial!")
+ Dialog.AddVoiceover("voiceover/english/crantik_the_crazed/fprt_hood03/quests/oldmanmuckwort/crantik_muckwort_x1_initial.mp3",3426325136,2692118135)
+ PlayFlavor(NPC, "","","scratch",0,0, Spawn)
+ Dialog.AddOption("Err... Thanks.")
+ Dialog.Start()
+ SetStepComplete(Spawn, MucksQuest, 1)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BigBend/KorkoofCrackstone.lua b/server/SpawnScripts/BigBend/KorkoofCrackstone.lua
index 170774311..111a3090c 100755
--- a/server/SpawnScripts/BigBend/KorkoofCrackstone.lua
+++ b/server/SpawnScripts/BigBend/KorkoofCrackstone.lua
@@ -1,30 +1,127 @@
--[[
Script Name : SpawnScripts/BigBend/KorkoofCrackstone.lua
Script Purpose : Korkoof Crackstone
- Script Author : torsten
+ Script Author : Dorbin
Script Date : 2022.07.13
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
+
+-- Item ID's
+local ARTISAN_ESSENTIALS_VOLUME_2 = 31373
function spawn(NPC)
end
+function RandomGreeting(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1054.mp3", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1054.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1054.mp3", 0, 0, Spawn)
+ end
+end
+
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860) == 8 then
+ Dialog1(NPC,Spawn)
+ elseif GetTradeskillLevel(Spawn) <2 then
+ RandomGreeting(NPC,Spawn)
+
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ RandomGreeting(NPC,Spawn)
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ else
+ RandomGreeting(NPC,Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in West Freeport. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
- if choice == 1 then
- PlayFlavor(NPC, "", "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", "", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1054.mp3", 0, 0, Spawn)
- elseif choice == 3 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1054.mp3", 0, 0, Spawn)
+function dlg_39_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5860)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
+ StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
+end
+
+function Dialog1(NPC,Spawn)
+ SetStepComplete(Spawn,5860,8)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddDialog("I've no need for the weak. If you can handle yourself, then you can join The Ransackers Annex. Are you qualifed to be one of us?")
+ Dialog.AddVoiceover("voiceover/english/korkoof_crackstone/fprt_hood1/100_trd_korkoof_crackstone_joining_649a7bb8.mp3", 1321833842, 3908486427)
+ Dialog.AddOption("Just looking around. As you were.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
end
+ Dialog.Start()
+end
+
+function CanDo(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddDialog("Many things can be done at a tradeskill society and there are many in the city... but ours is obviously the best! Each is equipped with quality crafting stations and fuels needed to become proficient at any tradeskill class you might desire.")
+ Dialog.AddOption("Anything else I should know?", "CanDo2")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function HelpMe(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("In order to be competitive in today's marketplace, The Ransackers Annex provides you with this basic guide to commerce. You will learn many things on your own over time, so do not consider this book your only guide to success. Rely on your own resources and skills and you will prosper.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn) <2 then
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+ Dialog.Start()
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BigBend/Molg.lua b/server/SpawnScripts/BigBend/Molg.lua
index 227bcdea1..4bd0b7547 100755
--- a/server/SpawnScripts/BigBend/Molg.lua
+++ b/server/SpawnScripts/BigBend/Molg.lua
@@ -5,6 +5,7 @@
Script Date : 2022.07.13
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+local Mage1 = 5902
require "SpawnScripts/Generic/DialogModule"
@@ -16,7 +17,11 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >=0 then
Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+end
end
function Dialog1(NPC, Spawn)
@@ -26,6 +31,9 @@ function Dialog1(NPC, Spawn)
Dialog.AddVoiceover("voiceover/english/merchant_molg/fprt_hood1/mer_molg.mp3", 3931295597, 1000874360)
Dialog.AddOption("I must be going.")
Dialog.AddOption("What kind of things?", "Dialog2")
+ if HasQuest(Spawn,Mage1) and GetQuestStepProgress(Spawn,Mage1,6)== 0 then
+ Dialog.AddOption("I understand you witnessed a summoning today. What was summoned?", "Dialog3")
+ end
Dialog.Start()
end
@@ -38,3 +46,14 @@ function Dialog2(NPC, Spawn)
Dialog.Start()
end
+function Dialog3(NPC, Spawn)
+ SetStepComplete(Spawn,Mage1,6)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I can't say... there was a bright flash of light when it was summoned. I was blinded. I do know I felt a large sheet of leather smack me in the face. I think the mage was summoning something requiring leather. This is what I saw.")
+ Dialog.AddVoiceover("voiceover/english/merchant_molg/fprt_hood1/mer_molg001.mp3", 3794527944, 1139225489)
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddOption("You think he summoned a sheet of leather... thank you.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/BigBend/OverseerTravogg.lua b/server/SpawnScripts/BigBend/OverseerTravogg.lua
index e017da1e2..4713d8e41 100755
--- a/server/SpawnScripts/BigBend/OverseerTravogg.lua
+++ b/server/SpawnScripts/BigBend/OverseerTravogg.lua
@@ -6,31 +6,98 @@
:
--]]
-function spawn(NPC)
+local Welcome = 5860
+require "SpawnScripts/Generic/DialogModule"
+local CalloutTimer = false
+
+function spawn(NPC)
+ProvidesQuest(NPC,Welcome)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+if GetFactionAmount(Spawn,12)<0 then
+PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+FaceTarget(NPC, Spawn)
+if GetRace(Spawn)== 12 or GetRace(Spawn) == 14 then
+ if CanReceiveQuest(Spawn, Welcome)then
+ PlayFlavor(NPC,"","Refugees will report to me at once!","wave",850117394,1406850605,Spawn)
+ elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+
+function ResetCallout(NPC,Spawn)
+ CalloutTimer = false
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","shame",0,0,Spawn)
+ else
+if GetRace(Spawn)== 12 or GetRace(Spawn) == 14 then
+ if not HasQuest(Spawn, Welcome) and not HasCompletedQuest(Spawn,Welcome)then
FaceTarget(NPC, Spawn)
- if GetQuestStep(Spawn, 5758)==2 then
- SetStepComplete(Spawn, 5758,2)
- end
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Freeport welcomes you, traveler. Enter our city and you are no longer a refugee. Know this – you are now an asset of our mighty city. Consider yourself lucky. ")
+ Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg001.mp3", 2748948544, 618605369)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("I don't feel lucky.","Dialog1")
+ Dialog.AddOption("...I'll be right back.")
+ Dialog.Start()
+ else
+ Talk(NPC,Spawn)
+ end
+else
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+function Talk(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC,"","Refugees will report to me at once!","sniff",850117394,1406850605,Spawn)
+ else
+ PlayFlavor(NPC,"","Disturb me again and you will suffer the consequences.","glare",850117394,1406850605,Spawn)
+ end
end
function respawn(NPC)
spawn(NPC)
end
---[[\aNPC 7699 Overseer Travogg:Overseer Travogg\/a says,"Refugees will report to me at once!"
-(1136078468)[Sat Dec 31 20:21:08 2005] \aNPC 7699 Overseer Travogg:Overseer Travogg\/a says to you,"Freeport welcomes you, traveler. Enter our city and you are no longer a refugee. Know this – you are now an asset of our mighty city. Consider yourself lucky. "
-(1136078468)[Sat Dec 31 20:21:08 2005] You say,"Hail, Overseer Travogg"
-(1136078470)[Sat Dec 31 20:21:10 2005] You say to Overseer Travogg,"I don't feel lucky."
-(1136078470)[Sat Dec 31 20:21:10 2005] \aNPC 7699 Overseer Travogg:Overseer Travogg\/a says to you,"Your feelings mean nothing to the Overlord. He is your ruler and such an honor should delight you, peasant. If you are not delighted, I will smash open your skull. "
-(1136078471)[Sat Dec 31 20:21:11 2005] You say to Overseer Travogg,"I see... then I'm happy to be here."
-(1136078471)[Sat Dec 31 20:21:11 2005] \aNPC 7699 Overseer Travogg:Overseer Travogg\/a says to you,"You choose wisely. For this you may live. The Overlord has granted you a house in Big Bend, home to ogres and trolls. You must work to afford this gift. Does this please you?"
-(1136078472)[Sat Dec 31 20:21:12 2005] You say to Overseer Travogg,"Happy?"
-(1136078472)[Sat Dec 31 20:21:12 2005] Your quest journal has been updated.
-(1136078472)[Sat Dec 31 20:21:12 2005] You gain experience!
-(1136078472)[Sat Dec 31 20:21:12 2005] Your quest journal has been updated.
-(1136078472)[Sat Dec 31 20:21:12 2005] \aNPC 7699 Overseer Travogg:Overseer Travogg\/a says to you,"Of course it should please you! Our Lord granted you a spacious home in paradise! You must leave immediately. The landlord is waiting. Welcome to Freeport, refugee ... now, away with you!"
-(1136078473)[Sat Dec 31 20:21:13 2005] You say to Overseer Travogg,"Uhhh... thanks."]]--
\ No newline at end of file
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Your feelings mean nothing to the Overlord. He is your ruler and such an honor should delight you, peasant. If you are not delighted, I will smash open your skull. ")
+ PlayFlavor(NPC,"","","heckno",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg002.mp3", 3261798868, 2615741361)
+ Dialog.AddOption("I see... then I'm happy to be here.", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You choose wisely. For this you may live. The Overlord has granted you a house in Big Bend, home to ogres and trolls. You must work to afford this gift. Does this please you?")
+ Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg003.mp3", 2428117614, 1340985853)
+ Dialog.AddOption("Happy?", "QuestStart")
+ Dialog.Start()
+end
+
+function QuestStart(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Welcome)
+end
diff --git a/server/SpawnScripts/BigBend/QuintiusCalacicus.lua b/server/SpawnScripts/BigBend/QuintiusCalacicus.lua
index 6d4096be7..6eb3f8b00 100755
--- a/server/SpawnScripts/BigBend/QuintiusCalacicus.lua
+++ b/server/SpawnScripts/BigBend/QuintiusCalacicus.lua
@@ -1,27 +1,95 @@
--[[
Script Name : SpawnScripts/BigBend/QuintiusCalacicus.lua
Script Purpose : Quintius Calacicus
- Script Author : torsten
- Script Date : 2022.07.11
+ Script Author : Dorbin
+ Script Date : 2023.06.28
Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
local PayingTheTab = 5625
+local Citizenship = 5860
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/banker_quintius_calacicus/fprt_hood1/100_bankerquintiuscalacicus_housing_quest_1_22bf58bf.mp3", "Are you the one opening the new account?", "bye", 1249171681, 483955197, Spawn)
+end
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if HasQuest(Spawn, PayingTheTab) and not HasCompletedQuest(Spawn, PayingTheTab) then
+--[[ if HasQuest(Spawn, PayingTheTab) and not HasCompletedQuest(Spawn, PayingTheTab) then
SetStepComplete(Spawn, PayingTheTab, 1)
+ end]]--
+
+function hailed(NPC, Spawn)
+
+if GetFactionAmount(Spawn,12) <0 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+elseif HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+Dialog2(NPC, Spawn)
+else
+Dialog1(NPC, Spawn)
+end
+end
+
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you look like the one Valthun described. Before we can open your account, we need some information from you. What's your name?")
+ Dialog.AddVoiceover("voiceover/english/banker_quintius_calacicus/fprt_hood1/bnk_quintiuscalacicus_hail005.mp3", 1931707060, 2633731022)
+ Dialog.AddOption(""..GetName(Spawn).."","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Occupation?")
+ Dialog.AddVoiceover("voiceover/english/banker_quintius_calacicus/fprt_hood1/bnk_quintiuscalacicus_hail006.mp3", 237773570, 2383442663)
+ Dialog.AddOption("Adventurer","Dialog2b")
+ Dialog.AddOption("Crafter","Dialog2b")
+ if GetRace(Spawn)==12 then
+ Dialog.AddOption("Skull basher?","Dialog2b")
+ elseif GetRace(Spawn)==14 then
+ Dialog.AddOption("Ummm...I clobber rats good?","Dialog2b")
end
- Dialog1(NPC, Spawn)
+ Dialog.Start()
+end
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Any surviving relatives, do you ever leave your house unarmed, and are you a deep sleeper?")
+ Dialog.AddVoiceover("voiceover/english/banker_quintius_calacicus/fprt_hood1/bnk_quintiuscalacicus_hail007.mp3", 3182562544, 987337462)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No, no, and no.","Dialog2c")
+ Dialog.AddOption("[Lie] No, no, and no.","Dialog2c")
+ Dialog.AddOption("No - Wait... what?","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ SetStepComplete(Spawn, Citizenship,4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How convenient for you. Very well ... we've set aside a place for you within the Freeport Reserve vaults. Feel free to deposit large amounts of coin or valuable artifacts with us anytime. We'll be sure to keep it ... safe. Is there anything else?")
+ Dialog.AddVoiceover("voiceover/english/banker_quintius_calacicus/fprt_hood1/bnk_quintiuscalacicus_hail008.mp3", 456708908, 2072469521)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
end
function Dialog1(NPC, Spawn)
diff --git a/server/SpawnScripts/BigBend/thexmonument01.lua b/server/SpawnScripts/BigBend/thexmonument01.lua
index a52838f94..02f3cc362 100755
--- a/server/SpawnScripts/BigBend/thexmonument01.lua
+++ b/server/SpawnScripts/BigBend/thexmonument01.lua
@@ -10,16 +10,24 @@ local TheStolenArtifactsofThex = 5683
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'inspect' then
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 1)
- end
+ local con = CreateConversation()
+ AddConversationOption(con, "Stop inspecting.","Close")
+ if HasLanguage(Spawn,2) and GetQuestStepProgress(Spawn,TheStolenArtifactsofThex,1)==0 then
+ AddConversationOption(con, "Make a note of the artifact.","Dialog2")
+ end
+ StartDialogConversation(con, 1, NPC, Spawn, "This is an ancient artifact. It has sadistic looking symbols bordering writing that is written in Thexian, an ancient dark elf language.")
+end
end
-function spawn(NPC)
-
+function Dialog2(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheStolenArtifactsofThex, 1)
+ AddConversationOption(con, "Stop studying.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "You make a note of the location of the Thex artifact as ordered by Kylanith D'Lar.")
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/BigBend/thexmonument02.lua b/server/SpawnScripts/BigBend/thexmonument02.lua
index 3a18dc00a..3df322d6f 100755
--- a/server/SpawnScripts/BigBend/thexmonument02.lua
+++ b/server/SpawnScripts/BigBend/thexmonument02.lua
@@ -10,16 +10,24 @@ local TheStolenArtifactsofThex = 5683
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'inspect' then
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 2)
- end
+ local con = CreateConversation()
+ AddConversationOption(con, "Stop inspecting.","Close")
+ if HasLanguage(Spawn,2) and GetQuestStepProgress(Spawn,TheStolenArtifactsofThex,2)==0 then
+ AddConversationOption(con, "Make a note of the artifact.","Dialog2")
+ end
+ StartDialogConversation(con, 1, NPC, Spawn, "This is an ancient artifact. It has sadistic looking symbols bordering writing that is written in both a common tongue and what appears to be a form of Thexian.")
+end
end
-function spawn(NPC)
-
+function Dialog2(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheStolenArtifactsofThex, 2)
+ AddConversationOption(con, "Stop studying.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "You make a note of the location of the Thex artifact as ordered by Kylanith D'Lar.")
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/BigBend/thexmonument03.lua b/server/SpawnScripts/BigBend/thexmonument03.lua
index de5d0667c..7ea475b84 100755
--- a/server/SpawnScripts/BigBend/thexmonument03.lua
+++ b/server/SpawnScripts/BigBend/thexmonument03.lua
@@ -10,18 +10,25 @@ local TheStolenArtifactsofThex = 5683
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'inspect' then
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 3)
- end
+ local con = CreateConversation()
+ AddConversationOption(con, "Stop inspecting.","Close")
+ if HasLanguage(Spawn,2) and GetQuestStepProgress(Spawn,TheStolenArtifactsofThex,3)==0 then
+ AddConversationOption(con, "Make a note of the artifact.","Dialog2")
+ end
+ StartDialogConversation(con, 1, NPC, Spawn, "This is an ancient artifact. It has sadistic looking symbols bordering writing that is written in Thexian, an ancient dark elf language.")
+end
end
-function spawn(NPC)
-
+function Dialog2(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheStolenArtifactsofThex, 3)
+ AddConversationOption(con, "Stop studying.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "You make a note of the location of the Thex artifact as ordered by Kylanith D'Lar.")
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
end
-
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/BigBend/thexmonument04broken.lua b/server/SpawnScripts/BigBend/thexmonument04broken.lua
index be2e3c1df..934a58334 100755
--- a/server/SpawnScripts/BigBend/thexmonument04broken.lua
+++ b/server/SpawnScripts/BigBend/thexmonument04broken.lua
@@ -10,16 +10,24 @@ local TheStolenArtifactsofThex = 5683
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'inspect' then
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 4)
- end
+ local con = CreateConversation()
+ AddConversationOption(con, "Stop inspecting.","Close")
+ if HasLanguage(Spawn,2) and GetQuestStepProgress(Spawn,TheStolenArtifactsofThex,4)==0 then
+ AddConversationOption(con, "Make a note of the artifact.","Dialog2")
+ end
+ StartDialogConversation(con, 1, NPC, Spawn, "This is a toppled stone marker. It has sadistic looking symbols bordering writing that is clearly not a common tongue. It is impossible to read the writing due to the damage sustained by the artifact.")
+end
end
-function spawn(NPC)
-
+function Dialog2(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheStolenArtifactsofThex, 4)
+ AddConversationOption(con, "Stop studying.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "You make a note of the location of the Thex artifact as ordered by Kylanith D'Lar.")
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/BigBend/tofprtcitizenshiptrial.lua b/server/SpawnScripts/BigBend/tofprtcitizenshiptrial.lua
new file mode 100755
index 000000000..30025a9b6
--- /dev/null
+++ b/server/SpawnScripts/BigBend/tofprtcitizenshiptrial.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/BigBend/tofprtcitizenshiptrial.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.28 08:06:26
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC, 5860, 13)
+SetRequiredQuest(NPC, 5866, 2)
+SetRequiredQuest(NPC, 5866, 3)
+SetRequiredQuest(NPC, 5866, 4)
+SetRequiredQuest(NPC, 5866, 5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+local TaskSheet = 4248
+local WelcomeQuest = 5860
+local TaskQuest = 5866
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Use citizenship sign' then
+ if HasQuest(Spawn,WelcomeQuest) and not HasCompletedQuest(Spawn,TaskQuest) and not HasItem(Spawn, TaskSheet,1) then
+ Quest = GetQuest(Spawn,WelcomeQuest)
+ SendMessage(Spawn, "You pull an application for citizenship from the wall.")
+ GiveQuestItem(Quest, Spawn, "I must complete this task to become a Citizen of Qeynos.", TaskSheet)
+
+ elseif not HasQuest(Spawn, TaskQuest) and HasItem(Spawn, TaskSheet,1) or GetQuestStep(Spawn,TaskQuest)==1 and HasItem(Spawn, TaskSheet,1) then
+ SendMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.")
+ SendPopUpMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.", 200, 200, 200)
+
+ elseif HasQuest(Spawn, TaskQuest) and GetQuestStep(Spawn,TaskQuest)>=2 and GetQuestStep(Spawn,TaskQuest)<=5 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+end
+end
+end
+
+ function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ if GetQuestStep(Spawn,TaskQuest)==2 then
+ SetStepComplete(Spawn,TaskQuest,2)
+ end
+ ZoneRef = GetZone("FreeportCitizenshipTrialChamber")
+ Zone(ZoneRef,Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BigBend/zonetofprtsouth.lua b/server/SpawnScripts/BigBend/zonetofprtsouth.lua
new file mode 100755
index 000000000..95f838a75
--- /dev/null
+++ b/server/SpawnScripts/BigBend/zonetofprtsouth.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/BigBend/zonetofprtsouth.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 12:06:22
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn,SpellName)
+ local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter South Freeport' then
+ if not HasCompletedQuest(Spawn,5866) and
+ not HasCompletedQuest(Spawn,5867) and
+ not HasCompletedQuest(Spawn,5868) and
+ not HasCompletedQuest(Spawn,5869) and
+ not HasCompletedQuest(Spawn,5870) and
+ not HasCompletedQuest(Spawn,5871)
+ and GetFactionAmount(Spawn,12)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==10 then
+ SetStepComplete(Spawn,5860,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only Freeport citizens may enter the city.",255,50,50)
+ SendMessage(Spawn,"Only Freeport citizens may enter the city.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,12) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("SouthFreeport")
+ Zone(ZoneRef,Spawn,61.86, -12.09, 248.41, 11)
+ end
+end
+end
diff --git a/server/SpawnScripts/Blackburrow/CrugybartheRock.lua b/server/SpawnScripts/Blackburrow/CrugybartheRock.lua
new file mode 100755
index 000000000..d0ca5acd7
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/CrugybartheRock.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/CrugybartheRock.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.01 10:05:10
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -25.58, -7.53, -70.86, 2, math.random(35,45))
+ MovementLoopAddLocation(NPC, -25.58, -7.53, -70.86, 2, 0)
+ MovementLoopAddLocation(NPC, -26.8, -7.56, -66.15, 2, 0)
+ MovementLoopAddLocation(NPC, -22.48, -7.49, -63.56, 2, 0)
+ MovementLoopAddLocation(NPC, -18.17, -7.56, -62.22, 2, 0)
+ MovementLoopAddLocation(NPC, -14.18, -7.36, -62.55, 2, 0)
+ MovementLoopAddLocation(NPC, -7.76, -7.33, -63.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2.68, -7.21, -63.94, 2, 0)
+ MovementLoopAddLocation(NPC, 3.3, -6.68, -63.4, 2, 0)
+ MovementLoopAddLocation(NPC, 9.32, -5.69, -62.59, 2, 0)
+ MovementLoopAddLocation(NPC, 7.42, -5.98, -62.96, 2, 0)
+ MovementLoopAddLocation(NPC, 2.79, -6.75, -63.54, 2, 0)
+ MovementLoopAddLocation(NPC, -2.73, -7.14, -63.5, 2, 0)
+ MovementLoopAddLocation(NPC, -10.04, -7.31, -62.94, 2, 0)
+ MovementLoopAddLocation(NPC, -15.37, -7.35, -62.17, 2, 0)
+ MovementLoopAddLocation(NPC, -19.73, -7.5, -62.73, 2, 0)
+ MovementLoopAddLocation(NPC, -21.03, -7.59, -65.23, 2, 0)
+ MovementLoopAddLocation(NPC, -22.14, -7.52, -68.83, 2, 0)
+ MovementLoopAddLocation(NPC, -25.13, -7.53, -70.86, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Blackburrow/GeologistFribden.lua b/server/SpawnScripts/Blackburrow/GeologistFribden.lua
index cde4d75bb..a7cc9cd1a 100755
--- a/server/SpawnScripts/Blackburrow/GeologistFribden.lua
+++ b/server/SpawnScripts/Blackburrow/GeologistFribden.lua
@@ -30,6 +30,7 @@ function Progress(NPC, Spawn)
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden008.mp3", 3978965868, 3637464686)
Dialog.AddOption("Not yet.")
Dialog.AddDialog("Well then. You recovered the rock samples I lost?")
+ Dialog.Start()
end
function Option0(NPC, Spawn)
@@ -38,6 +39,7 @@ function Option0(NPC, Spawn)
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden001.mp3", 2146454780, 3217102942)
Dialog.AddOption("What are you doing down here?", "Option1")
Dialog.AddOption("I'll keep an eye out.")
+ Dialog.Start()
end
function Option1(NPC, Spawn)
@@ -46,6 +48,7 @@ function Option1(NPC, Spawn)
Dialog.AddDialog("Why, isn't it obvious? Wilabus and I are studying the structure and mineral constitution of Antonica ... Perhaps it's not so obvious, you appear to be one of those adventuring types, am I right?")
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden005.mp3", 4214643568, 2530978770)
Dialog.AddOption("[continue]", "Option2")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
@@ -55,6 +58,7 @@ function Option2(NPC, Spawn)
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden006.mp3", 2444720403, 3772890138)
Dialog.AddOption("I can for a price.", "offer")
Dialog.AddOption("No can do. ")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
@@ -63,6 +67,7 @@ function Option3(NPC, Spawn)
Dialog.AddDialog("Good to see you again, my adventurous friend. I see you've recovered my samples. It would have taken me weeks to replace them. I'm truly in your debt.")
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden010.mp3", 2842935841, 2634256248)
Dialog.AddOption("Pay me and we'll be square. ", "Option4")
+ Dialog.Start()
end
@@ -73,6 +78,7 @@ function Option4(NPC, Spawn)
Dialog.AddDialog("Of course, accept these gems as compensation for your efforts. It has been an honor to make your acquaintance. May whatever faith guide you, shine evermore brightly.")
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden011.mp3", 3464640416, 2538518646)
Dialog.AddOption("Thanks.")
+ Dialog.Start()
end
@@ -82,6 +88,7 @@ function Finished(NPC, Spawn)
Dialog.AddDialog("These gnolls are quite adept at mining. I would even venture to say their mining skills surpass those of the dwarves.")
Dialog.AddVoiceover("voiceover/english/geologist_fribden/blackburrow/geologist_fribden012.mp3", 293315046, 2022548794)
Dialog.AddOption("You don't say.")
+ Dialog.Start()
end
diff --git a/server/SpawnScripts/Blackburrow/InstructorGnarth.lua b/server/SpawnScripts/Blackburrow/InstructorGnarth.lua
new file mode 100755
index 000000000..80829d738
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/InstructorGnarth.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/InstructorGnarth.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.02 04:05:55
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothangler.lua b/server/SpawnScripts/Blackburrow/aSabertoothangler.lua
index bd49fcc89..6d056dc24 100755
--- a/server/SpawnScripts/Blackburrow/aSabertoothangler.lua
+++ b/server/SpawnScripts/Blackburrow/aSabertoothangler.lua
@@ -6,7 +6,8 @@
:
--]]
function spawn(NPC)
-VoiceBox(NPC)
+ VoiceBox(NPC)
+ ChooseMovement(NPC)
end
function VoiceBox(NPC)
@@ -23,4 +24,73 @@ end
function respawn(NPC)
spawn(NPC)
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 1, 2,math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 1, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 1, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothcommander.lua b/server/SpawnScripts/Blackburrow/aSabertoothcommander.lua
index 7626dd315..e312d6874 100755
--- a/server/SpawnScripts/Blackburrow/aSabertoothcommander.lua
+++ b/server/SpawnScripts/Blackburrow/aSabertoothcommander.lua
@@ -8,25 +8,6 @@
dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll3.lua")
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 7
- local hp1 = 1500
- local power1 = 475
- local difficulty2 = 7
- local hp2 = 1700
- local power2 = 500
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
end
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothexcavator.lua b/server/SpawnScripts/Blackburrow/aSabertoothexcavator.lua
index 55c262bd2..13a6d5f7f 100755
--- a/server/SpawnScripts/Blackburrow/aSabertoothexcavator.lua
+++ b/server/SpawnScripts/Blackburrow/aSabertoothexcavator.lua
@@ -8,6 +8,7 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
function spawn(NPC)
+ AddTimer(NPC,math.random(2500,6000),"AttackRocks")
end
@@ -17,4 +18,11 @@ end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10784)
+ end
+ AddTimer(NPC, math.random(3000,6000), "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothexcavatorMining.lua b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorMining.lua
new file mode 100755
index 000000000..4c06fbf03
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorMining.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothexcavatorMining.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.26 09:04:36
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+
+
+function spawn(NPC)
+ AddTimer(NPC,math.random(2500,6000),"AttackRocks")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10784)
+ end
+ AddTimer(NPC, math.random(3000,6000), "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothexcavatorNoMining.lua b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorNoMining.lua
new file mode 100755
index 000000000..f4e26360d
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorNoMining.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothexcavatorNoMining.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.28 09:04:42
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ --AddTimer(NPC,math.random(2500,6000),"AttackRocks")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10784)
+ end
+ AddTimer(NPC, math.random(3000,6000), "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothexcavatorPath1.lua b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorPath1.lua
new file mode 100755
index 000000000..dd57c57a1
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorPath1.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothexcavatorPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.01 04:05:00
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 6.72, -9.8, -86.56, 2, 0)
+ MovementLoopAddLocation(NPC, 9.15, -9.73, -88.18, 2, 0)
+ MovementLoopAddLocation(NPC, 11.54, -9.84, -89, 2, 0)
+ MovementLoopAddLocation(NPC, 12.74, -9.73, -88.06, 2, 0)
+ MovementLoopAddLocation(NPC, 15.77, -9.65, -84.56, 2, 0)
+ MovementLoopAddLocation(NPC, 18.15, -9.13, -79.98, 2, 0)
+ MovementLoopAddLocation(NPC, 19.77, -8.5, -77.55, 2, 0)
+ MovementLoopAddLocation(NPC, 20.81, -7.18, -75.09, 2, 0)
+ MovementLoopAddLocation(NPC, 24, -6.42, -71.68, 2, 0)
+ MovementLoopAddLocation(NPC, 25.68, -4.26, -64.34, 2, 0)
+ MovementLoopAddLocation(NPC, 22.47, -4.27, -62.78, 2, 0)
+ MovementLoopAddLocation(NPC, 21.69, -4.35, -60.53, 2, 0)
+ MovementLoopAddLocation(NPC, 22.38, -4.27, -59.72, 2, 0)
+ MovementLoopAddLocation(NPC, 22, -4.26, -62.78, 2, 0)
+ MovementLoopAddLocation(NPC, 24.96, -4.23, -63.42, 2, 0)
+ MovementLoopAddLocation(NPC, 27.62, -3.86, -62.86, 2, 0)
+ MovementLoopAddLocation(NPC, 28.74, -3.41, -60.65, 2, 0)
+ MovementLoopAddLocation(NPC, 34.29, -2.56, -58.69, 2, 0)
+ MovementLoopAddLocation(NPC, 38.2, -1.81, -55.77, 2, 0)
+ MovementLoopAddLocation(NPC, 39.25, -1.45, -53, 2, 0)
+ MovementLoopAddLocation(NPC, 38.49, -1.05, -50.19, 2, 0)
+ MovementLoopAddLocation(NPC, 39.1, -1.38, -52.67, 2, 0)
+ MovementLoopAddLocation(NPC, 37.95, -1.82, -55.9, 2, 0)
+ MovementLoopAddLocation(NPC, 35.29, -2.31, -57.9, 2, 0)
+ MovementLoopAddLocation(NPC, 29.63, -3.28, -60.19, 2, 0)
+ MovementLoopAddLocation(NPC, 27.36, -3.78, -62.12, 2, 0)
+ MovementLoopAddLocation(NPC, 23.82, -4.25, -63.35, 2, 0)
+ MovementLoopAddLocation(NPC, 22.31, -4.12, -62.5, 2, 0)
+ MovementLoopAddLocation(NPC, 22.7, -4.25, -60.57, 2, 0)
+ MovementLoopAddLocation(NPC, 27.59, -3.56, -61.58, 2, 0)
+ MovementLoopAddLocation(NPC, 26.24, -4.36, -65.4, 2, 0)
+ MovementLoopAddLocation(NPC, 25.81, -4.96, -67.36, 2, 0)
+ MovementLoopAddLocation(NPC, 24.22, -6.4, -71.18, 2, 0)
+ MovementLoopAddLocation(NPC, 21.29, -6.86, -74.29, 2, 0)
+ MovementLoopAddLocation(NPC, 19.64, -8.58, -77.73, 2, 0)
+ MovementLoopAddLocation(NPC, 17.71, -9.28, -80.79, 2, 0)
+ MovementLoopAddLocation(NPC, 16.82, -9.63, -83.88, 2, 0)
+ MovementLoopAddLocation(NPC, 14.92, -9.77, -86.93, 2, 0)
+ MovementLoopAddLocation(NPC, 12.88, -9.89, -88.94, 2, 0)
+ MovementLoopAddLocation(NPC, 9.73, -9.84, -87.53, 2, 0)
+ MovementLoopAddLocation(NPC, 6.72, -9.8, -86.56, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothexcavatorPath2.lua b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorPath2.lua
new file mode 100755
index 000000000..e16b4dc5a
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothexcavatorPath2.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothexcavatorPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.01 09:05:42
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -25.45, -7.53, -71.37, 2, 0)
+ MovementLoopAddLocation(NPC, -23.65, -7.52, -70.61, 2, 0)
+ MovementLoopAddLocation(NPC, -22.72, -7.51, -68.48, 2, 0)
+ MovementLoopAddLocation(NPC, -21.85, -7.61, -64.59, 2, 0)
+ MovementLoopAddLocation(NPC, -18.79, -7.52, -62.22, 2, 0)
+ MovementLoopAddLocation(NPC, -16.54, -7.41, -62.09, 2, 0)
+ MovementLoopAddLocation(NPC, -13.95, -7.36, -62.58, 2, 0)
+ MovementLoopAddLocation(NPC, -9.51, -7.34, -63.31, 2, 0)
+ MovementLoopAddLocation(NPC, -2.62, -7.21, -63.93, 2, 0)
+ MovementLoopAddLocation(NPC, 8.97, -5.74, -62.73, 2, 0)
+ MovementLoopAddLocation(NPC, 15.26, -4.83, -62.3, 2, 0)
+ MovementLoopAddLocation(NPC, 20.52, -4.34, -62.11, 2, 0)
+ MovementLoopAddLocation(NPC, 21.56, -4.51, -64.5, 2, 0)
+ MovementLoopAddLocation(NPC, 20.6, -5.29, -66.6, 2, 0)
+ MovementLoopAddLocation(NPC, 18.59, -5.89, -66.6, 2, 0)
+ MovementLoopAddLocation(NPC, 14.94, -6.56, -67.06, 2, 0)
+ MovementLoopAddLocation(NPC, 12.21, -7.01, -66.74, 2, 0)
+ MovementLoopAddLocation(NPC, 9.98, -8.55, -67.01, 2, 0)
+ MovementLoopAddLocation(NPC, 6.13, -8.59, -67.71, 2, 0)
+ MovementLoopAddLocation(NPC, 9.24, -8.61, -67.29, 2, 0)
+ MovementLoopAddLocation(NPC, 11.07, -7.76, -67.1, 2, 0)
+ MovementLoopAddLocation(NPC, 15.87, -6.24, -66.32, 2, 0)
+ MovementLoopAddLocation(NPC, 18.84, -5.8, -66.82, 2, 0)
+ MovementLoopAddLocation(NPC, 21.1, -5.06, -66.2, 2, 0)
+ MovementLoopAddLocation(NPC, 21.32, -4.53, -64.29, 2, 0)
+ MovementLoopAddLocation(NPC, 19.76, -4.42, -62.22, 2, 0)
+ MovementLoopAddLocation(NPC, 10.58, -5.46, -62.48, 2, 0)
+ MovementLoopAddLocation(NPC, -0.53, -7.1, -63.71, 2, 0)
+ MovementLoopAddLocation(NPC, -7.82, -7.33, -63.52, 2, 0)
+ MovementLoopAddLocation(NPC, -12.98, -7.35, -62.63, 2, 0)
+ MovementLoopAddLocation(NPC, -17.03, -7.47, -61.81, 2, 0)
+ MovementLoopAddLocation(NPC, -19.83, -7.5, -62.5, 2, 0)
+ MovementLoopAddLocation(NPC, -21.05, -7.58, -64.14, 2, 0)
+ MovementLoopAddLocation(NPC, -21.81, -7.5, -67.37, 2, 0)
+ MovementLoopAddLocation(NPC, -23.13, -7.52, -69.77, 2, 0)
+ MovementLoopAddLocation(NPC, -24.68, -7.53, -70.67, 2, 0)
+ MovementLoopAddLocation(NPC, -25.62, -7.53, -71.06, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothminer.lua b/server/SpawnScripts/Blackburrow/aSabertoothminer.lua
index f53772ba3..9c63b2d32 100755
--- a/server/SpawnScripts/Blackburrow/aSabertoothminer.lua
+++ b/server/SpawnScripts/Blackburrow/aSabertoothminer.lua
@@ -10,6 +10,7 @@
local TheChomper = 5696
function spawn(NPC)
+ AddTimer(NPC,math.random(2500,6000),"AttackRocks")
end
@@ -25,4 +26,11 @@ function death(NPC, Spawn)
if QuestIsComplete(Spawn, TheChomper) or HasItem(Spawn, 1285) then
RemoveLootItem(NPC, 1285)
end
-end
\ No newline at end of file
+end
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10784)
+ end
+ AddTimer(NPC, math.random(3000,6000), "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothminer15-16.lua b/server/SpawnScripts/Blackburrow/aSabertoothminer15-16.lua
new file mode 100755
index 000000000..94a4be1f7
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothminer15-16.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothminer15-16.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.27 08:04:59
+ Script Purpose :
+ :
+--]]
+
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+
+ local TheChomper = 5696
+
+function spawn(NPC)
+ local Level = math.random(15,16)
+ local level1 = 15
+ local level2 = 16
+ local difficulty1 = 8
+ local hp1 = 1905
+ local power1 = 640
+ local difficulty2 = 8
+ local hp2 = 2180
+ local power2 = 670
+ if Level == level1 then
+ SpawnSet(NPC, "level", level)
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "level", level)
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+
+
+
+ AddTimer(NPC,math.random(2500,6000),"AttackRocks")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC, Spawn)
+if QuestIsComplete(Spawn, TheChomper) or HasItem(Spawn, 1285) then
+RemoveLootItem(NPC, 1285)
+ end
+end
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10784)
+ end
+ AddTimer(NPC, math.random(3000,6000), "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothminerNoMining.lua b/server/SpawnScripts/Blackburrow/aSabertoothminerNoMining.lua
new file mode 100755
index 000000000..1ae6afa84
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothminerNoMining.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothminerNoMining.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.04.26 09:04:19
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+
+ local TheChomper = 5696
+
+function spawn(NPC)
+ --AddTimer(NPC,math.random(2500,6000),"AttackRocks")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC, Spawn)
+if QuestIsComplete(Spawn, TheChomper) or HasItem(Spawn, 1285) then
+RemoveLootItem(NPC, 1285)
+ end
+end
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10784)
+ end
+ AddTimer(NPC, math.random(3000,6000), "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothminerPath1.lua b/server/SpawnScripts/Blackburrow/aSabertoothminerPath1.lua
new file mode 100755
index 000000000..ebc84c413
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothminerPath1.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothminerPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.01 04:05:17
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+
+local TheChomper = 5696
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 58.04, -5.25, -67.93, 2, 6)
+ MovementLoopAddLocation(NPC, 59.69, -5.2, -75.99, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 65.36, -5.24, -70.52, 2, 0)
+ MovementLoopAddLocation(NPC, 65.53, -5.32, -69.64, 2, 0)
+ MovementLoopAddLocation(NPC, 65.53, -5.32, -69.64, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 57.71, -5.2, -72.71, 2, 0)
+ MovementLoopAddLocation(NPC, 57.71, -5.2, -72.71, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 60.77, -5.2, -73.78, 2, 0)
+ MovementLoopAddLocation(NPC, 60.77, -5.2, -73.78, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 65.96, -5.2, -75.65, 2, 0)
+ MovementLoopAddLocation(NPC, 65.96, -5.2, -75.65, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 63.94, -5.2, -71.74, 2, 0)
+ MovementLoopAddLocation(NPC, 61, -5.2, -71.33, 2, 0)
+ MovementLoopAddLocation(NPC, 61, -5.2, -71.33, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 66.59, -5.2, -76.01, 2, 0)
+ MovementLoopAddLocation(NPC, 66.59, -5.2, -76.01, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 61.26, -5.2, -74.54, 2, 0)
+ MovementLoopAddLocation(NPC, 61.26, -5.2, -74.54, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 58.46, -5.3, -68.13, 2, 0)
+ MovementLoopAddLocation(NPC, 58.46, -5.3, -68.13, 2, math.random(6,9))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothminerPath2.lua b/server/SpawnScripts/Blackburrow/aSabertoothminerPath2.lua
new file mode 100755
index 000000000..ed9d160a5
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothminerPath2.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothminerPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.01 04:05:57
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+
+local TheChomper = 5696
+
+
+function spawn(NPC)
+
+AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 16.22, -9.73, -88.86, 2, 6)
+ MovementLoopAddLocation(NPC, 9.96, -9.73, -89.47, 2, 0)
+ MovementLoopAddLocation(NPC, 9.96, -9.73, -89.47, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 10.59, -9.64, -87.36, 2, 0)
+ MovementLoopAddLocation(NPC, 10.59, -9.64, -87.36, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 12.39, -9.73, -87.62, 2, 0)
+ MovementLoopAddLocation(NPC, 12.39, -9.73, -87.62, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 16.89, -9.73, -88.04, 2, 0)
+ MovementLoopAddLocation(NPC, 16.89, -9.73, -88.04, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 16.82, -9.71, -86.03, 2, 0)
+ MovementLoopAddLocation(NPC, 16.82, -9.71, -86.03, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 16.25, -9.73, -87.21, 2, 0)
+ MovementLoopAddLocation(NPC, 13.75, -9.89, -87.46, 2, 0)
+ MovementLoopAddLocation(NPC, 13.75, -9.89, -87.46, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 13.05, -9.69, -85.21, 2, 0)
+ MovementLoopAddLocation(NPC, 13.05, -9.69, -85.21, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 12.44, -9.41, -85.75, 2, 0)
+ MovementLoopAddLocation(NPC, 13.51, -9.86, -89.83, 2, 0)
+ MovementLoopAddLocation(NPC, 13.51, -9.86, -89.83, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 15.53, -9.73, -87.26, 2, 0)
+ MovementLoopAddLocation(NPC, 15.53, -9.73, -87.26, 2, math.random(6,9))
+ MovementLoopAddLocation(NPC, 13.79, -9.77, -88.4, 2, 0)
+ MovementLoopAddLocation(NPC, 13.79, -9.77, -88.4, 2, math.random(6,9))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothoracle.lua b/server/SpawnScripts/Blackburrow/aSabertoothoracle.lua
index 3100d58d0..de2b67d1e 100755
--- a/server/SpawnScripts/Blackburrow/aSabertoothoracle.lua
+++ b/server/SpawnScripts/Blackburrow/aSabertoothoracle.lua
@@ -6,25 +6,6 @@
:
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 7
- local hp1 = 1450
- local power1 = 475
- local difficulty2 = 7
- local hp2 = 1650
- local power2 = 500
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
VoiceBox(NPC)
end
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothoracleSleep.lua b/server/SpawnScripts/Blackburrow/aSabertoothoracleSleep.lua
new file mode 100755
index 000000000..019d93aeb
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothoracleSleep.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothoracleSleep.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.10 08:05:17
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SpawnSet(NPC, "visual_state", 228)
+ VoiceBox(NPC)
+end
+
+function VoiceBox(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+ elseif choice == 2 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll3.lua")
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function attacked(NPC, Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+end
+
+function aggro(NPC, Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothsentry.lua b/server/SpawnScripts/Blackburrow/aSabertoothsentry.lua
index 1f74fb4d9..8364fd8ec 100755
--- a/server/SpawnScripts/Blackburrow/aSabertoothsentry.lua
+++ b/server/SpawnScripts/Blackburrow/aSabertoothsentry.lua
@@ -8,25 +8,6 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 9
- local hp1 = 3150
- local power1 = 1350
- local difficulty2 = 9
- local hp2 = 3485
- local power2 = 1350
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
end
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothsentryPath1.lua b/server/SpawnScripts/Blackburrow/aSabertoothsentryPath1.lua
new file mode 100755
index 000000000..adc716283
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothsentryPath1.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothsentryPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.03 08:05:55
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -11.99, -12.58, 15.17, 2, 0)
+ MovementLoopAddLocation(NPC, -11.99, -12.58, 15.17, 2, 0)
+ MovementLoopAddLocation(NPC, -15.23, -12.83, 16.25, 2, 0)
+ MovementLoopAddLocation(NPC, -18.58, -13.39, 17.72, 2, 0)
+ MovementLoopAddLocation(NPC, -22.57, -13.91, 18.12, 2, 0)
+ MovementLoopAddLocation(NPC, -30.57, -15.54, 15.94, 2, 0)
+ MovementLoopAddLocation(NPC, -34.12, -16.23, 16.53, 2, 0)
+ MovementLoopAddLocation(NPC, -37.22, -16.76, 16.33, 2, 0)
+ MovementLoopAddLocation(NPC, -42.94, -17.22, 7.59, 2, 0)
+ MovementLoopAddLocation(NPC, -45.97, -17.92, 4.45, 2, 0)
+ MovementLoopAddLocation(NPC, -50.14, -18.42, 4.99, 2, 0)
+ MovementLoopAddLocation(NPC, -54.97, -18.51, 9.23, 2, 0)
+ MovementLoopAddLocation(NPC, -55.83, -18.45, 13.12, 2, 0)
+ MovementLoopAddLocation(NPC, -55.11, -18.68, 17.13, 2, 0)
+ MovementLoopAddLocation(NPC, -55.26, -18.41, 19.1, 2, 0)
+ MovementLoopAddLocation(NPC, -52.83, -18.22, 20.91, 2, 0)
+ MovementLoopAddLocation(NPC, -46.08, -17.94, 22.57, 2, 0)
+ MovementLoopAddLocation(NPC, -42.76, -17.57, 20.03, 2, 0)
+ MovementLoopAddLocation(NPC, -42.07, -17.7, 18.08, 2, 0)
+ MovementLoopAddLocation(NPC, -46.13, -17.58, 12.18, 2, 0)
+ MovementLoopAddLocation(NPC, -44.57, -17.98, -1.63, 2, 0)
+ MovementLoopAddLocation(NPC, -46.06, -17.57, 12.07, 2, 0)
+ MovementLoopAddLocation(NPC, -42.36, -17.68, 17.52, 2, 0)
+ MovementLoopAddLocation(NPC, -42.54, -17.55, 19.98, 2, 0)
+ MovementLoopAddLocation(NPC, -45.56, -17.88, 21.79, 2, 0)
+ MovementLoopAddLocation(NPC, -50.89, -18.16, 21.61, 2, 0)
+ MovementLoopAddLocation(NPC, -51.94, -18.19, 21.17, 2, 0)
+ MovementLoopAddLocation(NPC, -54.64, -18.51, 18.33, 2, 0)
+ MovementLoopAddLocation(NPC, -56.2, -18.45, 11.63, 2, 0)
+ MovementLoopAddLocation(NPC, -54.38, -18.41, 8.1, 2, 0)
+ MovementLoopAddLocation(NPC, -50.94, -18.48, 4.87, 2, 0)
+ MovementLoopAddLocation(NPC, -46.27, -18.03, 4.06, 2, 0)
+ MovementLoopAddLocation(NPC, -40.1, -16.84, 11.83, 2, 0)
+ MovementLoopAddLocation(NPC, -39.78, -16.81, 13.43, 2, 0)
+ MovementLoopAddLocation(NPC, -38.32, -16.87, 15.76, 2, 0)
+ MovementLoopAddLocation(NPC, -30.57, -15.54, 15.94, 2, 0)
+ MovementLoopAddLocation(NPC, -26.79, -14.74, 18.26, 2, 0)
+ MovementLoopAddLocation(NPC, -17.17, -13.23, 17.66, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothsentryPath2.lua b/server/SpawnScripts/Blackburrow/aSabertoothsentryPath2.lua
new file mode 100755
index 000000000..d52cbd756
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothsentryPath2.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothsentryPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.03 08:05:48
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -58.11, -17.15, 65.23, 2, 0)
+ MovementLoopAddLocation(NPC, -55.42, -17.23, 63.93, 2, 0)
+ MovementLoopAddLocation(NPC, -51.58, -16.92, 63.15, 2, 0)
+ MovementLoopAddLocation(NPC, -41.14, -15.91, 57.67, 2, 0)
+ MovementLoopAddLocation(NPC, -36.01, -15.55, 54.76, 2, 0)
+ MovementLoopAddLocation(NPC, -33.8, -15, 52.22, 2, 0)
+ MovementLoopAddLocation(NPC, -27.22, -14.56, 46.65, 2, 0)
+ MovementLoopAddLocation(NPC, -26.04, -14.46, 44.76, 2, 0)
+ MovementLoopAddLocation(NPC, -24.53, -14.4, 44.28, 2, 0)
+ MovementLoopAddLocation(NPC, -22.01, -14.42, 44.57, 2, 0)
+ MovementLoopAddLocation(NPC, -19.83, -14.37, 46, 2, 0)
+ MovementLoopAddLocation(NPC, -21.1, -14.38, 45.17, 2, 0)
+ MovementLoopAddLocation(NPC, -23.37, -14.42, 44.39, 2, 0)
+ MovementLoopAddLocation(NPC, -25.11, -14.47, 45.23, 2, 0)
+ MovementLoopAddLocation(NPC, -28.76, -14.69, 48.18, 2, 0)
+ MovementLoopAddLocation(NPC, -35.17, -15.41, 54.08, 2, 0)
+ MovementLoopAddLocation(NPC, -40.41, -15.84, 57.5, 2, 0)
+ MovementLoopAddLocation(NPC, -47.34, -16.57, 61.12, 2, 0)
+ MovementLoopAddLocation(NPC, -48.5, -16.73, 62.3, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothsentryPath3.lua b/server/SpawnScripts/Blackburrow/aSabertoothsentryPath3.lua
new file mode 100755
index 000000000..dcecb5de6
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothsentryPath3.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothsentryPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.03 08:05:04
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -19.87, -16.25, 81.71, 2, 0)
+ MovementLoopAddLocation(NPC, -17.26, -16.23, 75.4, 2, 0)
+ MovementLoopAddLocation(NPC, -14.03, -16.09, 68.12, 2, 0)
+ MovementLoopAddLocation(NPC, -4.68, -15.27, 66.09, 2, 0)
+ MovementLoopAddLocation(NPC, 13.14, -15.5, 63.72, 2, 0)
+ MovementLoopAddLocation(NPC, 3.56, -15.63, 64.35, 2, 0)
+ MovementLoopAddLocation(NPC, 3.56, -15.63, 64.35, 2, 0)
+ MovementLoopAddLocation(NPC, 0.78, -15.59, 65.47, 2, 0)
+ MovementLoopAddLocation(NPC, -12.69, -15.99, 66.33, 2, 0)
+ MovementLoopAddLocation(NPC, -12.84, -15.63, 60.07, 2, 0)
+ MovementLoopAddLocation(NPC, -10.57, -15.18, 54.13, 2, 0)
+ MovementLoopAddLocation(NPC, -14.43, -14.35, 43.17, 2, 0)
+ MovementLoopAddLocation(NPC, -15.42, -13.93, 38.9, 2, 0)
+ MovementLoopAddLocation(NPC, -17.71, -13.61, 35.78, 2, 0)
+ MovementLoopAddLocation(NPC, -17.07, -13.06, 28.58, 2, 0)
+ MovementLoopAddLocation(NPC, -16.94, -13.71, 36.74, 2, 0)
+ MovementLoopAddLocation(NPC, -14.77, -14.08, 40.6, 2, 0)
+ MovementLoopAddLocation(NPC, -11.76, -15.03, 50.58, 2, 0)
+ MovementLoopAddLocation(NPC, -10.07, -15.09, 52.89, 2, 0)
+ MovementLoopAddLocation(NPC, -12.83, -15.71, 61.07, 2, 0)
+ MovementLoopAddLocation(NPC, -12.95, -15.95, 64.97, 2, 0)
+ MovementLoopAddLocation(NPC, -7.83, -15.3, 65.9, 2, 0)
+ MovementLoopAddLocation(NPC, 2.95, -15.65, 64.97, 2, 0)
+ MovementLoopAddLocation(NPC, 6.18, -15.54, 63.91, 2, 0)
+ MovementLoopAddLocation(NPC, 13.31, -15.5, 63.11, 2, 0)
+ MovementLoopAddLocation(NPC, -0.79, -15.51, 65.37, 2, 0)
+ MovementLoopAddLocation(NPC, -2.03, -15.42, 66.04, 2, 0)
+ MovementLoopAddLocation(NPC, -8.01, -15.32, 66.38, 2, 0)
+ MovementLoopAddLocation(NPC, -14, -16.09, 67.9, 2, 0)
+ MovementLoopAddLocation(NPC, -16.47, -16.22, 74.2, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothtacticianPath1.lua b/server/SpawnScripts/Blackburrow/aSabertoothtacticianPath1.lua
new file mode 100755
index 000000000..046f2b9f6
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothtacticianPath1.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothtacticianPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.11 04:05:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+ VoiceBox(NPC)
+end
+
+function VoiceBox(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+ elseif choice == 2 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll3.lua")
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -57.53, -17.31, 63, 2, 0)
+ MovementLoopAddLocation(NPC, -57.53, -17.31, 63, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -52.77, -17.03, 64.92, 2, 0)
+ MovementLoopAddLocation(NPC, -53.97, -17.1, 66.24, 2, 0)
+ MovementLoopAddLocation(NPC, -53.97, -17.1, 66.24, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -62.35, -17.2, 65.14, 2, 0)
+ MovementLoopAddLocation(NPC, -62.35, -17.2, 65.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -54.12, -16.99, 62.1, 2, 0)
+ MovementLoopAddLocation(NPC, -54.12, -16.99, 62.1, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -63.01, -17.27, 63.26, 2, 0)
+ MovementLoopAddLocation(NPC, -63.01, -17.27, 63.26, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -55.26, -17.21, 64.09, 2, 0)
+ MovementLoopAddLocation(NPC, -55.26, -17.21, 64.09, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -53.26, -16.96, 62.06, 2, 0)
+ MovementLoopAddLocation(NPC, -53.26, -16.96, 62.06, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -62.2, -17.2, 66.17, 2, 0)
+ MovementLoopAddLocation(NPC, -62.2, -17.2, 66.17, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -55.38, -17.1, 65.19, 2, 0)
+ MovementLoopAddLocation(NPC, -55.38, -17.1, 65.19, 2, math.random(5,10))
+end
+
+
diff --git a/server/SpawnScripts/Blackburrow/aSabertoothtacticianSleep.lua b/server/SpawnScripts/Blackburrow/aSabertoothtacticianSleep.lua
new file mode 100755
index 000000000..6e78b1956
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aSabertoothtacticianSleep.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aSabertoothtacticianSleep.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.10 08:05:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SpawnSet(NPC, "visual_state", 228)
+ VoiceBox(NPC)
+end
+
+function VoiceBox(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+ elseif choice == 2 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll3.lua")
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function attacked(NPC, Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+end
+
+function aggro(NPC, Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/ablightfangbroodtender.lua b/server/SpawnScripts/Blackburrow/ablightfangbroodtender.lua
index 0aff447f7..9f7ae2127 100755
--- a/server/SpawnScripts/Blackburrow/ablightfangbroodtender.lua
+++ b/server/SpawnScripts/Blackburrow/ablightfangbroodtender.lua
@@ -7,25 +7,6 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 8
- local hp1 = 2460
- local power1 = 725
- local difficulty2 = 8
- local hp2 = 2770
- local power2 = 805
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
end
diff --git a/server/SpawnScripts/Blackburrow/ablightfanghatchling.lua b/server/SpawnScripts/Blackburrow/ablightfanghatchling.lua
index ed4d2f80e..cb5e472eb 100755
--- a/server/SpawnScripts/Blackburrow/ablightfanghatchling.lua
+++ b/server/SpawnScripts/Blackburrow/ablightfanghatchling.lua
@@ -7,25 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 18
- local level2 = 19
- local difficulty1 = 5
- local hp1 = 900
- local power1 = 230
- local difficulty2 = 6
- local hp2 = 930
- local power2 = 270
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+
end
diff --git a/server/SpawnScripts/Blackburrow/ablightfangspider.lua b/server/SpawnScripts/Blackburrow/ablightfangspider.lua
index efd67721c..a588f8f0a 100755
--- a/server/SpawnScripts/Blackburrow/ablightfangspider.lua
+++ b/server/SpawnScripts/Blackburrow/ablightfangspider.lua
@@ -7,25 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 17
- local level2 = 18
- local difficulty1 = 9
- local hp1 = 4030
- local power1 = 1670
- local difficulty2 = 9
- local hp2 = 4410
- local power2 = 1670
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+
end
diff --git a/server/SpawnScripts/Blackburrow/aburlySabertoothPath1.lua b/server/SpawnScripts/Blackburrow/aburlySabertoothPath1.lua
new file mode 100755
index 000000000..b34dd3a42
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aburlySabertoothPath1.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aburlySabertoothPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.02 08:05:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -21.01, -11.72, -23.41, 2, 0)
+ MovementLoopAddLocation(NPC, -21.01, -11.72, -23.41, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -14.3, -11.29, -15.52, 2, 0)
+ MovementLoopAddLocation(NPC, -14.3, -11.29, -15.52, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -10.43, -12, -15.91, 2, 0)
+ MovementLoopAddLocation(NPC, -6.77, -12.24, -16.97, 2, 0)
+ MovementLoopAddLocation(NPC, -6.77, -12.24, -16.97, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -5.93, -12.04, -6.18, 2, 0)
+ MovementLoopAddLocation(NPC, -9.28, -12.2, -9.14, 2, 0)
+ MovementLoopAddLocation(NPC, -10.33, -12.2, -11.55, 2, 0)
+ MovementLoopAddLocation(NPC, -11.06, -12.2, -10.54, 2, 0)
+ MovementLoopAddLocation(NPC, -11.06, -12.2, -10.54, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -19.13, -12.33, -17.48, 2, 0)
+ MovementLoopAddLocation(NPC, -19.13, -12.33, -17.48, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -19.04, -12.01, -25.74, 2, 0)
+ MovementLoopAddLocation(NPC, -19.04, -12.01, -25.74, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -18.2, -11.77, -28.96, 2, 0)
+ MovementLoopAddLocation(NPC, -18.2, -11.77, -28.96, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -15.64, -11.65, -27.79, 2, 0)
+ MovementLoopAddLocation(NPC, -8.73, -12.2, -16.41, 2, 0)
+ MovementLoopAddLocation(NPC, -8.73, -12.2, -16.41, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aburlySabertoothPath2.lua b/server/SpawnScripts/Blackburrow/aburlySabertoothPath2.lua
new file mode 100755
index 000000000..3e06727f7
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/aburlySabertoothPath2.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/aburlySabertoothPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.02 08:05:32
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -4.16, -12.15, -8.11, 2, 0)
+ MovementLoopAddLocation(NPC, -4.16, -12.15, -8.11, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -3.73, -12.21, -11.39, 2, 0)
+ MovementLoopAddLocation(NPC, -7.97, -12.28, -16.29, 2, 0)
+ MovementLoopAddLocation(NPC, -7.97, -12.28, -16.29, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -14.94, -11.63, -25.76, 2, 0)
+ MovementLoopAddLocation(NPC, -14.94, -11.63, -25.76, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -11.69, -12.09, -20.11, 2, 0)
+ MovementLoopAddLocation(NPC, -11.69, -12.09, -20.11, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -18.4, -11.83, -28.76, 2, 0)
+ MovementLoopAddLocation(NPC, -18.4, -11.83, -28.76, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -15.48, -11.58, -28.07, 2, 0)
+ MovementLoopAddLocation(NPC, -12.38, -11.9, -23.18, 2, 0)
+ MovementLoopAddLocation(NPC, -10.52, -11.8, -22.38, 2, 0)
+ MovementLoopAddLocation(NPC, -9.44, -11.85, -20.57, 2, 0)
+ MovementLoopAddLocation(NPC, -9.44, -11.85, -20.57, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -11.7, -12.08, -20.57, 2, 0)
+ MovementLoopAddLocation(NPC, -6.01, -12.17, -12.07, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Blackburrow/acragrat.lua b/server/SpawnScripts/Blackburrow/acragrat.lua
index c594433e8..094752a10 100755
--- a/server/SpawnScripts/Blackburrow/acragrat.lua
+++ b/server/SpawnScripts/Blackburrow/acragrat.lua
@@ -7,25 +7,6 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 5
- local hp1 = 350
- local power1 = 125
- local difficulty2 = 5
- local hp2 = 440
- local power2 = 145
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Blackburrow/acrimsonconstrictor.lua b/server/SpawnScripts/Blackburrow/acrimsonconstrictor.lua
index 49fb9daa6..4e8e1265d 100755
--- a/server/SpawnScripts/Blackburrow/acrimsonconstrictor.lua
+++ b/server/SpawnScripts/Blackburrow/acrimsonconstrictor.lua
@@ -7,25 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 5
- local hp1 = 350
- local power1 = 125
- local difficulty2 = 5
- local hp2 = 440
- local power2 = 145
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+
end
diff --git a/server/SpawnScripts/Blackburrow/adarklasher.lua b/server/SpawnScripts/Blackburrow/adarklasher.lua
index 7741e6c4e..f37694da3 100755
--- a/server/SpawnScripts/Blackburrow/adarklasher.lua
+++ b/server/SpawnScripts/Blackburrow/adarklasher.lua
@@ -7,26 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 14
- local level2 = 15
- local difficulty1 = 6
- local hp1 = 795
- local power1 = 240
- local difficulty2 = 6
- local hp2 = 1045
- local power2 = 310
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+
end
function hailed(NPC, Spawn)
@@ -35,4 +16,6 @@ end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+
diff --git a/server/SpawnScripts/Blackburrow/adarklasherPath1.lua b/server/SpawnScripts/Blackburrow/adarklasherPath1.lua
new file mode 100755
index 000000000..65c577bdd
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/adarklasherPath1.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/adarklasherPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.03 07:05:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -13.79, -12.84, 18.13, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -13.79, -12.84, 18.13, 2, 0)
+ MovementLoopAddLocation(NPC, -33.34, -16.12, 18.35, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -33.34, -16.12, 18.35, 2, 0)
+ MovementLoopAddLocation(NPC, -17.05, -13.25, 17.97, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -17.05, -13.25, 17.97, 2, 0)
+ MovementLoopAddLocation(NPC, -18.15, -13.29, 18.9, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -18.15, -13.29, 18.9, 2, 0)
+ MovementLoopAddLocation(NPC, -32.2, -15.85, 15.53, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -32.2, -15.85, 15.53, 2, 0)
+ MovementLoopAddLocation(NPC, -28.77, -15.16, 16.25, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -28.77, -15.16, 16.25, 2, 0)
+ MovementLoopAddLocation(NPC, -23.63, -14.06, 20.05, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -23.63, -14.06, 20.05, 2, 0)
+ MovementLoopAddLocation(NPC, -28.56, -15.12, 17.33, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -28.56, -15.12, 17.33, 2, 0)
+ MovementLoopAddLocation(NPC, -27.56, -14.89, 20.29, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -27.56, -14.89, 20.29, 2, 0)
+ MovementLoopAddLocation(NPC, -18.74, -13.25, 16.49, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -18.74, -13.25, 16.49, 2, 0)
+end
diff --git a/server/SpawnScripts/Blackburrow/adarklasherPath2.lua b/server/SpawnScripts/Blackburrow/adarklasherPath2.lua
new file mode 100755
index 000000000..502a7052e
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/adarklasherPath2.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/adarklasherPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.11 07:05:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -41.05, -17.52, 22.56, 2, 0)
+ MovementLoopAddLocation(NPC, -39.37, -17.27, 20.51, 2, 0)
+ MovementLoopAddLocation(NPC, -52.02, -18.4, 5.94, 2, 0)
+ MovementLoopAddLocation(NPC, -52.02, -18.4, 5.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -48.96, -18.31, 4.03, 2, 0)
+ MovementLoopAddLocation(NPC, -48.96, -18.31, 4.03, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -43.53, -17.26, 7.83, 2, 0)
+ MovementLoopAddLocation(NPC, -43.53, -17.26, 7.83, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -46.45, -17.97, 22.31, 2, 0)
+ MovementLoopAddLocation(NPC, -46.45, -17.97, 22.31, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -51.61, -18.36, 2.18, 2, 0)
+ MovementLoopAddLocation(NPC, -51.61, -18.36, 2.18, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -42.52, -17.14, 8.81, 2, 0)
+ MovementLoopAddLocation(NPC, -42.52, -17.14, 8.81, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -45.71, -17.89, -1.7, 2, 0)
+ MovementLoopAddLocation(NPC, -45.71, -17.89, -1.7, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -48.42, -18.26, 17.05, 2, 0)
+ MovementLoopAddLocation(NPC, -48.42, -18.26, 17.05, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -43.74, -17.85, -0.73, 2, 0)
+ MovementLoopAddLocation(NPC, -43.74, -17.85, -0.73, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -40.06, -17.24, 18.22, 2, 0)
+ MovementLoopAddLocation(NPC, -40.62, -17.52, 21.73, 2, 0)
+ MovementLoopAddLocation(NPC, -40.62, -17.52, 21.73, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/afiercerazorgill.lua b/server/SpawnScripts/Blackburrow/afiercerazorgill.lua
index c6beaf401..6c343743e 100755
--- a/server/SpawnScripts/Blackburrow/afiercerazorgill.lua
+++ b/server/SpawnScripts/Blackburrow/afiercerazorgill.lua
@@ -27,6 +27,7 @@ function spawn(NPC)
SpawnSet(NPC, "power", power2)
end
+ ChooseMovement(NPC)
end
function hailed(NPC, Spawn)
@@ -35,4 +36,73 @@ end
function respawn(NPC)
spawn(NPC)
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1,math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/ahoardwatcher.lua b/server/SpawnScripts/Blackburrow/ahoardwatcher.lua
index e0bd21a28..42bd69fce 100755
--- a/server/SpawnScripts/Blackburrow/ahoardwatcher.lua
+++ b/server/SpawnScripts/Blackburrow/ahoardwatcher.lua
@@ -8,25 +8,7 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 7
- local hp1 = 1275
- local power1 = 400
- local difficulty2 = 7
- local hp2 = 1500
- local power2 = 475
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+
end
diff --git a/server/SpawnScripts/Blackburrow/arazorgill.lua b/server/SpawnScripts/Blackburrow/arazorgill.lua
index 55636f0f5..662d1d7e2 100755
--- a/server/SpawnScripts/Blackburrow/arazorgill.lua
+++ b/server/SpawnScripts/Blackburrow/arazorgill.lua
@@ -7,26 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 12
- local level2 = 13
- local difficulty1 = 6
- local hp1 = 550
- local power1 = 185
- local difficulty2 = 6
- local hp2 = 680
- local power2 = 205
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+ ChooseMovement(NPC)
end
function hailed(NPC, Spawn)
@@ -35,4 +16,73 @@ end
function respawn(NPC)
spawn(NPC)
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1,math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/aridgerat.lua b/server/SpawnScripts/Blackburrow/aridgerat.lua
index d47e3a739..8a2c8dfee 100755
--- a/server/SpawnScripts/Blackburrow/aridgerat.lua
+++ b/server/SpawnScripts/Blackburrow/aridgerat.lua
@@ -8,25 +8,6 @@
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 5
- local hp1 = 290
- local power1 = 105
- local difficulty2 = 5
- local hp2 = 250
- local power2 = 125
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Blackburrow/ascrawnySabertoothPath1.lua b/server/SpawnScripts/Blackburrow/ascrawnySabertoothPath1.lua
new file mode 100755
index 000000000..c1b4838a4
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/ascrawnySabertoothPath1.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/ascrawnySabertoothPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.02 02:05:10
+ Script Purpose :
+ :
+--]]
+
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1.89, 0.41, -14.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -3.7, 0.55, -17.5, 2, 0)
+ MovementLoopAddLocation(NPC, -3.7, 0.55, -17.5, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 2.19, 0.22, -16.38, 2, 0)
+ MovementLoopAddLocation(NPC, 2.19, 0.22, -16.38, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.92, 0, -15.93, 2, 0)
+ MovementLoopAddLocation(NPC, 7.9, 0.41, -18.41, 2, 0)
+ MovementLoopAddLocation(NPC, 7.9, 0.41, -18.41, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 0.24, 0.55, -19.47, 2, 0)
+ MovementLoopAddLocation(NPC, 0.24, 0.55, -19.47, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/ascrawnySabertoothPath2.lua b/server/SpawnScripts/Blackburrow/ascrawnySabertoothPath2.lua
new file mode 100755
index 000000000..4baf41f6e
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/ascrawnySabertoothPath2.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/ascrawnySabertoothPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.02 02:05:09
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 16.45, 0.43, -5.45, 2, 0)
+ MovementLoopAddLocation(NPC, 16.45, 0.43, -5.45, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 16.47, 0.55, -18.02, 2, 0)
+ MovementLoopAddLocation(NPC, 16.47, 0.55, -18.02, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 14.54, 0.44, -12.15, 2, 0)
+ MovementLoopAddLocation(NPC, 14.54, 0.44, -12.15, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 14.33, 0.03, -4.11, 2, 0)
+ MovementLoopAddLocation(NPC, 15.56, 0.39, -3.82, 2, 0)
+ MovementLoopAddLocation(NPC, 17.57, 0.49, -8.76, 2, 0)
+ MovementLoopAddLocation(NPC, 17.57, 0.49, -8.76, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 9.45, 0.54, -18.29, 2, 0)
+ MovementLoopAddLocation(NPC, 9.45, 0.54, -18.29, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 16.67, 0.55, -11.64, 2, 0)
+ MovementLoopAddLocation(NPC, 16.67, 0.55, -11.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 9.4, 0, -13.06, 2, 0)
+ MovementLoopAddLocation(NPC, 9.4, 0, -13.06, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 13.41, 0, -5.9, 2, 0)
+ MovementLoopAddLocation(NPC, 13.41, 0, -5.9, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 13.55, 0.02, -8.98, 2, 0)
+ MovementLoopAddLocation(NPC, 13.55, 0.02, -8.98, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 16.32, 0.35, -7.83, 2, 0)
+
+end
+
+
diff --git a/server/SpawnScripts/Blackburrow/astalwartSabertooth.lua b/server/SpawnScripts/Blackburrow/astalwartSabertooth.lua
index 2bef0cb56..97ac41d41 100755
--- a/server/SpawnScripts/Blackburrow/astalwartSabertooth.lua
+++ b/server/SpawnScripts/Blackburrow/astalwartSabertooth.lua
@@ -7,25 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 15
- local level2 = 16
- local difficulty1 = 7
- local hp1 = 1275
- local power1 = 400
- local difficulty2 = 7
- local hp2 = 1500
- local power2 = 425
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+
VoiceBox(NPC)
end
diff --git a/server/SpawnScripts/Blackburrow/astalwartSabertoothPath1.lua b/server/SpawnScripts/Blackburrow/astalwartSabertoothPath1.lua
new file mode 100755
index 000000000..7a8ab9511
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/astalwartSabertoothPath1.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/astalwartSabertoothPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.04 08:05:18
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ VoiceBox(NPC)
+ AddTimer(NPC,6000, "waypoints")
+end
+
+function VoiceBox(NPC)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+ elseif choice == 2 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+ elseif choice == 3 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 4.84, -15.58, 65.48, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.71, -15.61, 63.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1.94, -15.68, 63.72, 2, 0)
+ MovementLoopAddLocation(NPC, 1.94, -15.68, 63.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.8, -15.53, 65.49, 2, 0)
+ MovementLoopAddLocation(NPC, 7.8, -15.53, 65.49, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.16, -15.64, 65.56, 2, 0)
+ MovementLoopAddLocation(NPC, 3.16, -15.64, 65.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 4.15, -15.6, 66, 2, 0)
+ MovementLoopAddLocation(NPC, 10.32, -15.5, 62.59, 2, 0)
+ MovementLoopAddLocation(NPC, 10.32, -15.5, 62.59, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 4.41, -15.6, 68.22, 2, 0)
+ MovementLoopAddLocation(NPC, 5.4, -15.57, 65.57, 2, 0)
+ MovementLoopAddLocation(NPC, 5.4, -15.57, 65.57, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.47, -15.52, 62.6, 2, 0)
+ MovementLoopAddLocation(NPC, 7.47, -15.52, 62.6, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 5.3, -15.58, 67.04, 2, 0)
+ MovementLoopAddLocation(NPC, 5.3, -15.58, 67.04, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.45, -15.52, 60.67, 2, 0)
+ MovementLoopAddLocation(NPC, 7.45, -15.52, 60.67, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/astalwartSabertoothSCPath.lua b/server/SpawnScripts/Blackburrow/astalwartSabertoothSCPath.lua
new file mode 100755
index 000000000..95e095b9c
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/astalwartSabertoothSCPath.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/astalwartSabertoothSCPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.11 07:05:21
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+ VoiceBox(NPC)
+end
+
+function VoiceBox(NPC)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+ elseif choice == 2 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll1.lua")
+ elseif choice == 3 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll2.lua")
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -53.65, -18.46, 26.96, 2, 0)
+ MovementLoopAddLocation(NPC, -52.05, -18.19, 28.32, 2, 0)
+ MovementLoopAddLocation(NPC, -48.48, -17.95, 30.92, 2, 0)
+ MovementLoopAddLocation(NPC, -45.56, -17.72, 30.72, 2, 0)
+ MovementLoopAddLocation(NPC, -42.89, -17.63, 29.26, 2, 0)
+ MovementLoopAddLocation(NPC, -42.34, -17.58, 25.67, 2, 0)
+ MovementLoopAddLocation(NPC, -42.35, -17.57, 23.75, 2, 0)
+ MovementLoopAddLocation(NPC, -40.47, -17.51, 21.89, 2, 0)
+ MovementLoopAddLocation(NPC, -38.72, -17.13, 21.55, 2, 0)
+ MovementLoopAddLocation(NPC, -37.23, -16.9, 21.47, 2, 0)
+ MovementLoopAddLocation(NPC, -34.99, -16.59, 21.57, 2, 0)
+ MovementLoopAddLocation(NPC, -34.03, -16.46, 22.17, 2, 0)
+ MovementLoopAddLocation(NPC, -36.81, -16.81, 20.81, 2, 0)
+ MovementLoopAddLocation(NPC, -38.98, -17.19, 21.25, 2, 0)
+ MovementLoopAddLocation(NPC, -41.51, -17.52, 23.1, 2, 0)
+ MovementLoopAddLocation(NPC, -44.82, -17.69, 30.42, 2, 0)
+ MovementLoopAddLocation(NPC, -46.74, -17.83, 31.38, 2, 0)
+ MovementLoopAddLocation(NPC, -49.05, -18.06, 30.97, 2, 0)
+ MovementLoopAddLocation(NPC, -50.04, -18.1, 29.35, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/Blackburrow/astockpileprotectorPath1.lua b/server/SpawnScripts/Blackburrow/astockpileprotectorPath1.lua
new file mode 100755
index 000000000..38e0a8ccf
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/astockpileprotectorPath1.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/astockpileprotectorPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.04 08:05:44
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ VoiceBox(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function VoiceBox(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+ elseif choice == 2 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/SabertoothGnoll3.lua")
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 4.84, -15.58, 65.48, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.71, -15.61, 63.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1.94, -15.68, 63.72, 2, 0)
+ MovementLoopAddLocation(NPC, 1.94, -15.68, 63.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.8, -15.53, 65.49, 2, 0)
+ MovementLoopAddLocation(NPC, 7.8, -15.53, 65.49, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.16, -15.64, 65.56, 2, 0)
+ MovementLoopAddLocation(NPC, 3.16, -15.64, 65.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 4.15, -15.6, 66, 2, 0)
+ MovementLoopAddLocation(NPC, 10.32, -15.5, 62.59, 2, 0)
+ MovementLoopAddLocation(NPC, 10.32, -15.5, 62.59, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 4.41, -15.6, 68.22, 2, 0)
+ MovementLoopAddLocation(NPC, 5.4, -15.57, 65.57, 2, 0)
+ MovementLoopAddLocation(NPC, 5.4, -15.57, 65.57, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.47, -15.52, 62.6, 2, 0)
+ MovementLoopAddLocation(NPC, 7.47, -15.52, 62.6, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 5.3, -15.58, 67.04, 2, 0)
+ MovementLoopAddLocation(NPC, 5.3, -15.58, 67.04, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.45, -15.52, 60.67, 2, 0)
+ MovementLoopAddLocation(NPC, 7.45, -15.52, 60.67, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/Blackburrow/aterrapede.lua b/server/SpawnScripts/Blackburrow/aterrapede.lua
index c5b868722..d4a1ebc50 100755
--- a/server/SpawnScripts/Blackburrow/aterrapede.lua
+++ b/server/SpawnScripts/Blackburrow/aterrapede.lua
@@ -7,25 +7,7 @@
--]]
function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 13
- local level2 = 14
- local difficulty1 = 5
- local hp1 = 440
- local power1 = 145
- local difficulty2 = 5
- local hp2 = 500
- local power2 = 165
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+
end
diff --git a/server/SpawnScripts/Blackburrow/atrainingspearfisher.lua b/server/SpawnScripts/Blackburrow/atrainingspearfisher.lua
new file mode 100755
index 000000000..2c73cd2ec
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/atrainingspearfisher.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/atrainingspearfisher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.02 03:05:08
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+
+function spawn(NPC)
+ AddTimer(NPC,6000,"AttackRocks")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function AttackRocks(NPC)
+ if not IsInCombat(NPC) then
+ PlayAnimation(NPC,10783)
+ end
+ AddTimer(NPC, 3000, "AttackRocks")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/questheritagedwbstoutkeg.lua b/server/SpawnScripts/Blackburrow/questheritagedwbstoutkeg.lua
new file mode 100755
index 000000000..b7e1f8e14
--- /dev/null
+++ b/server/SpawnScripts/Blackburrow/questheritagedwbstoutkeg.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Blackburrow/questheritagedwbstoutkeg.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.21 08:04:22
+ Script Purpose :
+ :
+--]]
+
+local TheseBootsWereMadeFor = 5805 -- These Boots Were Made For QUEST ID
+
+function spawn(NPC)
+SetRequiredQuest(NPC, TheseBootsWereMadeFor, 8)
+end
+
+function casted_on(NPC, Spawn, Spell)
+if Spell == 'pour some Blackburrow Stout for Hwal' then
+SetStepComplete(Spawn, TheseBootsWereMadeFor, 8)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Blackburrow/widgetgnollbrew.lua b/server/SpawnScripts/Blackburrow/widgetgnollbrew.lua
index 8149957fd..8e0860cc9 100755
--- a/server/SpawnScripts/Blackburrow/widgetgnollbrew.lua
+++ b/server/SpawnScripts/Blackburrow/widgetgnollbrew.lua
@@ -10,7 +10,7 @@ local GnollBrew = 5638
local BuckyID = 133773751
function spawn(NPC)
-
+ SetRequiredQuest(NPC,GnollBrew,1,0,0,1)
end
function casted_on(NPC, Spawn, Command)
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/GeneralDrull.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/GeneralDrull.lua
new file mode 100644
index 000000000..b16cd4d28
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/GeneralDrull.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/GeneralDrull.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/LegioneerGorlak.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/LegioneerGorlak.lua
new file mode 100644
index 000000000..44f9a11cd
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/LegioneerGorlak.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/LegioneerGorlak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbattlehound.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbattlehound.lua
new file mode 100644
index 000000000..20e697ff7
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbattlehound.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbattlehound.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbouncer.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbouncer.lua
new file mode 100644
index 000000000..a35b2958b
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbouncer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullbouncer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullfanatic.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullfanatic.lua
new file mode 100644
index 000000000..af16a0fd0
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullfanatic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullfanatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullherald.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullherald.lua
new file mode 100644
index 000000000..41c919130
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullherald.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullherald.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullheretic.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullheretic.lua
new file mode 100644
index 000000000..e543433e5
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullheretic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullheretic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighguard.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighguard.lua
new file mode 100644
index 000000000..7513f487f
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighguard.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighpriest.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighpriest.lua
new file mode 100644
index 000000000..b47bd66e8
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighpriest.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullhighpriest.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskulllookout.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskulllookout.lua
new file mode 100644
index 000000000..08234caab
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskulllookout.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskulllookout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullmender.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullmender.lua
new file mode 100644
index 000000000..28f0049f7
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullmender.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullmender.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullprotector.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullprotector.lua
new file mode 100644
index 000000000..8c77adee3
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullprotector.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullreinforcement.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullreinforcement.lua
new file mode 100644
index 000000000..b1022d417
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullreinforcement.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullreinforcement.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsavage.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsavage.lua
new file mode 100644
index 000000000..e14378921
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsavage.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsavage.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsoldier.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsoldier.lua
new file mode 100644
index 000000000..f064ab980
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsoldier.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullspotter.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullspotter.lua
new file mode 100644
index 000000000..3ad80710d
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullspotter.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullspotter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwarlock.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwarlock.lua
new file mode 100644
index 000000000..ea5b8cd45
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwarlock.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwarlock.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwitch.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwitch.lua
new file mode 100644
index 000000000..e75f8b1f4
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwitch.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aBloodskullwitch.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/achosenBloodskullherald.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/achosenBloodskullherald.lua
new file mode 100644
index 000000000..3148e6500
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/achosenBloodskullherald.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/achosenBloodskullherald.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/afrenziedBloodskullhighguard.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/afrenziedBloodskullhighguard.lua
new file mode 100644
index 000000000..246463f07
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/afrenziedBloodskullhighguard.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/afrenziedBloodskullhighguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/anelectBloodskullheretic.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/anelectBloodskullheretic.lua
new file mode 100644
index 000000000..ab1c16a60
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/anelectBloodskullheretic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/anelectBloodskullheretic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullfanatic.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullfanatic.lua
new file mode 100644
index 000000000..52dc5ae54
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullfanatic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullfanatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullsoldier.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullsoldier.lua
new file mode 100644
index 000000000..be3df81b5
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullsoldier.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aneliteBloodskullsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aredbellyslicer.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aredbellyslicer.lua
new file mode 100644
index 000000000..674db1003
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/aredbellyslicer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/aredbellyslicer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/awarelephant.lua b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/awarelephant.lua
new file mode 100644
index 000000000..d90b3194c
--- /dev/null
+++ b/server/SpawnScripts/BloodSkullValleyMaulicsStronghold/awarelephant.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BloodSkullValleyMaulicsStronghold/awarelephant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 10:01:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BrawlersDojo/BurningFireinvisiblecube.lua b/server/SpawnScripts/BrawlersDojo/BurningFireinvisiblecube.lua
new file mode 100755
index 000000000..b37b0e8bd
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/BurningFireinvisiblecube.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/BurningFireinvisiblecube.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 12:09:56
+ Script Purpose :
+ :
+--]]
+
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 1, "InRange", "LeaveRange")
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function InRange(NPC,Spawn,Zone)
+ if GetDistance(NPC,Spawn)<1 and IsNight(GetZone(NPC))==true or GetSpawnLocationID(NPC)== 133776619 and GetDistance(NPC,Spawn)<1 or GetSpawnLocationID(NPC)== 133776620 and GetDistance(NPC,Spawn)<1 then
+ SpawnSet(Spawn,"visual_state",492)
+ TakeFireDamage(Spawn)
+ SendMessage(Spawn, "You are burning!", "red")
+ AddTimer(NPC,3000,"InRange",1,Spawn)
+ end
+end
+
+
+function LeaveRange(NPC,Spawn)
+ SpawnSet(Spawn,"visual_state",0)
+end
+
+function TakeFireDamage(Spawn)
+local invul = IsInvulnerable(Spawn)
+if invul == true then
+return 0
+end
+
+local hp = GetHP(Spawn)
+local damage = GetMaxHP(Spawn)*0.05
+local damageToTake = damage * 1
+-- if we don't have enough HP make them die to pain and suffering not self
+if hp <= damageToTake then
+KillSpawn(Spawn, null, 1)
+else
+DamageSpawn(Spawn, Spawn, 192, 3, damageToTake, damageToTake, "Fire!", 0, 0, 1, 1)
+end
+end
+
+
+
+function Tick(Zone, Spawn, RegionType)
+
+TakeFireDamage(Spawn)
+
+-- returning 1 would stop the Tick process until Spawn leaves/re-enters region
+return 0
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BrawlersDojo/DojoFire.lua b/server/SpawnScripts/BrawlersDojo/DojoFire.lua
new file mode 100755
index 000000000..bd680bbdd
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/DojoFire.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/DojoFire.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.17 11:09:43
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BrawlersDojo/SoulBrazier.lua b/server/SpawnScripts/BrawlersDojo/SoulBrazier.lua
new file mode 100755
index 000000000..109cff50b
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/SoulBrazier.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/SoulBrazier.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 11:12:42
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5790,5,0,0,1)
+end
+
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Begin Meditation' and not IsInCombat(Spawn)then
+ local con = CreateConversation()
+ AddConversationOption(con, "Focus on the words","Step2")
+ StartDialogConversation(con, 1, NPC, Spawn, "After proving your combat prowess, you take a moment to reflect. Focusing on the shrine you notice words etched along the rim.")
+ SpawnSet(Spawn,"action_state",540)
+end
+end
+
+function Step2(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Recite the mantra and breathe deeply...","Step3")
+ StartDialogConversation(con, 1, NPC, Spawn, "Meditation leads to Peace.\n\nPeace leads to Serenity.\n\nSerenity leads to Tranquility.\n\nTranquility brings Enlightenment.\n ")
+end
+
+function Step3(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "I am a brawler!","Step4")
+ StartDialogConversation(con, 1, NPC, Spawn, "A cool breeze swirls around you, sending a sensation up your spine. You arise from the altar and know in your heart you are a brawler.")
+ ApplySpellVisual(Spawn,13)
+ SpawnSet(Spawn,"action_state",0)
+end
+
+function Step4(NPC,Spawn)
+ SpawnSet(Spawn,"action_state",0)
+ SetStepComplete(Spawn,5790,5)
+ CloseConversation(NPC,Spawn)
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BrawlersDojo/afirstcircleadept.lua b/server/SpawnScripts/BrawlersDojo/afirstcircleadept.lua
new file mode 100755
index 000000000..c6a38990a
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/afirstcircleadept.lua
@@ -0,0 +1,147 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/afirstcircleadept.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.18 12:12:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC, math.random(2000,5000), "EmoteLoop")
+ SetTempVariable(NPC,"Talking","false")
+ SetTempVariable(NPC,"Reset",nil)
+end
+
+function hailed(NPC, Spawn)
+ if HasQuest(Spawn,5790) and GetQuestStepProgress(Spawn,5790,3)==0 then
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"visual_state",0)
+ PlayAnimation(NPC,10871)
+ SetTempVariable(NPC,"Talking","true")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Glad you made it! Was the island as difficult as I remember?")
+ Dialog.AddVoiceover("voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_hail_gm_5ec5f221.mp3",3870261841, 3828605353)
+ PlayFlavor(NPC, "", "", "",0,0 , Spawn, 0)
+ Dialog.AddOption("The Isle of Refuge? I made it here, didn't I? Let's spar.","Dialog1")
+ Dialog.Start()
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn, 0)
+ AddTimer(NPC,3000,"attack",1,Spawn)
+end
+
+function attack(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ Attack(NPC,Spawn)
+end
+
+function aggro(NPC,Spawn)
+ if GetTempVariable(NPC,"Reset")== nil then
+ else
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+ end
+end
+
+function healthchanged(NPC, Spawn)
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.26 then
+ SpawnSet(NPC,"attackable",0)
+ SpawnSet(NPC,"show_level",0)
+-- if IsInCombat(NPC,Spawn) then
+ SetTempVariable(NPC,"Reset",1)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+-- end
+ AddTimer(NPC,1500,"end2",1,Spawn)
+ AddTimer(NPC,3000,"bow",1,Spawn)
+ AddTimer(NPC,5000,"bow2",1,Spawn)
+end
+end
+
+function end2(NPC,Spawn)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+end
+
+function bow(NPC,Spawn)
+ SetStepComplete(Spawn,5790,3)
+ PlayFlavor(NPC, "", "","bow",0, 0)
+end
+
+function bow2(NPC,Spawn)
+ Runback(NPC)
+ SetTempVariable(NPC,"Talking","false")
+ SpawnSet(NPC,"visual_state",11420)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function EmoteLoop(NPC)
+ if GetTempVariable(NPC,"Talking")== "false"then
+ SpawnSet(NPC, "action_state", 0)
+ local choice = MakeRandomInt(1,10)
+
+ if choice == 1 then
+ PlayFlavor(NPC,"","","bostaff_attack")
+ AddTimer(NPC, 2100, "Idle")
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","bostaff_attack01")
+ AddTimer(NPC, 1700, "Idle")
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","bostaff_attack02")
+ AddTimer(NPC, 2400, "Idle")
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","bostaff_attack03")
+ AddTimer(NPC, 3200, "Idle")
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","bostaff_kick")
+ AddTimer(NPC, 3700, "Idle")
+ elseif choice == 6 then
+ PlayFlavor(NPC,"","","bostaff_dodge_forehand")
+ AddTimer(NPC, 1500, "Idle")
+ else
+ PlayFlavor(NPC,"","","bostaff_taunt_combat_art")
+ AddTimer(NPC, 3500, "Idle")
+ end
+else
+ local timer = MakeRandomInt(1500,2500)
+ AddTimer(NPC, timer, "EmoteLoop")
+end
+end
+
+function Idle(NPC)
+if GetTempVariable(NPC,"Talking")== "false"then
+ PlayAnimation(NPC, 101)
+ SpawnSet(NPC, "action_state", 101)
+end
+ local timer = MakeRandomInt(1500,2500)
+ AddTimer(NPC, timer, "EmoteLoop")
+end
+
+function death(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function victory(NPC)
+ SetTempVariable(NPC,"Reset",nil)
+ SetTempVariable(NPC,"Talking","false")
+end
diff --git a/server/SpawnScripts/BrawlersDojo/asecondcircleinitiate.lua b/server/SpawnScripts/BrawlersDojo/asecondcircleinitiate.lua
new file mode 100755
index 000000000..c7916e563
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/asecondcircleinitiate.lua
@@ -0,0 +1,144 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/asecondcircleinitiate.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.18 04:12:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC, math.random(2000,5000), "EmoteLoop")
+ SetTempVariable(NPC,"Talking","false")
+ SetTempVariable(NPC,"Reset",nil)
+end
+
+function hailed(NPC, Spawn)
+ if HasQuest(Spawn,5790) and GetQuestStepProgress(Spawn,5790,2)==0 then
+ SetTempVariable(NPC,"Talking","true")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ale may be the life's blood, but fighting is the soul my existence!")
+ Dialog.AddVoiceover("voiceover/english/dwarf_eco_good_1/ft/dwarf/dwarf_eco_good_1_hail_gm_bd8ccf81.mp3",4220338619, 1417901850)
+ PlayFlavor(NPC, "", "", "nod",0,0 , Spawn, 0)
+ Dialog.AddOption("I wish to spar with you.","Dialog1")
+ Dialog.Start()
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn, 0)
+ AddTimer(NPC,3000,"attack",1,Spawn)
+end
+
+function attack(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ Attack(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_ab9057d3.mp3", "Look'n for me?", "",438949611, 3910736957, Spawn, 0)
+end
+
+function aggro(NPC,Spawn)
+ if GetTempVariable(NPC,"Reset")== nil then
+ else
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+ end
+end
+
+function healthchanged(NPC, Spawn)
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.26 then
+ SpawnSet(NPC,"attackable",0)
+ SpawnSet(NPC,"show_level",0)
+-- if IsInCombat(NPC,Spawn) then
+ SetTempVariable(NPC,"Reset",1)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+-- end
+ AddTimer(NPC,1500,"end2",1,Spawn)
+ AddTimer(NPC,3000,"bow",1,Spawn)
+ AddTimer(NPC,5000,"bow2",1,Spawn)
+end
+end
+
+function end2(NPC,Spawn)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+end
+
+function bow(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "bow", 0, 0, Spawn, 0)
+ SetStepComplete(Spawn,5790,2)
+end
+
+function bow2(NPC,Spawn)
+ Runback(NPC)
+ SetTempVariable(NPC,"Talking","false")
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781317)
+ FaceTarget(NPC,dummy)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function EmoteLoop(NPC)
+if GetTempVariable(NPC,"Talking")== "false"then
+ SpawnSet(NPC, "action_state", 0)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781317)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","dual_wield_attack")
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","dual_wield_attack01")
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","dual_wield_attack02")
+ end
+ PlayFlavor(dummy,"","","result_dust_fall")
+ SpawnSet(dummy, "visual_state", 2083)
+end
+ AddTimer(NPC, 2550, "Idle")
+ end
+
+ function Idle(NPC)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781317)
+ if GetTempVariable(NPC,"Talking")== "false"then
+ SpawnSet(NPC, "action_state", 267)
+ PlayAnimation(NPC, 267)
+end
+ AddTimer(NPC,1000,"resetdummy",1)
+ local timer = MakeRandomInt(1500,3500)
+ AddTimer(NPC, timer, "EmoteLoop")
+
+end
+
+function resetdummy(NPC)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781317)
+ SpawnSet(dummy, "visual_state", 0)
+end
+
+function death(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function victory(NPC)
+ SetTempVariable(NPC,"Reset",nil)
+ SetTempVariable(NPC,"Talking","false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BrawlersDojo/athirdcircleinitiate.lua b/server/SpawnScripts/BrawlersDojo/athirdcircleinitiate.lua
new file mode 100755
index 000000000..981620a0f
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/athirdcircleinitiate.lua
@@ -0,0 +1,104 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/athirdcircleinitiate.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.18 02:12:18
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC, math.random(2000,5000), "EmoteLoop")
+ SetTempVariable(NPC,"Talking","false")
+ SetTempVariable(NPC,"Reset",nil)
+ SetInfoStructString(NPC, "action_state", "mood_angry")
+end
+
+function hailed(NPC, Spawn)
+ if HasQuest(Spawn,5790) and GetQuestStepProgress(Spawn,5790,1)==0 then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("If your brain were half as good as your brawn, you'd be a quarter the warrior I am!")
+ Dialog.AddVoiceover("voiceover/english/barbarian_eco_race_evil/ft/eco/evil/barbarian_eco_race_evil_ogre_gm_85d4dfd9.mp3",3300429686, 1230722065)
+ PlayFlavor(NPC, "", "", "flex",0,0 , Spawn, 0)
+ Dialog.AddOption("Is that so? Spar with me!","Dialog1")
+ Dialog.Start()
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn, 0)
+ AddTimer(NPC,3000,"attack",1,Spawn)
+end
+
+function attack(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ Attack(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_aggro_gm_d2336620.mp3", "Your overconfidence will be your undoing.", "", 549554872, 2137888085, Spawn, 0)
+end
+
+function aggro(NPC,Spawn)
+ if GetTempVariable(NPC,"Reset")== nil then
+ else
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+ end
+end
+
+function healthchanged(NPC, Spawn)
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.26 then
+ SpawnSet(NPC,"attackable",0)
+ SpawnSet(NPC,"show_level",0)
+-- if IsInCombat(NPC,Spawn) then
+ SetTempVariable(NPC,"Reset",1)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+-- end
+ AddTimer(NPC,1500,"end2",1,Spawn)
+ AddTimer(NPC,3000,"bow",1,Spawn)
+ AddTimer(NPC,5000,"bow2",1,Spawn)
+end
+end
+
+function end2(NPC,Spawn)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+end
+
+function bow(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "bow", 0, 0, Spawn, 0)
+ SetStepComplete(Spawn,5790,1)
+end
+
+function bow2(NPC,Spawn)
+ Runback(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+end
+
+function death(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function victory(NPC)
+ SetTempVariable(NPC,"Reset",nil)
+ SetTempVariable(NPC,"Talking","false")
+end
+
diff --git a/server/SpawnScripts/BrawlersDojo/awhiteheadbandinitiate.lua b/server/SpawnScripts/BrawlersDojo/awhiteheadbandinitiate.lua
new file mode 100755
index 000000000..52e54abab
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/awhiteheadbandinitiate.lua
@@ -0,0 +1,171 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/awhiteheadbandinitiate.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 08:12:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC, math.random(2000,5000), "EmoteLoop")
+ SetTempVariable(NPC,"Talking","false")
+ SetTempVariable(NPC,"Reset",nil)
+end
+
+function hailed(NPC, Spawn)
+ if HasQuest(Spawn,5790) and GetQuestStepProgress(Spawn,5790,4)==0 then
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"visual_state",0)
+-- PlayAnimation(NPC,10871)
+ SetTempVariable(NPC,"Talking","true")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Tread softly and speak your purpose.")
+ Dialog.AddVoiceover("voiceover/english/optional1/initiate_tara/qey_elddar/100_monk_initiate_tara_token1_9ac42d88.mp3",3516598133, 1750026138)
+ PlayFlavor(NPC, "", "", "",0,0 , Spawn, 0)
+ Dialog.AddOption("I'm looking to prove myself. Will you spar with me?","Dialog1")
+ Dialog.Start()
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn, 0)
+ AddTimer(NPC,3000,"attack",1,Spawn)
+end
+
+function attack(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ Attack(NPC,Spawn)
+end
+
+function aggro(NPC,Spawn)
+ if GetTempVariable(NPC,"Reset")== nil then
+ else
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+ end
+end
+
+function healthchanged(NPC, Spawn)
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.26 then
+ SpawnSet(NPC,"attackable",0)
+ SpawnSet(NPC,"show_level",0)
+ SetTempVariable(NPC,"Reset",1)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+ AddTimer(NPC,1500,"end2",1,Spawn)
+ AddTimer(NPC,3000,"bow",1,Spawn)
+ AddTimer(NPC,5000,"bow2",1,Spawn)
+end
+end
+
+function end2(NPC,Spawn)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+end
+
+function bow(NPC,Spawn)
+ SetStepComplete(Spawn,5790,4)
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_hail_gf_c865a827.mp3", "Duty above all else, citizen, except honor!","bow",373851625, 467562033)
+end
+
+function bow2(NPC,Spawn)
+ Runback(NPC)
+ SetTempVariable(NPC,"Talking","false")
+ SpawnSet(NPC,"visual_state",11420)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781308)
+ FaceTarget(NPC,dummy)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function EmoteLoop(NPC)
+ if GetTempVariable(NPC,"Talking")== "false"then
+ SpawnSet(NPC, "action_state", 0)
+ local choice = MakeRandomInt(1,8)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781308)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","pugilist_attack")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 2550, "Idle")
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","pugilist_attack02")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 3100, "Idle")
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","monk_attack02")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 3050, "Idle")
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","monk_wild_swing")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 3100, "Idle")
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","monk_attack01")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 2450, "Idle")
+ elseif choice == 6 then
+ PlayFlavor(NPC,"","","monk_attack")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 2550, "Idle")
+ elseif choice == 7 then
+ PlayFlavor(NPC,"","","monk_attack03")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 4400, "Idle")
+ else
+ PlayFlavor(NPC,"","","pugilist_wild_swing")
+ PlayFlavor(dummy,"","","result_dust_fall")
+ AddTimer(NPC, 3300, "Idle")
+ end
+ else
+ local timer = MakeRandomInt(1500,2500)
+ AddTimer(NPC, timer, "EmoteLoop")
+ end
+end
+
+function Idle(NPC)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781308)
+ if GetTempVariable(NPC,"Talking")== "false"then
+ PlayAnimation(NPC, 372)
+ SpawnSet(dummy, "visual_state", 2083)
+end
+ AddTimer(NPC,1000,"resetdummy",1)
+ local timer = MakeRandomInt(500,2500)
+ AddTimer(NPC, timer, "EmoteLoop")
+end
+
+function resetdummy(NPC)
+ local zone = GetZone(NPC)
+ local dummy = GetSpawnByLocationID(zone,133781308)
+ SpawnSet(dummy, "visual_state", 0)
+end
+
+function death(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function victory(NPC)
+ SetTempVariable(NPC,"Reset",nil)
+ SetTempVariable(NPC,"Talking","false")
+end
+
\ No newline at end of file
diff --git a/server/SpawnScripts/BrawlersDojo/steam.lua b/server/SpawnScripts/BrawlersDojo/steam.lua
new file mode 100755
index 000000000..565d4522a
--- /dev/null
+++ b/server/SpawnScripts/BrawlersDojo/steam.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/BrawlersDojo/steam.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.18 12:09:41
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SpawnSet(NPC, "visual_state",6867)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersHideout/ArthegosAlethros.lua b/server/SpawnScripts/BuccaneersHideout/ArthegosAlethros.lua
new file mode 100755
index 000000000..3eb6250d0
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersHideout/ArthegosAlethros.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersHideout/ArthegosAlethros.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 05:12:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function aggro(NPC, Spawn)
+ PlayFlavor(NPC, "", "Come h'er! Let's test how sharp my blade is!", "", 0, 0, Spawn, 0)
+end
+
+
+function death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_halfhealth_gm_b1dc44d0.mp3", "It's been awhile since anyone fought back!", "", 1623736591, 2832676927, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_death_gm_94279fc3.mp3", "All hands! Retreat!", "", 2213603766, 3071153854, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_3e24be0b.mp3", "Cover me while we regroup!", "", 144951462, 3922442401, Spawn, 0)
+ end
+end
+end
+
+function victory(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_4553e1e0.mp3", "Flee now or meet this one's fate.", "", 3032162747, 1359206304, Spawn, 0)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersHideout/abattlehardenedbrigand.lua b/server/SpawnScripts/BuccaneersHideout/abattlehardenedbrigand.lua
new file mode 100755
index 000000000..d45833317
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersHideout/abattlehardenedbrigand.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersHideout/abattlehardenedbrigand.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 01:12:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function aggro(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_3_halfhealth_gf_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 2527774659, 2542349358, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_death_gf_747d38d7.mp3", "Don't fear death! There is no surrender!", "", 1668075339, 3492211420, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_base_2/ft/barbarian/barbarian_base_2_1_aggro_gf_73da4109.mp3", "So many choices of who to kill!", "", 3668044517, 3454415980, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_aggro_gf_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 1014195867, 4030043484, Spawn, 0)
+end
+end
+
+function death(NPC,Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_death_gf_9f33cf68.mp3", "Don't break! Hold the line!", "", 4168139414, 1969505231, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_death_gf_747d38d7.mp3", "Don't fear death! There is no surrender!", "", 1668075339, 3492211420, Spawn, 0)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersHideout/abattlehardenedbuccaneer.lua b/server/SpawnScripts/BuccaneersHideout/abattlehardenedbuccaneer.lua
new file mode 100755
index 000000000..ba7861156
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersHideout/abattlehardenedbuccaneer.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersHideout/abattlehardenedbuccaneer.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 04:12:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+end
+
+function aggro(NPC,Spawn)
+ if GetGender(NPC)==2 then
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_583690dc.mp3", "Summon help! We have invaders!", "", 1598905349, 2204481929, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_8529e507.mp3", "I can't hold them forever!", "", 3371581229, 792393228, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 3593389433, 3838830228, Spawn, 0)
+ elseif choice ==4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_aggro_gf_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 1014195867, 4030043484, Spawn, 0)
+ end
+else
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_aggro_gm_5431aa20.mp3", "There they are! Get them!", "", 2165643563, 2117457907, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_aggro_gm_5a34aed6.mp3", "Make sure they die quietly!", "", 3777681635, 634895945, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_halfhealth_gm_b1dc44d0.mp3", "It's been awhile since anyone fought back!", "", 1623736591, 2832676927, Spawn, 0)
+ end
+
+end
+end
+
+function death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_halfhealth_gm_b1dc44d0.mp3", "It's been awhile since anyone fought back!", "", 1623736591, 2832676927, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_dervish/ft/human/human_dervish_1_death_gm_94279fc3.mp3", "Someone get some help, fast!", "", 2213603766, 3071153854, Spawn, 0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersHideout/abuccaneerrecruit.lua b/server/SpawnScripts/BuccaneersHideout/abuccaneerrecruit.lua
new file mode 100755
index 000000000..94049960d
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersHideout/abuccaneerrecruit.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersHideout/abuccaneerrecruit.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 04:12:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersHideout/ameanbrigandcook.lua b/server/SpawnScripts/BuccaneersHideout/ameanbrigandcook.lua
new file mode 100755
index 000000000..3e2a69ceb
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersHideout/ameanbrigandcook.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersHideout/ameanbrigandcook.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 05:12:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function aggro(NPC,Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "What now? More distractions? Great!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_base_2/ft/gnome/gnome_base_2_1_halfhealth_gm_895967b4.mp3", "Don't let them hit me!", "", 3867000722, 3519508425, Spawn, 0)
+end
+end
+
+
+
+function death(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_base_2/ft/gnome/gnome_base_2_1_death_gm_dcc156f6.mp3", "Somebody find a way to get us out of here!", "", 3389043910, 2625252979, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_base_2/ft/gnome/gnome_base_2_1_halfhealth_gm_16b76687.mp3", "Not in the head! Not in the head!", "", 4042957456, 3810711869, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_base_2/ft/gnome/gnome_base_2_1_death_gm_47b1882a.mp3", "They'll kill us all!", "", 91120978, 4091470254, Spawn, 0)
+end
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersHideout/aterrifiedvictim.lua b/server/SpawnScripts/BuccaneersHideout/aterrifiedvictim.lua
new file mode 100755
index 000000000..83b5bff5b
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersHideout/aterrifiedvictim.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersHideout/aterrifiedvictim.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.17 04:12:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+SpawnSet(NPC,"name","a terrified victim")
+end
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781301) --Brigand
+if not IsAlive(Pirate1) then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Stand away or I ...I ... I'll stick you!")
+ Dialog.AddVoiceover("voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_notcitizen_gf_2de63779.mp3",600715331, 1815533033)
+ PlayFlavor(NPC, "", "", "cringe",0,0 , Spawn, 0)
+ Dialog.AddOption("You're safe now. The path should be clear enough to escape.","Dialog1")
+ Dialog.Start()
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Thanks for saving me...")
+ Dialog.AddVoiceover("voiceover/english/anikra/boat_06p_tutorial02_fvo_001.mp3",3802219844, 3242323771)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn, 0)
+ Dialog.AddOption("I'm glad I could help.","Update")
+ Dialog.Start()
+ SpawnSet(NPC,"name","a relieved victim")
+ SpawnSet(NPC,"mood_state","0")
+end
+
+function Update(NPC,Spawn)
+ SetStepComplete(Spawn,5789,1)
+ AddTimer(NPC,4000,"Run")
+ MoveToLocation(NPC,-7.59, 6.23, 10.49,2)
+end
+
+function Run(NPC)
+ PlayFlavor(NPC, "", "", "curtsey", 0, 0, Spawn, 0)
+ Despawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aBrokenSkullbuccaneer.lua b/server/SpawnScripts/BuccaneersRest/aBrokenSkullbuccaneer.lua
new file mode 100755
index 000000000..a696d0f64
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aBrokenSkullbuccaneer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aBrokenSkullbuccaneer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aBrokenSkulldeathbringer.lua b/server/SpawnScripts/BuccaneersRest/aBrokenSkulldeathbringer.lua
new file mode 100755
index 000000000..95c67f41f
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aBrokenSkulldeathbringer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aBrokenSkulldeathbringer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aBrokenSkullmystic.lua b/server/SpawnScripts/BuccaneersRest/aBrokenSkullmystic.lua
new file mode 100755
index 000000000..328cdc7df
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aBrokenSkullmystic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aBrokenSkullmystic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aSpicerunnerdeckhand.lua b/server/SpawnScripts/BuccaneersRest/aSpicerunnerdeckhand.lua
new file mode 100755
index 000000000..f5277377a
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aSpicerunnerdeckhand.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aSpicerunnerdeckhand.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aSpicerunneremberhurler.lua b/server/SpawnScripts/BuccaneersRest/aSpicerunneremberhurler.lua
new file mode 100755
index 000000000..30d4c6b6a
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aSpicerunneremberhurler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aSpicerunneremberhurler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aSpicerunnergalebringer.lua b/server/SpawnScripts/BuccaneersRest/aSpicerunnergalebringer.lua
new file mode 100755
index 000000000..840e3ceb6
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aSpicerunnergalebringer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aSpicerunnergalebringer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aSpicerunnerrecruit.lua b/server/SpawnScripts/BuccaneersRest/aSpicerunnerrecruit.lua
new file mode 100755
index 000000000..5dc9531c8
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aSpicerunnerrecruit.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aSpicerunnerrecruit.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aSpicerunnerspicemistress.lua b/server/SpawnScripts/BuccaneersRest/aSpicerunnerspicemistress.lua
new file mode 100755
index 000000000..53fde4c6c
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aSpicerunnerspicemistress.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aSpicerunnerspicemistress.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/BuccaneersRest/aSpicerunnertrafficker.lua b/server/SpawnScripts/BuccaneersRest/aSpicerunnertrafficker.lua
new file mode 100755
index 000000000..dc37f0a53
--- /dev/null
+++ b/server/SpawnScripts/BuccaneersRest/aSpicerunnertrafficker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/BuccaneersRest/aSpicerunnertrafficker.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 05:10:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Cache/aGuardDog.lua b/server/SpawnScripts/Cache/aGuardDog.lua
new file mode 100755
index 000000000..241bbe200
--- /dev/null
+++ b/server/SpawnScripts/Cache/aGuardDog.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/Cache/aGuardDog.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 04:12:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=2 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,1500,"Checking",1,Spawn)
+ AddTimer(NPC,6000,"Checking",1,Spawn)
+ AddTimer(NPC,8000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,2)
+ if choice ==1 then
+ SendMessage(Spawn,"The dog lets out a low growl.")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The dog's ears twitch.")
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) then
+ Attack(NPC,Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Cache/abanditcook.lua b/server/SpawnScripts/Cache/abanditcook.lua
new file mode 100755
index 000000000..18be78353
--- /dev/null
+++ b/server/SpawnScripts/Cache/abanditcook.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : SpawnScripts/Cache/abanditcook.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 04:12:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=0 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,6000,"Checking",1,Spawn)
+ AddTimer(NPC,8000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The cook heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_583690dc.mp3", "Summon help! We have invaders!", "", 1598905349, 2204481929, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_8529e507.mp3", "I can't hold them forever!", "", 3371581229, 792393228, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 3593389433, 3838830228, Spawn, 0)
+ elseif choice ==4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_aggro_gf_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 1014195867, 4030043484, Spawn, 0)
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) then
+ Attack(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Cache/afetteredguard.lua b/server/SpawnScripts/Cache/afetteredguard.lua
new file mode 100755
index 000000000..d33d8a913
--- /dev/null
+++ b/server/SpawnScripts/Cache/afetteredguard.lua
@@ -0,0 +1,64 @@
+--[[
+ Script Name : SpawnScripts/Cache/afetteredguard.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 04:12:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+-- SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+ SetSeeHide(NPC,1)
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=2 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,1000,"Checking",1,Spawn)
+ AddTimer(NPC,4000,"Checking",1,Spawn)
+ AddTimer(NPC,7500,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The guard heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) and GetY(Spawn) <=2 then
+ Attack(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_2/ft/halfelf/halfelf_base_2_1_aggro_gf_f28ca26e.mp3", "Brace yourselves! We have trouble!", "", 773678310, 2089682843, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_12fbaefb.mp3", "Destroy the invader!", "", 1313233821, 723410897, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_a68f64b6.mp3", "Alarm! Alarm!", "", 1220383018, 2962002142, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Cache/afilthyblacksmith.lua b/server/SpawnScripts/Cache/afilthyblacksmith.lua
new file mode 100755
index 000000000..accb9abb7
--- /dev/null
+++ b/server/SpawnScripts/Cache/afilthyblacksmith.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : SpawnScripts/Cache/afilthyblacksmith.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 04:12:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=2 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,6000,"Checking",1,Spawn)
+ AddTimer(NPC,8000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The smith heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Did you hear that?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn)and GetY(Spawn) <=2 then
+ Attack(NPC,Spawn)
+ end
+end
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/halfelf_base_2/ft/halfelf/halfelf_base_2_1_halfhealth_gm_5ed9a68.mp3", "I won't give up that easily.", "", 3605027223, 2986829956, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Cache/anassassinleader.lua b/server/SpawnScripts/Cache/anassassinleader.lua
new file mode 100755
index 000000000..2c0188732
--- /dev/null
+++ b/server/SpawnScripts/Cache/anassassinleader.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/Cache/anassassinleader.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 02:12:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_aggro_gf_8e7390a8.mp3", "Welcome to torment and destruction!", "", 3770648926, 2897017212, Spawn)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_aggro_gf_fb890c79.mp3", "I have no time for meddlers. Destroy them!", "", 1947039155, 2094447273, Spawn)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_battle_gf_ef48e73d.mp3", "Kneel before me, and I may spare you!", "", 1856378126, 584491690, Spawn)
+ elseif choice ==4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_aggro_gf_ded507db.mp3", "More intruders to deal with? Stop them!", "", 338410258, 2808797910, Spawn)
+ end
+end
+
+function death(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_halfhealth_gf_8d198fee.mp3", "You may escape, but we will find you!", "", 1924616636, 4174763308, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Cache/aputridbandit.lua b/server/SpawnScripts/Cache/aputridbandit.lua
new file mode 100755
index 000000000..64e8328bc
--- /dev/null
+++ b/server/SpawnScripts/Cache/aputridbandit.lua
@@ -0,0 +1,112 @@
+--[[
+ Script Name : SpawnScripts/Cache/aputridbandit.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 04:12:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ waypoints(NPC)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=2 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,5000,"Checking",1,Spawn)
+ AddTimer(NPC,8000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The bandit heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) and GetY(Spawn) <=2 then
+ Attack(NPC,Spawn)
+ end
+end
+
+
+function ResetGuardEmote(NPC,Spawn)
+ if not IsInCombat(NPC) then
+ choice = MakeRandomInt(1,2)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443, Spawn, 0)
+ end
+end
+
+function waypoints(NPC)
+ if GetSpawnLocationID(NPC)==133781204 then
+ MovementLoopAddLocation(NPC, -5.06, -0.24, -10.23, 2, 5)
+ MovementLoopAddLocation(NPC, -3.49, -0.24, -11.35, 2, 0)
+ MovementLoopAddLocation(NPC, -6.24, -0.24, -9.04, 2, 0)
+ MovementLoopAddLocation(NPC, -7.12, -0.24, -8.16, 2, 0)
+ MovementLoopAddLocation(NPC, -10.14, -0.24, -9.51, 2, 0)
+ MovementLoopAddLocation(NPC, -15.12, -0.24, -13.31, 2, 0)
+ MovementLoopAddLocation(NPC, -22.86, -0.24, -18.79, 2, 0)
+ MovementLoopAddLocation(NPC, -26.16, -0.24, -23.02, 2, 5)
+ MovementLoopAddLocation(NPC, -26.16, -0.24, -23.02, 2, 0)
+ MovementLoopAddLocation(NPC, -24.21, -0.24, -20.26, 2, 0)
+ MovementLoopAddLocation(NPC, -14.36, -0.24, -11.92, 2, 0)
+ MovementLoopAddLocation(NPC, -10.78, -0.24, -9.64, 2, 0)
+ MovementLoopAddLocation(NPC, -7.39, -0.24, -8.42, 2, 0)
+ elseif GetSpawnLocationID(NPC)==133781205 then
+ MovementLoopAddLocation(NPC, -10.37, -0.24, -3.42, 2, 5)
+ MovementLoopAddLocation(NPC, -10.63, -0.24, -2.49, 2, 0)
+ MovementLoopAddLocation(NPC, -10.83, -0.24, -4.8, 2, 0)
+ MovementLoopAddLocation(NPC, -10.54, -0.24, -6.24, 2, 0)
+ MovementLoopAddLocation(NPC, -12.06, -0.24, -8.13, 2, 0)
+ MovementLoopAddLocation(NPC, -16.51, -0.24, -12.03, 2, 0)
+ MovementLoopAddLocation(NPC, -18.91, -0.24, -13.85, 2, 0)
+ MovementLoopAddLocation(NPC, -20.33, -0.24, -13.45, 2, 5)
+ MovementLoopAddLocation(NPC, -20.33, -0.24, -13.45, 2, 0)
+ MovementLoopAddLocation(NPC, -20.66, -0.24, -16.74, 2, 0)
+ MovementLoopAddLocation(NPC, -24.44, -0.24, -19.53, 2, 0)
+ MovementLoopAddLocation(NPC, -25.51, -0.24, -22.94, 2, 5)
+ MovementLoopAddLocation(NPC, -25.51, -0.24, -22.94, 2, 0)
+ MovementLoopAddLocation(NPC, -21.56, -0.24, -17.22, 2, 0)
+ MovementLoopAddLocation(NPC, -19.4, -0.24, -14.51, 2, 0)
+ MovementLoopAddLocation(NPC, -12.66, -0.24, -8.94, 2, 0)
+end
+end
diff --git a/server/SpawnScripts/Cache/aputridbrigand.lua b/server/SpawnScripts/Cache/aputridbrigand.lua
new file mode 100755
index 000000000..c422aba06
--- /dev/null
+++ b/server/SpawnScripts/Cache/aputridbrigand.lua
@@ -0,0 +1,78 @@
+--[[
+ Script Name : SpawnScripts/Cache/aputridbrigand.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 04:12:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ waypoints(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=2 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,5000,"Checking",1,Spawn)
+ AddTimer(NPC,8000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The brigand heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) and GetY(Spawn) <=2 then
+ Attack(NPC,Spawn)
+ end
+end
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432, Spawn, 0)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443, Spawn, 0)
+ end
+end
+
+function waypoints(NPC)
+if GetSpawnLocationID(NPC)== 133781197 then
+ MovementLoopAddLocation(NPC, 14.67, -0.24, 11.21, 2, 4)
+ MovementLoopAddLocation(NPC, 8.17, -0.25, 6.32, 2, 0)
+ MovementLoopAddLocation(NPC, 1.14, -0.24, 0.73, 2, 0)
+ MovementLoopAddLocation(NPC, -1.36, -0.24, -1.61, 2, 4)
+ MovementLoopAddLocation(NPC, 4.94, -0.25, 3.33, 2, 0)
+ MovementLoopAddLocation(NPC, 14.08, -0.24, 1.97, 2, 4)
+ MovementLoopAddLocation(NPC, 16.66, -0.24, 4.09, 2, 0)
+ MovementLoopAddLocation(NPC, 18.32, -0.24, 5.45, 2, 2)
+ MovementLoopAddLocation(NPC, 13.93, -0.25, 1.65, 2, 0)
+ MovementLoopAddLocation(NPC, 9.06, -0.25, 3.94, 2, 0)
+ MovementLoopAddLocation(NPC, 8.13, -0.25, 7.29, 2, 0)
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Castleview/AadalianFarenair.lua b/server/SpawnScripts/Castleview/AadalianFarenair.lua
index dff27733c..fbac67638 100755
--- a/server/SpawnScripts/Castleview/AadalianFarenair.lua
+++ b/server/SpawnScripts/Castleview/AadalianFarenair.lua
@@ -119,6 +119,7 @@ end
function SwordReturned(NPC, Spawn)
+ SetEquipment(NPC, 0, 2258 , 255, 255, 255, 255, 255, 255) --Examines Sword
SetStepComplete(Spawn, Sword, 2)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
@@ -128,8 +129,12 @@ function SwordReturned(NPC, Spawn)
Dialog.AddOption("I'm sure Froptub would be happy to hear that.")
Dialog.AddOption("As long as you're happy with it. Good luck.")
Dialog.Start()
+ AddTimer(NPC,8500,"HideSword")
end
+function HideSword (NPC)
+ SetEquipment(NPC, 0, 0 , 255, 255, 255, 255, 255, 255) --Hides Sword
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Castleview/ArmsdealerFroptub.lua b/server/SpawnScripts/Castleview/ArmsdealerFroptub.lua
index 19784e37e..714b55a70 100755
--- a/server/SpawnScripts/Castleview/ArmsdealerFroptub.lua
+++ b/server/SpawnScripts/Castleview/ArmsdealerFroptub.lua
@@ -57,7 +57,7 @@ function hailed(NPC, Spawn)
Dialog.AddOption("Why are your orders backing up?", "Frustrated")
end
if GetQuestStep (Spawn, EtchingTool)==2 then
- Dialog.AddOption("I have your etching tool. Your apprentice seemed to have dozed off.'.", "Delivery3")
+ Dialog.AddOption("I have your etching tool. Your apprentice seemed to have dozed off..", "Delivery3")
end
Dialog.AddOption("I'm just browsing. Thank you.")
Dialog.Start()
diff --git a/server/SpawnScripts/Castleview/Bleemeb.lua b/server/SpawnScripts/Castleview/Bleemeb.lua
index 6a94807ad..3f0735098 100755
--- a/server/SpawnScripts/Castleview/Bleemeb.lua
+++ b/server/SpawnScripts/Castleview/Bleemeb.lua
@@ -55,7 +55,7 @@ function hailed(NPC, Spawn)
if GetQuestStep(Spawn, Delivery)==1 then
Dialog.AddOption("I'm returning a book from Barry Viceheart.", "DeliveryReturn")
end
- if not HasQuest(Spawn, Book) then
+ if not HasQuest(Spawn, Book) and not HasCompletedQuest(Spawn, Book) then
Dialog.AddOption("I'm not from around here. Anything I should know?", "BookStart")
end
if not HasQuest(Spawn, Leaves) and GetLevel(Spawn)>=7 then
diff --git a/server/SpawnScripts/Castleview/Bulurg.lua b/server/SpawnScripts/Castleview/Bulurg.lua
index 4e7d19b7d..a0becb1a1 100755
--- a/server/SpawnScripts/Castleview/Bulurg.lua
+++ b/server/SpawnScripts/Castleview/Bulurg.lua
@@ -10,7 +10,8 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
--dofile("SpawnScripts/Generic/GenericBartenderVoiceOvers.lua")
local Water = 5456
-
+local FarSea372 = 5887
+local FarSea436 = 5888
function spawn(NPC)
ProvidesQuest(NPC,Water)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
@@ -39,9 +40,9 @@ function hailed(NPC, Spawn)
if GetFactionAmount(Spawn,11) <0 then
FactionChecking(NPC, Spawn, faction)
else
- if not HasCompletedQuest(Spawn, Water) then
+-- if not HasCompletedQuest(Spawn, Water) then
QuestStart(NPC, Spawn,conversation)
- else
+--[[ else
FaceTarget(NPC, Spawn)
local choice = math.random(1,4)
if choice == 1 then
@@ -53,7 +54,7 @@ function hailed(NPC, Spawn)
elseif choice == 4 then
PlayFlavor(NPC, "voiceover/english/bartender_bulurg/qey_village04/bartenderbulurg000.mp3", "Good to see you found my Hole-in-the-Wall Tavern! Taste my brews made with real swamp water, now with more flies!", "hello", 1246934802, 3942849521, Spawn)
end
- end
+ end--]]
end
end
@@ -69,6 +70,9 @@ end
if HasQuest (Spawn, Water) and GetQuestStep(Spawn, Water) == 2 then
Dialog.AddOption("Here is a full jug of water from the Oakmyst falls.", "FullJug")
end
+ if HasQuest (Spawn, FarSea372) and GetQuestStep(Spawn, FarSea372) == 4 or HasQuest(Spawn,FarSea436) and GetQuestStep(Spawn,FarSea436) == 4 then
+ Dialog.AddOption("I've completed a Far Seas requisition for you.", "CompleteFarSea")
+ end
Dialog.AddOption("I'm good for now, thanks.")
Dialog.Start()
end
@@ -102,3 +106,21 @@ function TakeJug (NPC, Spawn)
FaceTarget(NPC, Spawn)
OfferQuest(NPC, Spawn, Water)
end
+
+
+ function CompleteFarSea(NPC, Spawn)
+if HasQuest (Spawn, FarSea372) and GetQuestStep(Spawn, FarSea372) == 4 then
+ SetStepComplete(Spawn, FarSea372, 4)
+end
+ if HasQuest (Spawn, FarSea436) and GetQuestStep(Spawn, FarSea436) == 4 then
+ SetStepComplete(Spawn, FarSea436, 4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I bet you have some stories, eh? Adventuring must be an exciting life!")
+ Dialog.AddVoiceover("voiceover/english/froglok_eco_good_1/ft/service/bartender/froglok_bartender_service_good_1_hail_gf_ce733912.mp3",1840731743,2065794369)
+ PlayFlavor(NPC, "", "", "thank", 0,0 , Spawn)
+ Dialog.AddOption("Thanks for the coin!")
+ Dialog.AddOption("More than I'd like to admit. Thanks.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Castleview/Cilindari.lua b/server/SpawnScripts/Castleview/Cilindari.lua
index 59541519a..b9c40d89f 100755
--- a/server/SpawnScripts/Castleview/Cilindari.lua
+++ b/server/SpawnScripts/Castleview/Cilindari.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericAlchemistVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/Dalonalis.lua b/server/SpawnScripts/Castleview/Dalonalis.lua
index 5f8f9bf68..44ee8678e 100755
--- a/server/SpawnScripts/Castleview/Dalonalis.lua
+++ b/server/SpawnScripts/Castleview/Dalonalis.lua
@@ -63,7 +63,7 @@ function Dialog2a(NPC, Spawn)
if GetRace(Spawn)==4 then
Dialog.AddOption("Fly catcher doesn't seem right... Harvester?","Dialog2b")
elseif GetRace(Spawn)==8 then
- Dialog.AddOption("How could I sum up living numerous lifetimes in one word?! Let's say Epicurean.","Dialog2b")
+ Dialog.AddOption("How could I sum up living numerous lifetimes in one word?!... Let's say \"Many\"?","Dialog2b")
end
Dialog.Start()
end
diff --git a/server/SpawnScripts/Castleview/DaylenaTelanthis.lua b/server/SpawnScripts/Castleview/DaylenaTelanthis.lua
index 636d26014..a55f54ed3 100755
--- a/server/SpawnScripts/Castleview/DaylenaTelanthis.lua
+++ b/server/SpawnScripts/Castleview/DaylenaTelanthis.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/Castleview/DaylenaTelanthis.lua
Script Purpose : Daylena Telanthis
- Script Author : Scatman
+ Script Author : Scatman\\Dorbin
Script Date : 2009.10.03
Script Notes : Added faction check - 2022.04.18 Dorbin
--]]
@@ -9,6 +9,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/EireneithAlannia.lua b/server/SpawnScripts/Castleview/EireneithAlannia.lua
index 84e6e6a10..78744614e 100755
--- a/server/SpawnScripts/Castleview/EireneithAlannia.lua
+++ b/server/SpawnScripts/Castleview/EireneithAlannia.lua
@@ -17,6 +17,7 @@ local Deer = 5469
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
ProvidesQuest(NPC, Deer)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/EntertainerFaeadaen.lua b/server/SpawnScripts/Castleview/EntertainerFaeadaen.lua
index f53a632da..6c0f5dce1 100755
--- a/server/SpawnScripts/Castleview/EntertainerFaeadaen.lua
+++ b/server/SpawnScripts/Castleview/EntertainerFaeadaen.lua
@@ -1,4 +1,4 @@
---[[
+ --[[
Script Name : SpawnScripts/Castleview/EntertainerFaeadaen.lua
Script Purpose : Entertainer Faeadaen
Script Author : Dorbin
@@ -36,7 +36,7 @@ function InRange (NPC,Spawn)
elseif choice ==3 then
PlayFlavor(NPC, "", "", "dance", 0, 0, Spawn)
else
-PlayFlavor(NPC, "voiceover/english/entertainer_faeadaen/qey_village04/100_entertainer_faeadaen_multhail2_2d3351bb.mp3", "Step up and watch as I make lights dance and coins disappear into thin air!", "", 3189499038, 1784304503, Spawn)
+ PlayFlavor(NPC, "voiceover/english/entertainer_faeadaen/qey_village04/100_entertainer_faeadaen_multhail2_2d3351bb.mp3", "Step up and watch as I make lights dance and coins disappear into thin air!", "", 3189499038, 1784304503, Spawn)
end
end
end
@@ -51,7 +51,7 @@ function hailed(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Come closer and watch as I make lights dance and coins disapear into thin air!")
Dialog.AddVoiceover("voiceover/english/entertainer_faeadaen/qey_village04/entertainerfaeadaen.mp3", 2289708399, 1034577130)
- if Timer == false then
+ if Timer == false and HasCoin(Spawn,200) then
PlayFlavor(NPC, "", "", "orate",0,0, Spawn)
Dialog.AddOption("I would love a performance. [ 2 Silver ]", "Perforamnce")
else
@@ -75,7 +75,9 @@ function NoBook(NPC,Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("The book on the great tree Arbos? I am afraid I left the book somewhere in the local inn. You will have to search for it there.")
Dialog.AddVoiceover("voiceover/english/entertainer_faeadaen/qey_village04/entertainerfaeadaen002.mp3", 386324181, 1757469505)
- PlayFlavor(NPC, "", "", "ponder", 0,0 , Spawn)
+ if Timer == false then
+ PlayFlavor(NPC, "", "", "ponder", 0,0 , Spawn)
+ end
Dialog.AddOption( "Alright, I'll check at the inn. Thank you.", "BookUpdate")
Dialog.Start()
end
@@ -83,9 +85,11 @@ end
function NeedHelp(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Customers love my magic tricks! Actually, a little too much. Bulurg asked me to work late tonight. Could you ask Valean at the inn and let me know I can't dine with him tonight? I appreciate your help.")
+ Dialog.AddDialog("Customers love my magic tricks...actually, a little too much...Bulurg asked me to work late tonight. Could you find Valean at the inn and let him know I can't dine with him tonight? I appreciate your help!")
Dialog.AddVoiceover("voiceover/english/entertainer_faeadaen/qey_village04/entertainerfaeadaen000.mp3", 3630263809, 612433831)
+ if Timer == false then
PlayFlavor(NPC, "", "", "agree", 0,0 , Spawn)
+ end
Dialog.AddOption( "I will let Valean know that you can't make it.", "GiveQuest")
Dialog.Start()
end
@@ -94,9 +98,11 @@ function NoDinner(NPC,Spawn)
SetStepComplete(Spawn, Quest, 2)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Thank you for telling him. If you have a moment, step inside and try one of Bulurg's special brews.")
+ Dialog.AddDialog("Thank you for telling him. If you can spare a moment, please step inside and try one of Bulurg's special brews.")
Dialog.AddVoiceover("voiceover/english/entertainer_faeadaen/qey_village04/entertainerfaeadaen001.mp3", 1133009328, 1111624722)
+ if Timer == false then
PlayFlavor(NPC, "", "", "curtsey", 0,0 , Spawn)
+ end
Dialog.AddOption( "Yes, I think I'll try one of her drinks.")
Dialog.Start()
end
@@ -119,6 +125,7 @@ function Perforamnce(NPC,Spawn)
AddTimer(NPC, 900, "Shine",1)
AddTimer(NPC, 1100, "Flourish",1)
+ AddTimer(NPC, 4000, "Glow",1)
AddTimer(NPC, 10000, "Shimmy",1)
AddTimer(NPC, 12000,"Kiss",1)
AddTimer(NPC, 15500,"Finale",1)
@@ -126,35 +133,35 @@ function Perforamnce(NPC,Spawn)
end
end
+
+function Shine(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "result_coins_falling", 0, 0, Spawn)
+end
+
+
function Flourish(NPC,Spawn)
FaceTarget(NPC,Spawn)
PlayFlavor(NPC, "", "", "flourish", 0, 0, Spawn)
end
-function Finale(NPC,Spawn)
- PlayFlavor(NPC, "", "", "result_fireworks_flare_coins_burst", 0, 0, Spawn)
-end
-
---function Glow(NPC,Spawn) --a bit much, but timing is right
--- FaceTarget(NPC,Spawn)
--- PlayFlavor(NPC, "", "", "result_sparkles_clinging_soft", 0, 0, Spawn)
---end
+function Glow(NPC,Spawn)
+ SpawnSet(NPC,"visual_state",1800)
+end
function Shimmy(NPC,Spawn)
FaceTarget(NPC,Spawn)
PlayFlavor(NPC, "", "", "shimmy", 0, 0, Spawn)
end
-function Shine(NPC,Spawn)
-
- PlayFlavor(NPC, "", "", "result_coins_falling", 0, 0, Spawn)
-end
-
function Kiss(NPC,Spawn)
FaceTarget(NPC,Spawn)
PlayFlavor(NPC, "", "", "kiss", 0, 0, Spawn)
end
+function Finale(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "result_fireworks_flare_coins_burst", 0, 0, Spawn)
+SpawnSet(NPC,"visual_state",0)
+end
function GiveQuest(NPC, Spawn)
OfferQuest(NPC, Spawn, Quest)
diff --git a/server/SpawnScripts/Castleview/Faydwer.lua b/server/SpawnScripts/Castleview/Faydwer.lua
new file mode 100755
index 000000000..8adaf7980
--- /dev/null
+++ b/server/SpawnScripts/Castleview/Faydwer.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/Castleview/Faydwer.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.21 03:09:04
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Nuzzle' then
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ FaceTarget(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_02.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 2 then
+ FaceTarget(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_01.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 3 then
+ FaceTarget(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_03.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 4 then
+ PlaySound(NPC,"sounds/critters/cat/cat_happy001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Castleview/Felwithe.lua b/server/SpawnScripts/Castleview/Felwithe.lua
index 6a2ee25de..d6d699e82 100755
--- a/server/SpawnScripts/Castleview/Felwithe.lua
+++ b/server/SpawnScripts/Castleview/Felwithe.lua
@@ -17,6 +17,20 @@ end
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Nuzzle' then
FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_01.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 2 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_02.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 3 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_03.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 4 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_04.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 5 then
+ PlaySound(NPC,"sounds/critters/cat/cat_happy001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 6 then
+ PlaySound(NPC,"sounds/critters/cat/cat_happy001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
end
end
diff --git a/server/SpawnScripts/Castleview/Fevalin.lua b/server/SpawnScripts/Castleview/Fevalin.lua
index 883af5033..badc84650 100755
--- a/server/SpawnScripts/Castleview/Fevalin.lua
+++ b/server/SpawnScripts/Castleview/Fevalin.lua
@@ -14,7 +14,7 @@ local Bats = 5463
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
ProvidesQuest(NPC, Rats)
-
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
@@ -27,7 +27,7 @@ if math.random(1, 100) <= 70 then
choice = math.random(1,2)
FaceTarget(NPC, Spawn)
if choice ==1 then
- PlayFlavor(NPC, "voiceover/english/merchant_fevalin/qey_village04/100_merchant_right_fevalin_callout_7243eb33.mp3", "Step up. Don't be shy. I know an adventurer like you needs something. A lantern. Boots! Perhaps a sword, friend.", "beckon", 2065968741, 2942201215, Spawn)
+ PlayFlavor(NPC, "voiceover/english/merchant_fevalin/qey_village04/100_merchant_right_fevalin_callout_7243eb33.mp3", "Step up. Don't be shy. I know an adventurer like you needs something. A new lantern. Boots! Perhaps a sword, friend.", "beckon", 2065968741, 2942201215, Spawn)
elseif choice ==2 then
PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
end
@@ -43,7 +43,7 @@ function hailed(NPC, Spawn)
else
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Welcome to my store. You'll notice merchant Kruuprum has setup shop next door. We've actually been working to provide you, the customer, a greater a varaity of wares.")
+ Dialog.AddDialog("Welcome to my store. You'll notice merchant Kruuprum has setup shop next door. We've actually been working to bring you, the customer, a greater a variety of wares.")
Dialog.AddVoiceover("voiceover/english/merchant_fevalin/qey_village04/merchantfevalin.mp3", 2353063125, 3076810683)
PlayFlavor(NPC, "", "", "bow", 0, 0, Spawn)
if not HasQuest(Spawn, Rats) and not HasCompletedQuest(Spawn,Rats) then
@@ -53,7 +53,7 @@ function hailed(NPC, Spawn)
Dialog.AddOption("You and Kruuprum have a decent selection! Need any help?", "BatsStart")
end
if GetQuestStep(Spawn, Rats)==2 then
- Dialog.AddOption("Here are some bugs for you to munch on.", "RatsDone")
+ Dialog.AddOption("Here are the tails you requested from Oakmyst.", "RatsDone")
end
if GetQuestStep(Spawn, Bats)==2 then
Dialog.AddOption("Here are your five albino pelts.", "BatsStep2")
diff --git a/server/SpawnScripts/Castleview/Fibrone.lua b/server/SpawnScripts/Castleview/Fibrone.lua
index 7680fcaf2..d8282d4c6 100755
--- a/server/SpawnScripts/Castleview/Fibrone.lua
+++ b/server/SpawnScripts/Castleview/Fibrone.lua
@@ -5,6 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
@@ -17,7 +18,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Castleview/GilcirithElensar.lua b/server/SpawnScripts/Castleview/GilcirithElensar.lua
index e8d7e5af7..525e663cf 100755
--- a/server/SpawnScripts/Castleview/GilcirithElensar.lua
+++ b/server/SpawnScripts/Castleview/GilcirithElensar.lua
@@ -9,6 +9,7 @@ dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/GlumpMarrblade.lua b/server/SpawnScripts/Castleview/GlumpMarrblade.lua
index ec2595ce8..ef9c90fc9 100755
--- a/server/SpawnScripts/Castleview/GlumpMarrblade.lua
+++ b/server/SpawnScripts/Castleview/GlumpMarrblade.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/Castleview/GlumpMarrblade.lua
Script Purpose : Glump Marrblade
- Script Author : Scatman
+ Script Author : Scatman//Dorbin
Script Date : 2009.10.03
Script Notes :
--]]
@@ -26,13 +26,15 @@ function hailed(NPC, Spawn)
else
conversation = CreateConversation()
GenericHail(NPC, Spawn)
-
- if not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) and GetTradeskillLevel(Spawn)<2 then
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
AddConversationOption(conversation, "No, not at the moment.")
StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
else
- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in Qeynos Harbor. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
end
@@ -40,11 +42,21 @@ end
function dlg_39_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
- -- artisan essentials volume 2
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
- AddConversationOption(conversation, "I will start on that now.", "dlg_39_2")
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
end
function Dialog1(NPC,Spawn)
@@ -78,7 +90,7 @@ function CanDo2(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other players. A very handy connection, indeed!")
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
Dialog.AddOption("Thank you for all the information!")
if GetTradeskillLevel(Spawn)<2 then
Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
diff --git a/server/SpawnScripts/Castleview/InnkeeperValean.lua b/server/SpawnScripts/Castleview/InnkeeperValean.lua
index d5fd2f0cf..00d98ff70 100755
--- a/server/SpawnScripts/Castleview/InnkeeperValean.lua
+++ b/server/SpawnScripts/Castleview/InnkeeperValean.lua
@@ -16,7 +16,7 @@ local LostBook = 5468
function spawn(NPC)
ProvidesQuest(NPC,Books)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
-
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
@@ -96,7 +96,7 @@ function NoDinner(NPC, Spawn)
SetStepComplete(Spawn, Dinner, 1)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Again?! That froglok should hire more people so Faeadaen isn't worked to the bone. Thanks for letting me know. I guess I'll dine alone tonight.")
+ Dialog.AddDialog("Again!? That froglok should hire more people so poor Faeadaen isn't worked to the bone. Well, thanks for letting me know. I guess I'll dine alone tonight.")
Dialog.AddVoiceover("voiceover/english/innkeeper_valean/qey_village04/innkeepervalean000.mp3", 4169629165,2563079815)
PlayFlavor(NPC, "", "", "sigh", 0,0 , Spawn)
Dialog.AddOption( "There is always tomorrow.")
@@ -117,7 +117,7 @@ end
function UpdateReservation(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Pardon my indiscretion, friend. I assumed... because you're making his reservation that... you were a close friend of Taneran's. He and I speak sometimes when he retires for the night. Please don't mention this to the Lady. I will see that his room is ready.")
+ Dialog.AddDialog("Pardon my indiscretion, friend. I assumed because you're making his reservation that you were a close friend of Taneran. He and I speak sometimes when he retires for the night ... please, don't mention this to the lady... I shall see that his room is ready...")
Dialog.AddVoiceover("voiceover/english/innkeeper_valean/qey_village04/innkeepervalean002.mp3", 1569016427,2379789272)
PlayFlavor(NPC, "", "", "boggle", 0,0 , Spawn)
Dialog.AddOption( "I will let her know.", "ReservationMade")
@@ -201,15 +201,3 @@ function dlg_2_4(NPC, Spawn)
AddConversationOption(conversation, "That's enough for now, thanks.")
StartConversation(conversation, NPC, Spawn, "Many different kinds of housing are available in the city of Qeynos. As a show of appreciation, Antonia Bayle has awarded you a one bedroom house for free at this time.")
end
-
-
-
---[[
- PlayFlavor(NPC, "innkeeper_uglar_splinterthumb/qey_village04/innkeeper001.mp3", "", "", 1553251638, 3978555092)
- AddConversationOption(conversation, "How can I place an item in my house?", "dlg_7_1")
- AddConversationOption(conversation, "What kind of housing is available to me?")
- AddConversationOption(conversation, "What is the marketboard for?")
- AddConversationOption(conversation, "What is my house for?")
- AddConversationOption(conversation, "Nothing right now.")
- StartConversation(conversation, NPC, Spawn, "Hello there" .. GetName(Spawn) .. ". what can I help you with?")
- --]]
\ No newline at end of file
diff --git a/server/SpawnScripts/Castleview/KethelinShadowcross.lua b/server/SpawnScripts/Castleview/KethelinShadowcross.lua
index ebc6ef004..7185a5fb2 100755
--- a/server/SpawnScripts/Castleview/KethelinShadowcross.lua
+++ b/server/SpawnScripts/Castleview/KethelinShadowcross.lua
@@ -9,6 +9,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/KnightCaptainGerathalas.lua b/server/SpawnScripts/Castleview/KnightCaptainGerathalas.lua
index e8ec52458..b32a2af02 100755
--- a/server/SpawnScripts/Castleview/KnightCaptainGerathalas.lua
+++ b/server/SpawnScripts/Castleview/KnightCaptainGerathalas.lua
@@ -6,12 +6,13 @@
Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
local Rats = 5460
function spawn(NPC)
-SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
ProvidesQuest(NPC, Rats)
end
@@ -19,7 +20,13 @@ function respawn(NPC)
end
function InRange(NPC, Spawn) --Quest Callout
-if MakeRandomInt(1, 100) <= 70 then
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+
+ if MakeRandomInt(1, 100) <= 70 then
if GetFactionAmount(Spawn,11)>0 then
if GetLevel(Spawn) <5 then
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Castleview/Kruuprum.lua b/server/SpawnScripts/Castleview/Kruuprum.lua
index f5cc49a31..5a8d6af6f 100755
--- a/server/SpawnScripts/Castleview/Kruuprum.lua
+++ b/server/SpawnScripts/Castleview/Kruuprum.lua
@@ -69,10 +69,10 @@ function hailed(NPC, Spawn)
Dialog.AddDialog("Verily, 'tis fine to havest thou here in Castleview! FroooOOOooaak! Fevalin and I here hath set up a nice arrangement and canst offer thou the widest variety of Qeynosian goods! Come view our wares!")
Dialog.AddVoiceover("voiceover/english/merchant_kruuprum/qey_village04/merchantkruuprum.mp3",212021921, 86053123)
PlayFlavor(NPC, "", "", "hello", 0,0 , Spawn)
- if not HasQuest(Spawn, Daggers) then
+ if not HasQuest(Spawn, Daggers) and not HasCompletedQuest(Spawn,Daggers) then
Dialog.AddOption("Have any work for me?", "DaggerStart")
end
- if not HasQuest(Spawn, Bugs) then
+ if not HasQuest(Spawn, Bugs) and not HasCompletedQuest(Spawn,Bugs) then
Dialog.AddOption("Wow, you must be busy!", "BugStart")
end
if GetQuestStep(Spawn, Bugs)==2 then
diff --git a/server/SpawnScripts/Castleview/ListalaniaVainederian.lua b/server/SpawnScripts/Castleview/ListalaniaVainederian.lua
index 1fc301c4f..70444db65 100755
--- a/server/SpawnScripts/Castleview/ListalaniaVainederian.lua
+++ b/server/SpawnScripts/Castleview/ListalaniaVainederian.lua
@@ -14,6 +14,7 @@ local Reservation = 5452
function spawn(NPC)
ProvidesQuest(NPC, Reservation)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "orate")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/LynneElia.lua b/server/SpawnScripts/Castleview/LynneElia.lua
index 93aff4330..d6d3f3260 100755
--- a/server/SpawnScripts/Castleview/LynneElia.lua
+++ b/server/SpawnScripts/Castleview/LynneElia.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Castleview/ShaeAhla.lua b/server/SpawnScripts/Castleview/ShaeAhla.lua
index c4c871763..a2a4d16a1 100755
--- a/server/SpawnScripts/Castleview/ShaeAhla.lua
+++ b/server/SpawnScripts/Castleview/ShaeAhla.lua
@@ -11,6 +11,7 @@ dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
local TargetingCorruption = 225
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/SialloHalvion.lua b/server/SpawnScripts/Castleview/SialloHalvion.lua
index a53ef6d67..5b342c97f 100755
--- a/server/SpawnScripts/Castleview/SialloHalvion.lua
+++ b/server/SpawnScripts/Castleview/SialloHalvion.lua
@@ -93,7 +93,7 @@ function Action(NPC,Spawn)
if choice ==1 then
PlayFlavor(NPC,"","","cheer",0,0)
elseif choice ==2 then
- PlayFlavor(NPC,"","","applaud",0,0)
+ PlayFlavor(NPC,"","","applaude",0,0)
elseif choice ==2 then
PlayFlavor(NPC,"","","happy",0,0)
end
diff --git a/server/SpawnScripts/Castleview/Sinanyala.lua b/server/SpawnScripts/Castleview/Sinanyala.lua
index 02a8220cc..18fac08f7 100755
--- a/server/SpawnScripts/Castleview/Sinanyala.lua
+++ b/server/SpawnScripts/Castleview/Sinanyala.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
if math.random(1, 100) <= 40 then
GenericGuardHail(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Castleview/TaneranthalisNedaiveren.lua b/server/SpawnScripts/Castleview/TaneranthalisNedaiveren.lua
index df0374770..bbbed3a6e 100755
--- a/server/SpawnScripts/Castleview/TaneranthalisNedaiveren.lua
+++ b/server/SpawnScripts/Castleview/TaneranthalisNedaiveren.lua
@@ -13,6 +13,7 @@ local Jewel = 5459
function spawn(NPC)
ProvidesQuest(NPC, Jewel)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/Valinar.lua b/server/SpawnScripts/Castleview/Valinar.lua
index 0237d2ebc..36539e227 100755
--- a/server/SpawnScripts/Castleview/Valinar.lua
+++ b/server/SpawnScripts/Castleview/Valinar.lua
@@ -9,6 +9,7 @@
dofile("SpawnScripts/Generic/GenericMerchantVoiceOvers.lua")
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Castleview/VennipOgbin.lua b/server/SpawnScripts/Castleview/VennipOgbin.lua
index 5788a8035..6d4860669 100755
--- a/server/SpawnScripts/Castleview/VennipOgbin.lua
+++ b/server/SpawnScripts/Castleview/VennipOgbin.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Castleview/YanariCyellann.lua b/server/SpawnScripts/Castleview/YanariCyellann.lua
index 5d1ea356a..043c4f246 100755
--- a/server/SpawnScripts/Castleview/YanariCyellann.lua
+++ b/server/SpawnScripts/Castleview/YanariCyellann.lua
@@ -17,6 +17,7 @@ function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
ProvidesQuest(NPC, Badgers)
ProvidesQuest(NPC, Slime)
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
@@ -82,7 +83,7 @@ function hailed(NPC, Spawn)
if GetQuestStep(Spawn, Slime)==2 then
Dialog.AddOption("I have collected your substance extract.", "DoneSlime")
end
- if GetQuestStep(Spawn,Mage1)==3 then
+ if HasQuest(Spawn,Mage1) and GetQuestStepProgress(Spawn,Mage1,3) == 0 then
Dialog.AddOption("The Magister suggested I asked you about what you use your sorcery for.", "MageTraining1")
end
@@ -177,21 +178,21 @@ end
Dialog.AddDialog("If Niksel sent you to me, then that's another story. I have done well by his teachings. What do you want to know about sorcery?")
Dialog.AddVoiceover("voiceover/english/yanari_cyellann/qey_village04/yanaricyellan007.mp3", 1398879355, 1149892616)
PlayFlavor(NPC, "", "", "ponder", 0,0 , Spawn)
- Dialog.AddOption("What methods do you use elementals in your magic?", "MageTraining1a")
+ Dialog.AddOption("How do you use the elements in your magic?", "MageTraining1a")
Dialog.Start()
end
- function MageTraining1(NPC, Spawn)
+ function MageTraining1a(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("If Niksel sent you to me, then that's another story. I have done well by his teachings. What do you want to know about sorcery?")
+ Dialog.AddDialog("I draw from unstable ether and turn it into different types of fire. Igniting a brazier with a simple incantation is easier than rubbing two sticks together.")
Dialog.AddVoiceover("voiceover/english/yanari_cyellann/qey_village04/yanaricyellan008.mp3", 3056968266, 3365736320)
CastSpell(NPC,19)
- Dialog.AddOption("No doubt you've used your magic for other purposes outside of your laboratory?", "MageTraining1a")
+ Dialog.AddOption("No doubt you've used your magic for other purposes outside of your laboratory?", "MageTraining1b")
Dialog.Start()
end
- function MageTraining1(NPC, Spawn)
+ function MageTraining1b(NPC, Spawn)
SetStepComplete(Spawn,Mage1,3)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
diff --git a/server/SpawnScripts/Castleview/zonetoqeyharbor.lua b/server/SpawnScripts/Castleview/zonetoqeyharbor.lua
index fbcfd643c..e6ac4c450 100755
--- a/server/SpawnScripts/Castleview/zonetoqeyharbor.lua
+++ b/server/SpawnScripts/Castleview/zonetoqeyharbor.lua
@@ -5,19 +5,32 @@
Script Purpose :
:
--]]
-
-function spawn(NPC)
- SetRequiredQuest(NPC,5718,14,0,1,1)
- SetRequiredQuest(NPC,5719,14,0,1,1)
- SetRequiredQuest(NPC,5720,14,0,1,1)
- SetRequiredQuest(NPC,5721,14,0,1,1)
- SetRequiredQuest(NPC,5722,14,0,1,1)
- SetRequiredQuest(NPC,5723,14,0,1,1)
-end
-
-function hailed(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter Qeynos Harbor' then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723)
+ and GetFactionAmount(Spawn,11)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5765) and GetQuestStep(Spawn,5765)==10 then
+ SetStepComplete(Spawn,5765,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only citizens may enter the city of Qeynos.",255,50,50)
+ SendMessage(Spawn,"Only citizens may enter the city of Qeynos.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,11) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("QeynosHarbor")
+ Zone(ZoneRef,Spawn,720.084, -20.5, -116.628, 148.79)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves/Atramentor.lua b/server/SpawnScripts/Caves/Atramentor.lua
index d762052e2..81367c319 100755
--- a/server/SpawnScripts/Caves/Atramentor.lua
+++ b/server/SpawnScripts/Caves/Atramentor.lua
@@ -12,6 +12,10 @@ end
function aggro(NPC,Spawn)
SpawnSet(NPC, "visual_state", 0)
PlayAnimation(NPC, 13016)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(35 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(75 + dmgMod))
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/AtramentorBehemoth.lua b/server/SpawnScripts/Caves/AtramentorBehemoth.lua
index 039c4641a..62bba34f3 100755
--- a/server/SpawnScripts/Caves/AtramentorBehemoth.lua
+++ b/server/SpawnScripts/Caves/AtramentorBehemoth.lua
@@ -6,9 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-AttackRocks(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AttackRocks(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/Classic_awhitespiderling.lua b/server/SpawnScripts/Caves/Classic_awhitespiderling.lua
index 0ff12a30e..0b2f40db8 100755
--- a/server/SpawnScripts/Caves/Classic_awhitespiderling.lua
+++ b/server/SpawnScripts/Caves/Classic_awhitespiderling.lua
@@ -5,74 +5,19 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
ChooseMovement(NPC)
end
function ChooseMovement(NPC)
if GetSpawnLocationID(NPC)~= 133778067 or GetSpawnLocationID(NPC)~= 133778068 then
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
end
end
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Caves/DrossAdds.lua b/server/SpawnScripts/Caves/DrossAdds.lua
index e7c2ee263..5317cf0b3 100755
--- a/server/SpawnScripts/Caves/DrossAdds.lua
+++ b/server/SpawnScripts/Caves/DrossAdds.lua
@@ -6,8 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
AddTimer(NPC,math.random(2500,6000),"AttackRocks")
end
diff --git a/server/SpawnScripts/Caves/Drossdozer.lua b/server/SpawnScripts/Caves/Drossdozer.lua
index c86691934..5d32bb155 100755
--- a/server/SpawnScripts/Caves/Drossdozer.lua
+++ b/server/SpawnScripts/Caves/Drossdozer.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
SetSpawnAnimation(NPC, 13016)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(8 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(15 + dmgMod))
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/DustcallerSleg.lua b/server/SpawnScripts/Caves/DustcallerSleg.lua
index 45d6fd72e..29d95dc17 100755
--- a/server/SpawnScripts/Caves/DustcallerSleg.lua
+++ b/server/SpawnScripts/Caves/DustcallerSleg.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(12 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(24 + dmgMod))
end
diff --git a/server/SpawnScripts/Caves/GuardBelaire.lua b/server/SpawnScripts/Caves/GuardBelaire.lua
index 7bed2edc2..774044713 100755
--- a/server/SpawnScripts/Caves/GuardBelaire.lua
+++ b/server/SpawnScripts/Caves/GuardBelaire.lua
@@ -5,14 +5,21 @@
Script Date : 2009.10.08
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
if GetFactionID(Spawn) ==1 then
Attack(NPC,Spawn)
end
diff --git a/server/SpawnScripts/Caves/InvisibleCubeAtramentor.lua b/server/SpawnScripts/Caves/InvisibleCubeAtramentor.lua
index b91baa2d8..178c6dfc5 100755
--- a/server/SpawnScripts/Caves/InvisibleCubeAtramentor.lua
+++ b/server/SpawnScripts/Caves/InvisibleCubeAtramentor.lua
@@ -62,7 +62,7 @@ end
function Camp_Stage2(NPC, Spawn) --Stage 2 Atramentor(active)
local zone = GetZone(NPC)
local choice = math.random(0,100)
- if choice <=20 then -- % Chance for Boss to Spawn
+ if choice <=100 then -- % Chance for Boss to Spawn
local CampSpawn1 = GetSpawnByLocationID(zone, 133777642) --Atramentor(inactive)
local CampSpawn7 = GetSpawnByLocationID(zone, 133777643)
local CampSpawn8 = GetSpawnByLocationID(zone, 133777656)
diff --git a/server/SpawnScripts/Caves/Slaverjaw.lua b/server/SpawnScripts/Caves/Slaverjaw.lua
index 8075f9024..0e15643f6 100755
--- a/server/SpawnScripts/Caves/Slaverjaw.lua
+++ b/server/SpawnScripts/Caves/Slaverjaw.lua
@@ -6,7 +6,11 @@
--]]
function spawn(NPC)
-waypoints(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ waypoints(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/TheDevoured.lua b/server/SpawnScripts/Caves/TheDevoured.lua
index ae1975bab..00231f384 100755
--- a/server/SpawnScripts/Caves/TheDevoured.lua
+++ b/server/SpawnScripts/Caves/TheDevoured.lua
@@ -7,6 +7,11 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
end
diff --git a/server/SpawnScripts/Caves/aDustpawTaskmaster.lua b/server/SpawnScripts/Caves/aDustpawTaskmaster.lua
index f3459a4ce..87376fd1c 100755
--- a/server/SpawnScripts/Caves/aDustpawTaskmaster.lua
+++ b/server/SpawnScripts/Caves/aDustpawTaskmaster.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Caves/aDustpawarmorer.lua b/server/SpawnScripts/Caves/aDustpawarmorer.lua
index 916535973..fab7efa67 100755
--- a/server/SpawnScripts/Caves/aDustpawarmorer.lua
+++ b/server/SpawnScripts/Caves/aDustpawarmorer.lua
@@ -7,4 +7,13 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function respawn(NPC, Spawn)
+ spawn()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves/aMudpawguard.lua b/server/SpawnScripts/Caves/aMudpawguard.lua
index 3de99cef1..ecaf1d589 100755
--- a/server/SpawnScripts/Caves/aMudpawguard.lua
+++ b/server/SpawnScripts/Caves/aMudpawguard.lua
@@ -6,8 +6,10 @@
Script Notes :
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 8
local level2 = 9
diff --git a/server/SpawnScripts/Caves/aMudpawguard1.lua b/server/SpawnScripts/Caves/aMudpawguard1.lua
index 7866a69ee..e8b6aa6fa 100755
--- a/server/SpawnScripts/Caves/aMudpawguard1.lua
+++ b/server/SpawnScripts/Caves/aMudpawguard1.lua
@@ -6,9 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-TheLook(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ TheLook(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/aMudpawguardPatrol.lua b/server/SpawnScripts/Caves/aMudpawguardPatrol.lua
index 2ca256204..00b8f094b 100755
--- a/server/SpawnScripts/Caves/aMudpawguardPatrol.lua
+++ b/server/SpawnScripts/Caves/aMudpawguardPatrol.lua
@@ -6,29 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 8
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 240
- local power1 = 100
- local difficulty2 = 6
- local hp2 = 290
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/aMudpawlookout.lua b/server/SpawnScripts/Caves/aMudpawlookout.lua
index 87bf109e4..3b2a9be01 100755
--- a/server/SpawnScripts/Caves/aMudpawlookout.lua
+++ b/server/SpawnScripts/Caves/aMudpawlookout.lua
@@ -6,9 +6,10 @@
Script Notes :
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 8
local level2 = 9
diff --git a/server/SpawnScripts/Caves/aMudpawlookout1.lua b/server/SpawnScripts/Caves/aMudpawlookout1.lua
index 58bc93179..be970cb1c 100755
--- a/server/SpawnScripts/Caves/aMudpawlookout1.lua
+++ b/server/SpawnScripts/Caves/aMudpawlookout1.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Caves/aMudpawlookoutRoam1.lua b/server/SpawnScripts/Caves/aMudpawlookoutRoam1.lua
index c5b6885af..6fe91f6de 100755
--- a/server/SpawnScripts/Caves/aMudpawlookoutRoam1.lua
+++ b/server/SpawnScripts/Caves/aMudpawlookoutRoam1.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 8
local level2 = 9
diff --git a/server/SpawnScripts/Caves/aMudpawlookoutRoam2.lua b/server/SpawnScripts/Caves/aMudpawlookoutRoam2.lua
index 99ab586c4..fc0412658 100755
--- a/server/SpawnScripts/Caves/aMudpawlookoutRoam2.lua
+++ b/server/SpawnScripts/Caves/aMudpawlookoutRoam2.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 8
local level2 = 9
diff --git a/server/SpawnScripts/Caves/aMudpawlookoutRoam3.lua b/server/SpawnScripts/Caves/aMudpawlookoutRoam3.lua
index 8718ddb06..107246f95 100755
--- a/server/SpawnScripts/Caves/aMudpawlookoutRoam3.lua
+++ b/server/SpawnScripts/Caves/aMudpawlookoutRoam3.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 8
local level2 = 9
diff --git a/server/SpawnScripts/Caves/aMudpawtaskmaster.lua b/server/SpawnScripts/Caves/aMudpawtaskmaster.lua
index 78a598ea1..8a9a91002 100755
--- a/server/SpawnScripts/Caves/aMudpawtaskmaster.lua
+++ b/server/SpawnScripts/Caves/aMudpawtaskmaster.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/aRockpawguard.lua b/server/SpawnScripts/Caves/aRockpawguard.lua
index 10471439a..fb54926ce 100755
--- a/server/SpawnScripts/Caves/aRockpawguard.lua
+++ b/server/SpawnScripts/Caves/aRockpawguard.lua
@@ -7,8 +7,10 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
if GetSpawnLocationID(NPC)==133777792 then
MovementLoopAddLocation(NPC, 37.27, 38.1, -78.57, 2, 0)
MovementLoopAddLocation(NPC, 37.5, 38.44, -87.86, 2, 0)
diff --git a/server/SpawnScripts/Caves/aRockpawguardPatrol.lua b/server/SpawnScripts/Caves/aRockpawguardPatrol.lua
index c566e61be..58b64007d 100755
--- a/server/SpawnScripts/Caves/aRockpawguardPatrol.lua
+++ b/server/SpawnScripts/Caves/aRockpawguardPatrol.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
diff --git a/server/SpawnScripts/Caves/aRockpawscout.lua b/server/SpawnScripts/Caves/aRockpawscout.lua
index ff8f9e5a1..1cb27b6da 100755
--- a/server/SpawnScripts/Caves/aRockpawscout.lua
+++ b/server/SpawnScripts/Caves/aRockpawscout.lua
@@ -5,4 +5,13 @@
Script Date : 2008.09.21
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
\ No newline at end of file
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves/aRockpawstonemaster.lua b/server/SpawnScripts/Caves/aRockpawstonemaster.lua
index dd823ddb2..50870f8d6 100755
--- a/server/SpawnScripts/Caves/aRockpawstonemaster.lua
+++ b/server/SpawnScripts/Caves/aRockpawstonemaster.lua
@@ -7,8 +7,10 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Caves/aRockpawstriker.lua b/server/SpawnScripts/Caves/aRockpawstriker.lua
index add3daeb6..0226dbe2d 100755
--- a/server/SpawnScripts/Caves/aRockpawstriker.lua
+++ b/server/SpawnScripts/Caves/aRockpawstriker.lua
@@ -7,4 +7,12 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn()
+end
diff --git a/server/SpawnScripts/Caves/acaveserpent.lua b/server/SpawnScripts/Caves/acaveserpent.lua
index 7c86b3e0b..320e2a1c0 100755
--- a/server/SpawnScripts/Caves/acaveserpent.lua
+++ b/server/SpawnScripts/Caves/acaveserpent.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/analabasterbehemoth.lua b/server/SpawnScripts/Caves/analabasterbehemoth.lua
index 95e0a96a5..2a10c032c 100755
--- a/server/SpawnScripts/Caves/analabasterbehemoth.lua
+++ b/server/SpawnScripts/Caves/analabasterbehemoth.lua
@@ -6,9 +6,10 @@
Script Notes :
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+require "SpawnScripts/Generic/NPCModule"
-
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
end
diff --git a/server/SpawnScripts/Caves/analabastergolem.lua b/server/SpawnScripts/Caves/analabastergolem.lua
index d98ae812d..4e43ec65d 100755
--- a/server/SpawnScripts/Caves/analabastergolem.lua
+++ b/server/SpawnScripts/Caves/analabastergolem.lua
@@ -6,30 +6,12 @@
Script Notes :
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-
-
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
AddTimer(NPC,math.random(2500,6000),"AttackRocks")
end
@@ -39,7 +21,6 @@ function respawn(NPC)
end
-
function AttackRocks(NPC)
if not IsInCombat(NPC) then
PlayAnimation(NPC,10783)
diff --git a/server/SpawnScripts/Caves/analbinoarachnid1.lua b/server/SpawnScripts/Caves/analbinoarachnid1.lua
index c74679dea..620b0a36a 100755
--- a/server/SpawnScripts/Caves/analbinoarachnid1.lua
+++ b/server/SpawnScripts/Caves/analbinoarachnid1.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/analbinoarachnid2.lua b/server/SpawnScripts/Caves/analbinoarachnid2.lua
index 21a36866b..121012a6c 100755
--- a/server/SpawnScripts/Caves/analbinoarachnid2.lua
+++ b/server/SpawnScripts/Caves/analbinoarachnid2.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/analbinoarachnid3.lua b/server/SpawnScripts/Caves/analbinoarachnid3.lua
index 62addbfbf..ee7a5deb7 100755
--- a/server/SpawnScripts/Caves/analbinoarachnid3.lua
+++ b/server/SpawnScripts/Caves/analbinoarachnid3.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/analbinoarachnid4.lua b/server/SpawnScripts/Caves/analbinoarachnid4.lua
index 466284368..a8436683a 100755
--- a/server/SpawnScripts/Caves/analbinoarachnid4.lua
+++ b/server/SpawnScripts/Caves/analbinoarachnid4.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/analbinoarachnid5.lua b/server/SpawnScripts/Caves/analbinoarachnid5.lua
index 71c3c0d78..cd41d67c8 100755
--- a/server/SpawnScripts/Caves/analbinoarachnid5.lua
+++ b/server/SpawnScripts/Caves/analbinoarachnid5.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/analbinobat.lua b/server/SpawnScripts/Caves/analbinobat.lua
index 9f1405893..fea43e1d0 100755
--- a/server/SpawnScripts/Caves/analbinobat.lua
+++ b/server/SpawnScripts/Caves/analbinobat.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y-2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y-2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 16, -16, 2, -2, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/ariverbehemoth.lua b/server/SpawnScripts/Caves/ariverbehemoth.lua
index 9f3af7548..bd50d8735 100755
--- a/server/SpawnScripts/Caves/ariverbehemoth.lua
+++ b/server/SpawnScripts/Caves/ariverbehemoth.lua
@@ -6,11 +6,12 @@
Script Notes :
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
-
+require "SpawnScripts/Generic/NPCModule"
local RIVER_BEHEMOTH_REMAINS_ID = 1970101
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/aterrabat.lua b/server/SpawnScripts/Caves/aterrabat.lua
index f46250ad3..38efbf2a7 100755
--- a/server/SpawnScripts/Caves/aterrabat.lua
+++ b/server/SpawnScripts/Caves/aterrabat.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 16, -16, 2, -2, 2, 5, 10)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/awhitespider.lua b/server/SpawnScripts/Caves/awhitespider.lua
index e53df0c39..73c044e78 100755
--- a/server/SpawnScripts/Caves/awhitespider.lua
+++ b/server/SpawnScripts/Caves/awhitespider.lua
@@ -5,11 +5,11 @@
Script Date : 10/4/2022
Script Notes :
--]]
+require "SpawnScripts/Generic/NPCModule"
-
-
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Caves/awhitespiderRoam1.lua b/server/SpawnScripts/Caves/awhitespiderRoam1.lua
index aa48f4f0d..769004f96 100755
--- a/server/SpawnScripts/Caves/awhitespiderRoam1.lua
+++ b/server/SpawnScripts/Caves/awhitespiderRoam1.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/awhitespiderRoam2.lua b/server/SpawnScripts/Caves/awhitespiderRoam2.lua
index 40669b543..3f8c7ca42 100755
--- a/server/SpawnScripts/Caves/awhitespiderRoam2.lua
+++ b/server/SpawnScripts/Caves/awhitespiderRoam2.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/awhitespiderRoam3.lua b/server/SpawnScripts/Caves/awhitespiderRoam3.lua
index 4a15f8131..9965e2528 100755
--- a/server/SpawnScripts/Caves/awhitespiderRoam3.lua
+++ b/server/SpawnScripts/Caves/awhitespiderRoam3.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/awhitespiderRoam4.lua b/server/SpawnScripts/Caves/awhitespiderRoam4.lua
index 2dd772cea..36525aad4 100755
--- a/server/SpawnScripts/Caves/awhitespiderRoam4.lua
+++ b/server/SpawnScripts/Caves/awhitespiderRoam4.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/awhitespiderRoam5.lua b/server/SpawnScripts/Caves/awhitespiderRoam5.lua
index 4a7b51d42..234361ad1 100755
--- a/server/SpawnScripts/Caves/awhitespiderRoam5.lua
+++ b/server/SpawnScripts/Caves/awhitespiderRoam5.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves/awhitespiderRoam6.lua b/server/SpawnScripts/Caves/awhitespiderRoam6.lua
index 42d23f4f8..77cf42f8b 100755
--- a/server/SpawnScripts/Caves/awhitespiderRoam6.lua
+++ b/server/SpawnScripts/Caves/awhitespiderRoam6.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Caves_Classic/Neddris.lua b/server/SpawnScripts/Caves_Classic/Neddris.lua
new file mode 100755
index 000000000..97714a9df
--- /dev/null
+++ b/server/SpawnScripts/Caves_Classic/Neddris.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Caves_Classic/Neddris.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.26 04:09:27
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves_Classic/aDustpawlookout.lua b/server/SpawnScripts/Caves_Classic/aDustpawlookout.lua
new file mode 100755
index 000000000..7e1667e83
--- /dev/null
+++ b/server/SpawnScripts/Caves_Classic/aDustpawlookout.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Caves_Classic/aDustpawlookout.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:27
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves_Classic/acaveserpent.lua b/server/SpawnScripts/Caves_Classic/acaveserpent.lua
new file mode 100755
index 000000000..b40722d6a
--- /dev/null
+++ b/server/SpawnScripts/Caves_Classic/acaveserpent.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Caves_Classic/acaveserpent.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves_Classic/adesperatedefender.lua b/server/SpawnScripts/Caves_Classic/adesperatedefender.lua
new file mode 100755
index 000000000..70f5a24d5
--- /dev/null
+++ b/server/SpawnScripts/Caves_Classic/adesperatedefender.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Caves_Classic/adesperatedefender.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves_Classic/analbinopython.lua b/server/SpawnScripts/Caves_Classic/analbinopython.lua
new file mode 100755
index 000000000..28301efe9
--- /dev/null
+++ b/server/SpawnScripts/Caves_Classic/analbinopython.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Caves_Classic/analbinopython.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.11 01:09:40
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Caves_Classic/asilverfish.lua b/server/SpawnScripts/Caves_Classic/asilverfish.lua
new file mode 100644
index 000000000..78952017f
--- /dev/null
+++ b/server/SpawnScripts/Caves_Classic/asilverfish.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Caves_Classic/asilverfish.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.26 07:12:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Classic_forest/EarthforgottenguardianSTATIC.lua b/server/SpawnScripts/Classic_forest/EarthforgottenguardianSTATIC.lua
index f193c423e..2b3b637af 100755
--- a/server/SpawnScripts/Classic_forest/EarthforgottenguardianSTATIC.lua
+++ b/server/SpawnScripts/Classic_forest/EarthforgottenguardianSTATIC.lua
@@ -6,46 +6,14 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
-
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local level3 = 11
- local difficulty1 = 7
- local hp1 = 370
- local power1 = 160
- local difficulty2 = 7
- local hp2 = 430
- local power2 = 200
- local difficulty3 =7
- local hp3 = 580
- local power3 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
AddTimer(NPC,4000,"ResetAnimation",1)
-
-
end
-
-
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Classic_forest/Ingraham.lua b/server/SpawnScripts/Classic_forest/Ingraham.lua
index 8a9652c07..2527507a0 100755
--- a/server/SpawnScripts/Classic_forest/Ingraham.lua
+++ b/server/SpawnScripts/Classic_forest/Ingraham.lua
@@ -7,8 +7,10 @@
--]]
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
diff --git a/server/SpawnScripts/Classic_forest/KendallCopperholdsRemains.lua b/server/SpawnScripts/Classic_forest/KendallCopperholdsRemains.lua
index 12377a0ea..083e1e881 100755
--- a/server/SpawnScripts/Classic_forest/KendallCopperholdsRemains.lua
+++ b/server/SpawnScripts/Classic_forest/KendallCopperholdsRemains.lua
@@ -9,6 +9,10 @@ dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
function spawn(NPC)
SetSpawnAnimation(NPC, 13016)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/KinlocFlamepawsRemains.lua b/server/SpawnScripts/Classic_forest/KinlocFlamepawsRemains.lua
index 2a1fc3e39..c06964308 100755
--- a/server/SpawnScripts/Classic_forest/KinlocFlamepawsRemains.lua
+++ b/server/SpawnScripts/Classic_forest/KinlocFlamepawsRemains.lua
@@ -9,6 +9,10 @@ dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
function spawn(NPC)
SetSpawnAnimation(NPC, 13016)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/OutlanderVaughn.lua b/server/SpawnScripts/Classic_forest/OutlanderVaughn.lua
index fdac80ada..039a53fee 100755
--- a/server/SpawnScripts/Classic_forest/OutlanderVaughn.lua
+++ b/server/SpawnScripts/Classic_forest/OutlanderVaughn.lua
@@ -117,7 +117,7 @@ elseif HasQuest(Spawn, 5483) or HasQuest(Spawn, 5759) then
StartConversation(conversation, NPC, Spawn, "I thought you said you'd help me! Do what you can, okay?")
-elseif HasCompletedQuest(Spawn, 5759) and not HasCompletedQuest(Spawn, 5759) then
+elseif HasCompletedQuest(Spawn, 5759) and not HasCompletedQuest(Spawn, 5784) then
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
diff --git a/server/SpawnScripts/Classic_forest/SergeantatArmsUthros.lua b/server/SpawnScripts/Classic_forest/SergeantatArmsUthros.lua
index d29119b94..90733ab43 100755
--- a/server/SpawnScripts/Classic_forest/SergeantatArmsUthros.lua
+++ b/server/SpawnScripts/Classic_forest/SergeantatArmsUthros.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
function spawn(NPC)
ProvidesQuest(NPC, 5486)
@@ -13,6 +14,12 @@ function spawn(NPC)
end
function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+
if GetFactionAmount(Spawn,11)<0 then
FaceTarget(NPC, Spawn)
PlayFlavor(NPC, "", "", "shakefist", 0, 0)
diff --git a/server/SpawnScripts/Classic_forest/SornCopperholdsRemains.lua b/server/SpawnScripts/Classic_forest/SornCopperholdsRemains.lua
index bdeb76fb2..3957ec562 100755
--- a/server/SpawnScripts/Classic_forest/SornCopperholdsRemains.lua
+++ b/server/SpawnScripts/Classic_forest/SornCopperholdsRemains.lua
@@ -9,7 +9,10 @@ dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
function spawn(NPC)
SetSpawnAnimation(NPC, 13016)
-
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/TheBasaltWatcher.lua b/server/SpawnScripts/Classic_forest/TheBasaltWatcher.lua
index 56cdbb910..2dd213fc3 100755
--- a/server/SpawnScripts/Classic_forest/TheBasaltWatcher.lua
+++ b/server/SpawnScripts/Classic_forest/TheBasaltWatcher.lua
@@ -16,7 +16,11 @@ end
function spawn(NPC)
SetPlayerProximityFunction(NPC, 15, "InRange", "LeaveRange")
- AddTimer(NPC,math.random(1260000, 2160000),"wakeup") --random activation between 12 (~21min) and 24 (37min) Norrath/in-game hours
+ AddTimer(NPC,math.random(1260000, 2160000),"wakeup") --random activation between 12 (~21min) and 24 (37min) Norrath/in-game hours
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
end
function InRange(NCP,Spawn) --(Doesn't trigger) VERY small chance to activate when players are near
diff --git a/server/SpawnScripts/Classic_forest/TinshenBrinthsRemains.lua b/server/SpawnScripts/Classic_forest/TinshenBrinthsRemains.lua
index 37a7d7d20..0dc3df277 100755
--- a/server/SpawnScripts/Classic_forest/TinshenBrinthsRemains.lua
+++ b/server/SpawnScripts/Classic_forest/TinshenBrinthsRemains.lua
@@ -9,6 +9,10 @@ dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
function spawn(NPC)
SetSpawnAnimation(NPC, 13016)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/YesturaRhamreysRemains.lua b/server/SpawnScripts/Classic_forest/YesturaRhamreysRemains.lua
index 91737e210..ee370e560 100755
--- a/server/SpawnScripts/Classic_forest/YesturaRhamreysRemains.lua
+++ b/server/SpawnScripts/Classic_forest/YesturaRhamreysRemains.lua
@@ -9,6 +9,10 @@ dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
function spawn(NPC)
SetSpawnAnimation(NPC, 13016)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aDifficultEarthforgottenguardian.lua b/server/SpawnScripts/Classic_forest/aDifficultEarthforgottenguardian.lua
index a005d4f79..77189f2bb 100755
--- a/server/SpawnScripts/Classic_forest/aDifficultEarthforgottenguardian.lua
+++ b/server/SpawnScripts/Classic_forest/aDifficultEarthforgottenguardian.lua
@@ -6,110 +6,14 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
- AddTimer(NPC,math.random(4100,6000),"ChooseMovement")
- Harder(NPC)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
-
-
-
-function Harder(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local level3 = 11
- local difficulty1 = 8
- local hp1 = 560
- local power1 = 240
- local difficulty2 = 8
- local hp2 = 645
- local power2 = 300
- local difficulty3 =8
- local hp3 = 870
- local power3 = 325
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
-end
-end
-
-function ChooseMovement(NPC)
-
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
- end
-
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(8,12))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(8,12))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(8,12))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Classic_forest/aFireyforgottenguardian.lua b/server/SpawnScripts/Classic_forest/aFireyforgottenguardian.lua
index 11f60be8e..15f323bac 100755
--- a/server/SpawnScripts/Classic_forest/aFireyforgottenguardian.lua
+++ b/server/SpawnScripts/Classic_forest/aFireyforgottenguardian.lua
@@ -6,103 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseFireElemental1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local level3 = 11
- local difficulty1 = 8
- local hp1 = 560
- local power1 = 240
- local difficulty2 = 8
- local hp2 = 645
- local power2 = 300
- local difficulty3 =8
- local hp3 = 870
- local power3 = 325
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
- AddTimer(NPC,math.random(2000,5500),"ChooseMovement")
-
-
-end
-
-function ChooseMovement(NPC)
-
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
- end
-
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(8,12))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(8,12))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(8,12))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(8,12))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 1, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aFireyforgottenguardianSTATIC.lua b/server/SpawnScripts/Classic_forest/aFireyforgottenguardianSTATIC.lua
index 920fdab33..32c97e46c 100755
--- a/server/SpawnScripts/Classic_forest/aFireyforgottenguardianSTATIC.lua
+++ b/server/SpawnScripts/Classic_forest/aFireyforgottenguardianSTATIC.lua
@@ -6,37 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseFireElemental1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local level3 = 11
- local difficulty1 = 7
- local hp1 = 370
- local power1 = 160
- local difficulty2 = 7
- local hp2 = 430
- local power2 = 200
- local difficulty3 =7
- local hp3 = 580
- local power3 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Classic_forest/aFlamepawloyalist.lua b/server/SpawnScripts/Classic_forest/aFlamepawloyalist.lua
index d0397c667..98e13bd99 100755
--- a/server/SpawnScripts/Classic_forest/aFlamepawloyalist.lua
+++ b/server/SpawnScripts/Classic_forest/aFlamepawloyalist.lua
@@ -6,8 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/SkeletonSleepless1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
end
diff --git a/server/SpawnScripts/Classic_forest/aRabidBadger.lua b/server/SpawnScripts/Classic_forest/aRabidBadger.lua
index a02213b70..fc2b619b4 100755
--- a/server/SpawnScripts/Classic_forest/aRabidBadger.lua
+++ b/server/SpawnScripts/Classic_forest/aRabidBadger.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(10 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(22 + dmgMod))
ChooseMovement(NPC)
end
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfish.lua b/server/SpawnScripts/Classic_forest/abonecutterfish.lua
index 07487d707..90068eb5c 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfish.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfish.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 5, 10)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam1.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam1.lua
index 507cde017..714db5fc0 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam1.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam1.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam2.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam2.lua
index 6c13315b7..eee59625a 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam2.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam2.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam3.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam3.lua
index 88ac1e064..67a58b703 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam3.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam3.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam4.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam4.lua
index 749367cef..5a2c437f0 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam4.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam4.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam5.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam5.lua
index ffccb7cd1..5bb80fb28 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam5.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam5.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam6.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam6.lua
index 093a52de2..b44cc6b81 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam6.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam6.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam7.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam7.lua
index 08bde319d..a92205a57 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam7.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam7.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam8.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam8.lua
index 7a66e818f..f88bc412a 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam8.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam8.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/abonecutterfishRoam9.lua b/server/SpawnScripts/Classic_forest/abonecutterfishRoam9.lua
index 85b6c9cf0..3a4bbf7c3 100755
--- a/server/SpawnScripts/Classic_forest/abonecutterfishRoam9.lua
+++ b/server/SpawnScripts/Classic_forest/abonecutterfishRoam9.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aboundwatcher.lua b/server/SpawnScripts/Classic_forest/aboundwatcher.lua
index 9ff09d557..b43bd3c8a 100755
--- a/server/SpawnScripts/Classic_forest/aboundwatcher.lua
+++ b/server/SpawnScripts/Classic_forest/aboundwatcher.lua
@@ -6,33 +6,14 @@
:
--]]
dofile ("SpawnScripts/Generic/MonsterCallouts/BaseWaterElemental1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ AddTimer(NPC, 6000, "waypoints")
end
-
-
function respawn(NPC)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Classic_forest/acentipede.lua b/server/SpawnScripts/Classic_forest/acentipede.lua
index 01ca32f05..1fbd81c1e 100755
--- a/server/SpawnScripts/Classic_forest/acentipede.lua
+++ b/server/SpawnScripts/Classic_forest/acentipede.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4,1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/adeeplurker.lua b/server/SpawnScripts/Classic_forest/adeeplurker.lua
index 7afb4474e..e1f8da895 100755
--- a/server/SpawnScripts/Classic_forest/adeeplurker.lua
+++ b/server/SpawnScripts/Classic_forest/adeeplurker.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/adevotedfollower.lua b/server/SpawnScripts/Classic_forest/adevotedfollower.lua
index 4e6873606..6ee4554f6 100755
--- a/server/SpawnScripts/Classic_forest/adevotedfollower.lua
+++ b/server/SpawnScripts/Classic_forest/adevotedfollower.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/SkeletonSleepless1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
end
diff --git a/server/SpawnScripts/Classic_forest/aforestscavenger.lua b/server/SpawnScripts/Classic_forest/aforestscavenger.lua
index 566e7f6d1..bd771de3d 100755
--- a/server/SpawnScripts/Classic_forest/aforestscavenger.lua
+++ b/server/SpawnScripts/Classic_forest/aforestscavenger.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 8
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 240
- local power1 = 100
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4,1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aforgottensentinel.lua b/server/SpawnScripts/Classic_forest/aforgottensentinel.lua
index cc7973e09..228f21388 100755
--- a/server/SpawnScripts/Classic_forest/aforgottensentinel.lua
+++ b/server/SpawnScripts/Classic_forest/aforgottensentinel.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
AddTimer(NPC,4100,"waypoints",1)
end
diff --git a/server/SpawnScripts/Classic_forest/aforsakenobserver.lua b/server/SpawnScripts/Classic_forest/aforsakenobserver.lua
index bcd4c6f78..b8521b360 100755
--- a/server/SpawnScripts/Classic_forest/aforsakenobserver.lua
+++ b/server/SpawnScripts/Classic_forest/aforsakenobserver.lua
@@ -6,32 +6,13 @@
:
--]]
dofile ("SpawnScripts/Generic/MonsterCallouts/BaseWaterElemental1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 11
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 430
- local power2 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
-
-
function respawn(NPC)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Classic_forest/agossamergroundskeeper.lua b/server/SpawnScripts/Classic_forest/agossamergroundskeeper.lua
index d6d35e0fe..8948de64b 100755
--- a/server/SpawnScripts/Classic_forest/agossamergroundskeeper.lua
+++ b/server/SpawnScripts/Classic_forest/agossamergroundskeeper.lua
@@ -5,21 +5,22 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
Appearance(NPC)
end
function Appearance(NPC)
-if GetGender(NPC)==2 then
- SpawnSet(NPC,"model_type",2851)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",2851)
+ end
end
-end
-
-
function respawn(NPC)
+ spawn(NPC)
end
function waypoints(NPC)
diff --git a/server/SpawnScripts/Classic_forest/aleathershellsnapper.lua b/server/SpawnScripts/Classic_forest/aleathershellsnapper.lua
index e0010df0f..915ba4c9f 100755
--- a/server/SpawnScripts/Classic_forest/aleathershellsnapper.lua
+++ b/server/SpawnScripts/Classic_forest/aleathershellsnapper.lua
@@ -5,99 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/anAntonicanhawk.lua b/server/SpawnScripts/Classic_forest/anAntonicanhawk.lua
index e04a02d49..8f571314c 100755
--- a/server/SpawnScripts/Classic_forest/anAntonicanhawk.lua
+++ b/server/SpawnScripts/Classic_forest/anAntonicanhawk.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y+2, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y+2, Z - 4,2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y+2, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y+2, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y+2, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y+2, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 7, -7, 2, -2, 2, 5, 10)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/arockadder.lua b/server/SpawnScripts/Classic_forest/arockadder.lua
index 6b2446659..af0159004 100755
--- a/server/SpawnScripts/Classic_forest/arockadder.lua
+++ b/server/SpawnScripts/Classic_forest/arockadder.lua
@@ -5,37 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/arockadderRoam1.lua b/server/SpawnScripts/Classic_forest/arockadderRoam1.lua
index e322fde4d..22bc256e9 100755
--- a/server/SpawnScripts/Classic_forest/arockadderRoam1.lua
+++ b/server/SpawnScripts/Classic_forest/arockadderRoam1.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/arockadderRoam2.lua b/server/SpawnScripts/Classic_forest/arockadderRoam2.lua
index aa60dd73e..9e35661ed 100755
--- a/server/SpawnScripts/Classic_forest/arockadderRoam2.lua
+++ b/server/SpawnScripts/Classic_forest/arockadderRoam2.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aruinsskulker.lua b/server/SpawnScripts/Classic_forest/aruinsskulker.lua
index d335a5cd5..684051229 100755
--- a/server/SpawnScripts/Classic_forest/aruinsskulker.lua
+++ b/server/SpawnScripts/Classic_forest/aruinsskulker.lua
@@ -5,72 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- AddTimer(NPC,math.random (2000,6000),"EmoteLoop")
-
---ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 10, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 10, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4,2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 10, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 10, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
end
function respawn(NPC, Spawn)
@@ -80,38 +20,3 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
-
-function EmoteLoop(NPC,Spawn)
- if IsInCombat(NPC) == false and HasMoved(NPC)==false then
- choice = MakeRandomInt(1,12)
- if choice == 1 then
- PlayFlavor(NPC, "", "", "treaten", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn, 0)
- elseif choice == 3 then
- PlayFlavor(NPC, "", "", "frustrated", 0, 0, Spawn, 0)
- elseif choice == 4 then
- PlayFlavor(NPC, "", "", "peer", 0, 0, Spawn, 0)
- elseif choice == 5 then
- PlayFlavor(NPC, "", "", "feint", 0, 0, Spawn, 0)
- elseif choice == 6 then
- PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
- elseif choice == 7 then
- PlayFlavor(NPC, "", "", "taunt", 0, 0, Spawn, 0)
- elseif choice == 8 then
- PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn, 0)
- elseif choice == 9 then
- PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
- elseif choice == 10 then
- PlayFlavor(NPC, "", "", "cackle", 0, 0, Spawn, 0)
- elseif choice == 11 then
- PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
- elseif choice == 12 then
- PlayFlavor(NPC, "", "", "tantrum_short", 0, 0, Spawn, 0)
- end
- AddTimer(NPC,MakeRandomInt(7000,9000),"EmoteLoop")
- else
- AddTimer(NPC,MakeRandomInt(10000,11000),"EmoteLoop")
- end
-
- end
\ No newline at end of file
diff --git a/server/SpawnScripts/Classic_forest/aruinsskulker1.lua b/server/SpawnScripts/Classic_forest/aruinsskulker1.lua
index b89f54f41..1ad2185a4 100755
--- a/server/SpawnScripts/Classic_forest/aruinsskulker1.lua
+++ b/server/SpawnScripts/Classic_forest/aruinsskulker1.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local difficulty1 = 6
- local hp1 = 275
- local power1 = 110
- local difficulty2 = 6
- local hp2 = 370
- local power2 = 130
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aruinsskulker2.lua b/server/SpawnScripts/Classic_forest/aruinsskulker2.lua
index 5a00fa06b..b4e2916d8 100755
--- a/server/SpawnScripts/Classic_forest/aruinsskulker2.lua
+++ b/server/SpawnScripts/Classic_forest/aruinsskulker2.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local difficulty1 = 6
- local hp1 = 275
- local power1 = 110
- local difficulty2 = 6
- local hp2 = 370
- local power2 = 130
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aruinsskulker3.lua b/server/SpawnScripts/Classic_forest/aruinsskulker3.lua
index 95cbf5e03..fb038e948 100755
--- a/server/SpawnScripts/Classic_forest/aruinsskulker3.lua
+++ b/server/SpawnScripts/Classic_forest/aruinsskulker3.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local difficulty1 = 6
- local hp1 = 275
- local power1 = 110
- local difficulty2 = 6
- local hp2 = 370
- local power2 = 130
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aruinsskulker4.lua b/server/SpawnScripts/Classic_forest/aruinsskulker4.lua
index 9275f0f34..d075b3a6c 100755
--- a/server/SpawnScripts/Classic_forest/aruinsskulker4.lua
+++ b/server/SpawnScripts/Classic_forest/aruinsskulker4.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local difficulty1 = 6
- local hp1 = 275
- local power1 = 110
- local difficulty2 = 6
- local hp2 = 370
- local power2 = 130
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/aruinsskulkerSwimmer.lua b/server/SpawnScripts/Classic_forest/aruinsskulkerSwimmer.lua
index f9875aeb3..ab7b66418 100755
--- a/server/SpawnScripts/Classic_forest/aruinsskulkerSwimmer.lua
+++ b/server/SpawnScripts/Classic_forest/aruinsskulkerSwimmer.lua
@@ -5,13 +5,16 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
+
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Classic_forest/asleeplessone.lua b/server/SpawnScripts/Classic_forest/asleeplessone.lua
index 78d12088b..af36a4fcc 100755
--- a/server/SpawnScripts/Classic_forest/asleeplessone.lua
+++ b/server/SpawnScripts/Classic_forest/asleeplessone.lua
@@ -6,8 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/SkeletonSleepless1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
end
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper.lua
index fdb5d945b..55e0257c0 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper.lua
@@ -5,37 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper1.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper1.lua
index 6424897d1..abe30e3a9 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper1.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper1.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper10.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper10.lua
index 635cbe01e..008624bed 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper10.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper10.lua
@@ -5,37 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper11.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper11.lua
index f72d3e144..c1626ebb5 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper11.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper11.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper12.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper12.lua
index c818c0faf..02c1130db 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper12.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper12.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper13.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper13.lua
index 5d2794193..aba53dda2 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper13.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper13.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper14.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper14.lua
index d0c6fc08b..9eea82bca 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper14.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper14.lua
@@ -5,37 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper2.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper2.lua
index 89a1f8dab..52f78fe48 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper2.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper2.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper3.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper3.lua
index a327d729c..3766e32f9 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper3.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper3.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper4.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper4.lua
index 08817a5f1..b4d7d56a1 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper4.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper4.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper5.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper5.lua
index eaa15c523..320d8d530 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper5.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper5.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper6.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper6.lua
index abce74d12..4142de1b8 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper6.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper6.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper7.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper7.lua
index 3bb76fee2..27b080070 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper7.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper7.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper8.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper8.lua
index 4d23a6bb0..8de75761e 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper8.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper8.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/astoneshellsnapper9.lua b/server/SpawnScripts/Classic_forest/astoneshellsnapper9.lua
index ea17e8e8c..ca8de08c6 100755
--- a/server/SpawnScripts/Classic_forest/astoneshellsnapper9.lua
+++ b/server/SpawnScripts/Classic_forest/astoneshellsnapper9.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/asunbeetle.lua b/server/SpawnScripts/Classic_forest/asunbeetle.lua
index 1dda6110f..8ab888c70 100755
--- a/server/SpawnScripts/Classic_forest/asunbeetle.lua
+++ b/server/SpawnScripts/Classic_forest/asunbeetle.lua
@@ -5,91 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4,1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 1, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/atimberdeer.lua b/server/SpawnScripts/Classic_forest/atimberdeer.lua
index 97a3f5e77..e12e65694 100755
--- a/server/SpawnScripts/Classic_forest/atimberdeer.lua
+++ b/server/SpawnScripts/Classic_forest/atimberdeer.lua
@@ -5,99 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local level3 = 7
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- local difficulty3 =6
- local hp3 = 200
- local power3 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4,2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Classic_forest/atirelessstudent.lua b/server/SpawnScripts/Classic_forest/atirelessstudent.lua
index 0b137b174..0e2aa7f6e 100755
--- a/server/SpawnScripts/Classic_forest/atirelessstudent.lua
+++ b/server/SpawnScripts/Classic_forest/atirelessstudent.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/SkeletonSleepless1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
end
diff --git a/server/SpawnScripts/Classic_forest/awoodlandbadger.lua b/server/SpawnScripts/Classic_forest/awoodlandbadger.lua
index 35bb9bc56..b36b5d20c 100755
--- a/server/SpawnScripts/Classic_forest/awoodlandbadger.lua
+++ b/server/SpawnScripts/Classic_forest/awoodlandbadger.lua
@@ -5,99 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local level3 = 5
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- local difficulty3 =6
- local hp3 = 130
- local power3 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/ABerserkGolem.lua b/server/SpawnScripts/Commonlands/ABerserkGolem.lua
new file mode 100644
index 000000000..ddff605b8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ABerserkGolem.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ABerserkGolem.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 05:01:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/AFierceBandedArmadillo.lua b/server/SpawnScripts/Commonlands/AFierceBandedArmadillo.lua
new file mode 100644
index 000000000..1f045f6ce
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/AFierceBandedArmadillo.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/AFierceBandedArmadillo.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 10:01:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ATorturedMaid.lua b/server/SpawnScripts/Commonlands/ATorturedMaid.lua
index db36d3f9e..166f934d1 100755
--- a/server/SpawnScripts/Commonlands/ATorturedMaid.lua
+++ b/server/SpawnScripts/Commonlands/ATorturedMaid.lua
@@ -9,7 +9,10 @@
local LionManeHelm = 5249
function spawn(NPC)
-
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/Amoora.lua b/server/SpawnScripts/Commonlands/Amoora.lua
index be33df30f..c58548305 100755
--- a/server/SpawnScripts/Commonlands/Amoora.lua
+++ b/server/SpawnScripts/Commonlands/Amoora.lua
@@ -5,12 +5,12 @@
Script Purpose :
:
--]]
-
+require "SpawnScripts/Generic/NPCModule"
local ARatDivided = 447
local AHardManToPlease = 450
function spawn(NPC)
- SetTempVariable(NPC, "HAILED", "true")
+ SetTempVariable(NPC, "HAILED", "true")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/AndersBlackhammer.lua b/server/SpawnScripts/Commonlands/AndersBlackhammer.lua
index 34090c98a..96afd149f 100755
--- a/server/SpawnScripts/Commonlands/AndersBlackhammer.lua
+++ b/server/SpawnScripts/Commonlands/AndersBlackhammer.lua
@@ -10,6 +10,10 @@ local CollectingOnWhatIsEarned = 423
require "SpawnScripts/Generic/GenericVoiceOvers"
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
end
diff --git a/server/SpawnScripts/Commonlands/BecceGeil.lua b/server/SpawnScripts/Commonlands/BecceGeil.lua
new file mode 100644
index 000000000..578f32c26
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/BecceGeil.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/BecceGeil.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.10 04:03:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ barbarian(NPC)
+ DervishChain(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/CannixSilverflame.lua b/server/SpawnScripts/Commonlands/CannixSilverflame.lua
index 732d1ef98..0fa1aed25 100755
--- a/server/SpawnScripts/Commonlands/CannixSilverflame.lua
+++ b/server/SpawnScripts/Commonlands/CannixSilverflame.lua
@@ -1,15 +1,18 @@
--[[
Script Name : SpawnScripts/Commonlands/CannixSilverflame.lua
- Script Author : Premierio015
+ Script Author : Premierio015//Dorbin
Script Date : 2021.02.27 10:02:00
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/NPCModule"
local TheReturnOfTheLight = 485
function spawn(NPC)
-SetPlayerProximityFunction(NPC, 20, "InRange")
-SetAggroRadius(NPC, 20)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 20, "InRange")
+ SetAggroRadius(NPC, 20)
end
function InRange(NPC, Spawn)
@@ -19,13 +22,17 @@ end
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, TheReturnOfTheLight) then
+ if HasQuest(Spawn,5865) and not QuestStepIsComplete(Spawn,5865,6)then --FREEPORT OPPORTUNITY
+ SetStepComplete(Spawn,5865,6)
+end
+ if not HasQuest(Spawn, TheReturnOfTheLight) or GetQuestStep(Spawn, TheReturnOfTheLight) == 1 then
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame001.mp3", "", "", 3283011934, 1161547540, Spawn)
- AddConversationOption(conversation, "Are you a guard or something?", "Option1")
- AddConversationOption(conversation, "You're excused. ")
- StartConversation(conversation, NPC, Spawn, "Greetings to you as well, traveler. Now if you'll excuse me, I must remain vigilant while this time is appointed unto me.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings to you as well, traveler. Now if you'll excuse me, I must remain vigilant while this time is appointed unto me.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame001.mp3", 3283011934, 1161547540)
+ Dialog.AddOption("Are you a guard or something?", "Option1")
+ Dialog.AddOption("You're excused.")
+ Dialog.Start()
elseif GetQuestStep(Spawn, TheReturnOfTheLight) == 2 or GetQuestStep(Spawn, TheReturnOfTheLight) == 3 then
step2or3_progress(NPC, Spawn)
elseif GetQuestStep(Spawn, TheReturnOfTheLight) == 4 then
@@ -52,40 +59,51 @@ end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame002.mp3", "", "", 1936975525, 2350985185, Spawn )
- AddConversationOption(conversation, "I see. I'll leave you to your thoughts. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A guard? No. I suppose if I have a title, you can call me a ... a pilgrim. Yes, just a pilgrim looking for the light of truth. Aren't we all seeking a little truth in these turbulent times?")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame002.mp3", 1936975525, 2350985185)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I see. I'll leave you to your thoughts. ")
if GetQuestStep(Spawn, TheReturnOfTheLight) == 1 then
- AddConversationOption(conversation, "Maybe a pilgrim would be interested in buying this unique lightstone.", "Option2")
+ Dialog.AddOption("Maybe a pilgrim would be interested in buying this unique lightstone.", "Option2")
+ else
+ Dialog.AddOption("You're excused.")
end
- StartConversation(conversation, NPC, Spawn, "A guard? No. I suppose if I have a title, you can call me a ... a pilgrim. Yes, just a pilgrim looking for the light of truth. Aren't we all seeking a little truth in these turbulent times?")
+ Dialog.Start()
end
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame003.mp3", "", "", 514719331, 2019687176, Spawn)
- AddConversationOption(conversation, "Yes, I could use a little adventure.", "Option3")
- StartConversation(conversation, NPC, Spawn, "No, I'm sorry. I'm not interested in any local treasures ... wait ... let me see that lightstone. You're right! This isn't like the other lightstones in these lands. In fact, I've never seen one like it. Could it be? Is it beginning? It's possible, but I must be sure. Will you do something for me?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No, I'm sorry. I'm not interested in any local treasures ... wait ... let me see that lightstone. You're right! This isn't like the other lightstones in these lands. In fact, I've never seen one like it. Could it be? Is it beginning? It's possible, but I must be sure. Will you do something for me?")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame003.mp3", 514719331, 2019687176)
+ Dialog.AddOption("Yes, I could use a little adventure.", "Option3")
+ Dialog.Start()
end
function Option3(NPC, Spawn)
SetStepComplete(Spawn, TheReturnOfTheLight, 1)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame004.mp3", "", "", 997093089, 3927227010, Spawn)
- AddConversationOption(conversation, "I will return when it is done. ")
- StartConversation(conversation, NPC, Spawn, "Good, good. You didn't come upon this item by chance. You must be the one to set out on this quest. Seek out both the Mourned and the Forgotten. One has fallen among brethren, the other alone. Both were valorous on the field of battle. Touch this stone to them and honor both.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good, good. You didn't come upon this item by chance. You must be the one to set out on this quest. Seek out both the Mourned and the Forgotten. One has fallen among brethren, the other alone. Both were valorous on the field of battle. Touch this stone to them and honor both.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame004.mp3", 997093089, 3927227010)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I will return when it is done. ")
+ Dialog.Start()
end
function Option4(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame006.mp3", "", "", 2082775910, 3850348152, Spawn)
- AddConversationOption(conversation, "Tell me how to increase its power.", "Option5")
- StartConversation(conversation, NPC, Spawn, "The stone you have is glowing again. This proves the lightstone you have is very unique. I can show you how to increase its power. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The stone you have is glowing again. This proves the lightstone you have is very unique. I can show you how to increase its power.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame006.mp3", 2082775910, 3850348152)
+ Dialog.AddOption("Tell me how to increase its power.", "Option5")
+ Dialog.Start()
+ if GetQuestStepProgress(Spawn,485,5) ==0 and not HasItem(Spawn,151067,1) then
+ GiveQuestItem(TheReturnOfTheLight, Spawn, "I returned to Cannix Silverflame.", 151067)
+ end
end
@@ -93,97 +111,128 @@ end
function Option5(NPC, Spawn)
SetStepComplete(Spawn, TheReturnOfTheLight, 4)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I will hunt Rama'nai.")
- StartConversation(conversation, NPC, Spawn, "Listen carefully: The lion has always been a symbol of valor on the battlefield, never retreating from a foe, always protecting his charges. The great beast Rama'nai walks these lands at the head of his pride. Slay him in honorable combat and dip the stone in his blood. Return to me when you're done.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Listen carefully: The lion has always been a symbol of valor on the battlefield, never retreating from a foe, always protecting his charges. The great beast Rama'nai walks these lands at the head of his pride. Slay him in honorable combat and dip the stone in his blood. Return to me when you're done.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame007.mp3", 3631388788, 98718381)
+ Dialog.AddOption("I will hunt Rama'nai.")
+ Dialog.Start()
end
function Option6(NPC, Spawn)
SetStepComplete(Spawn, TheReturnOfTheLight, 6)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame009.mp3", "", "", 933092014, 3991745317, Spawn)
- AddConversationOption(conversation, "I will find Gaer and Ogof.")
- StartConversation(conversation, NPC, Spawn, "I see you did as you were told. The stone continues to glow brighter. To increase its power, you must right some wrongs. Find the orc captains Gaer and Ogof. They routinely direct their troops to destroy and rob the graves of the ancient Knights of Truth. You must avenge this defilement of the graves; doing so will increase the power of your stone.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I see you did as you were told. The stone continues to glow brighter. To increase its power, you must right some wrongs. Find the orc captains Gaer and Ogof. They routinely direct their troops to destroy and rob the graves of the ancient Knights of Truth. You must avenge this defilement of the graves; doing so will increase the power of your stone.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame009.mp3", 933092014, 3991745317)
+ Dialog.AddOption("I will find Gaer and Ogof.")
+ Dialog.Start()
+ if HasItem(Spawn, 151067) then
+ RemoveItem(Spawn, 151067)
+ end
+ if GetQuestStepProgress(Spawn,485,6) ==0 and not HasItem(Spawn,144492,1) then
+ GiveQuestItem(TheReturnOfTheLight, Spawn, "I returned to Cannix Silverflame.", 144492)
+ end
end
function Option7(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame011.mp3", "", "", 4172338348, 1148941338, Spawn)
- AddConversationOption(conversation, "Who is this soul?", "Option8")
- StartConversation(conversation, NPC, Spawn, "Excellent. Greedy orc scavengers will no longer disturb the buried dead. Your stone grows brighter with each deed done in valor. There is another soul in these lands who needs releasing from the eternal torment that chains him to this realm. Will you free him?")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Excellent. Greedy orc scavengers will no longer disturb the buried dead. Your stone grows brighter with each deed done in valor. There is another soul in these lands who needs releasing from the eternal torment that chains him to this realm. Will you free him?")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame011.mp3", 4172338348, 1148941338)
+ Dialog.AddOption("Who is this soul?", "Option8")
+ Dialog.Start()
+ if HasItem(Spawn, 144492) then
+ RemoveItem(Spawn, 144492)
+ end
+ if GetQuestStepProgress(Spawn,485,10) ==0 and not HasItem(Spawn,180730,1) then
+ GiveQuestItem(TheReturnOfTheLight, Spawn, "I returned to Cannix Silverflame.", 180730)
+ end
end
function Option8(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame012.mp3", "", "", 1530561048, 1179568761, Spawn)
- AddConversationOption(conversation, "I suppose I am the one to fix all this?", "Option9")
- StartConversation(conversation, NPC, Spawn, "Long ago the Priests of Marr and the Knights of Truth administered to the people of these lands. The current ruler of Freeport despised these people and managed to kill most of them long before the Shattering. The High Priest at the time was first cursed, then executed and then his corpse was tossed out in these lands for the scavengers to feast on. His soul hasn't found deserved rest for centuries.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Long ago the Priests of Marr and the Knights of Truth administered to the people of these lands. The current ruler of Freeport despised these people and managed to kill most of them long before the Shattering. The High Priest at the time was first cursed, then executed and then his corpse was tossed out in these lands for the scavengers to feast on. His soul hasn't found deserved rest for centuries.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame012.mp3", 1530561048, 1179568761)
+ Dialog.AddOption("I suppose I am the one to fix all this?", "Option9")
+ Dialog.Start()
end
function Option9(NPC, Spawn)
SetStepComplete(Spawn, TheReturnOfTheLight, 9)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame013.mp3", "", "", 984364583, 3971878128, Spawn)
- AddConversationOption(conversation, "I will release him from his pain.")
- StartConversation(conversation, NPC, Spawn, "Yes, you now bear an object that hasn't been seen on Norrath for centuries. You hold the essence of the Greater Lightstone. Defeat the cursed High Priest in battle while the lightstone is in his presence. The powers of Valor and Truth imbued within will free him from his curse. ")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you now bear an object that hasn't been seen on Norrath for centuries. You hold the essence of the Greater Lightstone. Defeat the cursed High Priest in battle while the lightstone is in his presence. The powers of Valor and Truth imbued within will free him from his curse. ")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame013.mp3", 984364583, 3971878128)
+ Dialog.AddOption("I will release him from his pain.")
+ Dialog.Start()
end
function Option10(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame015.mp3", "", "", 862085114, 603082398, Spawn)
- AddConversationOption(conversation, "What is it?", "Option11")
- StartConversation(conversation, NPC, Spawn, "Your lightstone glows brilliantly! Your quest is almost over. I must ask you to complete a final task. If you do this, I can fully imbue your lightstone.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Your lightstone glows brilliantly! Your quest is almost over. I must ask you to complete a final task. If you do this, I can fully imbue your lightstone.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame015.mp3", 862085114, 603082398)
+ Dialog.AddOption("What is it?", "Option11")
+ Dialog.Start()
+ if HasItem(Spawn, 180730) then
+ RemoveItem(Spawn, 180730)
+ end
+ if GetQuestStepProgress(Spawn,485,12) ==0 and not HasItem(Spawn,155134,1) then
+ GiveQuestItem(TheReturnOfTheLight, Spawn, "I returned to Cannix Silverflame.", 155134)
+ end
end
function Option11(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame016.mp3", "", "", 2784277299, 2349442251, Spawn)
- AddConversationOption(conversation, "Where can I find this orc?", "Option12")
- StartConversation(conversation, NPC, Spawn, "The elite among the Knights of Truth wielded the magical Swords of Truth. These weapons have been lost for many decades. News has surfaced that an orc holds the hilt and broken edge of one of these lost blades; you must retrieve its remnants. With these ancient saber pieces I shall complete your Greater Lightstone.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The elite among the Knights of Truth wielded the magical Swords of Truth. These weapons have been lost for many decades. News has surfaced that an orc holds the hilt and broken edge of one of these lost blades; you must retrieve its remnants. With these ancient saber pieces I shall complete your Greater Lightstone.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame016.mp3", 2784277299, 2349442251)
+ Dialog.AddOption("Where can I find this orc?", "Option12")
+ Dialog.Start()
end
function Option12(NPC, Spawn)
SetStepComplete(Spawn, TheReturnOfTheLight, 11)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame017.mp3", "", "", 3813681064, 1372487877, Spawn)
- AddConversationOption(conversation, "I'll get the sword back.")
- StartConversation(conversation, NPC, Spawn, "He's a leader among the Bloodskull clan of orcs. Rumors state his camp lies in a hidden valley close to here. Unfortunately, I don't know the location of the camp. You must help me get this sword back into the proper hands; it's sacrilege for such a creature to possess it.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("He's a leader among the Bloodskull clan of orcs. Rumors state his camp lies in a hidden valley close to here. Unfortunately, I don't know the location of the camp. You must help me get this sword back into the proper hands; it's sacrilege for such a creature to possess it.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame017.mp3", 3813681064, 1372487877)
+ Dialog.AddOption("I'll get the sword back.")
+ Dialog.Start()
end
function Option13(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame019.mp3", "", "", 3694906098, 1804290878, Spawn)
- AddConversationOption(conversation, "Here they are.", "Option14")
- StartConversation(conversation, NPC, Spawn, "You did it! Now hand me the broken sword and your lightstone, and I will completely empower the stone.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You did it! Now hand me the broken sword and your lightstone, and I will completely empower the stone.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame019.mp3", 3694906098, 1804290878)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Here they are.", "Option14")
+ Dialog.Start()
end
function Option14(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame020.mp3", "", "", 2917051615, 1667743786, Spawn)
- AddConversationOption(conversation, "I am not sure what you mean. I did the work for that, it should be mine!", "Option15")
- StartConversation(conversation, NPC, Spawn, "There! The Great Lightstone is fully empowered with the essence of Valor, Truth, and Light! I am truly sorry to have deceived you into thinking you could keep this stone. You must understand, it must stay with my Order. He's returning soon and we must preserve his artifacts to hasten his arrival. It has truly pained me to speak untruthfully to you. I hope you understand the importance of this matter.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There! The Great Lightstone is fully empowered with the essence of Valor, Truth, and Light! I am truly sorry to have deceived you into thinking you could keep this stone. You must understand, it must stay with my Order. He's returning soon and we must preserve his artifacts to hasten his arrival. It has truly pained me to speak untruthfully to you. I hope you understand the importance of this matter.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame020.mp3", 2917051615, 1667743786)
+ Dialog.AddOption("I am not sure what you mean. I did the work for that, it should be mine!", "Option15")
+ Dialog.Start()
end
function Option15(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame022.mp3", "", "", 1925599648, 331494401, Spawn)
- AddConversationOption(conversation, "What?", "Finish")
- StartConversation(conversation, NPC, Spawn, "You've been exceptionally brave and valorous in this quest. If it weren't for the dire need of my order to possess this stone, I'd gladly hand it over to you. You must understand ... what was that?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You've been exceptionally brave and valorous in this quest. If it weren't for the dire need of my order to possess this stone, I'd gladly hand it over to you. You must understand ... what was that?")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame022.mp3", 1925599648, 331494401)
+ Dialog.AddOption("What?","Finish")
+ Dialog.Start()
end
function Finish(NPC, Spawn)
@@ -192,15 +241,16 @@ function Finish(NPC, Spawn)
aMilitiaGuard1 = SpawnByLocationID(zone, 300576)
aMilitiaGuard2 = SpawnByLocationID(zone, 300577)
PlayFlavor(NPC, "", "We have uninvited guests! Let's make them feel welcome.", "", 1689589577, 4560189, Spawn)
- AddTimer(NPC, 7000, "set_faction", 1)
+ AddTimer(NPC, 7000, "set_faction", 1,Spawn)
end
function set_faction(NPC, Spawn)
SpawnSet(NPC, "faction", 34)
+--AddTimer(NPC, 2000, "deathUpdate", 1,Spawn)
end
-function death(NPC, Spawn)
+function deathUpdate(NPC, Spawn)
if GetQuestStep(Spawn, TheReturnOfTheLight) == 13 then
SetStepComplete(Spawn, TheReturnOfTheLight, 13)
end
@@ -208,45 +258,53 @@ end
-- QUEST STEP PROGRESS
-function step2or3progress(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame005.mp3", "", "", 892711252, 1320674484, Spawn)
- AddConversationOption(conversation, "I'm still looking for them!")
- StartConversation(conversation, NPC, Spawn, "I cannot tell you any more than what I've already said. Seek out the Mourned and the Forgotten.")
+function step2or3_progress(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I cannot tell you any more than what I've already said. Seek out the Mourned and the Forgotten.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame005.mp3", 892711252, 1320674484)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I'm still looking for them!")
+ Dialog.Start()
end
function step5_progress(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame008.mp3", "", "", 523799042, 3054124923, Spawn)
- AddConversationOption(conversation, "I will find Rama'nai.")
- StartConversation(conversation, NPC, Spawn, "You've not faced the great beast Rama'nai. Seek him out.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You've not faced the great beast Rama'nai. Seek him out.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame008.mp3", 523799042, 3054124923)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I will find Rama'nai.")
+ Dialog.Start()
end
function step7or8_progress(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame010.mp3", "", "", 3774502752, 2904161395, Spawn)
- AddConversationOption(conversation, "I will find Gaer and Ogof.")
- StartConversation(conversation, NPC, Spawn, "You haven't defeated both orc captains. They still threaten the sacred graves of the Knights of Truth.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You haven't defeated both orc captains. They still threaten the sacred graves of the Knights of Truth.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame010.mp3", 3774502752, 2904161395)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("I will find Gaer and Ogof.")
+ Dialog.Start()
end
function step10_progress(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame014.mp3", "", "", 1292831850, 1992570169, Spawn)
- AddConversationOption(conversation, "I will release him from his curse.")
- StartConversation(conversation, NPC, Spawn, "The cursed High Priest still walks the land. To free him you must defeat him in the presence of the lightstone.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The cursed High Priest still walks the land. To free him you must defeat him in the presence of the lightstone.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame014.mp3", 1292831850, 1992570169)
+ Dialog.AddOption("I will release him from his curse.")
+ Dialog.Start()
end
function step12_progress(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/cannix_silverflame/commonlands/cannixsilverflame018.mp3", "", "", 623990960, 1621442579, Spawn)
- AddConversationOption(conversation, "I'm working on it.")
- StartConversation(conversation, NPC, Spawn, "I hoped when we met again you would bear the sword the orc leader possesses. Please, recover the sword from that creature.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I hoped when we met again you would bear the sword the orc leader possesses. Please, recover the sword from that creature.")
+ Dialog.AddVoiceover("voiceover/english/cannix_silverflame/commonlands/cannixsilverflame018.mp3", 623990960, 1621442579)
+ Dialog.AddOption("I'm working on it.")
+ Dialog.Start()
end
diff --git a/server/SpawnScripts/Commonlands/CaptainFeralis.lua b/server/SpawnScripts/Commonlands/CaptainFeralis.lua
index f841edb91..c0a931930 100755
--- a/server/SpawnScripts/Commonlands/CaptainFeralis.lua
+++ b/server/SpawnScripts/Commonlands/CaptainFeralis.lua
@@ -5,6 +5,7 @@
Script Purpose :
Script Notes : Offer Quests "Filling the Coffers", "Ventar T'Kal", "Tesera Valnos".
--]]
+require "SpawnScripts/Generic/NPCModule"
local CaptainFeralis = 405
local QUEST = 406 -- Filling the Coffers quest
@@ -13,11 +14,12 @@ local QUEST3 = 412 -- Returning to Captain Feralis quest (Ventar)
local QUEST4 = 414 -- Tesera Valnos quest
local QUEST5 = 5221 -- Returning to Captain Feralis quest ( Tecera)
-function spawn(NPC)
-SetPlayerProximityFunction(NPC, 10, "InRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
-
function InRange(NPC, Spawn)
if GetDeity(Spawn) ~= 1 then
if HasCompletedQuest(Spawn, CaptainFeralis) then
diff --git a/server/SpawnScripts/Commonlands/CaptainGaer.lua b/server/SpawnScripts/Commonlands/CaptainGaer.lua
new file mode 100644
index 000000000..d722bb659
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/CaptainGaer.lua
@@ -0,0 +1,102 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/CaptainGaer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.19 02:01:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55+ dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -853.31, -47.85, 665.66, 2, 0)
+ MovementLoopAddLocation(NPC, -854.13, -47.25, 631.48, 2, 0)
+ MovementLoopAddLocation(NPC, -883.2, -48.02, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -922.78, -48.04, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -950.03, -48.04, 614.71, 2, 0)
+ MovementLoopAddLocation(NPC, -981.42, -48.04, 601.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1072.99, -48.04, 621.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1097.7, -48.04, 617.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1124.87, -48.04, 621.24, 2, 0)
+ MovementLoopAddLocation(NPC, -1148.21, -48.04, 632.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1195.37, -47.91, 626.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1201.45, -47.47, 620.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1199.98, -47.13, 611.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1168.19, -47.37, 589.7, 2, 0)
+ MovementLoopAddLocation(NPC, -1099.29, -47.22, 551.58, 2, 0)
+ MovementLoopAddLocation(NPC, -1074, -47.58, 552.66, 2, 0)
+ MovementLoopAddLocation(NPC, -1051.47, -47.66, 559.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1015.81, -47.84, 575.63, 2, 0)
+ MovementLoopAddLocation(NPC, -998.11, -47.83, 576.63, 2, 0)
+ MovementLoopAddLocation(NPC, -909.95, -48.02, 555.98, 2, 0)
+ MovementLoopAddLocation(NPC, -847.01, -48.04, 540.67, 2, 0)
+ MovementLoopAddLocation(NPC, -803.28, -48.04, 522.18, 2, 0)
+ MovementLoopAddLocation(NPC, -735.52, -47.84, 461.03, 2, 0)
+ MovementLoopAddLocation(NPC, -685.04, -48.04, 437.92, 2, 0)
+ MovementLoopAddLocation(NPC, -654.54, -45.76, 425.58, 2, 0)
+ MovementLoopAddLocation(NPC, -605.63, -47.55, 372.49, 2, 0)
+ MovementLoopAddLocation(NPC, -577.7, -47.29, 348.63, 2, 0)
+ MovementLoopAddLocation(NPC, -549.75, -46.48, 307.69, 2, 0)
+ MovementLoopAddLocation(NPC, -514.57, -47.38, 279.68, 2, 0)
+ MovementLoopAddLocation(NPC, -472.31, -46.99, 282.11, 2, 0)
+ MovementLoopAddLocation(NPC, -423.39, -45.45, 289.7, 2, 0)
+ MovementLoopAddLocation(NPC, -377.48, -45.18, 319.77, 2, 0)
+ MovementLoopAddLocation(NPC, -352.01, -44.87, 322.8, 2, 0)
+ MovementLoopAddLocation(NPC, -324.04, -44.41, 305.68, 2, 0)
+ MovementLoopAddLocation(NPC, -311.39, -43.84, 298.71, 2, 0)
+ MovementLoopAddLocation(NPC, -299.78, -46.29, 287.78, 2, 0)
+ MovementLoopAddLocation(NPC, -263.31, -46.08, 210.04, 2, 0)
+ MovementLoopAddLocation(NPC, -253.1, -46.25, 199.62, 2, 0)
+ MovementLoopAddLocation(NPC, -240.26, -47.37, 197.59, 2, 0)
+ MovementLoopAddLocation(NPC, -193.7, -48.04, 209.45, 2, 0)
+ MovementLoopAddLocation(NPC, -181.94, -47.48, 224.61, 2, 0)
+ MovementLoopAddLocation(NPC, -178.35, -47.41, 243.59, 2, 0)
+ MovementLoopAddLocation(NPC, -183.73, -47.64, 268.36, 2, 0)
+ MovementLoopAddLocation(NPC, -181.18, -45.97, 299.93, 2, 0)
+ MovementLoopAddLocation(NPC, -184.05, -46.94, 332.56, 2, 0)
+ MovementLoopAddLocation(NPC, -189.4, -48.1, 382.65, 2, 0)
+ MovementLoopAddLocation(NPC, -196.88, -47.91, 394.92, 2, 0)
+ MovementLoopAddLocation(NPC, -211.1, -47.23, 399.72, 2, 0)
+ MovementLoopAddLocation(NPC, -234.53, -46.64, 397.2, 2, 0)
+ MovementLoopAddLocation(NPC, -240.24, -46.3, 398.41, 2, 0)
+ MovementLoopAddLocation(NPC, -262.26, -46.93, 418.43, 2, 0)
+ MovementLoopAddLocation(NPC, -257.77, -46.93, 474.66, 2, 0)
+ MovementLoopAddLocation(NPC, -261.59, -45.66, 522.59, 2, 0)
+ MovementLoopAddLocation(NPC, -290.99, -44.69, 564.43, 2, 0)
+ MovementLoopAddLocation(NPC, -330.21, -46.98, 583.85, 2, 0)
+ MovementLoopAddLocation(NPC, -369.31, -47.88, 588.66, 2, 0)
+ MovementLoopAddLocation(NPC, -408.62, -45.09, 591.41, 2, 0)
+ MovementLoopAddLocation(NPC, -428.42, -45.52, 600.49, 2, 0)
+ MovementLoopAddLocation(NPC, -459.35, -47.9, 627.84, 2, 0)
+ MovementLoopAddLocation(NPC, -542.09, -46.13, 626.25, 2, 0)
+ MovementLoopAddLocation(NPC, -600.73, -48.06, 623.84, 2, 0)
+ MovementLoopAddLocation(NPC, -685.76, -47.58, 614.7, 2, 0)
+ MovementLoopAddLocation(NPC, -768.94, -48.04, 618.47, 2, 0)
+ MovementLoopAddLocation(NPC, -820.7, -47.98, 612.81, 2, 0)
+ MovementLoopAddLocation(NPC, -842.97, -47.77, 617.33, 2, 0)
+ MovementLoopAddLocation(NPC, -854.26, -47.21, 637.21, 2, 0)
+ MovementLoopAddLocation(NPC, -854.92, -47.43, 650.55, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/CaptainOgof.lua b/server/SpawnScripts/Commonlands/CaptainOgof.lua
new file mode 100644
index 000000000..ef9df2453
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/CaptainOgof.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/CaptainOgof.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 04:01:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -679.52, -48.04, 449.72, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -675.41, -48.04, 432.53, 2, 0)
+ MovementLoopAddLocation(NPC, -665.04, -47.89, 425.46, 2, 0)
+ MovementLoopAddLocation(NPC, -655.93, -45.31, 422.47, 2, 0)
+ MovementLoopAddLocation(NPC, -643.74, -46.09, 420.74, 2, 0)
+ MovementLoopAddLocation(NPC, -638.71, -46.61, 423.15, 2, 0)
+ MovementLoopAddLocation(NPC, -630.31, -47.98, 431.82, 2, 0)
+ MovementLoopAddLocation(NPC, -626.72, -48.04, 445.24, 2, 0)
+ MovementLoopAddLocation(NPC, -627.69, -48.04, 460.73, 2, 0)
+ MovementLoopAddLocation(NPC, -631.15, -47.99, 469.53, 2, 0)
+ MovementLoopAddLocation(NPC, -631, -47.29, 485.93, 2, 0)
+ MovementLoopAddLocation(NPC, -627.93, -47.1, 501.28, 2, 0)
+ MovementLoopAddLocation(NPC, -631.59, -46.99, 512.06, 2, 0)
+ MovementLoopAddLocation(NPC, -644.25, -45.78, 517.3, 2, 0)
+ MovementLoopAddLocation(NPC, -656.83, -46, 520.49, 2, 0)
+ MovementLoopAddLocation(NPC, -671.01, -46.75, 521.89, 2, 0)
+ MovementLoopAddLocation(NPC, -682.8, -45.98, 518.71, 2, 0)
+ MovementLoopAddLocation(NPC, -694.56, -46.57, 509.81, 2, 0)
+ MovementLoopAddLocation(NPC, -696.94, -47.24, 494.23, 2, 0)
+ MovementLoopAddLocation(NPC, -686.37, -48.04, 462.16, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/CaptainTKarne.lua b/server/SpawnScripts/Commonlands/CaptainTKarne.lua
new file mode 100644
index 000000000..916a499a5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/CaptainTKarne.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/CaptainTKarne.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.10 10:03:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/CaptainVertas.lua b/server/SpawnScripts/Commonlands/CaptainVertas.lua
index 0ac6e3d09..c1b55bf4b 100755
--- a/server/SpawnScripts/Commonlands/CaptainVertas.lua
+++ b/server/SpawnScripts/Commonlands/CaptainVertas.lua
@@ -5,7 +5,7 @@
Script Purpose :
:
--]]
-
+require "SpawnScripts/Generic/NPCModule"
local FinishingtheNegotiations = 425
local TroubleAbout = 441
local MoreThenMeetsTheEye = 442
@@ -13,8 +13,10 @@ local ProvingYourWorth = 443
local ConfusionIsTheKey = 444
local OneFinalTask = 445
-function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
function InRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/CargomasterLibertius.lua b/server/SpawnScripts/Commonlands/CargomasterLibertius.lua
new file mode 100644
index 000000000..d35a1e8fd
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/CargomasterLibertius.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/CargomasterLibertius.lua
+ Script Author : dorbin
+ Script Date : 2024.01.13 04:01:25
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/cargomaster_libertius/commonlands/quest/qst_cargomaster_libertius_callout1_d5d85945.mp3", "I've nothing to offer you, traveler.", "no", 100112139, 1434536394, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/CommanderDuNar.lua b/server/SpawnScripts/Commonlands/CommanderDuNar.lua
new file mode 100644
index 000000000..b0a8f0000
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/CommanderDuNar.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/CommanderDuNar.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 02:01:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 111.31, -45.4, 450.07, 2, 0)
+ MovementLoopAddLocation(NPC, 81.76, -47.81, 495.65, 2, 0)
+ MovementLoopAddLocation(NPC, 72.24, -47.86, 521.09, 2, 0)
+ MovementLoopAddLocation(NPC, 78.77, -48.04, 544.38, 2, 0)
+ MovementLoopAddLocation(NPC, 94.71, -48.04, 558.21, 2, 0)
+ MovementLoopAddLocation(NPC, 111.58, -47.98, 560.72, 2, 0)
+ MovementLoopAddLocation(NPC, 137.03, -47.7, 558.12, 2, 0)
+ MovementLoopAddLocation(NPC, 153.87, -47.45, 552.18, 2, 0)
+ MovementLoopAddLocation(NPC, 164.19, -46.76, 547.51, 2, 0)
+ MovementLoopAddLocation(NPC, 179.35, -46.41, 532.42, 2, 0)
+ MovementLoopAddLocation(NPC, 191.44, -47.68, 510.36, 2, 0)
+ MovementLoopAddLocation(NPC, 194.62, -48.03, 483.67, 2, 0)
+ MovementLoopAddLocation(NPC, 194.15, -48.04, 455.38, 2, 0)
+ MovementLoopAddLocation(NPC, 181.07, -47.63, 440.23, 2, 0)
+ MovementLoopAddLocation(NPC, 171.37, -46.5, 435.33, 2, 0)
+ MovementLoopAddLocation(NPC, 146.95, -43.45, 433.92, 2, 0)
+ MovementLoopAddLocation(NPC, 129.66, -42.68, 434, 2, 0)
+ MovementLoopAddLocation(NPC, 119.72, -43.55, 438.55, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/CommanderGrikSna.lua b/server/SpawnScripts/Commonlands/CommanderGrikSna.lua
new file mode 100644
index 000000000..bde02b1ab
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/CommanderGrikSna.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/CommanderGrikSna.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 06:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -573.57, -48.04, 547.36, 2, 0)
+ MovementLoopAddLocation(NPC, -577, -48.04, 531.3, 2, 0)
+ MovementLoopAddLocation(NPC, -568.51, -48.04, 516.51, 2, 0)
+ MovementLoopAddLocation(NPC, -552.95, -47.6, 510.75, 2, 0)
+ MovementLoopAddLocation(NPC, -538.6, -45.15, 507.25, 2, 0)
+ MovementLoopAddLocation(NPC, -518.92, -47.09, 515.89, 2, 0)
+ MovementLoopAddLocation(NPC, -508.98, -47.97, 530.34, 2, 0)
+ MovementLoopAddLocation(NPC, -503.32, -48.04, 553.19, 2, 0)
+ MovementLoopAddLocation(NPC, -507.41, -48.04, 579.35, 2, 0)
+ MovementLoopAddLocation(NPC, -525.15, -47.82, 598.88, 2, 0)
+ MovementLoopAddLocation(NPC, -545.14, -47.43, 605.57, 2, 0)
+ MovementLoopAddLocation(NPC, -555.79, -47.86, 605.41, 2, 0)
+ MovementLoopAddLocation(NPC, -561.06, -48.56, 595.49, 2, 0)
+ MovementLoopAddLocation(NPC, -566.65, -48.3, 574.07, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/DrammerQuickblade.lua b/server/SpawnScripts/Commonlands/DrammerQuickblade.lua
new file mode 100644
index 000000000..560d013dd
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/DrammerQuickblade.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/DrammerQuickblade.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.09 09:03:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ darkelf(NPC)
+ DervishLeather(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Dza.lua b/server/SpawnScripts/Commonlands/Dza.lua
new file mode 100644
index 000000000..64ec2e8e5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Dza.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Dza.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 11:01:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ExecutionerSelindi.lua b/server/SpawnScripts/Commonlands/ExecutionerSelindi.lua
index 895f191bd..9abde9b84 100755
--- a/server/SpawnScripts/Commonlands/ExecutionerSelindi.lua
+++ b/server/SpawnScripts/Commonlands/ExecutionerSelindi.lua
@@ -5,16 +5,69 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+ SetPlayerProximityFunction(NPC,22, "InRange", "LeaveRange")
+ ProvidesQuest(NPC,5891)
+end
+function LeaveRange(NPC,Spawn)
+if HasCompletedQuest(Spawn,5890) and CanReceiveQuest(Spawn,5891) then
+ SetPosition(Spawn,-1344.42, -69.53, 333.57, 218.64)
+ PlayFlavor(NPC,"","Hey! I need to speak with you!","beckon",0,0,Spawn)
+end
+end
+
+function InRange(NPC,Spawn)
+if HasCompletedQuest(Spawn,5890) and not HasQuest(Spawn,5891) then
+ OfferQuest(NPC,Spawn,5891)
+end
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/optional1/executioner_selindi/commonlands/quest/020_executioner_selindi_callout1_da9a558a.mp3", "Move along unless you want to join these skeletons.", "", 2115754705, 267010184, Spawn)
+ if HasQuest(Spawn,5891) and GetQuestStep(Spawn,5891)==1 then
+ Dialog1(NPC,Spawn)
+else
+ PlayFlavor(NPC, "voiceover/english/optional1/executioner_selindi/commonlands/quest/020_executioner_selindi_callout1_da9a558a.mp3", "Move along unless you want to join these skeletons.", "", 2115754705, 267010184, Spawn)
+end
end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Pay attention, for I only have time to say it once. The rare poison coating my axe preserved you long enough for me to revive you. It may be a very long time before you fully recover from the poison. I believed your words, friend.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1051.mp3", 0, 0)
+ Dialog.AddOption("Friend...?","Dialog2")
+ Dialog.AddOption("I will at once.","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I am not what I appear to be. I am here in Freeport to find people like you, people who turn away from the path of evil. No one has seen past my illusion yet. Listen! You have to flee! When the necromancers find your body missing, they'll come looking for you.")
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("Where should I go?","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ SetStepComplete(Spawn,5891,1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Stow away on a ship and travel to Antonica. I will send a message to my old friend, Vishra. Seek him out near the gnoll's lair where he fights to stop their impending threat. I will tell him that you need a home. Go before it's too late!")
+ Dialog.AddOption("Thank you Selindi. I will go to Antonica!")
+ Dialog.Start()
+end
+
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+
+--
+--
+--
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GeneralVharTaug.lua b/server/SpawnScripts/Commonlands/GeneralVharTaug.lua
new file mode 100644
index 000000000..b3cc8c51b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GeneralVharTaug.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GeneralVharTaug.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 11:01:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(65 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(105 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GrandmaTwirlwhizzer.lua b/server/SpawnScripts/Commonlands/GrandmaTwirlwhizzer.lua
index d051460d7..5f40c414b 100755
--- a/server/SpawnScripts/Commonlands/GrandmaTwirlwhizzer.lua
+++ b/server/SpawnScripts/Commonlands/GrandmaTwirlwhizzer.lua
@@ -17,4 +17,6 @@ end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+--You can't be serious! That medal was the only thing my husband gave me during his time in the Militia. I've sold everything I own to pay my taxes, and this is all I have left. I won't give up the only memory I have of my dear, sweet Pazzik. I still remember his face every time I look at this medal...
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Graverobber.lua b/server/SpawnScripts/Commonlands/Graverobber.lua
index b51917a47..1d5af7e9b 100755
--- a/server/SpawnScripts/Commonlands/Graverobber.lua
+++ b/server/SpawnScripts/Commonlands/Graverobber.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/GuardAri.lua b/server/SpawnScripts/Commonlands/GuardAri.lua
new file mode 100644
index 000000000..a67887e7b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardAri.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardAri.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.16 03:01:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardAsellio.lua b/server/SpawnScripts/Commonlands/GuardAsellio.lua
new file mode 100644
index 000000000..74cec80ee
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardAsellio.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardAsellio.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 10:01:25
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardBellicus.lua b/server/SpawnScripts/Commonlands/GuardBellicus.lua
new file mode 100644
index 000000000..481fc1b2c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardBellicus.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardBellicus.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardCalog.lua b/server/SpawnScripts/Commonlands/GuardCalog.lua
new file mode 100644
index 000000000..9e0e6499f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardCalog.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardCalog.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardFimi.lua b/server/SpawnScripts/Commonlands/GuardFimi.lua
new file mode 100644
index 000000000..09e77bb69
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardFimi.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardFimi.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardLaurio.lua b/server/SpawnScripts/Commonlands/GuardLaurio.lua
new file mode 100644
index 000000000..d7f80f3c7
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardLaurio.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardLaurio.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardNGaren.lua b/server/SpawnScripts/Commonlands/GuardNGaren.lua
new file mode 100644
index 000000000..6644edd1c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardNGaren.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardNGaren.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardNIcan.lua b/server/SpawnScripts/Commonlands/GuardNIcan.lua
new file mode 100644
index 000000000..745437316
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardNIcan.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardNIcan.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardNavera.lua b/server/SpawnScripts/Commonlands/GuardNavera.lua
new file mode 100644
index 000000000..1f681306f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardNavera.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardNavera.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardPascentius.lua b/server/SpawnScripts/Commonlands/GuardPascentius.lua
new file mode 100644
index 000000000..bbf7b7407
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardPascentius.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardPascentius.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardPokul.lua b/server/SpawnScripts/Commonlands/GuardPokul.lua
new file mode 100644
index 000000000..5935a9a7c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardPokul.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardPokul.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.13 09:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardSenna.lua b/server/SpawnScripts/Commonlands/GuardSenna.lua
new file mode 100644
index 000000000..2465d1192
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardSenna.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardSenna.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.13 09:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardTrimalchio.lua b/server/SpawnScripts/Commonlands/GuardTrimalchio.lua
new file mode 100644
index 000000000..999a9d392
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardTrimalchio.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardTrimalchio.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardVindex.lua b/server/SpawnScripts/Commonlands/GuardVindex.lua
new file mode 100644
index 000000000..47ddbcbf2
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardVindex.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardVindex.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 11:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/GuardViridix.lua b/server/SpawnScripts/Commonlands/GuardViridix.lua
new file mode 100644
index 000000000..6021d44f5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/GuardViridix.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/GuardViridix.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 01:01:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Gustfeather.lua b/server/SpawnScripts/Commonlands/Gustfeather.lua
new file mode 100644
index 000000000..e4ff229e4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Gustfeather.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Gustfeather.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 05:01:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(85 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(135 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/HighPriestofValMarr.lua b/server/SpawnScripts/Commonlands/HighPriestofValMarr.lua
new file mode 100644
index 000000000..2e98c53e5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/HighPriestofValMarr.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/HighPriestofValMarr.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 09:01:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/JanusFieri.lua b/server/SpawnScripts/Commonlands/JanusFieri.lua
index 2606adb30..39a9b7819 100755
--- a/server/SpawnScripts/Commonlands/JanusFieri.lua
+++ b/server/SpawnScripts/Commonlands/JanusFieri.lua
@@ -1,36 +1,151 @@
--[[
Script Name : SpawnScripts/Commonlands/JanusFieri.lua
- Script Author : torsten
- Script Date : 2021.05.24 09:05:26
+ Script Author : Dorbin
+ Script Date : 2023.11.24
Script Purpose :
- :
+ Note : All dialog after step 2 is fabricated.
--]]
-
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/NPCModule"
local DeliverHelptoJanusFieri = 5660
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
end
-
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
+ if not HasCompletedQuest(Spawn,DeliverHelptoJanusFieri) then
+ Dialog1(NPC, Spawn)
+ else
+ Dialog11(NPC, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
-
- if GetQuestStep(Spawn, DeliverHelptoJanusFieri) == 1 then
- SetStepComplete(Spawn, DeliverHelptoJanusFieri, 1)
- end
- if GetQuestStep(Spawn, DeliverHelptoJanusFieri) == 3 then
- SetStepComplete(Spawn, DeliverHelptoJanusFieri, 3)
- end
- if GetQuestStep(Spawn, DeliverHelptoJanusFieri) == 5 then
- SetStepComplete(Spawn, DeliverHelptoJanusFieri, 5)
- end
-
- AddConversationOption(conversation, "That's good to know. See you around!")
- StartConversation(conversation, NPC, Spawn, "Greetings. Janus Fieri, at your service.")
- PlayFlavor(NPC, "voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri001.mp3", "", "hail", 2406224045, 2387293986, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings. Janus Fieri, at your service.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri001.mp3", 2406224045, 2387293986)
+ if GetQuestStep(Spawn,DeliverHelptoJanusFieri) ==1 then
+ Dialog.AddOption("I have a note for you from Marcus Cantarius.","Dialog2")
+ elseif GetQuestStep(Spawn,DeliverHelptoJanusFieri) ==2 then
+ Dialog.AddOption("Remind me about your investigation.","Dialog3")
+ elseif GetQuestStep(Spawn,DeliverHelptoJanusFieri) ==3 then
+ Dialog.AddOption("I've found a tattered journal in the nomad's camp.","Dialog6")
+ elseif GetQuestStep(Spawn,DeliverHelptoJanusFieri) ==5 then
+ Dialog.AddOption("I've found a tattered journal in the nomad's camp.","Dialog10")
+ end
+ Dialog.AddOption("That's good to know. See you around!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A note from Marcus? Let me see it! Ah ... interesting. Very good. He writes that you're willing to help with my investigation. That's excellent news. Here's something to compensate you for your time. I have to remain at the Crossroads in case one of my assistants gets a good lead. Are you ready for this challenge?")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri002.mp3", 1036520282, 2045542405)
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddOption("I'm here, aren't I?","Dialog3")
+ Dialog.AddOption("What should I know?","Dialog3")
+ Dialog.Start()
+ SetStepComplete(Spawn,DeliverHelptoJanusFieri,1)
+ AddCoin(Spawn, 11)
+ SendMessage(Spawn, "You receive 11 Copper from Janus Fieri.")
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("First, a brief background: Not a fortnight ago, a local farmhand was found slain not too far from here. At first, we thought it was simply a case of wrong place, wrong time. However, as his body was prepared for burial we noticed something ... unusual.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri003.mp3", 3185527532, 167873804)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("Unusual, how?","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Glyph-style marks were carved directly into the poor fellow's chest. In order to locate the murderer, I need to know who carved them. Marcus' note indicates that nomads here in the Commonlands might know.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri004.mp3", 2109604446, 3373930418)
+ Dialog.AddOption("I'll see what I can find at the nomad camps.","Dialog5")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Be very cautious. They might not give out much information if questioned directly. However, you might be able to gather clues at their campsite. They often pick up items they find to sell later; I hope they kept clues to this murder. Good luck. I will wait for word from you.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri005.mp3",3131386048, 1502184408)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ Dialog.AddOption("I'll return when I find something.")
+ Dialog.Start()
+end
+
+--Update 3
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, this is a find! Let me look through it and see if anything can be gleaned from its pages.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri006.mp3", 0, 0)
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ Dialog.AddOption("Sure. Take a look.","Dialog7")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It says here... that there were skirmishes between the Dervish and Bloodskull orcs. Sightings, positions, movements- its all here... My brother kept very maticulous notes.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri007.mp3", 0, 0)
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddOption("Your brother?","Dialog8")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes... it appears the last movements recorded were taking record of orcs gathering supplies for their war machines... Wait. It is hard to make out but, I think something scribbled here says \"SPOTTED\"... I knew he would get in over his head! I warned him!")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri008.mp3", 0, 0)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("What does it mean? What can I do?")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My brother deserved better than this! They most likely performed some sort of ritual on his body, marking deep into... No.... Go and kill those pig-nosed orcs, look for the ones gathering supplies! Lumberjacks most likely. You've helped me this far. Please, help me avenge my brother's death!")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri009.mp3", 0, 0)
+ Dialog.AddOption("I'll see those orcs pay for what they've done.")
+ Dialog.Start()
+ SetStepComplete(Spawn,DeliverHelptoJanusFieri,3)
+end
+
+--Update 5
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So you have... My heart still twists thinking of my loss, but its grip loosens slightly knowing his murderers have met their fate. Thank you. Please, take something of mine for all your work. You've earned it.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri012.mp3", 0, 0)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("I'm glad I could help. If only it hadn't cost your brother's life.","Dialog11")
+ Dialog.Start()
+end
+
+function Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I appreciate what you've done, but I cannot dwell upon the past.")
+ Dialog.AddVoiceover("voiceover/english/janus_fieri/commonlands/quests/janusfieri/janusfieri013.mp3", 1073842818, 1725876774)
+ Dialog.AddOption("I understand.")
+ Dialog.Start()
+ SetStepComplete(Spawn,DeliverHelptoJanusFieri,5)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/JerethBlackshield.lua b/server/SpawnScripts/Commonlands/JerethBlackshield.lua
index 8177aa4e3..902ae9860 100755
--- a/server/SpawnScripts/Commonlands/JerethBlackshield.lua
+++ b/server/SpawnScripts/Commonlands/JerethBlackshield.lua
@@ -9,8 +9,12 @@
local AFriendInNeed = 422
function spawn(NPC)
-EmoteLoop(NPC)
-SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+ EmoteLoop(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/KivasLevine.lua b/server/SpawnScripts/Commonlands/KivasLevine.lua
new file mode 100644
index 000000000..7c2f48ed6
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/KivasLevine.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/KivasLevine.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.31 05:01:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/KizdeanGix.lua b/server/SpawnScripts/Commonlands/KizdeanGix.lua
new file mode 100644
index 000000000..10f123936
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/KizdeanGix.lua
@@ -0,0 +1,110 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/KizdeanGix.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 04:02:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1097.15, -39.09, -365.92, 2, 0)
+ MovementLoopAddLocation(NPC, 1099.76, -38.75, -319.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1102.63, -38.65, -300.75, 2, 0)
+ MovementLoopAddLocation(NPC, 1107.13, -39.01, -280.9, 2, 0)
+ MovementLoopAddLocation(NPC, 1113.07, -39.93, -266.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1119.85, -40.44, -256.74, 2, 0)
+ MovementLoopAddLocation(NPC, 1136.4, -41.85, -242.27, 2, 0)
+ MovementLoopAddLocation(NPC, 1143.52, -42.19, -230.14, 2, 0)
+ MovementLoopAddLocation(NPC, 1148.07, -42.37, -211.93, 2, 0)
+ MovementLoopAddLocation(NPC, 1145.61, -42.37, -194.23, 2, 0)
+ MovementLoopAddLocation(NPC, 1138.69, -42.41, -175.32, 2, 0)
+ MovementLoopAddLocation(NPC, 1127.67, -42.42, -155.45, 2, 0)
+ MovementLoopAddLocation(NPC, 1114.67, -42.66, -134.83, 2, 0)
+ MovementLoopAddLocation(NPC, 1085.05, -44.97, -79.89, 2, 0)
+ MovementLoopAddLocation(NPC, 1078.44, -45.1, -70.18, 2, 0)
+ MovementLoopAddLocation(NPC, 1069.05, -45.16, -59.48, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.95, -45.15, -54.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1054.21, -45.09, -48.24, 2, 0)
+ MovementLoopAddLocation(NPC, 1026.77, -44.87, -31.35, 2, 0)
+ MovementLoopAddLocation(NPC, 1008.64, -44.97, -18.77, 2, 0)
+ MovementLoopAddLocation(NPC, 981.84, -44.9, 3.4, 2, 0)
+ MovementLoopAddLocation(NPC, 971.18, -44.97, 14.53, 2, 0)
+ MovementLoopAddLocation(NPC, 963.24, -45.23, 25.29, 2, 0)
+ MovementLoopAddLocation(NPC, 955.27, -45.9, 42.18, 2, 0)
+ MovementLoopAddLocation(NPC, 950.99, -46.18, 50.52, 2, 0)
+ MovementLoopAddLocation(NPC, 942, -46.57, 63.5, 2, 0)
+ MovementLoopAddLocation(NPC, 928.65, -46.66, 75.44, 2, 0)
+ MovementLoopAddLocation(NPC, 915.41, -46.62, 83.04, 2, 0)
+ MovementLoopAddLocation(NPC, 890.2, -46.42, 90.98, 2, 0)
+ MovementLoopAddLocation(NPC, 880.58, -46.24, 95.18, 2, 0)
+ MovementLoopAddLocation(NPC, 843.29, -45.33, 124.17, 2, 0)
+ MovementLoopAddLocation(NPC, 816.5, -43.91, 143.08, 2, 0)
+ MovementLoopAddLocation(NPC, 769.93, -45.04, 182.28, 2, 0)
+ MovementLoopAddLocation(NPC, 761.9, -45.09, 188.72, 2, 0)
+ MovementLoopAddLocation(NPC, 749.77, -45.31, 196.83, 2, 0)
+ MovementLoopAddLocation(NPC, 660.6, -47.57, 247.61, 2, 0)
+ MovementLoopAddLocation(NPC, 655.74, -47.76, 249.78, 2, 0)
+ MovementLoopAddLocation(NPC, 633.82, -47.81, 257.35, 2, 0)
+ MovementLoopAddLocation(NPC, 623.04, -47.61, 259.92, 2, 0)
+ MovementLoopAddLocation(NPC, 615.78, -47.48, 261.6, 2, 0)
+ MovementLoopAddLocation(NPC, 601.93, -47.38, 262.82, 2, 0)
+ MovementLoopAddLocation(NPC, 601.93, -47.38, 262.82, 2, 0)
+ MovementLoopAddLocation(NPC, 615.78, -47.48, 261.6, 2, 0)
+ MovementLoopAddLocation(NPC, 623.04, -47.61, 259.92, 2, 0)
+ MovementLoopAddLocation(NPC, 633.82, -47.81, 257.35, 2, 0)
+ MovementLoopAddLocation(NPC, 655.74, -47.76, 249.78, 2, 0)
+ MovementLoopAddLocation(NPC, 660.6, -47.57, 247.61, 2, 0)
+ MovementLoopAddLocation(NPC, 749.77, -45.31, 196.83, 2, 0)
+ MovementLoopAddLocation(NPC, 761.9, -45.09, 188.72, 2, 0)
+ MovementLoopAddLocation(NPC, 769.93, -45.04, 182.28, 2, 0)
+ MovementLoopAddLocation(NPC, 816.5, -43.91, 143.08, 2, 0)
+ MovementLoopAddLocation(NPC, 843.29, -45.33, 124.17, 2, 0)
+ MovementLoopAddLocation(NPC, 880.58, -46.24, 95.18, 2, 0)
+ MovementLoopAddLocation(NPC, 890.2, -46.42, 90.98, 2, 0)
+ MovementLoopAddLocation(NPC, 915.41, -46.62, 83.04, 2, 0)
+ MovementLoopAddLocation(NPC, 928.65, -46.66, 75.44, 2, 0)
+ MovementLoopAddLocation(NPC, 942, -46.57, 63.5, 2, 0)
+ MovementLoopAddLocation(NPC, 950.99, -46.18, 50.52, 2, 0)
+ MovementLoopAddLocation(NPC, 955.27, -45.9, 42.18, 2, 0)
+ MovementLoopAddLocation(NPC, 963.24, -45.23, 25.29, 2, 0)
+ MovementLoopAddLocation(NPC, 971.18, -44.97, 14.53, 2, 0)
+ MovementLoopAddLocation(NPC, 981.84, -44.9, 3.4, 2, 0)
+ MovementLoopAddLocation(NPC, 1008.64, -44.97, -18.77, 2, 0)
+ MovementLoopAddLocation(NPC, 1026.77, -44.87, -31.35, 2, 0)
+ MovementLoopAddLocation(NPC, 1054.21, -45.09, -48.24, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.95, -45.15, -54.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1069.05, -45.16, -59.48, 2, 0)
+ MovementLoopAddLocation(NPC, 1078.44, -45.1, -70.18, 2, 0)
+ MovementLoopAddLocation(NPC, 1085.05, -44.97, -79.89, 2, 0)
+ MovementLoopAddLocation(NPC, 1114.67, -42.66, -134.83, 2, 0)
+ MovementLoopAddLocation(NPC, 1127.67, -42.42, -155.45, 2, 0)
+ MovementLoopAddLocation(NPC, 1138.69, -42.41, -175.32, 2, 0)
+ MovementLoopAddLocation(NPC, 1145.61, -42.37, -194.23, 2, 0)
+ MovementLoopAddLocation(NPC, 1148.07, -42.37, -211.93, 2, 0)
+ MovementLoopAddLocation(NPC, 1143.52, -42.19, -230.14, 2, 0)
+ MovementLoopAddLocation(NPC, 1136.4, -41.85, -242.27, 2, 0)
+ MovementLoopAddLocation(NPC, 1119.85, -40.44, -256.74, 2, 0)
+ MovementLoopAddLocation(NPC, 1113.07, -39.93, -266.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1107.13, -39.01, -280.9, 2, 0)
+ MovementLoopAddLocation(NPC, 1102.63, -38.65, -300.75, 2, 0)
+ MovementLoopAddLocation(NPC, 1099.76, -38.75, -319.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1097.15, -39.09, -365.92, 2, 0)
+
+end
diff --git a/server/SpawnScripts/Commonlands/Kraofla.lua b/server/SpawnScripts/Commonlands/Kraofla.lua
index d242970d7..cf5b0e259 100755
--- a/server/SpawnScripts/Commonlands/Kraofla.lua
+++ b/server/SpawnScripts/Commonlands/Kraofla.lua
@@ -6,8 +6,9 @@
:
--]]
-function spawn(NPC)
+local SearchfortheMissing = 573
+function spawn(NPC)
end
function hailed(NPC, Spawn)
@@ -15,20 +16,27 @@ function hailed(NPC, Spawn)
end
function respawn(NPC)
-
+ spawn(NPC)
end
function aggro(NPC, Spawn)
-PlayFlavor(NPC, "voiceover/english/froglok_base_1/ft/froglok/froglok_base_1_1_aggro_gf_12dbb8ad.mp3", "Caught thee red handed, did I?", "", 2509424465, 3667247007, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_base_1/ft/froglok/froglok_base_1_1_aggro_gf_12dbb8ad.mp3", "Caught thee red handed, did I?", "", 2509424465, 3667247007, Spawn)
end
function death(NPC, Spawn)
-PlayFlavor(NPC, "voiceover/english/froglok_base_1/ft/froglok/froglok_base_1_1_death_gf_f9da3030.mp3", "Withdraw, fine comrades. I shall remain.", "", 47103978, 1821153074, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_base_1/ft/froglok/froglok_base_1_1_death_gf_f9da3030.mp3", "Withdraw, fine comrades. I shall remain.", "", 47103978, 1821153074, Spawn)
+ AddTimer(NPC,8000,"DespawnTime")
+end
+
+function DespawnTime(NPC)
+ Despawn(NPC)
end
function healthchanged(NPC, Spawn)
-local chance = math.random(1, 100)
-if chance <= 20 then
-PlayFlavor(NPC, "", "Marr protect me!", "", 1689589577, 4560189, Spawn)
-end
- end
\ No newline at end of file
+ local chance = math.random(1, 100)
+
+ if chance <= 20 then
+ PlayFlavor(NPC, "", "Marr protect me!", "", 1689589577, 4560189, Spawn)
+ end
+ end
+
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Ladon.lua b/server/SpawnScripts/Commonlands/Ladon.lua
new file mode 100644
index 000000000..f969eb384
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Ladon.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Ladon.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.26 08:02:00
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = math.floor(GetStr(NPC)/10)
+ HPRegenMod = math.floor(GetSta(NPC)/10)
+ PwRegenMod = math.floor(GetStr(NPC)/10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(185 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(305 + dmgMod))
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 100 + HPRegenMod)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 50 + PwRegenMod)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/LadyAnyankaPolevshi.lua b/server/SpawnScripts/Commonlands/LadyAnyankaPolevshi.lua
new file mode 100644
index 000000000..bc802699a
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/LadyAnyankaPolevshi.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/LadyAnyankaPolevshi.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.25 01:01:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/LieutenantVrahKna.lua b/server/SpawnScripts/Commonlands/LieutenantVrahKna.lua
new file mode 100644
index 000000000..144821c19
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/LieutenantVrahKna.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/LieutenantVrahKna.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.22 05:01:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/LightbringerWisp.lua b/server/SpawnScripts/Commonlands/LightbringerWisp.lua
index 3a85fd67b..4a7494abf 100755
--- a/server/SpawnScripts/Commonlands/LightbringerWisp.lua
+++ b/server/SpawnScripts/Commonlands/LightbringerWisp.lua
@@ -1,13 +1,18 @@
--[[
Script Name : SpawnScripts/Commonlands/LightbringerWisp.lua
- Script Author : Premierio015
- Script Date : 2021.05.30 09:05:57
+ Script Author : LordPazuzu
+ Script Date : 1/22/2024
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+ RandomMovement(NPC, Spawn, 25, -25, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/LucanicKnightInitiate.lua b/server/SpawnScripts/Commonlands/LucanicKnightInitiate.lua
index f35ba2090..46e45514c 100755
--- a/server/SpawnScripts/Commonlands/LucanicKnightInitiate.lua
+++ b/server/SpawnScripts/Commonlands/LucanicKnightInitiate.lua
@@ -7,8 +7,12 @@
--]]
function spawn(NPC)
-AddTimer(NPC, 2000, "call", "", Spawn)
-SetAggroRadius(NPC, 20)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ AddTimer(NPC, 3200, "call", "", Spawn)
+ SetAggroRadius(NPC, 20)
end
function call(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/MadamVi.lua b/server/SpawnScripts/Commonlands/MadamVi.lua
index db871ae87..42a371abe 100755
--- a/server/SpawnScripts/Commonlands/MadamVi.lua
+++ b/server/SpawnScripts/Commonlands/MadamVi.lua
@@ -13,36 +13,24 @@ local SeerStone = 5225
function InRange(NPC, Spawn)
- if not HasQuest(Spawn, QuenchingTheirThirst) and not HasCompletedQuest(Spawn, QuenchingTheirThirst) then
- ProvidesQuest(NPC, QuenchingTheirThirst)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
- elseif HasCompletedQuest(Spawn, QuenchingTheirThirst) then
- ProvidesQuest(NPC, FarFromHome)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
- elseif HasCompletedQuest(Spawn, FarFromHome) then
- ProvidesQuest(NPC, NoRiskNoReward)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
- elseif HasCompletedQuest(Spawn, NoRiskNoReward) then
- ProvidesQuest(NPC, SeerStone)
- SetInfoFlag(NPC)
-SetVisualFlag(NPC)
-end
+
end
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange")
+ ProvidesQuest(NPC, QuenchingTheirThirst)
+ ProvidesQuest(NPC, FarFromHome)
+ ProvidesQuest(NPC, NoRiskNoReward)
+ ProvidesQuest(NPC, SeerStone)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC)
+function hailed(NPC,Spawn)
FaceTarget(NPC, Spawn)
-if not HasQuest(Spawn, QuenchingTheirThirst) and not HasoCompletedQuest(Spawn, QuenchingTheirThirst) then
+if not HasQuest(Spawn, QuenchingTheirThirst) and not HasCompletedQuest(Spawn, QuenchingTheirThirst) then
local conversation = CreateConversation()
AddConversationOption(conversation, "What assistance do you require?", "Option1")
AddConversationOption(conversation, "I'm busy at the moment.")
diff --git a/server/SpawnScripts/Commonlands/MarcusWarklar.lua b/server/SpawnScripts/Commonlands/MarcusWarklar.lua
new file mode 100644
index 000000000..10d2cd455
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/MarcusWarklar.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/MarcusWarklar.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 09:02:18
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = math.floor(GetStr(NPC)/10)
+ HPRegenMod = math.floor(GetSta(NPC)/10)
+ PwRegenMod = math.floor(GetAgi(NPC)/10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(95 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(175 + dmgMod))
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 80 + HPRegenMod)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 30 + PwRegenMod)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/OgofRunner.lua b/server/SpawnScripts/Commonlands/OgofRunner.lua
index dc37c3e72..5c8d5099a 100755
--- a/server/SpawnScripts/Commonlands/OgofRunner.lua
+++ b/server/SpawnScripts/Commonlands/OgofRunner.lua
@@ -5,10 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
AddTimer(NPC, 900, "follow_Ogof")
-
end
function follow_Ogof(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/OhrgranFoulgore.lua b/server/SpawnScripts/Commonlands/OhrgranFoulgore.lua
new file mode 100644
index 000000000..5e05a3c4c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/OhrgranFoulgore.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/OhrgranFoulgore.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.18 01:01:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC)
+ Bloodskull(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/OrwenNeovra.lua b/server/SpawnScripts/Commonlands/OrwenNeovra.lua
index aa9495e90..e2c523388 100755
--- a/server/SpawnScripts/Commonlands/OrwenNeovra.lua
+++ b/server/SpawnScripts/Commonlands/OrwenNeovra.lua
@@ -5,12 +5,14 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
local TheSearchForArianna = 5211
local DoubleCrossNRevenge = 5512
function spawn(NPC)
ProvidesQuest(NPC, TheSearchForArianna)
+human(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/Petronax.lua b/server/SpawnScripts/Commonlands/Petronax.lua
new file mode 100644
index 000000000..4988a1abf
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Petronax.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Petronax.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 11:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ FreeportGuard(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/PrideMistress.lua b/server/SpawnScripts/Commonlands/PrideMistress.lua
new file mode 100644
index 000000000..8e56736ff
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/PrideMistress.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/PrideMistress.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.11 03:02:48
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 757.48, -59.71, -34.43, 2, 0)
+ MovementLoopAddLocation(NPC, 710.13, -59.96, 21.93, 2, 0)
+ MovementLoopAddLocation(NPC, 686.98, -59.8, 22.15, 2, 0)
+ MovementLoopAddLocation(NPC, 639.48, -59.8, -3.96, 2, 0)
+ MovementLoopAddLocation(NPC, 633.63, -59.8, -17.26, 2, 0)
+ MovementLoopAddLocation(NPC, 638.71, -59.8, -27.25, 2, 0)
+ MovementLoopAddLocation(NPC, 681.22, -59.8, -27.35, 2, 0)
+ MovementLoopAddLocation(NPC, 703.23, -59.8, -33.28, 2, 0)
+ MovementLoopAddLocation(NPC, 745.87, -59.8, -59.43, 2, 0)
+ MovementLoopAddLocation(NPC, 761.52, -58.83, -58.62, 2, 0)
+ MovementLoopAddLocation(NPC, 766.92, -58.69, -48.79, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Ramanai.lua b/server/SpawnScripts/Commonlands/Ramanai.lua
new file mode 100644
index 000000000..b321c62f2
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Ramanai.lua
@@ -0,0 +1,83 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Ramanai.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 872.73, -59.48, 5.77, 2, 0)
+ MovementLoopAddLocation(NPC, 868.63, -59.6, 7.51, 2, 0)
+ MovementLoopAddLocation(NPC, 857.94, -58.97, 22.02, 2, 0)
+ MovementLoopAddLocation(NPC, 848.88, -56.66, 44.24, 2, 0)
+ MovementLoopAddLocation(NPC, 834.27, -54.13, 75.68, 2, 0)
+ MovementLoopAddLocation(NPC, 820.55, -54.28, 89.48, 2, 0)
+ MovementLoopAddLocation(NPC, 784.63, -51.93, 118.05, 2, 0)
+ MovementLoopAddLocation(NPC, 737.83, -52.15, 145.18, 2, 0)
+ MovementLoopAddLocation(NPC, 724.07, -52.44, 149.85, 2, 0)
+ MovementLoopAddLocation(NPC, 706.64, -53.53, 150.58, 2, 0)
+ MovementLoopAddLocation(NPC, 692.28, -53.02, 147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 668.76, -49.59, 143.34, 2, 0)
+ MovementLoopAddLocation(NPC, 658.93, -48.75, 137.79, 2, 0)
+ MovementLoopAddLocation(NPC, 652.8, -47.94, 132.35, 2, 0)
+ MovementLoopAddLocation(NPC, 623.66, -46.49, 101.58, 2, 0)
+ MovementLoopAddLocation(NPC, 601.59, -47.18, 79.95, 2, 0)
+ MovementLoopAddLocation(NPC, 566.07, -48.14, 58.63, 2, 0)
+ MovementLoopAddLocation(NPC, 536.11, -48.1, 48.66, 2, 0)
+ MovementLoopAddLocation(NPC, 518.76, -48.82, 36.77, 2, 0)
+ MovementLoopAddLocation(NPC, 496.68, -50.61, 9.58, 2, 0)
+ MovementLoopAddLocation(NPC, 476.98, -49.4, -12.76, 2, 0)
+ MovementLoopAddLocation(NPC, 458.44, -48.6, -36.86, 2, 0)
+ MovementLoopAddLocation(NPC, 443.35, -48.02, -65.33, 2, 0)
+ MovementLoopAddLocation(NPC, 433.57, -47.05, -100.47, 2, 0)
+ MovementLoopAddLocation(NPC, 437.06, -46.41, -116.65, 2, 0)
+ MovementLoopAddLocation(NPC, 449.78, -47.56, -139.24, 2, 0)
+ MovementLoopAddLocation(NPC, 464.61, -47.6, -163.46, 2, 0)
+ MovementLoopAddLocation(NPC, 469.28, -47.43, -197.32, 2, 0)
+ MovementLoopAddLocation(NPC, 465.41, -46.83, -213.62, 2, 0)
+ MovementLoopAddLocation(NPC, 416.2, -46.91, -272.97, 2, 0)
+ MovementLoopAddLocation(NPC, 423.34, -47.81, -295.2, 2, 0)
+ MovementLoopAddLocation(NPC, 448.67, -47.43, -306.49, 2, 0)
+ MovementLoopAddLocation(NPC, 485.21, -47.94, -306.16, 2, 0)
+ MovementLoopAddLocation(NPC, 512.96, -47.41, -311.94, 2, 0)
+ MovementLoopAddLocation(NPC, 562.88, -46.01, -317.03, 2, 0)
+ MovementLoopAddLocation(NPC, 615.54, -47.65, -314.87, 2, 0)
+ MovementLoopAddLocation(NPC, 638.49, -47.98, -313.82, 2, 0)
+ MovementLoopAddLocation(NPC, 665.53, -51.3, -316.33, 2, 0)
+ MovementLoopAddLocation(NPC, 747.99, -57.15, -325.5, 2, 0)
+ MovementLoopAddLocation(NPC, 778.08, -59.39, -323.36, 2, 0)
+ MovementLoopAddLocation(NPC, 853.7, -58.95, -348.76, 2, 0)
+ MovementLoopAddLocation(NPC, 890.58, -57.88, -355.88, 2, 0)
+ MovementLoopAddLocation(NPC, 955.9, -57.98, -357.5, 2, 0)
+ MovementLoopAddLocation(NPC, 994.19, -56.23, -358.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1025.93, -52.07, -358.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.84, -49.34, -349.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1059.88, -47.58, -327.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1061.43, -48.91, -297.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.22, -50.07, -266.84, 2, 0)
+ MovementLoopAddLocation(NPC, 1057, -54.46, -242.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.23, -55.51, -220.31, 2, 0)
+ MovementLoopAddLocation(NPC, 1016.25, -56.11, -175.52, 2, 0)
+ MovementLoopAddLocation(NPC, 995.12, -56.95, -147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 975.36, -55.9, -104.81, 2, 0)
+ MovementLoopAddLocation(NPC, 949.16, -57.17, -72.14, 2, 0)
+ MovementLoopAddLocation(NPC, 913.48, -58.87, -30.68, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ScoutCalvus.lua b/server/SpawnScripts/Commonlands/ScoutCalvus.lua
new file mode 100644
index 000000000..944f28dd7
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ScoutCalvus.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ScoutCalvus.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.16 03:01:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ScoutNonius.lua b/server/SpawnScripts/Commonlands/ScoutNonius.lua
new file mode 100644
index 000000000..214ccd3b1
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ScoutNonius.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ScoutNonius.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.16 03:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ShadySwashbucklerXVII.lua b/server/SpawnScripts/Commonlands/ShadySwashbucklerXVII.lua
new file mode 100644
index 000000000..7bfa6ed5d
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ShadySwashbucklerXVII.lua
@@ -0,0 +1,92 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ShadySwashbucklerXVII.lua
+ Script Author : dorbin
+ Script Date : 2024.01.13 04:01:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local Bard = 5855
+local Brawler = 5845
+local Cleric = 5848
+local Crusader = 5846
+local Druid = 5849
+local Enchanter = 5851
+local Predator = 5856
+local Rogue = 5857
+local Shaman = 5850
+local Summoner = 5854
+local Warrior = 5847
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5858)then
+ SetStepComplete(Spawn,5858,2)
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_hail_gm_d38d1fff.mp3", "Ah, what have we here? Glad to see you endured the journey here adventurer.", "ponder", 2806352129, 3453714070, Spawn)
+ elseif HasQuest(Spawn,Bard) or
+ HasQuest(Spawn,Brawler) or
+ HasQuest(Spawn,Cleric) or
+ HasQuest(Spawn,Crusader) or
+ HasQuest(Spawn,Druid) or
+ HasQuest(Spawn,Enchanter) or
+ HasQuest(Spawn,Predator) or
+ HasQuest(Spawn,Rogue) or
+ HasQuest(Spawn,Shaman) or
+ HasQuest(Spawn,Summoner) or
+ HasQuest(Spawn,Warrior)then
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My apologies, friend. I did not see you there ... What is it you need?")
+ Dialog.AddVoiceover("voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_callout1_c6eaefe5.mp3", 3948051330, 1166584264)
+ Dialog.AddOption("I hear you can get me some gear? Here are my papers","Gear")
+ Dialog.AddOption("Good day to you!")
+ Dialog.Start()
+else
+ PlayFlavor(NPC, "voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_callout1_c6eaefe5.mp3", "My apologies, friend. I did not see you there ... What is it you need?", "", 3948051330, 1166584264, Spawn)
+end
+end
+
+
+function Gear(NPC,Spawn)
+ if HasQuest(Spawn,Bard) then
+ SetStepComplete(Spawn,Bard,1)
+ end
+ if HasQuest(Spawn,Brawler) then
+ SetStepComplete(Spawn,Brawler,1)
+ end
+ if HasQuest(Spawn,Cleric) then
+ SetStepComplete(Spawn,Cleric,1)
+ end
+ if HasQuest(Spawn,Crusader) then
+ SetStepComplete(Spawn,Crusader,1)
+ end
+ if HasQuest(Spawn,Druid) then
+ SetStepComplete(Spawn,Druid,1)
+ end
+ if HasQuest(Spawn,Enchanter) then
+ SetStepComplete(Spawn,Enchanter,1)
+ end
+ if HasQuest(Spawn,Predator) then
+ SetStepComplete(Spawn,Predator,1)
+ end
+ if HasQuest(Spawn,Rogue) then
+ SetStepComplete(Spawn,Rogue,1)
+ end
+ if HasQuest(Spawn,Shaman) then
+ SetStepComplete(Spawn,Shaman,1)
+ end
+ if HasQuest(Spawn,Summoner) then
+ SetStepComplete(Spawn,Summoner,1)
+ end
+ if HasQuest(Spawn,Warrior) then
+ SetStepComplete(Spawn,Warrior,1)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Skullhammer.lua b/server/SpawnScripts/Commonlands/Skullhammer.lua
new file mode 100644
index 000000000..f4766e1e9
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Skullhammer.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Skullhammer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.10 08:02:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Stonetusk.lua b/server/SpawnScripts/Commonlands/Stonetusk.lua
new file mode 100644
index 000000000..1551057ca
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/Stonetusk.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/Stonetusk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.10 08:02:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(85 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(135 + dmgMod))
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/TaskmastersAssistantKozma.lua b/server/SpawnScripts/Commonlands/TaskmastersAssistantKozma.lua
index eb4d2eafa..8e117a6d5 100755
--- a/server/SpawnScripts/Commonlands/TaskmastersAssistantKozma.lua
+++ b/server/SpawnScripts/Commonlands/TaskmastersAssistantKozma.lua
@@ -28,7 +28,10 @@ end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5865) and not QuestStepIsComplete(Spawn,5865,5)then --FREEPORT OPPORTUNITY
+ SetStepComplete(Spawn,5865,5)
+end
+ FaceTarget(NPC, Spawn)
local conversation = CreateConversation()
PlayFlavor(NPC, "voiceover/english/taskmaster_s_assistant_koz_ma/commonlands/quests/taskmaster/assistant_kozma001.mp3", "", "", 1822760720, 2300113695, Spawn)
AddConversationOption(conversation, "What requisition?", "Option1")
diff --git a/server/SpawnScripts/Commonlands/TerraThud.lua b/server/SpawnScripts/Commonlands/TerraThud.lua
new file mode 100644
index 000000000..f93b4c07f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/TerraThud.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/TerraThud.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.27 05:01:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ local Level = GetLevel(NPC)
+
+ if Level == 21 then
+ SetMaxHP(NPC, 6885)
+ ModifyHP(NPC, 6885)
+ SetMaxPower(NPC, 1650)
+ ModifyPower(NPC, 1650)
+ elseif Level == 22 then
+ SetMaxHP(NPC, 7500)
+ ModifyHP(NPC, 7500)
+ SetMaxPower(NPC, 1750)
+ ModifyPower(NPC, 1750)
+ end
+
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(75 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(125 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/Commonlands/TheUnderwurm.lua b/server/SpawnScripts/Commonlands/TheUnderwurm.lua
new file mode 100644
index 000000000..dc1484da5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/TheUnderwurm.lua
@@ -0,0 +1,74 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/TheUnderwurm.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.10 09:02:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 484.03, -66.27, -408.75, 4, 0)
+ MovementLoopAddLocation(NPC, 440.04, -68.04, -442.62, 4, 0)
+ MovementLoopAddLocation(NPC, 434.75, -68.63, -470.9, 4, 0)
+ MovementLoopAddLocation(NPC, 445.29, -69.55, -497.05, 4, 0)
+ MovementLoopAddLocation(NPC, 457.91, -58.87, -520.84, 4, 0)
+ MovementLoopAddLocation(NPC, 479.26, -62.15, -539.2, 4, 0)
+ MovementLoopAddLocation(NPC, 517.41, -60.04, -535.75, 4, 0)
+ MovementLoopAddLocation(NPC, 570.84, -65.14, -486.74, 4, 0)
+ MovementLoopAddLocation(NPC, 587.98, -67.09, -447.26, 4, 0)
+ MovementLoopAddLocation(NPC, 578.77, -68.6, -410.72, 4, 0)
+ MovementLoopAddLocation(NPC, 554.09, -67.24, -387.26, 4, 0)
+ MovementLoopAddLocation(NPC, 554.09, -67.24, -387.26, 4, 0)
+ MovementLoopAddLocation(NPC, 515.52, -64.61, -368.86, 4, 0)
+ MovementLoopAddLocation(NPC, 515.52, -64.61, -368.86, 4, 0)
+ MovementLoopAddLocation(NPC, 488.48, -61.81, -369.14, 4, 0)
+ MovementLoopAddLocation(NPC, 458.84, -60.92, -414.05, 4, 0)
+ MovementLoopAddLocation(NPC, 437.7, -59.51, -392.08, 4, 0)
+ MovementLoopAddLocation(NPC, 419.02, -51.63, -376.95, 4, 0)
+ MovementLoopAddLocation(NPC, 386.75, -51.18, -362.51, 4, 0)
+ MovementLoopAddLocation(NPC, 363.5, -51.39, -349.16, 4, 0)
+ MovementLoopAddLocation(NPC, 277.39, -51.65, -346.53, 4, 0)
+ MovementLoopAddLocation(NPC, 223.49, -57.4, -340.24, 4, 0)
+ MovementLoopAddLocation(NPC, 246.49, -57.49, -343.19, 4, 0)
+ MovementLoopAddLocation(NPC, 279.33, -51.36, -347.26, 4, 0)
+ MovementLoopAddLocation(NPC, 355.61, -51.39, -345.24, 4, 0)
+ MovementLoopAddLocation(NPC, 353.76, -51.34, -316.14, 4, 0)
+ MovementLoopAddLocation(NPC, 353.23, -52.65, -292.41, 4, 0)
+ MovementLoopAddLocation(NPC, 374.68, -52.83, -261.43, 4, 0)
+ MovementLoopAddLocation(NPC, 394.45, -52.67, -236.52, 4, 0)
+ MovementLoopAddLocation(NPC, 415.14, -52.96, -215.42, 4, 0)
+ MovementLoopAddLocation(NPC, 420.27, -51.87, -183.13, 4, 0)
+ MovementLoopAddLocation(NPC, 406.4, -52.88, -154.21, 4, 0)
+ MovementLoopAddLocation(NPC, 398.86, -52.72, -130.21, 4, 0)
+ MovementLoopAddLocation(NPC, 404.17, -51.31, -50.44, 4, 0)
+ MovementLoopAddLocation(NPC, 396.19, -52.02, -112.56, 4, 0)
+ MovementLoopAddLocation(NPC, 402.8, -52.7, -148.2, 4, 0)
+ MovementLoopAddLocation(NPC, 419.93, -52.88, -167.05, 4, 0)
+ MovementLoopAddLocation(NPC, 420.47, -52.56, -210.51, 4, 0)
+ MovementLoopAddLocation(NPC, 395.74, -52.86, -234.12, 4, 0)
+ MovementLoopAddLocation(NPC, 374.76, -52.88, -261.05, 4, 0)
+ MovementLoopAddLocation(NPC, 352.11, -52.89, -291.46, 4, 0)
+ MovementLoopAddLocation(NPC, 361.43, -51.39, -345.68, 4, 0)
+ MovementLoopAddLocation(NPC, 389.64, -51.11, -361.08, 4, 0)
+ MovementLoopAddLocation(NPC, 408.9, -51.25, -371.33, 4, 0)
+ MovementLoopAddLocation(NPC, 423.25, -53.36, -380.85, 4, 0)
+ MovementLoopAddLocation(NPC, 444.57, -60.57, -404.01, 4, 0)
+ MovementLoopAddLocation(NPC, 484.03, -66.27, -408.75, 4, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/VrokBloodfist.lua b/server/SpawnScripts/Commonlands/VrokBloodfist.lua
new file mode 100644
index 000000000..908cffc4b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/VrokBloodfist.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/VrokBloodfist.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.09 10:03:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(55 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(95 + dmgMod))
+ Bloodskull(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/Zaikik.lua b/server/SpawnScripts/Commonlands/Zaikik.lua
index dbc94aafb..106552806 100755
--- a/server/SpawnScripts/Commonlands/Zaikik.lua
+++ b/server/SpawnScripts/Commonlands/Zaikik.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldassassin.lua b/server/SpawnScripts/Commonlands/aBlackshieldassassin.lua
index 7902a3959..7eca6ae23 100755
--- a/server/SpawnScripts/Commonlands/aBlackshieldassassin.lua
+++ b/server/SpawnScripts/Commonlands/aBlackshieldassassin.lua
@@ -5,19 +5,22 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+ AddTimer(NPC, 1500, "movement")
-
-function spawn(NPC)
-local choice = math.random(1,2)
-if choice == 1 then
-SpawnSet(NPC, "model_type", 132)
-SpawnSet(NPC, "gender", 2)
-else
-SpawnSet(NPC, "model_type", 134)
-SpawnSet(NPC, "gender", 1)
end
- end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ else
+ IdleAlert(NPC)
+ end
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
@@ -79,4 +82,14 @@ else
PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432, Spawn)
end
end
- end
+ end
+
+function race(NPC)
+ setrace = MakeRandomInt(1,2)
+ if setrace == 1 then
+ human(NPC)
+ elseif setrace == 2 then
+ halfelf(NPC)
+ end
+end
+
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldbrute.lua b/server/SpawnScripts/Commonlands/aBlackshieldbrute.lua
new file mode 100644
index 000000000..70fcc2f2e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBlackshieldbrute.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBlackshieldbrute.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 03:01:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC)
+ setrace = MakeRandomInt(1,2)
+ if setrace == 1 then
+ human(NPC)
+ elseif setrace == 2 then
+ halfelf(NPC)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldbrutePath.lua b/server/SpawnScripts/Commonlands/aBlackshieldbrutePath.lua
new file mode 100644
index 000000000..09cd41f4b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBlackshieldbrutePath.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBlackshieldbrutePath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.31 04:01:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC)
+ setrace = MakeRandomInt(1,2)
+ if setrace == 1 then
+ human(NPC)
+ elseif setrace == 2 then
+ halfelf(NPC)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -439.81, -91.17, -985.86, 2, 0)
+ MovementLoopAddLocation(NPC, -439.81, -91.17, -985.86, 2, 0)
+ MovementLoopAddLocation(NPC, -455.42, -91.13, -950.57, 2, 0)
+ MovementLoopAddLocation(NPC, -456.95, -90.49, -941.3, 2, 0)
+ MovementLoopAddLocation(NPC, -454.34, -90.06, -925.04, 2, 0)
+ MovementLoopAddLocation(NPC, -448.7, -89.43, -914.43, 2, 0)
+ MovementLoopAddLocation(NPC, -440.22, -86.28, -909.22, 2, 0)
+ MovementLoopAddLocation(NPC, -426.85, -81.18, -903.59, 2, 0)
+ MovementLoopAddLocation(NPC, -401.21, -69.53, -895.18, 2, 0)
+ MovementLoopAddLocation(NPC, -376.3, -55.13, -885.09, 2, 0)
+ MovementLoopAddLocation(NPC, -369.95, -51.79, -882.46, 2, 0)
+ MovementLoopAddLocation(NPC, -369.95, -51.79, -882.46, 2, 0)
+ MovementLoopAddLocation(NPC, -378.3, -56.12, -885.14, 2, 0)
+ MovementLoopAddLocation(NPC, -390.51, -63.11, -889.06, 2, 0)
+ MovementLoopAddLocation(NPC, -404.6, -70.49, -893.59, 2, 0)
+ MovementLoopAddLocation(NPC, -424.65, -79.59, -900.03, 2, 0)
+ MovementLoopAddLocation(NPC, -436.5, -84.88, -905.41, 2, 0)
+ MovementLoopAddLocation(NPC, -444.98, -88.09, -913.17, 2, 0)
+ MovementLoopAddLocation(NPC, -456.1, -90.34, -930.99, 2, 0)
+ MovementLoopAddLocation(NPC, -457.02, -90.34, -939.59, 2, 0)
+ MovementLoopAddLocation(NPC, -439.81, -91.17, -985.86, 2, 0)
+ MovementLoopAddLocation(NPC, -439.81, -91.17, -985.86, 2, 0)
+end
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldcleric.lua b/server/SpawnScripts/Commonlands/aBlackshieldcleric.lua
new file mode 100644
index 000000000..75c4bf508
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBlackshieldcleric.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBlackshieldcleric.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 03:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+ AddTimer(NPC, 1500, "movement")
+
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ else
+ IdlePriest(NPC)
+ end
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC)
+ setrace = MakeRandomInt(1,2)
+ if setrace == 1 then
+ human(NPC)
+ elseif setrace == 2 then
+ halfelf(NPC)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBlackshielddockhand.lua b/server/SpawnScripts/Commonlands/aBlackshielddockhand.lua
index 6f37364dd..73dd7b5c9 100755
--- a/server/SpawnScripts/Commonlands/aBlackshielddockhand.lua
+++ b/server/SpawnScripts/Commonlands/aBlackshielddockhand.lua
@@ -9,9 +9,11 @@
local BlackshieldRecruitID = 299540
local SmugglersSecrets = 452
local CratesOnTheNerves = 453
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-SetPlayerProximityFunction(NPC, 10, "InRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aBlackshielddockofficer.lua b/server/SpawnScripts/Commonlands/aBlackshielddockofficer.lua
index 766442e5b..67b1d110b 100755
--- a/server/SpawnScripts/Commonlands/aBlackshielddockofficer.lua
+++ b/server/SpawnScripts/Commonlands/aBlackshielddockofficer.lua
@@ -7,9 +7,10 @@
--]]
local QUEST = 409
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldrecruit.lua b/server/SpawnScripts/Commonlands/aBlackshieldrecruit.lua
index a0ff1d462..cc8597a95 100755
--- a/server/SpawnScripts/Commonlands/aBlackshieldrecruit.lua
+++ b/server/SpawnScripts/Commonlands/aBlackshieldrecruit.lua
@@ -10,9 +10,11 @@
local BlackshieldDockhandID = 299539
local SmugglersSecrets = 452
local CratesOnTheNerves = 453
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-SetPlayerProximityFunction(NPC, 10, "InRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldsmuggler.lua b/server/SpawnScripts/Commonlands/aBlackshieldsmuggler.lua
new file mode 100644
index 000000000..57dfdf4de
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBlackshieldsmuggler.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBlackshieldsmuggler.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 03:01:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ AddTimer(NPC, 1500, "movement")
+
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ else
+ IdleSneaky(NPC)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldsmugglerPath.lua b/server/SpawnScripts/Commonlands/aBlackshieldsmugglerPath.lua
new file mode 100644
index 000000000..c0c71bed6
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBlackshieldsmugglerPath.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBlackshieldsmugglerPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.31 04:01:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -596.61, -145.62, -879.3, 2, 6)
+ MovementLoopAddLocation(NPC, -592.55, -145.13, -878.11, 2, 0)
+ MovementLoopAddLocation(NPC, -586.81, -142.64, -875.93, 2, 0)
+ MovementLoopAddLocation(NPC, -576.01, -138.05, -877.41, 2, 0)
+ MovementLoopAddLocation(NPC, -542.73, -124.13, -891.91, 2, 0)
+ MovementLoopAddLocation(NPC, -499.94, -108.79, -910.24, 2, 0)
+ MovementLoopAddLocation(NPC, -472.84, -96.4, -925.18, 2, 0)
+ MovementLoopAddLocation(NPC, -466.64, -93.32, -928.65, 2, 0)
+ MovementLoopAddLocation(NPC, -463.17, -91.84, -931.08, 2, 0)
+ MovementLoopAddLocation(NPC, -460.98, -90.89, -936.1, 2, 0)
+ MovementLoopAddLocation(NPC, -457.28, -90.8, -944.59, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -457.28, -90.8, -944.59, 2, 0)
+ MovementLoopAddLocation(NPC, -457.91, -90.66, -942.88, 2, 0)
+ MovementLoopAddLocation(NPC, -461.38, -90.95, -936.12, 2, 0)
+ MovementLoopAddLocation(NPC, -467.97, -93.5, -930.86, 2, 0)
+ MovementLoopAddLocation(NPC, -493.78, -106.37, -915.46, 2, 0)
+ MovementLoopAddLocation(NPC, -513.53, -113.29, -904.24, 2, 0)
+ MovementLoopAddLocation(NPC, -535.26, -121.34, -896.48, 2, 0)
+ MovementLoopAddLocation(NPC, -550.44, -126.96, -890.56, 2, 0)
+ MovementLoopAddLocation(NPC, -579.21, -139.55, -879.26, 2, 0)
+ MovementLoopAddLocation(NPC, -588.2, -143.32, -878.41, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/aBlackshieldthug.lua b/server/SpawnScripts/Commonlands/aBlackshieldthug.lua
new file mode 100644
index 000000000..545031549
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBlackshieldthug.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBlackshieldthug.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 03:01:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+ class(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ setrace = MakeRandomInt(1,2)
+ if setrace == 2 then
+ human(NPC)
+ elseif setrace == 2 then
+ halfelf(NPC)
+ end
+end
+
+function class (NPC, Spawn)
+ class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 5)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 2)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 38)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullHighGuard.lua b/server/SpawnScripts/Commonlands/aBloodskullHighGuard.lua
new file mode 100644
index 000000000..c39915699
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullHighGuard.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullHighGuard.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.22 12:01:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ IdleAlert(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullextractor.lua b/server/SpawnScripts/Commonlands/aBloodskullextractor.lua
new file mode 100644
index 000000000..a82d393fe
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullextractor.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullextractor.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskulllumberjack.lua b/server/SpawnScripts/Commonlands/aBloodskulllumberjack.lua
new file mode 100644
index 000000000..4d4d6f8e7
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskulllumberjack.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskulllumberjack.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmason.lua b/server/SpawnScripts/Commonlands/aBloodskullmason.lua
new file mode 100644
index 000000000..adb459976
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmason.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmason.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmessenger.lua b/server/SpawnScripts/Commonlands/aBloodskullmessenger.lua
new file mode 100644
index 000000000..4376b8827
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmessenger.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmessenger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmystic.lua b/server/SpawnScripts/Commonlands/aBloodskullmystic.lua
new file mode 100644
index 000000000..0a1dfa7ca
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmystic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmystic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticDunar1.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticDunar1.lua
new file mode 100644
index 000000000..0eec62e29
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticDunar1.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticDunar1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 02:01:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 111.31, -45.4, 450.07, 2, 0)
+ MovementLoopAddLocation(NPC, 81.76, -47.81, 495.65, 2, 0)
+ MovementLoopAddLocation(NPC, 72.24, -47.86, 521.09, 2, 0)
+ MovementLoopAddLocation(NPC, 78.77, -48.04, 544.38, 2, 0)
+ MovementLoopAddLocation(NPC, 94.71, -48.04, 558.21, 2, 0)
+ MovementLoopAddLocation(NPC, 111.58, -47.98, 560.72, 2, 0)
+ MovementLoopAddLocation(NPC, 137.03, -47.7, 558.12, 2, 0)
+ MovementLoopAddLocation(NPC, 153.87, -47.45, 552.18, 2, 0)
+ MovementLoopAddLocation(NPC, 164.19, -46.76, 547.51, 2, 0)
+ MovementLoopAddLocation(NPC, 179.35, -46.41, 532.42, 2, 0)
+ MovementLoopAddLocation(NPC, 191.44, -47.68, 510.36, 2, 0)
+ MovementLoopAddLocation(NPC, 194.62, -48.03, 483.67, 2, 0)
+ MovementLoopAddLocation(NPC, 194.15, -48.04, 455.38, 2, 0)
+ MovementLoopAddLocation(NPC, 181.07, -47.63, 440.23, 2, 0)
+ MovementLoopAddLocation(NPC, 171.37, -46.5, 435.33, 2, 0)
+ MovementLoopAddLocation(NPC, 146.95, -43.45, 433.92, 2, 0)
+ MovementLoopAddLocation(NPC, 129.66, -42.68, 434, 2, 0)
+ MovementLoopAddLocation(NPC, 119.72, -43.55, 438.55, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticDunar2.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticDunar2.lua
new file mode 100644
index 000000000..7350f9086
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticDunar2.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticDunar2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 02:01:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 9000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 111.31, -45.4, 450.07, 2, 0)
+ MovementLoopAddLocation(NPC, 81.76, -47.81, 495.65, 2, 0)
+ MovementLoopAddLocation(NPC, 72.24, -47.86, 521.09, 2, 0)
+ MovementLoopAddLocation(NPC, 78.77, -48.04, 544.38, 2, 0)
+ MovementLoopAddLocation(NPC, 94.71, -48.04, 558.21, 2, 0)
+ MovementLoopAddLocation(NPC, 111.58, -47.98, 560.72, 2, 0)
+ MovementLoopAddLocation(NPC, 137.03, -47.7, 558.12, 2, 0)
+ MovementLoopAddLocation(NPC, 153.87, -47.45, 552.18, 2, 0)
+ MovementLoopAddLocation(NPC, 164.19, -46.76, 547.51, 2, 0)
+ MovementLoopAddLocation(NPC, 179.35, -46.41, 532.42, 2, 0)
+ MovementLoopAddLocation(NPC, 191.44, -47.68, 510.36, 2, 0)
+ MovementLoopAddLocation(NPC, 194.62, -48.03, 483.67, 2, 0)
+ MovementLoopAddLocation(NPC, 194.15, -48.04, 455.38, 2, 0)
+ MovementLoopAddLocation(NPC, 181.07, -47.63, 440.23, 2, 0)
+ MovementLoopAddLocation(NPC, 171.37, -46.5, 435.33, 2, 0)
+ MovementLoopAddLocation(NPC, 146.95, -43.45, 433.92, 2, 0)
+ MovementLoopAddLocation(NPC, 129.66, -42.68, 434, 2, 0)
+ MovementLoopAddLocation(NPC, 119.72, -43.55, 438.55, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticGaer1.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticGaer1.lua
new file mode 100644
index 000000000..69ab43ef9
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticGaer1.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticGaer1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.22 11:01:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -853.31, -47.85, 665.66, 2, 0)
+ MovementLoopAddLocation(NPC, -854.13, -47.25, 631.48, 2, 0)
+ MovementLoopAddLocation(NPC, -883.2, -48.02, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -922.78, -48.04, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -950.03, -48.04, 614.71, 2, 0)
+ MovementLoopAddLocation(NPC, -981.42, -48.04, 601.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1072.99, -48.04, 621.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1097.7, -48.04, 617.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1124.87, -48.04, 621.24, 2, 0)
+ MovementLoopAddLocation(NPC, -1148.21, -48.04, 632.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1195.37, -47.91, 626.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1201.45, -47.47, 620.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1199.98, -47.13, 611.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1168.19, -47.37, 589.7, 2, 0)
+ MovementLoopAddLocation(NPC, -1099.29, -47.22, 551.58, 2, 0)
+ MovementLoopAddLocation(NPC, -1074, -47.58, 552.66, 2, 0)
+ MovementLoopAddLocation(NPC, -1051.47, -47.66, 559.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1015.81, -47.84, 575.63, 2, 0)
+ MovementLoopAddLocation(NPC, -998.11, -47.83, 576.63, 2, 0)
+ MovementLoopAddLocation(NPC, -909.95, -48.02, 555.98, 2, 0)
+ MovementLoopAddLocation(NPC, -847.01, -48.04, 540.67, 2, 0)
+ MovementLoopAddLocation(NPC, -803.28, -48.04, 522.18, 2, 0)
+ MovementLoopAddLocation(NPC, -735.52, -47.84, 461.03, 2, 0)
+ MovementLoopAddLocation(NPC, -685.04, -48.04, 437.92, 2, 0)
+ MovementLoopAddLocation(NPC, -654.54, -45.76, 425.58, 2, 0)
+ MovementLoopAddLocation(NPC, -605.63, -47.55, 372.49, 2, 0)
+ MovementLoopAddLocation(NPC, -577.7, -47.29, 348.63, 2, 0)
+ MovementLoopAddLocation(NPC, -549.75, -46.48, 307.69, 2, 0)
+ MovementLoopAddLocation(NPC, -514.57, -47.38, 279.68, 2, 0)
+ MovementLoopAddLocation(NPC, -472.31, -46.99, 282.11, 2, 0)
+ MovementLoopAddLocation(NPC, -423.39, -45.45, 289.7, 2, 0)
+ MovementLoopAddLocation(NPC, -377.48, -45.18, 319.77, 2, 0)
+ MovementLoopAddLocation(NPC, -352.01, -44.87, 322.8, 2, 0)
+ MovementLoopAddLocation(NPC, -324.04, -44.41, 305.68, 2, 0)
+ MovementLoopAddLocation(NPC, -311.39, -43.84, 298.71, 2, 0)
+ MovementLoopAddLocation(NPC, -299.78, -46.29, 287.78, 2, 0)
+ MovementLoopAddLocation(NPC, -263.31, -46.08, 210.04, 2, 0)
+ MovementLoopAddLocation(NPC, -253.1, -46.25, 199.62, 2, 0)
+ MovementLoopAddLocation(NPC, -240.26, -47.37, 197.59, 2, 0)
+ MovementLoopAddLocation(NPC, -193.7, -48.04, 209.45, 2, 0)
+ MovementLoopAddLocation(NPC, -181.94, -47.48, 224.61, 2, 0)
+ MovementLoopAddLocation(NPC, -178.35, -47.41, 243.59, 2, 0)
+ MovementLoopAddLocation(NPC, -183.73, -47.64, 268.36, 2, 0)
+ MovementLoopAddLocation(NPC, -181.18, -45.97, 299.93, 2, 0)
+ MovementLoopAddLocation(NPC, -184.05, -46.94, 332.56, 2, 0)
+ MovementLoopAddLocation(NPC, -189.4, -48.1, 382.65, 2, 0)
+ MovementLoopAddLocation(NPC, -196.88, -47.91, 394.92, 2, 0)
+ MovementLoopAddLocation(NPC, -211.1, -47.23, 399.72, 2, 0)
+ MovementLoopAddLocation(NPC, -234.53, -46.64, 397.2, 2, 0)
+ MovementLoopAddLocation(NPC, -240.24, -46.3, 398.41, 2, 0)
+ MovementLoopAddLocation(NPC, -262.26, -46.93, 418.43, 2, 0)
+ MovementLoopAddLocation(NPC, -257.77, -46.93, 474.66, 2, 0)
+ MovementLoopAddLocation(NPC, -261.59, -45.66, 522.59, 2, 0)
+ MovementLoopAddLocation(NPC, -290.99, -44.69, 564.43, 2, 0)
+ MovementLoopAddLocation(NPC, -330.21, -46.98, 583.85, 2, 0)
+ MovementLoopAddLocation(NPC, -369.31, -47.88, 588.66, 2, 0)
+ MovementLoopAddLocation(NPC, -408.62, -45.09, 591.41, 2, 0)
+ MovementLoopAddLocation(NPC, -428.42, -45.52, 600.49, 2, 0)
+ MovementLoopAddLocation(NPC, -459.35, -47.9, 627.84, 2, 0)
+ MovementLoopAddLocation(NPC, -542.09, -46.13, 626.25, 2, 0)
+ MovementLoopAddLocation(NPC, -600.73, -48.06, 623.84, 2, 0)
+ MovementLoopAddLocation(NPC, -685.76, -47.58, 614.7, 2, 0)
+ MovementLoopAddLocation(NPC, -768.94, -48.04, 618.47, 2, 0)
+ MovementLoopAddLocation(NPC, -820.7, -47.98, 612.81, 2, 0)
+ MovementLoopAddLocation(NPC, -842.97, -47.77, 617.33, 2, 0)
+ MovementLoopAddLocation(NPC, -854.26, -47.21, 637.21, 2, 0)
+ MovementLoopAddLocation(NPC, -854.92, -47.43, 650.55, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticGaer2.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticGaer2.lua
new file mode 100644
index 000000000..ecdd7b682
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticGaer2.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticGaer2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.22 11:01:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 9000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -853.31, -47.85, 665.66, 2, 0)
+ MovementLoopAddLocation(NPC, -854.13, -47.25, 631.48, 2, 0)
+ MovementLoopAddLocation(NPC, -883.2, -48.02, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -922.78, -48.04, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -950.03, -48.04, 614.71, 2, 0)
+ MovementLoopAddLocation(NPC, -981.42, -48.04, 601.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1072.99, -48.04, 621.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1097.7, -48.04, 617.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1124.87, -48.04, 621.24, 2, 0)
+ MovementLoopAddLocation(NPC, -1148.21, -48.04, 632.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1195.37, -47.91, 626.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1201.45, -47.47, 620.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1199.98, -47.13, 611.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1168.19, -47.37, 589.7, 2, 0)
+ MovementLoopAddLocation(NPC, -1099.29, -47.22, 551.58, 2, 0)
+ MovementLoopAddLocation(NPC, -1074, -47.58, 552.66, 2, 0)
+ MovementLoopAddLocation(NPC, -1051.47, -47.66, 559.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1015.81, -47.84, 575.63, 2, 0)
+ MovementLoopAddLocation(NPC, -998.11, -47.83, 576.63, 2, 0)
+ MovementLoopAddLocation(NPC, -909.95, -48.02, 555.98, 2, 0)
+ MovementLoopAddLocation(NPC, -847.01, -48.04, 540.67, 2, 0)
+ MovementLoopAddLocation(NPC, -803.28, -48.04, 522.18, 2, 0)
+ MovementLoopAddLocation(NPC, -735.52, -47.84, 461.03, 2, 0)
+ MovementLoopAddLocation(NPC, -685.04, -48.04, 437.92, 2, 0)
+ MovementLoopAddLocation(NPC, -654.54, -45.76, 425.58, 2, 0)
+ MovementLoopAddLocation(NPC, -605.63, -47.55, 372.49, 2, 0)
+ MovementLoopAddLocation(NPC, -577.7, -47.29, 348.63, 2, 0)
+ MovementLoopAddLocation(NPC, -549.75, -46.48, 307.69, 2, 0)
+ MovementLoopAddLocation(NPC, -514.57, -47.38, 279.68, 2, 0)
+ MovementLoopAddLocation(NPC, -472.31, -46.99, 282.11, 2, 0)
+ MovementLoopAddLocation(NPC, -423.39, -45.45, 289.7, 2, 0)
+ MovementLoopAddLocation(NPC, -377.48, -45.18, 319.77, 2, 0)
+ MovementLoopAddLocation(NPC, -352.01, -44.87, 322.8, 2, 0)
+ MovementLoopAddLocation(NPC, -324.04, -44.41, 305.68, 2, 0)
+ MovementLoopAddLocation(NPC, -311.39, -43.84, 298.71, 2, 0)
+ MovementLoopAddLocation(NPC, -299.78, -46.29, 287.78, 2, 0)
+ MovementLoopAddLocation(NPC, -263.31, -46.08, 210.04, 2, 0)
+ MovementLoopAddLocation(NPC, -253.1, -46.25, 199.62, 2, 0)
+ MovementLoopAddLocation(NPC, -240.26, -47.37, 197.59, 2, 0)
+ MovementLoopAddLocation(NPC, -193.7, -48.04, 209.45, 2, 0)
+ MovementLoopAddLocation(NPC, -181.94, -47.48, 224.61, 2, 0)
+ MovementLoopAddLocation(NPC, -178.35, -47.41, 243.59, 2, 0)
+ MovementLoopAddLocation(NPC, -183.73, -47.64, 268.36, 2, 0)
+ MovementLoopAddLocation(NPC, -181.18, -45.97, 299.93, 2, 0)
+ MovementLoopAddLocation(NPC, -184.05, -46.94, 332.56, 2, 0)
+ MovementLoopAddLocation(NPC, -189.4, -48.1, 382.65, 2, 0)
+ MovementLoopAddLocation(NPC, -196.88, -47.91, 394.92, 2, 0)
+ MovementLoopAddLocation(NPC, -211.1, -47.23, 399.72, 2, 0)
+ MovementLoopAddLocation(NPC, -234.53, -46.64, 397.2, 2, 0)
+ MovementLoopAddLocation(NPC, -240.24, -46.3, 398.41, 2, 0)
+ MovementLoopAddLocation(NPC, -262.26, -46.93, 418.43, 2, 0)
+ MovementLoopAddLocation(NPC, -257.77, -46.93, 474.66, 2, 0)
+ MovementLoopAddLocation(NPC, -261.59, -45.66, 522.59, 2, 0)
+ MovementLoopAddLocation(NPC, -290.99, -44.69, 564.43, 2, 0)
+ MovementLoopAddLocation(NPC, -330.21, -46.98, 583.85, 2, 0)
+ MovementLoopAddLocation(NPC, -369.31, -47.88, 588.66, 2, 0)
+ MovementLoopAddLocation(NPC, -408.62, -45.09, 591.41, 2, 0)
+ MovementLoopAddLocation(NPC, -428.42, -45.52, 600.49, 2, 0)
+ MovementLoopAddLocation(NPC, -459.35, -47.9, 627.84, 2, 0)
+ MovementLoopAddLocation(NPC, -542.09, -46.13, 626.25, 2, 0)
+ MovementLoopAddLocation(NPC, -600.73, -48.06, 623.84, 2, 0)
+ MovementLoopAddLocation(NPC, -685.76, -47.58, 614.7, 2, 0)
+ MovementLoopAddLocation(NPC, -768.94, -48.04, 618.47, 2, 0)
+ MovementLoopAddLocation(NPC, -820.7, -47.98, 612.81, 2, 0)
+ MovementLoopAddLocation(NPC, -842.97, -47.77, 617.33, 2, 0)
+ MovementLoopAddLocation(NPC, -854.26, -47.21, 637.21, 2, 0)
+ MovementLoopAddLocation(NPC, -854.92, -47.43, 650.55, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticGriksna1.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticGriksna1.lua
new file mode 100644
index 000000000..cddb87b3c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticGriksna1.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticGriksna1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 09:01:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -573.57, -48.04, 547.36, 2, 0)
+ MovementLoopAddLocation(NPC, -577, -48.04, 531.3, 2, 0)
+ MovementLoopAddLocation(NPC, -568.51, -48.04, 516.51, 2, 0)
+ MovementLoopAddLocation(NPC, -552.95, -47.6, 510.75, 2, 0)
+ MovementLoopAddLocation(NPC, -538.6, -45.15, 507.25, 2, 0)
+ MovementLoopAddLocation(NPC, -518.92, -47.09, 515.89, 2, 0)
+ MovementLoopAddLocation(NPC, -508.98, -47.97, 530.34, 2, 0)
+ MovementLoopAddLocation(NPC, -503.32, -48.04, 553.19, 2, 0)
+ MovementLoopAddLocation(NPC, -507.41, -48.04, 579.35, 2, 0)
+ MovementLoopAddLocation(NPC, -525.15, -47.82, 598.88, 2, 0)
+ MovementLoopAddLocation(NPC, -545.14, -47.43, 605.57, 2, 0)
+ MovementLoopAddLocation(NPC, -555.79, -47.86, 605.41, 2, 0)
+ MovementLoopAddLocation(NPC, -561.06, -48.56, 595.49, 2, 0)
+ MovementLoopAddLocation(NPC, -566.65, -48.3, 574.07, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticGriksna2.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticGriksna2.lua
new file mode 100644
index 000000000..5a15c8db7
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticGriksna2.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticGriksna2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 09:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 9000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -573.57, -48.04, 547.36, 2, 0)
+ MovementLoopAddLocation(NPC, -577, -48.04, 531.3, 2, 0)
+ MovementLoopAddLocation(NPC, -568.51, -48.04, 516.51, 2, 0)
+ MovementLoopAddLocation(NPC, -552.95, -47.6, 510.75, 2, 0)
+ MovementLoopAddLocation(NPC, -538.6, -45.15, 507.25, 2, 0)
+ MovementLoopAddLocation(NPC, -518.92, -47.09, 515.89, 2, 0)
+ MovementLoopAddLocation(NPC, -508.98, -47.97, 530.34, 2, 0)
+ MovementLoopAddLocation(NPC, -503.32, -48.04, 553.19, 2, 0)
+ MovementLoopAddLocation(NPC, -507.41, -48.04, 579.35, 2, 0)
+ MovementLoopAddLocation(NPC, -525.15, -47.82, 598.88, 2, 0)
+ MovementLoopAddLocation(NPC, -545.14, -47.43, 605.57, 2, 0)
+ MovementLoopAddLocation(NPC, -555.79, -47.86, 605.41, 2, 0)
+ MovementLoopAddLocation(NPC, -561.06, -48.56, 595.49, 2, 0)
+ MovementLoopAddLocation(NPC, -566.65, -48.3, 574.07, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticOgof1.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticOgof1.lua
new file mode 100644
index 000000000..e63e07c77
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticOgof1.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticOgof1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 05:01:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 7000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -679.52, -48.04, 449.72, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -675.41, -48.04, 432.53, 2, 0)
+ MovementLoopAddLocation(NPC, -665.04, -47.89, 425.46, 2, 0)
+ MovementLoopAddLocation(NPC, -655.93, -45.31, 422.47, 2, 0)
+ MovementLoopAddLocation(NPC, -643.74, -46.09, 420.74, 2, 0)
+ MovementLoopAddLocation(NPC, -638.71, -46.61, 423.15, 2, 0)
+ MovementLoopAddLocation(NPC, -630.31, -47.98, 431.82, 2, 0)
+ MovementLoopAddLocation(NPC, -626.72, -48.04, 445.24, 2, 0)
+ MovementLoopAddLocation(NPC, -627.69, -48.04, 460.73, 2, 0)
+ MovementLoopAddLocation(NPC, -631.15, -47.99, 469.53, 2, 0)
+ MovementLoopAddLocation(NPC, -631, -47.29, 485.93, 2, 0)
+ MovementLoopAddLocation(NPC, -627.93, -47.1, 501.28, 2, 0)
+ MovementLoopAddLocation(NPC, -631.59, -46.99, 512.06, 2, 0)
+ MovementLoopAddLocation(NPC, -644.25, -45.78, 517.3, 2, 0)
+ MovementLoopAddLocation(NPC, -656.83, -46, 520.49, 2, 0)
+ MovementLoopAddLocation(NPC, -671.01, -46.75, 521.89, 2, 0)
+ MovementLoopAddLocation(NPC, -682.8, -45.98, 518.71, 2, 0)
+ MovementLoopAddLocation(NPC, -694.56, -46.57, 509.81, 2, 0)
+ MovementLoopAddLocation(NPC, -696.94, -47.24, 494.23, 2, 0)
+ MovementLoopAddLocation(NPC, -686.37, -48.04, 462.16, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullmysticOgof2.lua b/server/SpawnScripts/Commonlands/aBloodskullmysticOgof2.lua
new file mode 100644
index 000000000..16d205470
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullmysticOgof2.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullmysticOgof2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 05:01:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -679.52, -48.04, 449.72, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -675.41, -48.04, 432.53, 2, 0)
+ MovementLoopAddLocation(NPC, -665.04, -47.89, 425.46, 2, 0)
+ MovementLoopAddLocation(NPC, -655.93, -45.31, 422.47, 2, 0)
+ MovementLoopAddLocation(NPC, -643.74, -46.09, 420.74, 2, 0)
+ MovementLoopAddLocation(NPC, -638.71, -46.61, 423.15, 2, 0)
+ MovementLoopAddLocation(NPC, -630.31, -47.98, 431.82, 2, 0)
+ MovementLoopAddLocation(NPC, -626.72, -48.04, 445.24, 2, 0)
+ MovementLoopAddLocation(NPC, -627.69, -48.04, 460.73, 2, 0)
+ MovementLoopAddLocation(NPC, -631.15, -47.99, 469.53, 2, 0)
+ MovementLoopAddLocation(NPC, -631, -47.29, 485.93, 2, 0)
+ MovementLoopAddLocation(NPC, -627.93, -47.1, 501.28, 2, 0)
+ MovementLoopAddLocation(NPC, -631.59, -46.99, 512.06, 2, 0)
+ MovementLoopAddLocation(NPC, -644.25, -45.78, 517.3, 2, 0)
+ MovementLoopAddLocation(NPC, -656.83, -46, 520.49, 2, 0)
+ MovementLoopAddLocation(NPC, -671.01, -46.75, 521.89, 2, 0)
+ MovementLoopAddLocation(NPC, -682.8, -45.98, 518.71, 2, 0)
+ MovementLoopAddLocation(NPC, -694.56, -46.57, 509.81, 2, 0)
+ MovementLoopAddLocation(NPC, -696.94, -47.24, 494.23, 2, 0)
+ MovementLoopAddLocation(NPC, -686.37, -48.04, 462.16, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullnegotiator.lua b/server/SpawnScripts/Commonlands/aBloodskullnegotiator.lua
new file mode 100644
index 000000000..30c04add3
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullnegotiator.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullnegotiator.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ --OrcArmorCommon(NPC)
+ setclass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function setclass (NPC, Spawn)
+ class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 5)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 2)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 38)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullorc.lua b/server/SpawnScripts/Commonlands/aBloodskullorc.lua
new file mode 100644
index 000000000..54fa05cab
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullorc.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullorc.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ setclass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function setclass(NPC, Spawn)
+ class = MakeRandomInt(1,2)
+ if class == 1 then
+ SpawnSet(NPC, "class", 32)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 38)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullpawn.lua b/server/SpawnScripts/Commonlands/aBloodskullpawn.lua
new file mode 100644
index 000000000..2df432fa3
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullpawn.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullpawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.15 03:01:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullpriest.lua b/server/SpawnScripts/Commonlands/aBloodskullpriest.lua
index 7b69159ae..37d2b170e 100755
--- a/server/SpawnScripts/Commonlands/aBloodskullpriest.lua
+++ b/server/SpawnScripts/Commonlands/aBloodskullpriest.lua
@@ -5,9 +5,21 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ else
+ IdlePriest(NPC)
+ end
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aBloodskullpriestHeroic.lua b/server/SpawnScripts/Commonlands/aBloodskullpriestHeroic.lua
new file mode 100644
index 000000000..9d06b130c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullpriestHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullpriestHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.18 02:01:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullscout.lua b/server/SpawnScripts/Commonlands/aBloodskullscout.lua
new file mode 100644
index 000000000..c83e49499
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullscout.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullscoutSneak.lua b/server/SpawnScripts/Commonlands/aBloodskullscoutSneak.lua
new file mode 100644
index 000000000..29cca1fce
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullscoutSneak.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullscoutSneak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.16 02:01:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ SetSeeHide(NPC,1)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullshaman.lua b/server/SpawnScripts/Commonlands/aBloodskullshaman.lua
new file mode 100644
index 000000000..82abb02e0
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullshaman.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullshaman.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 1500, "movement")
+
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ else
+ IdlePriest(NPC)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullshamanHeroic.lua b/server/SpawnScripts/Commonlands/aBloodskullshamanHeroic.lua
new file mode 100644
index 000000000..3e1d40668
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullshamanHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullshamanHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.18 02:01:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldier.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldier.lua
new file mode 100644
index 000000000..8869f2da7
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldier.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierDunar1.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierDunar1.lua
new file mode 100644
index 000000000..81d366837
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierDunar1.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierDunar1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 02:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 7000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 111.31, -45.4, 450.07, 2, 0)
+ MovementLoopAddLocation(NPC, 81.76, -47.81, 495.65, 2, 0)
+ MovementLoopAddLocation(NPC, 72.24, -47.86, 521.09, 2, 0)
+ MovementLoopAddLocation(NPC, 78.77, -48.04, 544.38, 2, 0)
+ MovementLoopAddLocation(NPC, 94.71, -48.04, 558.21, 2, 0)
+ MovementLoopAddLocation(NPC, 111.58, -47.98, 560.72, 2, 0)
+ MovementLoopAddLocation(NPC, 137.03, -47.7, 558.12, 2, 0)
+ MovementLoopAddLocation(NPC, 153.87, -47.45, 552.18, 2, 0)
+ MovementLoopAddLocation(NPC, 164.19, -46.76, 547.51, 2, 0)
+ MovementLoopAddLocation(NPC, 179.35, -46.41, 532.42, 2, 0)
+ MovementLoopAddLocation(NPC, 191.44, -47.68, 510.36, 2, 0)
+ MovementLoopAddLocation(NPC, 194.62, -48.03, 483.67, 2, 0)
+ MovementLoopAddLocation(NPC, 194.15, -48.04, 455.38, 2, 0)
+ MovementLoopAddLocation(NPC, 181.07, -47.63, 440.23, 2, 0)
+ MovementLoopAddLocation(NPC, 171.37, -46.5, 435.33, 2, 0)
+ MovementLoopAddLocation(NPC, 146.95, -43.45, 433.92, 2, 0)
+ MovementLoopAddLocation(NPC, 129.66, -42.68, 434, 2, 0)
+ MovementLoopAddLocation(NPC, 119.72, -43.55, 438.55, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierDunar2.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierDunar2.lua
new file mode 100644
index 000000000..ee11bc533
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierDunar2.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierDunar2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.21 02:01:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 111.31, -45.4, 450.07, 2, 0)
+ MovementLoopAddLocation(NPC, 81.76, -47.81, 495.65, 2, 0)
+ MovementLoopAddLocation(NPC, 72.24, -47.86, 521.09, 2, 0)
+ MovementLoopAddLocation(NPC, 78.77, -48.04, 544.38, 2, 0)
+ MovementLoopAddLocation(NPC, 94.71, -48.04, 558.21, 2, 0)
+ MovementLoopAddLocation(NPC, 111.58, -47.98, 560.72, 2, 0)
+ MovementLoopAddLocation(NPC, 137.03, -47.7, 558.12, 2, 0)
+ MovementLoopAddLocation(NPC, 153.87, -47.45, 552.18, 2, 0)
+ MovementLoopAddLocation(NPC, 164.19, -46.76, 547.51, 2, 0)
+ MovementLoopAddLocation(NPC, 179.35, -46.41, 532.42, 2, 0)
+ MovementLoopAddLocation(NPC, 191.44, -47.68, 510.36, 2, 0)
+ MovementLoopAddLocation(NPC, 194.62, -48.03, 483.67, 2, 0)
+ MovementLoopAddLocation(NPC, 194.15, -48.04, 455.38, 2, 0)
+ MovementLoopAddLocation(NPC, 181.07, -47.63, 440.23, 2, 0)
+ MovementLoopAddLocation(NPC, 171.37, -46.5, 435.33, 2, 0)
+ MovementLoopAddLocation(NPC, 146.95, -43.45, 433.92, 2, 0)
+ MovementLoopAddLocation(NPC, 129.66, -42.68, 434, 2, 0)
+ MovementLoopAddLocation(NPC, 119.72, -43.55, 438.55, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierGaer1.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierGaer1.lua
new file mode 100644
index 000000000..a7350c260
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierGaer1.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierGaer1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.19 03:01:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 8500, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -853.31, -47.85, 665.66, 2, 0)
+ MovementLoopAddLocation(NPC, -854.13, -47.25, 631.48, 2, 0)
+ MovementLoopAddLocation(NPC, -883.2, -48.02, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -922.78, -48.04, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -950.03, -48.04, 614.71, 2, 0)
+ MovementLoopAddLocation(NPC, -981.42, -48.04, 601.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1072.99, -48.04, 621.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1097.7, -48.04, 617.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1124.87, -48.04, 621.24, 2, 0)
+ MovementLoopAddLocation(NPC, -1148.21, -48.04, 632.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1195.37, -47.91, 626.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1201.45, -47.47, 620.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1199.98, -47.13, 611.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1168.19, -47.37, 589.7, 2, 0)
+ MovementLoopAddLocation(NPC, -1099.29, -47.22, 551.58, 2, 0)
+ MovementLoopAddLocation(NPC, -1074, -47.58, 552.66, 2, 0)
+ MovementLoopAddLocation(NPC, -1051.47, -47.66, 559.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1015.81, -47.84, 575.63, 2, 0)
+ MovementLoopAddLocation(NPC, -998.11, -47.83, 576.63, 2, 0)
+ MovementLoopAddLocation(NPC, -909.95, -48.02, 555.98, 2, 0)
+ MovementLoopAddLocation(NPC, -847.01, -48.04, 540.67, 2, 0)
+ MovementLoopAddLocation(NPC, -803.28, -48.04, 522.18, 2, 0)
+ MovementLoopAddLocation(NPC, -735.52, -47.84, 461.03, 2, 0)
+ MovementLoopAddLocation(NPC, -685.04, -48.04, 437.92, 2, 0)
+ MovementLoopAddLocation(NPC, -654.54, -45.76, 425.58, 2, 0)
+ MovementLoopAddLocation(NPC, -605.63, -47.55, 372.49, 2, 0)
+ MovementLoopAddLocation(NPC, -577.7, -47.29, 348.63, 2, 0)
+ MovementLoopAddLocation(NPC, -549.75, -46.48, 307.69, 2, 0)
+ MovementLoopAddLocation(NPC, -514.57, -47.38, 279.68, 2, 0)
+ MovementLoopAddLocation(NPC, -472.31, -46.99, 282.11, 2, 0)
+ MovementLoopAddLocation(NPC, -423.39, -45.45, 289.7, 2, 0)
+ MovementLoopAddLocation(NPC, -377.48, -45.18, 319.77, 2, 0)
+ MovementLoopAddLocation(NPC, -352.01, -44.87, 322.8, 2, 0)
+ MovementLoopAddLocation(NPC, -324.04, -44.41, 305.68, 2, 0)
+ MovementLoopAddLocation(NPC, -311.39, -43.84, 298.71, 2, 0)
+ MovementLoopAddLocation(NPC, -299.78, -46.29, 287.78, 2, 0)
+ MovementLoopAddLocation(NPC, -263.31, -46.08, 210.04, 2, 0)
+ MovementLoopAddLocation(NPC, -253.1, -46.25, 199.62, 2, 0)
+ MovementLoopAddLocation(NPC, -240.26, -47.37, 197.59, 2, 0)
+ MovementLoopAddLocation(NPC, -193.7, -48.04, 209.45, 2, 0)
+ MovementLoopAddLocation(NPC, -181.94, -47.48, 224.61, 2, 0)
+ MovementLoopAddLocation(NPC, -178.35, -47.41, 243.59, 2, 0)
+ MovementLoopAddLocation(NPC, -183.73, -47.64, 268.36, 2, 0)
+ MovementLoopAddLocation(NPC, -181.18, -45.97, 299.93, 2, 0)
+ MovementLoopAddLocation(NPC, -184.05, -46.94, 332.56, 2, 0)
+ MovementLoopAddLocation(NPC, -189.4, -48.1, 382.65, 2, 0)
+ MovementLoopAddLocation(NPC, -196.88, -47.91, 394.92, 2, 0)
+ MovementLoopAddLocation(NPC, -211.1, -47.23, 399.72, 2, 0)
+ MovementLoopAddLocation(NPC, -234.53, -46.64, 397.2, 2, 0)
+ MovementLoopAddLocation(NPC, -240.24, -46.3, 398.41, 2, 0)
+ MovementLoopAddLocation(NPC, -262.26, -46.93, 418.43, 2, 0)
+ MovementLoopAddLocation(NPC, -257.77, -46.93, 474.66, 2, 0)
+ MovementLoopAddLocation(NPC, -261.59, -45.66, 522.59, 2, 0)
+ MovementLoopAddLocation(NPC, -290.99, -44.69, 564.43, 2, 0)
+ MovementLoopAddLocation(NPC, -330.21, -46.98, 583.85, 2, 0)
+ MovementLoopAddLocation(NPC, -369.31, -47.88, 588.66, 2, 0)
+ MovementLoopAddLocation(NPC, -408.62, -45.09, 591.41, 2, 0)
+ MovementLoopAddLocation(NPC, -428.42, -45.52, 600.49, 2, 0)
+ MovementLoopAddLocation(NPC, -459.35, -47.9, 627.84, 2, 0)
+ MovementLoopAddLocation(NPC, -542.09, -46.13, 626.25, 2, 0)
+ MovementLoopAddLocation(NPC, -600.73, -48.06, 623.84, 2, 0)
+ MovementLoopAddLocation(NPC, -685.76, -47.58, 614.7, 2, 0)
+ MovementLoopAddLocation(NPC, -768.94, -48.04, 618.47, 2, 0)
+ MovementLoopAddLocation(NPC, -820.7, -47.98, 612.81, 2, 0)
+ MovementLoopAddLocation(NPC, -842.97, -47.77, 617.33, 2, 0)
+ MovementLoopAddLocation(NPC, -854.26, -47.21, 637.21, 2, 0)
+ MovementLoopAddLocation(NPC, -854.92, -47.43, 650.55, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierGaer2.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierGaer2.lua
new file mode 100644
index 000000000..f827ccbac
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierGaer2.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierGaer2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.19 03:01:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 7000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -853.31, -47.85, 665.66, 2, 0)
+ MovementLoopAddLocation(NPC, -854.13, -47.25, 631.48, 2, 0)
+ MovementLoopAddLocation(NPC, -883.2, -48.02, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -922.78, -48.04, 622.32, 2, 0)
+ MovementLoopAddLocation(NPC, -950.03, -48.04, 614.71, 2, 0)
+ MovementLoopAddLocation(NPC, -981.42, -48.04, 601.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1072.99, -48.04, 621.02, 2, 0)
+ MovementLoopAddLocation(NPC, -1097.7, -48.04, 617.37, 2, 0)
+ MovementLoopAddLocation(NPC, -1124.87, -48.04, 621.24, 2, 0)
+ MovementLoopAddLocation(NPC, -1148.21, -48.04, 632.06, 2, 0)
+ MovementLoopAddLocation(NPC, -1195.37, -47.91, 626.67, 2, 0)
+ MovementLoopAddLocation(NPC, -1201.45, -47.47, 620.68, 2, 0)
+ MovementLoopAddLocation(NPC, -1199.98, -47.13, 611.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1168.19, -47.37, 589.7, 2, 0)
+ MovementLoopAddLocation(NPC, -1099.29, -47.22, 551.58, 2, 0)
+ MovementLoopAddLocation(NPC, -1074, -47.58, 552.66, 2, 0)
+ MovementLoopAddLocation(NPC, -1051.47, -47.66, 559.23, 2, 0)
+ MovementLoopAddLocation(NPC, -1015.81, -47.84, 575.63, 2, 0)
+ MovementLoopAddLocation(NPC, -998.11, -47.83, 576.63, 2, 0)
+ MovementLoopAddLocation(NPC, -909.95, -48.02, 555.98, 2, 0)
+ MovementLoopAddLocation(NPC, -847.01, -48.04, 540.67, 2, 0)
+ MovementLoopAddLocation(NPC, -803.28, -48.04, 522.18, 2, 0)
+ MovementLoopAddLocation(NPC, -735.52, -47.84, 461.03, 2, 0)
+ MovementLoopAddLocation(NPC, -685.04, -48.04, 437.92, 2, 0)
+ MovementLoopAddLocation(NPC, -654.54, -45.76, 425.58, 2, 0)
+ MovementLoopAddLocation(NPC, -605.63, -47.55, 372.49, 2, 0)
+ MovementLoopAddLocation(NPC, -577.7, -47.29, 348.63, 2, 0)
+ MovementLoopAddLocation(NPC, -549.75, -46.48, 307.69, 2, 0)
+ MovementLoopAddLocation(NPC, -514.57, -47.38, 279.68, 2, 0)
+ MovementLoopAddLocation(NPC, -472.31, -46.99, 282.11, 2, 0)
+ MovementLoopAddLocation(NPC, -423.39, -45.45, 289.7, 2, 0)
+ MovementLoopAddLocation(NPC, -377.48, -45.18, 319.77, 2, 0)
+ MovementLoopAddLocation(NPC, -352.01, -44.87, 322.8, 2, 0)
+ MovementLoopAddLocation(NPC, -324.04, -44.41, 305.68, 2, 0)
+ MovementLoopAddLocation(NPC, -311.39, -43.84, 298.71, 2, 0)
+ MovementLoopAddLocation(NPC, -299.78, -46.29, 287.78, 2, 0)
+ MovementLoopAddLocation(NPC, -263.31, -46.08, 210.04, 2, 0)
+ MovementLoopAddLocation(NPC, -253.1, -46.25, 199.62, 2, 0)
+ MovementLoopAddLocation(NPC, -240.26, -47.37, 197.59, 2, 0)
+ MovementLoopAddLocation(NPC, -193.7, -48.04, 209.45, 2, 0)
+ MovementLoopAddLocation(NPC, -181.94, -47.48, 224.61, 2, 0)
+ MovementLoopAddLocation(NPC, -178.35, -47.41, 243.59, 2, 0)
+ MovementLoopAddLocation(NPC, -183.73, -47.64, 268.36, 2, 0)
+ MovementLoopAddLocation(NPC, -181.18, -45.97, 299.93, 2, 0)
+ MovementLoopAddLocation(NPC, -184.05, -46.94, 332.56, 2, 0)
+ MovementLoopAddLocation(NPC, -189.4, -48.1, 382.65, 2, 0)
+ MovementLoopAddLocation(NPC, -196.88, -47.91, 394.92, 2, 0)
+ MovementLoopAddLocation(NPC, -211.1, -47.23, 399.72, 2, 0)
+ MovementLoopAddLocation(NPC, -234.53, -46.64, 397.2, 2, 0)
+ MovementLoopAddLocation(NPC, -240.24, -46.3, 398.41, 2, 0)
+ MovementLoopAddLocation(NPC, -262.26, -46.93, 418.43, 2, 0)
+ MovementLoopAddLocation(NPC, -257.77, -46.93, 474.66, 2, 0)
+ MovementLoopAddLocation(NPC, -261.59, -45.66, 522.59, 2, 0)
+ MovementLoopAddLocation(NPC, -290.99, -44.69, 564.43, 2, 0)
+ MovementLoopAddLocation(NPC, -330.21, -46.98, 583.85, 2, 0)
+ MovementLoopAddLocation(NPC, -369.31, -47.88, 588.66, 2, 0)
+ MovementLoopAddLocation(NPC, -408.62, -45.09, 591.41, 2, 0)
+ MovementLoopAddLocation(NPC, -428.42, -45.52, 600.49, 2, 0)
+ MovementLoopAddLocation(NPC, -459.35, -47.9, 627.84, 2, 0)
+ MovementLoopAddLocation(NPC, -542.09, -46.13, 626.25, 2, 0)
+ MovementLoopAddLocation(NPC, -600.73, -48.06, 623.84, 2, 0)
+ MovementLoopAddLocation(NPC, -685.76, -47.58, 614.7, 2, 0)
+ MovementLoopAddLocation(NPC, -768.94, -48.04, 618.47, 2, 0)
+ MovementLoopAddLocation(NPC, -820.7, -47.98, 612.81, 2, 0)
+ MovementLoopAddLocation(NPC, -842.97, -47.77, 617.33, 2, 0)
+ MovementLoopAddLocation(NPC, -854.26, -47.21, 637.21, 2, 0)
+ MovementLoopAddLocation(NPC, -854.92, -47.43, 650.55, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0)
+ MovementLoopAddLocation(NPC, -852.89, -47.65, 671.6, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierGrik1.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierGrik1.lua
new file mode 100644
index 000000000..e7b255197
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierGrik1.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierGrik1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 06:01:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 7000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -573.57, -48.04, 547.36, 2, 0)
+ MovementLoopAddLocation(NPC, -577, -48.04, 531.3, 2, 0)
+ MovementLoopAddLocation(NPC, -568.51, -48.04, 516.51, 2, 0)
+ MovementLoopAddLocation(NPC, -552.95, -47.6, 510.75, 2, 0)
+ MovementLoopAddLocation(NPC, -538.6, -45.15, 507.25, 2, 0)
+ MovementLoopAddLocation(NPC, -518.92, -47.09, 515.89, 2, 0)
+ MovementLoopAddLocation(NPC, -508.98, -47.97, 530.34, 2, 0)
+ MovementLoopAddLocation(NPC, -503.32, -48.04, 553.19, 2, 0)
+ MovementLoopAddLocation(NPC, -507.41, -48.04, 579.35, 2, 0)
+ MovementLoopAddLocation(NPC, -525.15, -47.82, 598.88, 2, 0)
+ MovementLoopAddLocation(NPC, -545.14, -47.43, 605.57, 2, 0)
+ MovementLoopAddLocation(NPC, -555.79, -47.86, 605.41, 2, 0)
+ MovementLoopAddLocation(NPC, -561.06, -48.56, 595.49, 2, 0)
+ MovementLoopAddLocation(NPC, -566.65, -48.3, 574.07, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierGrik2.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierGrik2.lua
new file mode 100644
index 000000000..743d888c6
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierGrik2.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierGrik2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 06:01:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -573.57, -48.04, 547.36, 2, 0)
+ MovementLoopAddLocation(NPC, -577, -48.04, 531.3, 2, 0)
+ MovementLoopAddLocation(NPC, -568.51, -48.04, 516.51, 2, 0)
+ MovementLoopAddLocation(NPC, -552.95, -47.6, 510.75, 2, 0)
+ MovementLoopAddLocation(NPC, -538.6, -45.15, 507.25, 2, 0)
+ MovementLoopAddLocation(NPC, -518.92, -47.09, 515.89, 2, 0)
+ MovementLoopAddLocation(NPC, -508.98, -47.97, 530.34, 2, 0)
+ MovementLoopAddLocation(NPC, -503.32, -48.04, 553.19, 2, 0)
+ MovementLoopAddLocation(NPC, -507.41, -48.04, 579.35, 2, 0)
+ MovementLoopAddLocation(NPC, -525.15, -47.82, 598.88, 2, 0)
+ MovementLoopAddLocation(NPC, -545.14, -47.43, 605.57, 2, 0)
+ MovementLoopAddLocation(NPC, -555.79, -47.86, 605.41, 2, 0)
+ MovementLoopAddLocation(NPC, -561.06, -48.56, 595.49, 2, 0)
+ MovementLoopAddLocation(NPC, -566.65, -48.3, 574.07, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierOgof1.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierOgof1.lua
new file mode 100644
index 000000000..7c0d085dc
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierOgof1.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierOgof1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.22 11:01:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 8000, "waypoints")
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -679.52, -48.04, 449.72, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -675.41, -48.04, 432.53, 2, 0)
+ MovementLoopAddLocation(NPC, -665.04, -47.89, 425.46, 2, 0)
+ MovementLoopAddLocation(NPC, -655.93, -45.31, 422.47, 2, 0)
+ MovementLoopAddLocation(NPC, -643.74, -46.09, 420.74, 2, 0)
+ MovementLoopAddLocation(NPC, -638.71, -46.61, 423.15, 2, 0)
+ MovementLoopAddLocation(NPC, -630.31, -47.98, 431.82, 2, 0)
+ MovementLoopAddLocation(NPC, -626.72, -48.04, 445.24, 2, 0)
+ MovementLoopAddLocation(NPC, -627.69, -48.04, 460.73, 2, 0)
+ MovementLoopAddLocation(NPC, -631.15, -47.99, 469.53, 2, 0)
+ MovementLoopAddLocation(NPC, -631, -47.29, 485.93, 2, 0)
+ MovementLoopAddLocation(NPC, -627.93, -47.1, 501.28, 2, 0)
+ MovementLoopAddLocation(NPC, -631.59, -46.99, 512.06, 2, 0)
+ MovementLoopAddLocation(NPC, -644.25, -45.78, 517.3, 2, 0)
+ MovementLoopAddLocation(NPC, -656.83, -46, 520.49, 2, 0)
+ MovementLoopAddLocation(NPC, -671.01, -46.75, 521.89, 2, 0)
+ MovementLoopAddLocation(NPC, -682.8, -45.98, 518.71, 2, 0)
+ MovementLoopAddLocation(NPC, -694.56, -46.57, 509.81, 2, 0)
+ MovementLoopAddLocation(NPC, -696.94, -47.24, 494.23, 2, 0)
+ MovementLoopAddLocation(NPC, -686.37, -48.04, 462.16, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskullsoldierOgof2.lua b/server/SpawnScripts/Commonlands/aBloodskullsoldierOgof2.lua
new file mode 100644
index 000000000..dca97d820
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullsoldierOgof2.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullsoldierOgof2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.22 11:01:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcChainCommon(NPC)
+ AddTimer(NPC, 9000, "waypoints")
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -679.52, -48.04, 449.72, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -681.9, -48.04, 444.6, 2, 0)
+ MovementLoopAddLocation(NPC, -675.41, -48.04, 432.53, 2, 0)
+ MovementLoopAddLocation(NPC, -665.04, -47.89, 425.46, 2, 0)
+ MovementLoopAddLocation(NPC, -655.93, -45.31, 422.47, 2, 0)
+ MovementLoopAddLocation(NPC, -643.74, -46.09, 420.74, 2, 0)
+ MovementLoopAddLocation(NPC, -638.71, -46.61, 423.15, 2, 0)
+ MovementLoopAddLocation(NPC, -630.31, -47.98, 431.82, 2, 0)
+ MovementLoopAddLocation(NPC, -626.72, -48.04, 445.24, 2, 0)
+ MovementLoopAddLocation(NPC, -627.69, -48.04, 460.73, 2, 0)
+ MovementLoopAddLocation(NPC, -631.15, -47.99, 469.53, 2, 0)
+ MovementLoopAddLocation(NPC, -631, -47.29, 485.93, 2, 0)
+ MovementLoopAddLocation(NPC, -627.93, -47.1, 501.28, 2, 0)
+ MovementLoopAddLocation(NPC, -631.59, -46.99, 512.06, 2, 0)
+ MovementLoopAddLocation(NPC, -644.25, -45.78, 517.3, 2, 0)
+ MovementLoopAddLocation(NPC, -656.83, -46, 520.49, 2, 0)
+ MovementLoopAddLocation(NPC, -671.01, -46.75, 521.89, 2, 0)
+ MovementLoopAddLocation(NPC, -682.8, -45.98, 518.71, 2, 0)
+ MovementLoopAddLocation(NPC, -694.56, -46.57, 509.81, 2, 0)
+ MovementLoopAddLocation(NPC, -696.94, -47.24, 494.23, 2, 0)
+ MovementLoopAddLocation(NPC, -686.37, -48.04, 462.16, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskulltamer.lua b/server/SpawnScripts/Commonlands/aBloodskulltamer.lua
new file mode 100644
index 000000000..84152be88
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskulltamer.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskulltamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 05:01:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ RandomMovement(NPC, Spawn, 10, -10, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aBloodskulltowerguard.lua b/server/SpawnScripts/Commonlands/aBloodskulltowerguard.lua
index dad2e6cbd..6233e797d 100755
--- a/server/SpawnScripts/Commonlands/aBloodskulltowerguard.lua
+++ b/server/SpawnScripts/Commonlands/aBloodskulltowerguard.lua
@@ -7,11 +7,13 @@
--]]
require("SpawnScripts/Generic/BloodskullVoiceOvers")
-
+require "SpawnScripts/Generic/NPCModule"
local BloodskullIntentions = 403
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aBloodskullwarrior.lua b/server/SpawnScripts/Commonlands/aBloodskullwarrior.lua
index 669c1b4c7..22ec2e24e 100755
--- a/server/SpawnScripts/Commonlands/aBloodskullwarrior.lua
+++ b/server/SpawnScripts/Commonlands/aBloodskullwarrior.lua
@@ -1,24 +1,32 @@
--[[
Script Name : SpawnScripts/Commonlands/aBloodskullwarrior.lua
- Script Author : premierio015, gloat
+ Script Author : premierio015, gloat, LordPazuzu
Script Date : 2019.01.31 01:01:40
Script Purpose :
:
--]]
local FinishingtheNegotiations = 425
+require "SpawnScripts/Generic/NPCModule"
-
-
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 1500, "movement")
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ else
+ IdleAggressive(NPC)
+ end
+end
function death(NPC, Spawn)
if HasQuest(Spawn, FinishingtheNegotiations) then
diff --git a/server/SpawnScripts/Commonlands/aBloodskullwarriorHeroic.lua b/server/SpawnScripts/Commonlands/aBloodskullwarriorHeroic.lua
new file mode 100644
index 000000000..86812949f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aBloodskullwarriorHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aBloodskullwarriorHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.18 02:01:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishassassin.lua b/server/SpawnScripts/Commonlands/aDervishassassin.lua
new file mode 100644
index 000000000..351a5c10e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishassassin.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishassassin.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishcraftsman.lua b/server/SpawnScripts/Commonlands/aDervishcraftsman.lua
index 9b3538ce0..8a99b8a34 100755
--- a/server/SpawnScripts/Commonlands/aDervishcraftsman.lua
+++ b/server/SpawnScripts/Commonlands/aDervishcraftsman.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 10, "InRange")
end
diff --git a/server/SpawnScripts/Commonlands/aDervishcutthroat.lua b/server/SpawnScripts/Commonlands/aDervishcutthroat.lua
new file mode 100644
index 000000000..8a0649e13
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishcutthroat.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishcutthroat.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseRace(NPC)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseRace(NPC)
+ local SetRace = MakeRandomInt(1,6)
+
+ if SetRace == 1 or SetRace == 2 or SetRace == 3 then
+ SpawnSet(NPC, "class", 38)
+ SetSpellList(NPC, 458)
+ human(NPC)
+ DervishLeather(NPC)
+ IdleSneaky(NPC)
+
+ elseif SetRace == 4 then
+ SpawnSet(NPC, "class", 2)
+ SetSpellList(NPC, 451)
+ SpawnSet(NPC,"size", 36)
+ barbarian(NPC)
+ DervishChain(NPC)
+ IdleAggressive(NPC)
+
+ elseif SetRace == 5 then
+ SpawnSet(NPC, "gender", 2)
+ SpawnSet(NPC, "class", 18)
+ SpawnSet(NPC, "size", 37)
+ SetSpellList(NPC, 325)
+ ogre(NPC)
+ DervishLeather(NPC)
+ IdlePriest(NPC)
+
+ elseif SetRace == 6 then
+ SpawnSet(NPC, "class", 22)
+ SetSpellList(NPC, 324)
+ erudite(NPC)
+ DervishRobe(NPC)
+ IdleAlert(NPC)
+ end
+end
+
+
+
+
diff --git a/server/SpawnScripts/Commonlands/aDervishgobetween.lua b/server/SpawnScripts/Commonlands/aDervishgobetween.lua
new file mode 100644
index 000000000..a257c7924
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishgobetween.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishgobetween.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ Beggar(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishgobetweenPath1.lua b/server/SpawnScripts/Commonlands/aDervishgobetweenPath1.lua
new file mode 100644
index 000000000..399c86a19
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishgobetweenPath1.lua
@@ -0,0 +1,98 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishgobetweenPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.08 08:03:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ Beggar(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 701.99, -51.69, 281.21, 6, 0)
+ MovementLoopAddLocation(NPC, 720.94, -53.69, 299.59, 6, 0)
+ MovementLoopAddLocation(NPC, 742.81, -54.09, 311.29, 6, 0)
+ MovementLoopAddLocation(NPC, 785.66, -53.76, 319.72, 6, 0)
+ MovementLoopAddLocation(NPC, 822.14, -54.21, 339.8, 6, 0)
+ MovementLoopAddLocation(NPC, 911.11, -49.66, 390.5, 6, 0)
+ MovementLoopAddLocation(NPC, 951.53, -44.74, 413.54, 6, 0)
+ MovementLoopAddLocation(NPC, 997.1, -42.37, 439.51, 6, 0)
+ MovementLoopAddLocation(NPC, 1042.63, -43.21, 465.46, 6, 0)
+ MovementLoopAddLocation(NPC, 1079.24, -42.45, 467.48, 6, 0)
+ MovementLoopAddLocation(NPC, 1113.57, -42.19, 466.33, 6, 0)
+ MovementLoopAddLocation(NPC, 1138.65, -39.97, 470.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1158.1, -39.18, 465.2, 6, 0)
+ MovementLoopAddLocation(NPC, 1183.27, -35.73, 463.94, 6, 0)
+ MovementLoopAddLocation(NPC, 1223.62, -24.89, 444.88, 6, 0)
+ MovementLoopAddLocation(NPC, 1238.57, -21.29, 436.47, 6, 0)
+ MovementLoopAddLocation(NPC, 1262.02, -17.28, 427.42, 6, 0)
+ MovementLoopAddLocation(NPC, 1285.44, -22.34, 413.78, 6, 0)
+ MovementLoopAddLocation(NPC, 1304.62, -25.88, 402.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1316.33, -30.56, 388.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.07, -35.57, 356.97, 6, 0)
+ MovementLoopAddLocation(NPC, 1329.57, -37.01, 331.52, 6, 0)
+ MovementLoopAddLocation(NPC, 1345.98, -40.1, 270.87, 6, 0)
+ MovementLoopAddLocation(NPC, 1354.87, -39.47, 245.43, 6, 0)
+ MovementLoopAddLocation(NPC, 1353.44, -39.28, 214.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1356.04, -36.35, 181.61, 6, 0)
+ MovementLoopAddLocation(NPC, 1370.81, -33.58, 123.79, 6, 0)
+ MovementLoopAddLocation(NPC, 1372.39, -32.38, 86.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1357.3, -33.07, 54.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.04, -31, 19.06, 6, 0)
+ MovementLoopAddLocation(NPC, 1299.32, -29.84, -19.68, 6, 0)
+ MovementLoopAddLocation(NPC, 1283.59, -29.69, -47.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1276.81, -32.55, -79.91, 6, 0)
+ MovementLoopAddLocation(NPC, 1257.53, -35.94, -117.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1240.35, -32.27, -154.7, 6, 0)
+ MovementLoopAddLocation(NPC, 1227.06, -33.37, -188.57, 6, 0)
+ MovementLoopAddLocation(NPC, 1227.06, -33.37, -188.57, 6, 0)
+ MovementLoopAddLocation(NPC, 1240.35, -32.27, -154.7, 6, 0)
+ MovementLoopAddLocation(NPC, 1257.53, -35.94, -117.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1276.81, -32.55, -79.91, 6, 0)
+ MovementLoopAddLocation(NPC, 1283.59, -29.69, -47.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1299.32, -29.84, -19.68, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.04, -31, 19.06, 6, 0)
+ MovementLoopAddLocation(NPC, 1357.3, -33.07, 54.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1372.39, -32.38, 86.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1370.81, -33.58, 123.79, 6, 0)
+ MovementLoopAddLocation(NPC, 1356.04, -36.35, 181.61, 6, 0)
+ MovementLoopAddLocation(NPC, 1353.44, -39.28, 214.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1354.87, -39.47, 245.43, 6, 0)
+ MovementLoopAddLocation(NPC, 1345.98, -40.1, 270.87, 6, 0)
+ MovementLoopAddLocation(NPC, 1329.57, -37.01, 331.52, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.07, -35.57, 356.97, 6, 0)
+ MovementLoopAddLocation(NPC, 1316.33, -30.56, 388.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1304.62, -25.88, 402.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1285.44, -22.34, 413.78, 6, 0)
+ MovementLoopAddLocation(NPC, 1262.02, -17.28, 427.42, 6, 0)
+ MovementLoopAddLocation(NPC, 1238.57, -21.29, 436.47, 6, 0)
+ MovementLoopAddLocation(NPC, 1223.62, -24.89, 444.88, 6, 0)
+ MovementLoopAddLocation(NPC, 1183.27, -35.73, 463.94, 6, 0)
+ MovementLoopAddLocation(NPC, 1158.1, -39.18, 465.2, 6, 0)
+ MovementLoopAddLocation(NPC, 1138.65, -39.97, 470.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1113.57, -42.19, 466.33, 6, 0)
+ MovementLoopAddLocation(NPC, 1079.24, -42.45, 467.48, 6, 0)
+ MovementLoopAddLocation(NPC, 1042.63, -43.21, 465.46, 6, 0)
+ MovementLoopAddLocation(NPC, 997.1, -42.37, 439.51, 6, 0)
+ MovementLoopAddLocation(NPC, 951.53, -44.74, 413.54, 6, 0)
+ MovementLoopAddLocation(NPC, 911.11, -49.66, 390.5, 6, 0)
+ MovementLoopAddLocation(NPC, 822.14, -54.21, 339.8, 6, 0)
+ MovementLoopAddLocation(NPC, 785.66, -53.76, 319.72, 6, 0)
+ MovementLoopAddLocation(NPC, 742.81, -54.09, 311.29, 6, 0)
+ MovementLoopAddLocation(NPC, 720.94, -53.69, 299.59, 6, 0)
+ MovementLoopAddLocation(NPC, 701.99, -51.69, 281.21, 6, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishgobetweenPath2.lua b/server/SpawnScripts/Commonlands/aDervishgobetweenPath2.lua
new file mode 100644
index 000000000..65d504a37
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishgobetweenPath2.lua
@@ -0,0 +1,99 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishgobetweenPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.08 08:03:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ Beggar(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1227.06, -33.37, -188.57, 6, 0)
+ MovementLoopAddLocation(NPC, 1240.35, -32.27, -154.7, 6, 0)
+ MovementLoopAddLocation(NPC, 1257.53, -35.94, -117.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1276.81, -32.55, -79.91, 6, 0)
+ MovementLoopAddLocation(NPC, 1283.59, -29.69, -47.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1299.32, -29.84, -19.68, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.04, -31, 19.06, 6, 0)
+ MovementLoopAddLocation(NPC, 1357.3, -33.07, 54.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1372.39, -32.38, 86.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1370.81, -33.58, 123.79, 6, 0)
+ MovementLoopAddLocation(NPC, 1356.04, -36.35, 181.61, 6, 0)
+ MovementLoopAddLocation(NPC, 1353.44, -39.28, 214.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1354.87, -39.47, 245.43, 6, 0)
+ MovementLoopAddLocation(NPC, 1345.98, -40.1, 270.87, 6, 0)
+ MovementLoopAddLocation(NPC, 1329.57, -37.01, 331.52, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.07, -35.57, 356.97, 6, 0)
+ MovementLoopAddLocation(NPC, 1316.33, -30.56, 388.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1304.62, -25.88, 402.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1285.44, -22.34, 413.78, 6, 0)
+ MovementLoopAddLocation(NPC, 1262.02, -17.28, 427.42, 6, 0)
+ MovementLoopAddLocation(NPC, 1238.57, -21.29, 436.47, 6, 0)
+ MovementLoopAddLocation(NPC, 1223.62, -24.89, 444.88, 6, 0)
+ MovementLoopAddLocation(NPC, 1183.27, -35.73, 463.94, 6, 0)
+ MovementLoopAddLocation(NPC, 1158.1, -39.18, 465.2, 6, 0)
+ MovementLoopAddLocation(NPC, 1138.65, -39.97, 470.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1113.57, -42.19, 466.33, 6, 0)
+ MovementLoopAddLocation(NPC, 1079.24, -42.45, 467.48, 6, 0)
+ MovementLoopAddLocation(NPC, 1042.63, -43.21, 465.46, 6, 0)
+ MovementLoopAddLocation(NPC, 997.1, -42.37, 439.51, 6, 0)
+ MovementLoopAddLocation(NPC, 951.53, -44.74, 413.54, 6, 0)
+ MovementLoopAddLocation(NPC, 911.11, -49.66, 390.5, 6, 0)
+ MovementLoopAddLocation(NPC, 822.14, -54.21, 339.8, 6, 0)
+ MovementLoopAddLocation(NPC, 785.66, -53.76, 319.72, 6, 0)
+ MovementLoopAddLocation(NPC, 742.81, -54.09, 311.29, 6, 0)
+ MovementLoopAddLocation(NPC, 720.94, -53.69, 299.59, 6, 0)
+ MovementLoopAddLocation(NPC, 701.99, -51.69, 281.21, 6, 0)
+ MovementLoopAddLocation(NPC, 701.99, -51.69, 281.21, 6, 0)
+ MovementLoopAddLocation(NPC, 720.94, -53.69, 299.59, 6, 0)
+ MovementLoopAddLocation(NPC, 742.81, -54.09, 311.29, 6, 0)
+ MovementLoopAddLocation(NPC, 785.66, -53.76, 319.72, 6, 0)
+ MovementLoopAddLocation(NPC, 822.14, -54.21, 339.8, 6, 0)
+ MovementLoopAddLocation(NPC, 911.11, -49.66, 390.5, 6, 0)
+ MovementLoopAddLocation(NPC, 951.53, -44.74, 413.54, 6, 0)
+ MovementLoopAddLocation(NPC, 997.1, -42.37, 439.51, 6, 0)
+ MovementLoopAddLocation(NPC, 1042.63, -43.21, 465.46, 6, 0)
+ MovementLoopAddLocation(NPC, 1079.24, -42.45, 467.48, 6, 0)
+ MovementLoopAddLocation(NPC, 1113.57, -42.19, 466.33, 6, 0)
+ MovementLoopAddLocation(NPC, 1138.65, -39.97, 470.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1158.1, -39.18, 465.2, 6, 0)
+ MovementLoopAddLocation(NPC, 1183.27, -35.73, 463.94, 6, 0)
+ MovementLoopAddLocation(NPC, 1223.62, -24.89, 444.88, 6, 0)
+ MovementLoopAddLocation(NPC, 1238.57, -21.29, 436.47, 6, 0)
+ MovementLoopAddLocation(NPC, 1262.02, -17.28, 427.42, 6, 0)
+ MovementLoopAddLocation(NPC, 1285.44, -22.34, 413.78, 6, 0)
+ MovementLoopAddLocation(NPC, 1304.62, -25.88, 402.67, 6, 0)
+ MovementLoopAddLocation(NPC, 1316.33, -30.56, 388.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.07, -35.57, 356.97, 6, 0)
+ MovementLoopAddLocation(NPC, 1329.57, -37.01, 331.52, 6, 0)
+ MovementLoopAddLocation(NPC, 1345.98, -40.1, 270.87, 6, 0)
+ MovementLoopAddLocation(NPC, 1354.87, -39.47, 245.43, 6, 0)
+ MovementLoopAddLocation(NPC, 1353.44, -39.28, 214.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1356.04, -36.35, 181.61, 6, 0)
+ MovementLoopAddLocation(NPC, 1370.81, -33.58, 123.79, 6, 0)
+ MovementLoopAddLocation(NPC, 1372.39, -32.38, 86.56, 6, 0)
+ MovementLoopAddLocation(NPC, 1357.3, -33.07, 54.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1330.04, -31, 19.06, 6, 0)
+ MovementLoopAddLocation(NPC, 1299.32, -29.84, -19.68, 6, 0)
+ MovementLoopAddLocation(NPC, 1283.59, -29.69, -47.49, 6, 0)
+ MovementLoopAddLocation(NPC, 1276.81, -32.55, -79.91, 6, 0)
+ MovementLoopAddLocation(NPC, 1257.53, -35.94, -117.71, 6, 0)
+ MovementLoopAddLocation(NPC, 1240.35, -32.27, -154.7, 6, 0)
+ MovementLoopAddLocation(NPC, 1227.06, -33.37, -188.57, 6, 0)
+end
diff --git a/server/SpawnScripts/Commonlands/aDervishheretic.lua b/server/SpawnScripts/Commonlands/aDervishheretic.lua
new file mode 100644
index 000000000..72cd0f6ee
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishheretic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishheretic.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.09 11:01:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishoutlander.lua b/server/SpawnScripts/Commonlands/aDervishoutlander.lua
new file mode 100644
index 000000000..6f9177014
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishoutlander.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishoutlander.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishruffian.lua b/server/SpawnScripts/Commonlands/aDervishruffian.lua
new file mode 100644
index 000000000..b3449fd0c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishruffian.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishruffian.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishthaumaturge.lua b/server/SpawnScripts/Commonlands/aDervishthaumaturge.lua
new file mode 100644
index 000000000..3e604fd33
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishthaumaturge.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishthaumaturge.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishthug.lua b/server/SpawnScripts/Commonlands/aDervishthug.lua
new file mode 100644
index 000000000..452867979
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishthug.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishthug.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ DervishThug(NPC)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishthugPath1.lua b/server/SpawnScripts/Commonlands/aDervishthugPath1.lua
new file mode 100644
index 000000000..4a9658881
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishthugPath1.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishthugPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.07 09:03:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ DervishThug(NPC)
+ IdleAggressive(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1315.52, -39.9, 309.75, 2, 0)
+ MovementLoopAddLocation(NPC, 1304.61, -38.81, 331.46, 2, 0)
+ MovementLoopAddLocation(NPC, 1285.44, -37.55, 352.9, 2, 0)
+ MovementLoopAddLocation(NPC, 1272.77, -34.04, 370.05, 2, 0)
+ MovementLoopAddLocation(NPC, 1257.84, -28.24, 390.04, 2, 0)
+ MovementLoopAddLocation(NPC, 1243.77, -25.57, 399.86, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1243.77, -25.57, 399.86, 2, 0)
+ MovementLoopAddLocation(NPC, 1255.04, -27.14, 393.77, 2, 0)
+ MovementLoopAddLocation(NPC, 1266.76, -31.26, 379.54, 2, 0)
+ MovementLoopAddLocation(NPC, 1275.19, -37.44, 355.24, 2, 0)
+ MovementLoopAddLocation(NPC, 1284.7, -40.38, 320.99, 2, 0)
+ MovementLoopAddLocation(NPC, 1316.89, -41, 263.45, 2, 0)
+ MovementLoopAddLocation(NPC, 1320.01, -41.52, 223.6, 2, 0)
+ MovementLoopAddLocation(NPC, 1316.87, -41.29, 180.22, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1316.87, -41.29, 180.22, 2, 0)
+ MovementLoopAddLocation(NPC, 1320.8, -41.52, 236.11, 2, 0)
+ MovementLoopAddLocation(NPC, 1331.83, -40.36, 269.42, 2, 0)
+ MovementLoopAddLocation(NPC, 1315.52, -39.9, 309.75, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishthugPath2.lua b/server/SpawnScripts/Commonlands/aDervishthugPath2.lua
new file mode 100644
index 000000000..b52efffa3
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishthugPath2.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishthugPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.07 09:03:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ DervishThug(NPC)
+ IdleAggressive(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1280.67, -43.02, 153.66, 2, 0)
+ MovementLoopAddLocation(NPC, 1277.96, -42.85, 142.76, 2, 0)
+ MovementLoopAddLocation(NPC, 1270.96, -40.17, 103.19, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1270.96, -40.17, 103.19, 2, 0)
+ MovementLoopAddLocation(NPC, 1271.03, -41.73, 118.61, 2, 0)
+ MovementLoopAddLocation(NPC, 1277.39, -43, 145.81, 2, 0)
+ MovementLoopAddLocation(NPC, 1274.85, -43.4, 151.77, 2, 0)
+ MovementLoopAddLocation(NPC, 1260.27, -44.7, 165.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1254.9, -44.65, 176.88, 2, 0)
+ MovementLoopAddLocation(NPC, 1250.52, -44.13, 193.31, 2, 0)
+ MovementLoopAddLocation(NPC, 1233.28, -41.93, 235.59, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1233.28, -41.93, 235.59, 2, 0)
+ MovementLoopAddLocation(NPC, 1239.49, -42.58, 221.05, 2, 0)
+ MovementLoopAddLocation(NPC, 1249.2, -44.02, 196.1, 2, 0)
+ MovementLoopAddLocation(NPC, 1256.07, -44.71, 172.87, 2, 0)
+ MovementLoopAddLocation(NPC, 1273, -43.75, 157.98, 2, 0)
+ MovementLoopAddLocation(NPC, 1283.9, -42.9, 158.73, 2, 0)
+ MovementLoopAddLocation(NPC, 1295.23, -41.95, 164.41, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1295.23, -41.95, 164.41, 2, 0)
+ MovementLoopAddLocation(NPC, 1286.03, -42.75, 160.61, 2, 0)
+ MovementLoopAddLocation(NPC, 1280.67, -43.02, 153.66, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aDervishthugPath3.lua b/server/SpawnScripts/Commonlands/aDervishthugPath3.lua
new file mode 100644
index 000000000..46ae27cb4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishthugPath3.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishthugPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.07 09:03:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ DervishThug(NPC)
+ IdleAggressive(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1358.88, -35.03, 160.58, 2, 0)
+ MovementLoopAddLocation(NPC, 1360.45, -35.25, 135.55, 2, 0)
+ MovementLoopAddLocation(NPC, 1353.37, -36.62, 112.53, 2, 0)
+ MovementLoopAddLocation(NPC, 1341.46, -36.31, 65.76, 2, 0)
+ MovementLoopAddLocation(NPC, 1330.56, -34.78, 41.97, 2, 0)
+ MovementLoopAddLocation(NPC, 1315.82, -31.18, 10.23, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1315.82, -31.18, 10.23, 2, 0)
+ MovementLoopAddLocation(NPC, 1321.88, -32.89, 26.63, 2, 0)
+ MovementLoopAddLocation(NPC, 1339.77, -37.33, 75.03, 2, 0)
+ MovementLoopAddLocation(NPC, 1335.56, -38.74, 117.57, 2, 0)
+ MovementLoopAddLocation(NPC, 1343.48, -37.9, 149.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1365.04, -34.36, 161.36, 2, 0)
+ MovementLoopAddLocation(NPC, 1387.19, -34.28, 168.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1411.39, -34.48, 174.26, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1411.39, -34.48, 174.26, 2, 0)
+ MovementLoopAddLocation(NPC, 1397.17, -34.54, 168.6, 2, 0)
+ MovementLoopAddLocation(NPC, 1384.65, -34.1, 166.81, 2, 0)
+ MovementLoopAddLocation(NPC, 1370.97, -34.29, 167.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1358.83, -35.04, 165.67, 2, 0)
+ MovementLoopAddLocation(NPC, 1322.55, -40.53, 160.8, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1322.55, -40.53, 160.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1342.82, -38.44, 167.08, 2, 0)
+ MovementLoopAddLocation(NPC, 1349.38, -37.27, 166.22, 2, 0)
+ MovementLoopAddLocation(NPC, 1358.88, -35.03, 160.59, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/aDervishzealot.lua b/server/SpawnScripts/Commonlands/aDervishzealot.lua
new file mode 100644
index 000000000..492e6e81b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aDervishzealot.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aDervishzealot.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aMilitiaGuard.lua b/server/SpawnScripts/Commonlands/aMilitiaGuard.lua
index 294b70227..8d4c5ef50 100755
--- a/server/SpawnScripts/Commonlands/aMilitiaGuard.lua
+++ b/server/SpawnScripts/Commonlands/aMilitiaGuard.lua
@@ -6,9 +6,12 @@
:
--]]
+require "SpawnScripts/Generic/NPCModule"
+
function spawn(NPC)
-SetAggroRadius(NPC, 20)
- AddTimer(NPC, 180000, "despawn", 1)
+ NPCModule(NPC, Spawn)
+ SetAggroRadius(NPC, 20)
+ AddTimer(NPC, 180000, "despawn", 1)
end
function despawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aQeynosianprotector.lua b/server/SpawnScripts/Commonlands/aQeynosianprotector.lua
new file mode 100755
index 000000000..bf968e2e6
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aQeynosianprotector.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aQeynosianprotector.lua
+ Script Author : cynnar
+ Script Date : 2023.04.10 04:04:11
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+function spawn(NPC)
+Waypoints(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Waypoints(NPC)
+ MovementLoopAddLocation(NPC, 422.18, -24.79, -896.23, 2, 1)
+ MovementLoopAddLocation(NPC, 422.18, -24.79, -896.23, 2, MakeRandomInt(15,25),"Action")
+ MovementLoopAddLocation(NPC, 429.58, -25.34, -892.64, 2, 1)
+ MovementLoopAddLocation(NPC, 429.58, -25.34, -892.64, 2, MakeRandomInt(5,15),"Action")
+ MovementLoopAddLocation(NPC, 422.18, -24.79, -896.23, 2, 1)
+ MovementLoopAddLocation(NPC, 422.18, -24.79, -896.23, 2, MakeRandomInt(15,25),"Action")
+ MovementLoopAddLocation(NPC, 420.26, -25.84, -890.36, 2, 1)
+ MovementLoopAddLocation(NPC, 420.26, -25.84, -890.36, 2, MakeRandomInt(5,15),"Action")
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "stretch", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "yawn", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "attention", 0, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aQeynosianscout.lua b/server/SpawnScripts/Commonlands/aQeynosianscout.lua
new file mode 100755
index 000000000..8afba23f1
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aQeynosianscout.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aQeynosianscout.lua
+ Script Author : cynnar
+ Script Date : 2023.04.10 04:04:21
+ Script Purpose :
+ :
+--]]
+
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(5000,11000),"Action")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if IsInCombat(NPC)== false then
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "stare", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "yawn", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0)
+ end
+ end
+AddTimer(NPC,MakeRandomInt(7000,11000),"Action")
+end
+
+function death(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_death_gm_c8e6f923.mp3", "My friend may have fallen like a rotten tree but I will not.", "", 1442503118, 3414327424, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_halfhealth_gm_6a01659b.mp3", "You will not fell me like some lumberjack!", "", 3082129005, 2882113499, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_death_gm_3b153248.mp3", "You cannot kill us all, despoiler!", "", 321437922, 3533387413, Spawn, 0)
+ end
+end
diff --git a/server/SpawnScripts/Commonlands/aShinReeavenger.lua b/server/SpawnScripts/Commonlands/aShinReeavenger.lua
index 25ac17642..27bb29ebb 100755
--- a/server/SpawnScripts/Commonlands/aShinReeavenger.lua
+++ b/server/SpawnScripts/Commonlands/aShinReeavenger.lua
@@ -5,12 +5,13 @@
Script Purpose :
:
--]]
-
+require "SpawnScripts/Generic/NPCModule"
local TheSkeletonKey = 411
local blood_stained_finger_bones = 331128
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aShinReepawn.lua b/server/SpawnScripts/Commonlands/aShinReepawn.lua
new file mode 100644
index 000000000..f31079ccc
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aShinReepawn.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aShinReepawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.30 04:01:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ababydunecobra.lua b/server/SpawnScripts/Commonlands/ababydunecobra.lua
new file mode 100644
index 000000000..5ec5130fc
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ababydunecobra.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ababydunecobra.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.17 08:01:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ababyrattler.lua b/server/SpawnScripts/Commonlands/ababyrattler.lua
new file mode 100644
index 000000000..4e029cb17
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ababyrattler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ababyrattler.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.17 08:01:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ababyviper.lua b/server/SpawnScripts/Commonlands/ababyviper.lua
new file mode 100644
index 000000000..a08256f5b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ababyviper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ababyviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 05:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abadlandsnomad.lua b/server/SpawnScripts/Commonlands/abadlandsnomad.lua
new file mode 100644
index 000000000..f22802213
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abadlandsnomad.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abadlandsnomad.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.14 09:02:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ Beggar(NPC)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abadlandstradesman.lua b/server/SpawnScripts/Commonlands/abadlandstradesman.lua
new file mode 100644
index 000000000..18743c4dc
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abadlandstradesman.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abadlandstradesman.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.14 10:02:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ TradesmanLow(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abadlandsviper.lua b/server/SpawnScripts/Commonlands/abadlandsviper.lua
new file mode 100644
index 000000000..2a7f9c3af
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abadlandsviper.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abadlandsviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 05:01:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abandedarmadillo.lua b/server/SpawnScripts/Commonlands/abandedarmadillo.lua
new file mode 100644
index 000000000..a6e9b5fe4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abandedarmadillo.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abandedarmadillo.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 05:01:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abaysifter.lua b/server/SpawnScripts/Commonlands/abaysifter.lua
new file mode 100644
index 000000000..fdb83b632
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abaysifter.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abaysifter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 05:02:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ablackwolf.lua b/server/SpawnScripts/Commonlands/ablackwolf.lua
new file mode 100644
index 000000000..bad2970f8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ablackwolf.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ablackwolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 05:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ class(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC, Spawn)
+ setclass = MakeRandomInt(1,3)
+ if setclass == 1 then
+ SpawnSet(NPC, "class", 2) --Warrior
+ elseif setclass == 2 then
+ SpawnSet(NPC, "class", 15) -- Druid
+ elseif setclass == 3 then
+ SpawnSet(NPC, "class", 38) -- Predator
+ end
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abloodthirstymercenary.lua b/server/SpawnScripts/Commonlands/abloodthirstymercenary.lua
new file mode 100644
index 000000000..085876068
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abloodthirstymercenary.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abloodthirstymercenary.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abluewidowspider.lua b/server/SpawnScripts/Commonlands/abluewidowspider.lua
new file mode 100644
index 000000000..a6a4c7b5f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abluewidowspider.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abluewidowspider.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abrittleskeleton.lua b/server/SpawnScripts/Commonlands/abrittleskeleton.lua
index e0713fbc0..71c815e09 100755
--- a/server/SpawnScripts/Commonlands/abrittleskeleton.lua
+++ b/server/SpawnScripts/Commonlands/abrittleskeleton.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/abrittleskeletonRoamer.lua b/server/SpawnScripts/Commonlands/abrittleskeletonRoamer.lua
new file mode 100644
index 000000000..9ed583ffc
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abrittleskeletonRoamer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abrittleskeletonRoamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.13 07:01:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abullelephant.lua b/server/SpawnScripts/Commonlands/abullelephant.lua
new file mode 100644
index 000000000..a4e2d948c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/abullelephant.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/abullelephant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/abullrhinoceros.lua b/server/SpawnScripts/Commonlands/abullrhinoceros.lua
index 9b9817d92..94e54d355 100755
--- a/server/SpawnScripts/Commonlands/abullrhinoceros.lua
+++ b/server/SpawnScripts/Commonlands/abullrhinoceros.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aburlyarmadillo.lua b/server/SpawnScripts/Commonlands/aburlyarmadillo.lua
index 1dce724c3..3e25f39d9 100755
--- a/server/SpawnScripts/Commonlands/aburlyarmadillo.lua
+++ b/server/SpawnScripts/Commonlands/aburlyarmadillo.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/acarrionbeetle.lua b/server/SpawnScripts/Commonlands/acarrionbeetle.lua
new file mode 100644
index 000000000..43c552282
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/acarrionbeetle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/acarrionbeetle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.17 05:02:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ --RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/acarrionhawk.lua b/server/SpawnScripts/Commonlands/acarrionhawk.lua
new file mode 100644
index 000000000..34552377c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/acarrionhawk.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/acarrionhawk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/acarrionhound.lua b/server/SpawnScripts/Commonlands/acarrionhound.lua
index 1edc226da..b094fd6fe 100755
--- a/server/SpawnScripts/Commonlands/acarrionhound.lua
+++ b/server/SpawnScripts/Commonlands/acarrionhound.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/acarrionhoundRoam.lua b/server/SpawnScripts/Commonlands/acarrionhoundRoam.lua
new file mode 100644
index 000000000..4b04fcd3e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/acarrionhoundRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/acarrionhoundRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.16 01:01:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/acarrionhoundpup.lua b/server/SpawnScripts/Commonlands/acarrionhoundpup.lua
new file mode 100644
index 000000000..f84cfa957
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/acarrionhoundpup.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/acarrionhoundpup.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aclericofGunthak.lua b/server/SpawnScripts/Commonlands/aclericofGunthak.lua
new file mode 100644
index 000000000..eec6341a4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aclericofGunthak.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aclericofGunthak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/acow.lua b/server/SpawnScripts/Commonlands/acow.lua
new file mode 100644
index 000000000..86cb5b8df
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/acow.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/acow.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 15, -15, 1, 15, 25)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aderangedmercenary.lua b/server/SpawnScripts/Commonlands/aderangedmercenary.lua
new file mode 100644
index 000000000..1e0a48052
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aderangedmercenary.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aderangedmercenary.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aderelictmercenary.lua b/server/SpawnScripts/Commonlands/aderelictmercenary.lua
new file mode 100644
index 000000000..5ea8320b4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aderelictmercenary.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aderelictmercenary.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adervishnegotiator.lua b/server/SpawnScripts/Commonlands/adervishnegotiator.lua
new file mode 100644
index 000000000..09b6051ba
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adervishnegotiator.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adervishnegotiator.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ setclass(NPC)
+ setrace(NPC)
+ RandomWeapons(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function setclass(NPC, Spawn)
+ class = MakeRandomInt(1,4)
+ if class == 1 then
+ SpawnSet(NPC, "class", 2) -- Warrior
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 38) -- Predator
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 22) -- Sorcerer
+ elseif class == 4 then
+ SpawnSet(NPC, "class", 5) -- Brawler
+ end
+end
+
+function setrace(NPC, Spawn)
+ race = MakeRandomInt(1,3)
+ if race == 1 then
+ human(NPC)
+ elseif race == 2 then
+ halfelf(NPC)
+ elseif race == 3 then
+ darkelf(NPC)
+ end
+end
+
+
diff --git a/server/SpawnScripts/Commonlands/adiggerwasp.lua b/server/SpawnScripts/Commonlands/adiggerwasp.lua
new file mode 100644
index 000000000..afed955dd
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adiggerwasp.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adiggerwasp.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 12, -12, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adiggerwaspsoldier.lua b/server/SpawnScripts/Commonlands/adiggerwaspsoldier.lua
new file mode 100644
index 000000000..abc248757
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adiggerwaspsoldier.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adiggerwaspsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.13 01:02:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 12, -12, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adrakotaadept.lua b/server/SpawnScripts/Commonlands/adrakotaadept.lua
new file mode 100644
index 000000000..b8dcf542b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adrakotaadept.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adrakotaadept.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.13 02:02:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = math.floor(GetStr(NPC)/10)
+ HPRegenMod = math.floor(GetSta(NPC)/10)
+ PwRegenMod = math.floor(GetWis(NPC)/10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 50 + HPRegenMod)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 25 + PwRegenMod)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adrakotaadjutant.lua b/server/SpawnScripts/Commonlands/adrakotaadjutant.lua
new file mode 100644
index 000000000..e43c00ba9
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adrakotaadjutant.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adrakotaadjutant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = math.floor(GetStr(NPC)/10)
+ HPRegenMod = math.floor(GetSta(NPC)/10)
+ PwRegenMod = math.floor(GetStr(NPC)/10)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(45 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(85 + dmgMod))
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 50 + HPRegenMod)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 25 + PwRegenMod)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adregsscout.lua b/server/SpawnScripts/Commonlands/adregsscout.lua
new file mode 100644
index 000000000..f1c1f6da8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adregsscout.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adregsscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.08 02:02:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adregsscoutRoam.lua b/server/SpawnScripts/Commonlands/adregsscoutRoam.lua
new file mode 100644
index 000000000..8a7593fc1
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adregsscoutRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adregsscoutRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.08 02:02:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adregssneak.lua b/server/SpawnScripts/Commonlands/adregssneak.lua
new file mode 100644
index 000000000..cf8b3f3ff
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adregssneak.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adregssneak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.04 07:01:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adregssneakRoam.lua b/server/SpawnScripts/Commonlands/adregssneakRoam.lua
new file mode 100644
index 000000000..b936ee884
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adregssneakRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adregssneakRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.08 02:02:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adregsvagrant.lua b/server/SpawnScripts/Commonlands/adregsvagrant.lua
new file mode 100644
index 000000000..5e2d82230
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adregsvagrant.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adregsvagrant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.10 02:01:58
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adrownedacolyte.lua b/server/SpawnScripts/Commonlands/adrownedacolyte.lua
new file mode 100644
index 000000000..900bdb658
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adrownedacolyte.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adrownedacolyte.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 07:02:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adrowneddragoon.lua b/server/SpawnScripts/Commonlands/adrowneddragoon.lua
new file mode 100644
index 000000000..bd0ab9839
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adrowneddragoon.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adrowneddragoon.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 06:02:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adrownedpriest.lua b/server/SpawnScripts/Commonlands/adrownedpriest.lua
new file mode 100644
index 000000000..686ebf129
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adrownedpriest.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adrownedpriest.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 07:02:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/adungbeetle.lua b/server/SpawnScripts/Commonlands/adungbeetle.lua
new file mode 100644
index 000000000..61ec7e508
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/adungbeetle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/adungbeetle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.01 09:02:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aduststinger.lua b/server/SpawnScripts/Commonlands/aduststinger.lua
new file mode 100644
index 000000000..c1b4ec3c2
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aduststinger.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aduststinger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.10 02:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/afallenapostle.lua b/server/SpawnScripts/Commonlands/afallenapostle.lua
index fe7482c4b..a70780c6f 100755
--- a/server/SpawnScripts/Commonlands/afallenapostle.lua
+++ b/server/SpawnScripts/Commonlands/afallenapostle.lua
@@ -5,13 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/ValmaarSkeletonVoiceOvers"
-require "SpawnScripts/Generic/MovementCircleSmall"
-
-
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
@@ -22,10 +20,3 @@ function respawn(NPC)
end
-function aggro(NPC, Spawn)
-generic_aggro(NPC, Spawn)
-end
-
-function death(NPC, Spawn)
-generic_death(NPC, Spawn)
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/afallenchampion.lua b/server/SpawnScripts/Commonlands/afallenchampion.lua
new file mode 100644
index 000000000..c71855289
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/afallenchampion.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/afallenchampion.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 09:01:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/afallencrusader.lua b/server/SpawnScripts/Commonlands/afallencrusader.lua
index ed05cca99..556b8fe4c 100755
--- a/server/SpawnScripts/Commonlands/afallencrusader.lua
+++ b/server/SpawnScripts/Commonlands/afallencrusader.lua
@@ -5,14 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-
-
+require "SpawnScripts/Generic/NPCModule"
local BrokenEquipment = 415
-
-
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afallendefender.lua b/server/SpawnScripts/Commonlands/afallendefender.lua
index 74c096b5a..753c7b750 100755
--- a/server/SpawnScripts/Commonlands/afallendefender.lua
+++ b/server/SpawnScripts/Commonlands/afallendefender.lua
@@ -5,10 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afallendiplomat.lua b/server/SpawnScripts/Commonlands/afallendiplomat.lua
index fd36c4ff6..61db9289e 100755
--- a/server/SpawnScripts/Commonlands/afallendiplomat.lua
+++ b/server/SpawnScripts/Commonlands/afallendiplomat.lua
@@ -5,11 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afallendisciple.lua b/server/SpawnScripts/Commonlands/afallendisciple.lua
index e5e5cd6b2..c638d7f5b 100755
--- a/server/SpawnScripts/Commonlands/afallendisciple.lua
+++ b/server/SpawnScripts/Commonlands/afallendisciple.lua
@@ -5,13 +5,12 @@
Script Purpose :
:
--]]
-
+require "SpawnScripts/Generic/NPCModule"
local BrokenEquipment = 415
-
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afallenguardian.lua b/server/SpawnScripts/Commonlands/afallenguardian.lua
index 11d973302..512165734 100755
--- a/server/SpawnScripts/Commonlands/afallenguardian.lua
+++ b/server/SpawnScripts/Commonlands/afallenguardian.lua
@@ -5,13 +5,12 @@
Script Purpose :
:
--]]
-
+require "SpawnScripts/Generic/NPCModule"
local BrokenEquipment = 415 -- Broken Equipment Quest
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afallenorc.lua b/server/SpawnScripts/Commonlands/afallenorc.lua
index 11eb904e0..3c262045f 100755
--- a/server/SpawnScripts/Commonlands/afallenorc.lua
+++ b/server/SpawnScripts/Commonlands/afallenorc.lua
@@ -5,11 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afallenorclieutenant.lua b/server/SpawnScripts/Commonlands/afallenorclieutenant.lua
index 908746475..8fc3bd247 100755
--- a/server/SpawnScripts/Commonlands/afallenorclieutenant.lua
+++ b/server/SpawnScripts/Commonlands/afallenorclieutenant.lua
@@ -5,11 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afarmer.lua b/server/SpawnScripts/Commonlands/afarmer.lua
index 3a46e38c1..4866dbf4c 100755
--- a/server/SpawnScripts/Commonlands/afarmer.lua
+++ b/server/SpawnScripts/Commonlands/afarmer.lua
@@ -5,11 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afiercecarrionhound.lua b/server/SpawnScripts/Commonlands/afiercecarrionhound.lua
index 5484234f4..c23366725 100755
--- a/server/SpawnScripts/Commonlands/afiercecarrionhound.lua
+++ b/server/SpawnScripts/Commonlands/afiercecarrionhound.lua
@@ -5,11 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/afledglingvulrich.lua b/server/SpawnScripts/Commonlands/afledglingvulrich.lua
new file mode 100644
index 000000000..6072ab326
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/afledglingvulrich.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/afledglingvulrich.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.28 09:01:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/afreshwatercrab.lua b/server/SpawnScripts/Commonlands/afreshwatercrab.lua
index 616439852..1cc78dca3 100755
--- a/server/SpawnScripts/Commonlands/afreshwatercrab.lua
+++ b/server/SpawnScripts/Commonlands/afreshwatercrab.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aghostlyorc.lua b/server/SpawnScripts/Commonlands/aghostlyorc.lua
index 1a56257a0..2c523a184 100755
--- a/server/SpawnScripts/Commonlands/aghostlyorc.lua
+++ b/server/SpawnScripts/Commonlands/aghostlyorc.lua
@@ -5,15 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-
-require "SpawnScripts/Generic/MovementCircleSmall"
-
-function spawn(NPC)
-
- SpawnChooseRandomMovement(NPC)
-
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ GhostOrcArmorCommon(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/agiantgrovewisp.lua b/server/SpawnScripts/Commonlands/agiantgrovewisp.lua
index f2e90b31d..22c59b15e 100755
--- a/server/SpawnScripts/Commonlands/agiantgrovewisp.lua
+++ b/server/SpawnScripts/Commonlands/agiantgrovewisp.lua
@@ -5,13 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, -8, -8, 4, 0, 2, 8, 15)
end
-
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Commonlands/agiantvulrich.lua b/server/SpawnScripts/Commonlands/agiantvulrich.lua
index 4d9781667..1eba035c3 100755
--- a/server/SpawnScripts/Commonlands/agiantvulrich.lua
+++ b/server/SpawnScripts/Commonlands/agiantvulrich.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/agiantvulrichSKULLHAMMERADD.lua b/server/SpawnScripts/Commonlands/agiantvulrichSKULLHAMMERADD.lua
new file mode 100644
index 000000000..3c57dc0b8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/agiantvulrichSKULLHAMMERADD.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/agiantvulrichSKULLHAMMERADD.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.10 09:02:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(25 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(55 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/agrovewisp.lua b/server/SpawnScripts/Commonlands/agrovewisp.lua
index 7213d6079..e8e13342c 100755
--- a/server/SpawnScripts/Commonlands/agrovewisp.lua
+++ b/server/SpawnScripts/Commonlands/agrovewisp.lua
@@ -5,11 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, -8, -8, 4, 0, 2, 8, 15)
+
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/akerranrogue.lua b/server/SpawnScripts/Commonlands/akerranrogue.lua
index c9a08d28f..24ec4b212 100755
--- a/server/SpawnScripts/Commonlands/akerranrogue.lua
+++ b/server/SpawnScripts/Commonlands/akerranrogue.lua
@@ -5,13 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ kerra(NPC)
end
-
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Commonlands/akerranrogueRoam.lua b/server/SpawnScripts/Commonlands/akerranrogueRoam.lua
new file mode 100644
index 000000000..e977d0c0d
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/akerranrogueRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/akerranrogueRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.09 10:02:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/akerranvagrant.lua b/server/SpawnScripts/Commonlands/akerranvagrant.lua
index 8c27b42e1..f59057ebc 100755
--- a/server/SpawnScripts/Commonlands/akerranvagrant.lua
+++ b/server/SpawnScripts/Commonlands/akerranvagrant.lua
@@ -5,13 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ kerra(NPC)
end
-
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Commonlands/alostsoul.lua b/server/SpawnScripts/Commonlands/alostsoul.lua
index c78da2299..1f6ec09eb 100755
--- a/server/SpawnScripts/Commonlands/alostsoul.lua
+++ b/server/SpawnScripts/Commonlands/alostsoul.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/amarrowsapper.lua b/server/SpawnScripts/Commonlands/amarrowsapper.lua
index 194c75aff..f2f0fe692 100755
--- a/server/SpawnScripts/Commonlands/amarrowsapper.lua
+++ b/server/SpawnScripts/Commonlands/amarrowsapper.lua
@@ -5,11 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/amassiveemeraldbeetle.lua b/server/SpawnScripts/Commonlands/amassiveemeraldbeetle.lua
index 59b5a6a25..2e8b3c002 100755
--- a/server/SpawnScripts/Commonlands/amassiveemeraldbeetle.lua
+++ b/server/SpawnScripts/Commonlands/amassiveemeraldbeetle.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/amithdeer.lua b/server/SpawnScripts/Commonlands/amithdeer.lua
new file mode 100644
index 000000000..e4d12dabe
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/amithdeer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/amithdeer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.27 04:01:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/amoltingscorpion.lua b/server/SpawnScripts/Commonlands/amoltingscorpion.lua
index 6c76f9a74..aa4afeeef 100755
--- a/server/SpawnScripts/Commonlands/amoltingscorpion.lua
+++ b/server/SpawnScripts/Commonlands/amoltingscorpion.lua
@@ -5,11 +5,16 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
+
+
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Commonlands/amonitorbehemoth.lua b/server/SpawnScripts/Commonlands/amonitorbehemoth.lua
index 86143d9b8..ab015c9ed 100755
--- a/server/SpawnScripts/Commonlands/amonitorbehemoth.lua
+++ b/server/SpawnScripts/Commonlands/amonitorbehemoth.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/amonitorlizard.lua b/server/SpawnScripts/Commonlands/amonitorlizard.lua
index 727d16713..e7b88e714 100755
--- a/server/SpawnScripts/Commonlands/amonitorlizard.lua
+++ b/server/SpawnScripts/Commonlands/amonitorlizard.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/amonitorlizardRoam.lua b/server/SpawnScripts/Commonlands/amonitorlizardRoam.lua
new file mode 100644
index 000000000..5161c51ea
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/amonitorlizardRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/amonitorlizardRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 06:02:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/amoonwisp.lua b/server/SpawnScripts/Commonlands/amoonwisp.lua
new file mode 100644
index 000000000..f09ba910b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/amoonwisp.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/amoonwisp.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.27 04:01:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, -8, -8, 4, 0, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anelderlion.lua b/server/SpawnScripts/Commonlands/anelderlion.lua
new file mode 100644
index 000000000..a487647f6
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anelderlion.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anelderlion.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.11 03:02:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anelderlion1.lua b/server/SpawnScripts/Commonlands/anelderlion1.lua
new file mode 100644
index 000000000..08429686d
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anelderlion1.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anelderlion1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.11 03:02:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 9000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 757.48, -59.71, -34.43, 2, 0)
+ MovementLoopAddLocation(NPC, 710.13, -59.96, 21.93, 2, 0)
+ MovementLoopAddLocation(NPC, 686.98, -59.8, 22.15, 2, 0)
+ MovementLoopAddLocation(NPC, 639.48, -59.8, -3.96, 2, 0)
+ MovementLoopAddLocation(NPC, 633.63, -59.8, -17.26, 2, 0)
+ MovementLoopAddLocation(NPC, 638.71, -59.8, -27.25, 2, 0)
+ MovementLoopAddLocation(NPC, 681.22, -59.8, -27.35, 2, 0)
+ MovementLoopAddLocation(NPC, 703.23, -59.8, -33.28, 2, 0)
+ MovementLoopAddLocation(NPC, 745.87, -59.8, -59.43, 2, 0)
+ MovementLoopAddLocation(NPC, 761.52, -58.83, -58.62, 2, 0)
+ MovementLoopAddLocation(NPC, 766.92, -58.69, -48.79, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anelderlion2.lua b/server/SpawnScripts/Commonlands/anelderlion2.lua
new file mode 100644
index 000000000..9299b4522
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anelderlion2.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anelderlion2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.11 03:02:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 13000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 757.48, -59.71, -34.43, 2, 0)
+ MovementLoopAddLocation(NPC, 710.13, -59.96, 21.93, 2, 0)
+ MovementLoopAddLocation(NPC, 686.98, -59.8, 22.15, 2, 0)
+ MovementLoopAddLocation(NPC, 639.48, -59.8, -3.96, 2, 0)
+ MovementLoopAddLocation(NPC, 633.63, -59.8, -17.26, 2, 0)
+ MovementLoopAddLocation(NPC, 638.71, -59.8, -27.25, 2, 0)
+ MovementLoopAddLocation(NPC, 681.22, -59.8, -27.35, 2, 0)
+ MovementLoopAddLocation(NPC, 703.23, -59.8, -33.28, 2, 0)
+ MovementLoopAddLocation(NPC, 745.87, -59.8, -59.43, 2, 0)
+ MovementLoopAddLocation(NPC, 761.52, -58.83, -58.62, 2, 0)
+ MovementLoopAddLocation(NPC, 766.92, -58.69, -48.79, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anelephant.lua b/server/SpawnScripts/Commonlands/anelephant.lua
index 52306c5a1..49d6df2b2 100755
--- a/server/SpawnScripts/Commonlands/anelephant.lua
+++ b/server/SpawnScripts/Commonlands/anelephant.lua
@@ -5,11 +5,19 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1500, "movement")
+
end
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Commonlands/anelephantStonetusk.lua b/server/SpawnScripts/Commonlands/anelephantStonetusk.lua
new file mode 100644
index 000000000..4edebe26e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anelephantStonetusk.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anelephantStonetusk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.12 02:02:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anelephantcalf.lua b/server/SpawnScripts/Commonlands/anelephantcalf.lua
index 19fd1eb63..31e65b3d1 100755
--- a/server/SpawnScripts/Commonlands/anelephantcalf.lua
+++ b/server/SpawnScripts/Commonlands/anelephantcalf.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
@@ -17,4 +18,3 @@ end
function respawn(NPC)
end
-
diff --git a/server/SpawnScripts/Commonlands/anorcemissary.lua b/server/SpawnScripts/Commonlands/anorcemissary.lua
new file mode 100644
index 000000000..3c27e24b4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anorcemissary.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anorcemissary.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 06:01:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anorcrunner.lua b/server/SpawnScripts/Commonlands/anorcrunner.lua
index e454c1763..df7db6c7c 100755
--- a/server/SpawnScripts/Commonlands/anorcrunner.lua
+++ b/server/SpawnScripts/Commonlands/anorcrunner.lua
@@ -5,9 +5,12 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/anorcrunner1.lua b/server/SpawnScripts/Commonlands/anorcrunner1.lua
new file mode 100644
index 000000000..727cbaa12
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anorcrunner1.lua
@@ -0,0 +1,137 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anorcrunner1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.25 08:01:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 101.67, -47.93, 602.12, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 260.84, -47.15, 515.66, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, 101.67, -47.93, 602.12, 6, 0)
+
+end
+
diff --git a/server/SpawnScripts/Commonlands/anorcrunner2.lua b/server/SpawnScripts/Commonlands/anorcrunner2.lua
new file mode 100644
index 000000000..c2a2bead9
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anorcrunner2.lua
@@ -0,0 +1,136 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anorcrunner2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.25 09:01:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 10000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 101.67, -47.93, 602.12, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 260.84, -47.15, 515.66, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, 101.67, -47.93, 602.12, 6, 0)
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anorcrunner3.lua b/server/SpawnScripts/Commonlands/anorcrunner3.lua
new file mode 100644
index 000000000..c841b3a18
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anorcrunner3.lua
@@ -0,0 +1,135 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anorcrunner3.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.25 09:01:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC, Spawn)
+ MovementLoopAddLocation(NPC, 260.84, -47.15, 515.66, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, 101.67, -47.93, 602.12, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 260.84, -47.15, 515.66, 6, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anorcrunner4.lua b/server/SpawnScripts/Commonlands/anorcrunner4.lua
new file mode 100644
index 000000000..50c470d7f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anorcrunner4.lua
@@ -0,0 +1,135 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anorcrunner4.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.25 09:01:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC, Spawn)
+ MovementLoopAddLocation(NPC, 260.84, -47.15, 515.66, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, 101.67, -47.93, 602.12, 6, 0)
+ MovementLoopAddLocation(NPC, -0.31, -46.91, 597.39, 6, 0)
+ MovementLoopAddLocation(NPC, -52.47, -42.49, 613.96, 6, 0)
+ MovementLoopAddLocation(NPC, -93.28, -42.43, 605.42, 6, 0)
+ MovementLoopAddLocation(NPC, -148.81, -47.48, 586.55, 6, 0)
+ MovementLoopAddLocation(NPC, -178.84, -47.06, 570.85, 6, 0)
+ MovementLoopAddLocation(NPC, -211.85, -42.44, 553.6, 6, 0)
+ MovementLoopAddLocation(NPC, -228.57, -42.15, 550.63, 6, 0)
+ MovementLoopAddLocation(NPC, -246.79, -42.02, 554.9, 6, 0)
+ MovementLoopAddLocation(NPC, -363.77, -47.91, 612.02, 6, 0)
+ MovementLoopAddLocation(NPC, -446.2, -47.86, 652.26, 6, 0)
+ MovementLoopAddLocation(NPC, -483.53, -46.92, 646.97, 6, 0)
+ MovementLoopAddLocation(NPC, -509.37, -44.85, 644.05, 6, 0)
+ MovementLoopAddLocation(NPC, -553.77, -44.54, 648.85, 6, 0)
+ MovementLoopAddLocation(NPC, -603.35, -47.12, 641.11, 6, 0)
+ MovementLoopAddLocation(NPC, -650.94, -47.71, 636.31, 6, 0)
+ MovementLoopAddLocation(NPC, -745.81, -47.67, 629.12, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -777.57, -47.46, 629.38, 6, 0)
+ MovementLoopAddLocation(NPC, -821.98, -47.93, 618.54, 6, 0)
+ MovementLoopAddLocation(NPC, -849.8, -47.67, 619.53, 6, 0)
+ MovementLoopAddLocation(NPC, -867.53, -47.9, 602.42, 6, 0)
+ MovementLoopAddLocation(NPC, -872.48, -47.55, 572.33, 6, 0)
+ MovementLoopAddLocation(NPC, -860.01, -47.78, 553.37, 6, 0)
+ MovementLoopAddLocation(NPC, -818.55, -48.04, 532.58, 6, 0)
+ MovementLoopAddLocation(NPC, -783.42, -48.04, 520.43, 6, 0)
+ MovementLoopAddLocation(NPC, -740.88, -48.04, 485.52, 6, 0)
+ MovementLoopAddLocation(NPC, -693.96, -48.04, 437.1, 6, 0)
+ MovementLoopAddLocation(NPC, -667.81, -47.38, 407.91, 6, 0)
+ MovementLoopAddLocation(NPC, -655.66, -45.43, 394.36, 6, 0)
+ MovementLoopAddLocation(NPC, -644.96, -48.04, 382.43, 6, 0)
+ MovementLoopAddLocation(NPC, -630.81, -47.07, 366.63, 6, 0)
+ MovementLoopAddLocation(NPC, -580.83, -47.12, 349.93, 6, 0)
+ MovementLoopAddLocation(NPC, -533.13, -47.15, 313.35, 6, 0)
+ MovementLoopAddLocation(NPC, -486.72, -47.97, 291.72, 6, 0)
+ MovementLoopAddLocation(NPC, -445.12, -46.98, 289.5, 6, 0)
+ MovementLoopAddLocation(NPC, -412.88, -46.54, 300.93, 6, 0)
+ MovementLoopAddLocation(NPC, -391.13, -45.82, 316.24, 6, 0)
+ MovementLoopAddLocation(NPC, -366.75, -45.15, 321.99, 6, 0)
+ MovementLoopAddLocation(NPC, -328.59, -44.13, 312.57, 6, 0)
+ MovementLoopAddLocation(NPC, -311.78, -42.67, 308.46, 6, 0)
+ MovementLoopAddLocation(NPC, -283.51, -46.94, 301.56, 6, 0)
+ MovementLoopAddLocation(NPC, -221.67, -48.04, 290.47, 6, 0)
+ MovementLoopAddLocation(NPC, -180.81, -46.96, 339.08, 6, 0)
+ MovementLoopAddLocation(NPC, -168.62, -46.76, 357.86, 6, 0)
+ MovementLoopAddLocation(NPC, -123.7, -48.01, 376.37, 6, 0)
+ MovementLoopAddLocation(NPC, -119.4, -46.52, 377.9, 6, 0)
+ MovementLoopAddLocation(NPC, -100.91, -48.02, 384.45, 6, 0)
+ MovementLoopAddLocation(NPC, -78, -45.03, 392.58, 6, 0)
+ MovementLoopAddLocation(NPC, -38.41, -47.4, 395.46, 6, 0)
+ MovementLoopAddLocation(NPC, 38.47, -47.8, 388.65, 6, 0)
+ MovementLoopAddLocation(NPC, 103.13, -48.04, 382.51, 6, 0)
+ MovementLoopAddLocation(NPC, 191.14, -47.81, 374.14, 6, 0)
+ MovementLoopAddLocation(NPC, 209.48, -47.97, 378.83, 6, 0)
+ MovementLoopAddLocation(NPC, 260.84, -47.15, 515.66, 6, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/anoxiousscorpion.lua b/server/SpawnScripts/Commonlands/anoxiousscorpion.lua
new file mode 100644
index 000000000..f4c4c12c8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/anoxiousscorpion.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/anoxiousscorpion.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.02 06:02:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/apirateofGunthak.lua b/server/SpawnScripts/Commonlands/apirateofGunthak.lua
new file mode 100644
index 000000000..f78377f27
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/apirateofGunthak.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/apirateofGunthak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.25 07:02:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aplainselephant.lua b/server/SpawnScripts/Commonlands/aplainselephant.lua
new file mode 100644
index 000000000..fb98e8c0a
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aplainselephant.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aplainselephant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.15 04:01:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aplainselephantRoam.lua b/server/SpawnScripts/Commonlands/aplainselephantRoam.lua
new file mode 100644
index 000000000..0606bee19
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aplainselephantRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aplainselephantRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.15 04:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aplainselephantcalf.lua b/server/SpawnScripts/Commonlands/aplainselephantcalf.lua
new file mode 100644
index 000000000..19ab6cb52
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aplainselephantcalf.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aplainselephantcalf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.15 03:01:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aplainselephantcalfRoam.lua b/server/SpawnScripts/Commonlands/aplainselephantcalfRoam.lua
new file mode 100644
index 000000000..de5116dec
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aplainselephantcalfRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aplainselephantcalfRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.15 03:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aplainshunter.lua b/server/SpawnScripts/Commonlands/aplainshunter.lua
new file mode 100644
index 000000000..31da9718c
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aplainshunter.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aplainshunter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 01:01:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1500, "movement")
+ human(NPC)
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ else
+ IdleAlert(NPC)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/araiderofGunthak.lua b/server/SpawnScripts/Commonlands/araiderofGunthak.lua
new file mode 100644
index 000000000..f2609b615
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/araiderofGunthak.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/araiderofGunthak.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.25 07:02:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/arazortailbarracuda.lua b/server/SpawnScripts/Commonlands/arazortailbarracuda.lua
new file mode 100644
index 000000000..f074c9a09
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/arazortailbarracuda.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/arazortailbarracuda.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.25 10:02:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/arhinoceros.lua b/server/SpawnScripts/Commonlands/arhinoceros.lua
new file mode 100644
index 000000000..23cff2111
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/arhinoceros.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/arhinoceros.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 06:01:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/arhinoceroscalf.lua b/server/SpawnScripts/Commonlands/arhinoceroscalf.lua
new file mode 100644
index 000000000..d6c28e77e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/arhinoceroscalf.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/arhinoceroscalf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.11 04:02:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asandcrab.lua b/server/SpawnScripts/Commonlands/asandcrab.lua
new file mode 100644
index 000000000..c333bc5c5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandcrab.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandcrab.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 06:02:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asandmonitor.lua b/server/SpawnScripts/Commonlands/asandmonitor.lua
new file mode 100644
index 000000000..fe67516a8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandmonitor.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandmonitor.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 08:02:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asandmonitorhatchling.lua b/server/SpawnScripts/Commonlands/asandmonitorhatchling.lua
new file mode 100644
index 000000000..19e1725a8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandmonitorhatchling.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandmonitorhatchling.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.01 10:02:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asandstonegiant.lua b/server/SpawnScripts/Commonlands/asandstonegiant.lua
index fa126af6a..e5ec55a0d 100755
--- a/server/SpawnScripts/Commonlands/asandstonegiant.lua
+++ b/server/SpawnScripts/Commonlands/asandstonegiant.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/asandstonegiantPath1.lua b/server/SpawnScripts/Commonlands/asandstonegiantPath1.lua
new file mode 100644
index 000000000..95b8b6055
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandstonegiantPath1.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandstonegiantPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 02:02:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1196.56, -36.76, -254.75, 2, 0)
+ MovementLoopAddLocation(NPC, 1203.43, -38.75, -268.04, 2, 0)
+ MovementLoopAddLocation(NPC, 1211.1, -40.27, -274.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1226.86, -43.18, -285.75, 2, 0)
+ MovementLoopAddLocation(NPC, 1232.98, -44.58, -292.12, 2, 0)
+ MovementLoopAddLocation(NPC, 1243.06, -47.92, -303.33, 2, 0)
+ MovementLoopAddLocation(NPC, 1254.59, -51.3, -314.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1266.9, -54.61, -323.06, 2, 0)
+ MovementLoopAddLocation(NPC, 1282.23, -58.65, -329.59, 2, 0)
+ MovementLoopAddLocation(NPC, 1286.86, -59.04, -331.71, 2, 0)
+ MovementLoopAddLocation(NPC, 1291.02, -59.02, -338.74, 2, 0)
+ MovementLoopAddLocation(NPC, 1290.82, -58.79, -346.75, 2, 0)
+ MovementLoopAddLocation(NPC, 1283.04, -58.14, -355.61, 2, 0)
+ MovementLoopAddLocation(NPC, 1269.71, -57.01, -360.04, 2, 0)
+ MovementLoopAddLocation(NPC, 1252.81, -55.85, -363.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1237.19, -54.24, -366.16, 2, 0)
+ MovementLoopAddLocation(NPC, 1217.65, -49.15, -369.1, 2, 0)
+ MovementLoopAddLocation(NPC, 1202.23, -45.13, -369.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1192.18, -42.34, -368.56, 2, 0)
+ MovementLoopAddLocation(NPC, 1185.04, -40.82, -364.27, 2, 0)
+ MovementLoopAddLocation(NPC, 1180.61, -39.65, -357.25, 2, 0)
+ MovementLoopAddLocation(NPC, 1173.92, -36.56, -346.84, 2, 0)
+ MovementLoopAddLocation(NPC, 1169.77, -33.97, -335.46, 2, 0)
+ MovementLoopAddLocation(NPC, 1167.97, -30.4, -311.22, 2, 0)
+ MovementLoopAddLocation(NPC, 1171.53, -30.8, -297.24, 2, 0)
+ MovementLoopAddLocation(NPC, 1176.93, -33.08, -283.35, 2, 0)
+ MovementLoopAddLocation(NPC, 1196.56, -36.76, -254.75, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asandstonegiantPath2.lua b/server/SpawnScripts/Commonlands/asandstonegiantPath2.lua
new file mode 100644
index 000000000..09b193a5f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandstonegiantPath2.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandstonegiantPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 03:02:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1462.17, -31.31, 119.09, 2, 0)
+ MovementLoopAddLocation(NPC, 1456.5, -31.85, 100.86, 2, 0)
+ MovementLoopAddLocation(NPC, 1450.11, -36.37, 48.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1447.17, -38.1, 36.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1442.79, -39.28, 30.42, 2, 0)
+ MovementLoopAddLocation(NPC, 1437.14, -40.56, 24.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1429.39, -42.6, 16.54, 2, 0)
+ MovementLoopAddLocation(NPC, 1403.77, -49.46, -14.55, 2, 0)
+ MovementLoopAddLocation(NPC, 1401.02, -50.35, -21.42, 2, 0)
+ MovementLoopAddLocation(NPC, 1398.19, -49.85, -37.05, 2, 0)
+ MovementLoopAddLocation(NPC, 1398.42, -49.14, -46.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1403.82, -48.4, -58.58, 2, 0)
+ MovementLoopAddLocation(NPC, 1412.29, -46.65, -73.53, 2, 0)
+ MovementLoopAddLocation(NPC, 1407.89, -47.9, -66.93, 2, 0)
+ MovementLoopAddLocation(NPC, 1400.36, -48.81, -52.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1398.31, -50.06, -33.4, 2, 0)
+ MovementLoopAddLocation(NPC, 1400.27, -50.44, -22.55, 2, 0)
+ MovementLoopAddLocation(NPC, 1404.49, -49.58, -15.2, 2, 0)
+ MovementLoopAddLocation(NPC, 1428.79, -42.58, 16.89, 2, 0)
+ MovementLoopAddLocation(NPC, 1439.33, -40.12, 26.48, 2, 0)
+ MovementLoopAddLocation(NPC, 1446.13, -38.72, 32.88, 2, 0)
+ MovementLoopAddLocation(NPC, 1449.56, -36.6, 46.5, 2, 0)
+ MovementLoopAddLocation(NPC, 1456.02, -31.92, 99.24, 2, 0)
+ MovementLoopAddLocation(NPC, 1462.17, -31.31, 119.09, 2, 0)
+end
diff --git a/server/SpawnScripts/Commonlands/asandstonegiantPath3.lua b/server/SpawnScripts/Commonlands/asandstonegiantPath3.lua
new file mode 100644
index 000000000..838d81c9b
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandstonegiantPath3.lua
@@ -0,0 +1,60 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandstonegiantPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 03:02:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1444.53, -45.69, -294.66, 2, 0)
+ MovementLoopAddLocation(NPC, 1447.06, -44.32, -251.28, 2, 0)
+ MovementLoopAddLocation(NPC, 1440.4, -43.85, -246.98, 2, 0)
+ MovementLoopAddLocation(NPC, 1429.25, -41.44, -241.38, 2, 0)
+ MovementLoopAddLocation(NPC, 1412.97, -37.95, -230.22, 2, 0)
+ MovementLoopAddLocation(NPC, 1407.73, -36.67, -220.97, 2, 0)
+ MovementLoopAddLocation(NPC, 1402.79, -35.82, -205.01, 2, 0)
+ MovementLoopAddLocation(NPC, 1399.58, -35.79, -180.39, 2, 0)
+ MovementLoopAddLocation(NPC, 1404.6, -35.94, -170.29, 2, 0)
+ MovementLoopAddLocation(NPC, 1414.26, -36.7, -164.24, 2, 0)
+ MovementLoopAddLocation(NPC, 1423.63, -37.54, -156.78, 2, 0)
+ MovementLoopAddLocation(NPC, 1434.95, -38.15, -150.49, 2, 0)
+ MovementLoopAddLocation(NPC, 1445.03, -38.4, -146.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1451.73, -38.41, -138.1, 2, 0)
+ MovementLoopAddLocation(NPC, 1452.72, -38.16, -130.8, 2, 0)
+ MovementLoopAddLocation(NPC, 1452.81, -38.38, -119.11, 2, 0)
+ MovementLoopAddLocation(NPC, 1448.73, -40.25, -104.65, 2, 0)
+ MovementLoopAddLocation(NPC, 1444.76, -42.69, -92.43, 2, 0)
+ MovementLoopAddLocation(NPC, 1439.56, -44.51, -84.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1434.04, -45.43, -78.4, 2, 0)
+ MovementLoopAddLocation(NPC, 1421.29, -45.67, -75.6, 2, 0)
+ MovementLoopAddLocation(NPC, 1409.84, -46.66, -80.18, 2, 0)
+ MovementLoopAddLocation(NPC, 1403.25, -46.09, -87.17, 2, 0)
+ MovementLoopAddLocation(NPC, 1398.53, -44.73, -94.77, 2, 0)
+ MovementLoopAddLocation(NPC, 1393.32, -42.87, -104.36, 2, 0)
+ MovementLoopAddLocation(NPC, 1391.53, -41.26, -113.48, 2, 0)
+ MovementLoopAddLocation(NPC, 1392.49, -37.5, -156.45, 2, 0)
+ MovementLoopAddLocation(NPC, 1400.03, -35.75, -194.59, 2, 0)
+ MovementLoopAddLocation(NPC, 1404.51, -36, -213.66, 2, 0)
+ MovementLoopAddLocation(NPC, 1410.28, -37.35, -226.39, 2, 0)
+ MovementLoopAddLocation(NPC, 1414.64, -38.33, -232.32, 2, 0)
+ MovementLoopAddLocation(NPC, 1430.67, -41.71, -242, 2, 0)
+ MovementLoopAddLocation(NPC, 1445.06, -44.32, -252.13, 2, 0)
+ MovementLoopAddLocation(NPC, 1448.11, -45.47, -262.59, 2, 0)
+ MovementLoopAddLocation(NPC, 1444.53, -45.69, -294.66, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/asandstonetitan.lua b/server/SpawnScripts/Commonlands/asandstonetitan.lua
new file mode 100644
index 000000000..8ed56a207
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandstonetitan.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandstonetitan.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 03:02:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asandstonetitanRoam.lua b/server/SpawnScripts/Commonlands/asandstonetitanRoam.lua
new file mode 100644
index 000000000..e6941588d
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asandstonetitanRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asandstonetitanRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 03:02:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavagecarrionhound.lua b/server/SpawnScripts/Commonlands/asavagecarrionhound.lua
new file mode 100644
index 000000000..48116df81
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavagecarrionhound.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavagecarrionhound.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 01:01:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannadeer.lua b/server/SpawnScripts/Commonlands/asavannadeer.lua
new file mode 100644
index 000000000..9d177c5d0
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannadeer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannadeer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 12:01:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 10, -10, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannadeerfawn.lua b/server/SpawnScripts/Commonlands/asavannadeerfawn.lua
new file mode 100644
index 000000000..264f2282a
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannadeerfawn.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannadeerfawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.10 02:02:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 10, -10, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalion.lua b/server/SpawnScripts/Commonlands/asavannalion.lua
new file mode 100644
index 000000000..28343b274
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalion.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalion.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalioncub.lua b/server/SpawnScripts/Commonlands/asavannalioncub.lua
new file mode 100644
index 000000000..d864ce7c9
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalioncub.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalioncub.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.11 06:02:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalioness.lua b/server/SpawnScripts/Commonlands/asavannalioness.lua
new file mode 100644
index 000000000..fba803892
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalioness.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalioness.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1500, "movement")
+end
+
+function movement(NPC, Spawn)
+ if IsHeroic(NPC) == false then
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+ end
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalionessRaman1.lua b/server/SpawnScripts/Commonlands/asavannalionessRaman1.lua
new file mode 100644
index 000000000..2d3e97d85
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalionessRaman1.lua
@@ -0,0 +1,80 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalionessRaman1.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 10000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 872.73, -59.48, 5.77, 2, 0)
+ MovementLoopAddLocation(NPC, 868.63, -59.6, 7.51, 2, 0)
+ MovementLoopAddLocation(NPC, 857.94, -58.97, 22.02, 2, 0)
+ MovementLoopAddLocation(NPC, 848.88, -56.66, 44.24, 2, 0)
+ MovementLoopAddLocation(NPC, 834.27, -54.13, 75.68, 2, 0)
+ MovementLoopAddLocation(NPC, 820.55, -54.28, 89.48, 2, 0)
+ MovementLoopAddLocation(NPC, 784.63, -51.93, 118.05, 2, 0)
+ MovementLoopAddLocation(NPC, 737.83, -52.15, 145.18, 2, 0)
+ MovementLoopAddLocation(NPC, 724.07, -52.44, 149.85, 2, 0)
+ MovementLoopAddLocation(NPC, 706.64, -53.53, 150.58, 2, 0)
+ MovementLoopAddLocation(NPC, 692.28, -53.02, 147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 668.76, -49.59, 143.34, 2, 0)
+ MovementLoopAddLocation(NPC, 658.93, -48.75, 137.79, 2, 0)
+ MovementLoopAddLocation(NPC, 652.8, -47.94, 132.35, 2, 0)
+ MovementLoopAddLocation(NPC, 623.66, -46.49, 101.58, 2, 0)
+ MovementLoopAddLocation(NPC, 601.59, -47.18, 79.95, 2, 0)
+ MovementLoopAddLocation(NPC, 566.07, -48.14, 58.63, 2, 0)
+ MovementLoopAddLocation(NPC, 536.11, -48.1, 48.66, 2, 0)
+ MovementLoopAddLocation(NPC, 518.76, -48.82, 36.77, 2, 0)
+ MovementLoopAddLocation(NPC, 496.68, -50.61, 9.58, 2, 0)
+ MovementLoopAddLocation(NPC, 476.98, -49.4, -12.76, 2, 0)
+ MovementLoopAddLocation(NPC, 458.44, -48.6, -36.86, 2, 0)
+ MovementLoopAddLocation(NPC, 443.35, -48.02, -65.33, 2, 0)
+ MovementLoopAddLocation(NPC, 433.57, -47.05, -100.47, 2, 0)
+ MovementLoopAddLocation(NPC, 437.06, -46.41, -116.65, 2, 0)
+ MovementLoopAddLocation(NPC, 449.78, -47.56, -139.24, 2, 0)
+ MovementLoopAddLocation(NPC, 464.61, -47.6, -163.46, 2, 0)
+ MovementLoopAddLocation(NPC, 469.28, -47.43, -197.32, 2, 0)
+ MovementLoopAddLocation(NPC, 465.41, -46.83, -213.62, 2, 0)
+ MovementLoopAddLocation(NPC, 416.2, -46.91, -272.97, 2, 0)
+ MovementLoopAddLocation(NPC, 423.34, -47.81, -295.2, 2, 0)
+ MovementLoopAddLocation(NPC, 448.67, -47.43, -306.49, 2, 0)
+ MovementLoopAddLocation(NPC, 485.21, -47.94, -306.16, 2, 0)
+ MovementLoopAddLocation(NPC, 512.96, -47.41, -311.94, 2, 0)
+ MovementLoopAddLocation(NPC, 562.88, -46.01, -317.03, 2, 0)
+ MovementLoopAddLocation(NPC, 615.54, -47.65, -314.87, 2, 0)
+ MovementLoopAddLocation(NPC, 638.49, -47.98, -313.82, 2, 0)
+ MovementLoopAddLocation(NPC, 665.53, -51.3, -316.33, 2, 0)
+ MovementLoopAddLocation(NPC, 747.99, -57.15, -325.5, 2, 0)
+ MovementLoopAddLocation(NPC, 778.08, -59.39, -323.36, 2, 0)
+ MovementLoopAddLocation(NPC, 853.7, -58.95, -348.76, 2, 0)
+ MovementLoopAddLocation(NPC, 890.58, -57.88, -355.88, 2, 0)
+ MovementLoopAddLocation(NPC, 955.9, -57.98, -357.5, 2, 0)
+ MovementLoopAddLocation(NPC, 994.19, -56.23, -358.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1025.93, -52.07, -358.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.84, -49.34, -349.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1059.88, -47.58, -327.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1061.43, -48.91, -297.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.22, -50.07, -266.84, 2, 0)
+ MovementLoopAddLocation(NPC, 1057, -54.46, -242.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.23, -55.51, -220.31, 2, 0)
+ MovementLoopAddLocation(NPC, 1016.25, -56.11, -175.52, 2, 0)
+ MovementLoopAddLocation(NPC, 995.12, -56.95, -147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 975.36, -55.9, -104.81, 2, 0)
+ MovementLoopAddLocation(NPC, 949.16, -57.17, -72.14, 2, 0)
+ MovementLoopAddLocation(NPC, 913.48, -58.87, -30.68, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalionessRaman2.lua b/server/SpawnScripts/Commonlands/asavannalionessRaman2.lua
new file mode 100644
index 000000000..0623d2ea3
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalionessRaman2.lua
@@ -0,0 +1,80 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalionessRaman2.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 12000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 872.73, -59.48, 5.77, 2, 0)
+ MovementLoopAddLocation(NPC, 868.63, -59.6, 7.51, 2, 0)
+ MovementLoopAddLocation(NPC, 857.94, -58.97, 22.02, 2, 0)
+ MovementLoopAddLocation(NPC, 848.88, -56.66, 44.24, 2, 0)
+ MovementLoopAddLocation(NPC, 834.27, -54.13, 75.68, 2, 0)
+ MovementLoopAddLocation(NPC, 820.55, -54.28, 89.48, 2, 0)
+ MovementLoopAddLocation(NPC, 784.63, -51.93, 118.05, 2, 0)
+ MovementLoopAddLocation(NPC, 737.83, -52.15, 145.18, 2, 0)
+ MovementLoopAddLocation(NPC, 724.07, -52.44, 149.85, 2, 0)
+ MovementLoopAddLocation(NPC, 706.64, -53.53, 150.58, 2, 0)
+ MovementLoopAddLocation(NPC, 692.28, -53.02, 147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 668.76, -49.59, 143.34, 2, 0)
+ MovementLoopAddLocation(NPC, 658.93, -48.75, 137.79, 2, 0)
+ MovementLoopAddLocation(NPC, 652.8, -47.94, 132.35, 2, 0)
+ MovementLoopAddLocation(NPC, 623.66, -46.49, 101.58, 2, 0)
+ MovementLoopAddLocation(NPC, 601.59, -47.18, 79.95, 2, 0)
+ MovementLoopAddLocation(NPC, 566.07, -48.14, 58.63, 2, 0)
+ MovementLoopAddLocation(NPC, 536.11, -48.1, 48.66, 2, 0)
+ MovementLoopAddLocation(NPC, 518.76, -48.82, 36.77, 2, 0)
+ MovementLoopAddLocation(NPC, 496.68, -50.61, 9.58, 2, 0)
+ MovementLoopAddLocation(NPC, 476.98, -49.4, -12.76, 2, 0)
+ MovementLoopAddLocation(NPC, 458.44, -48.6, -36.86, 2, 0)
+ MovementLoopAddLocation(NPC, 443.35, -48.02, -65.33, 2, 0)
+ MovementLoopAddLocation(NPC, 433.57, -47.05, -100.47, 2, 0)
+ MovementLoopAddLocation(NPC, 437.06, -46.41, -116.65, 2, 0)
+ MovementLoopAddLocation(NPC, 449.78, -47.56, -139.24, 2, 0)
+ MovementLoopAddLocation(NPC, 464.61, -47.6, -163.46, 2, 0)
+ MovementLoopAddLocation(NPC, 469.28, -47.43, -197.32, 2, 0)
+ MovementLoopAddLocation(NPC, 465.41, -46.83, -213.62, 2, 0)
+ MovementLoopAddLocation(NPC, 416.2, -46.91, -272.97, 2, 0)
+ MovementLoopAddLocation(NPC, 423.34, -47.81, -295.2, 2, 0)
+ MovementLoopAddLocation(NPC, 448.67, -47.43, -306.49, 2, 0)
+ MovementLoopAddLocation(NPC, 485.21, -47.94, -306.16, 2, 0)
+ MovementLoopAddLocation(NPC, 512.96, -47.41, -311.94, 2, 0)
+ MovementLoopAddLocation(NPC, 562.88, -46.01, -317.03, 2, 0)
+ MovementLoopAddLocation(NPC, 615.54, -47.65, -314.87, 2, 0)
+ MovementLoopAddLocation(NPC, 638.49, -47.98, -313.82, 2, 0)
+ MovementLoopAddLocation(NPC, 665.53, -51.3, -316.33, 2, 0)
+ MovementLoopAddLocation(NPC, 747.99, -57.15, -325.5, 2, 0)
+ MovementLoopAddLocation(NPC, 778.08, -59.39, -323.36, 2, 0)
+ MovementLoopAddLocation(NPC, 853.7, -58.95, -348.76, 2, 0)
+ MovementLoopAddLocation(NPC, 890.58, -57.88, -355.88, 2, 0)
+ MovementLoopAddLocation(NPC, 955.9, -57.98, -357.5, 2, 0)
+ MovementLoopAddLocation(NPC, 994.19, -56.23, -358.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1025.93, -52.07, -358.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.84, -49.34, -349.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1059.88, -47.58, -327.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1061.43, -48.91, -297.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.22, -50.07, -266.84, 2, 0)
+ MovementLoopAddLocation(NPC, 1057, -54.46, -242.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.23, -55.51, -220.31, 2, 0)
+ MovementLoopAddLocation(NPC, 1016.25, -56.11, -175.52, 2, 0)
+ MovementLoopAddLocation(NPC, 995.12, -56.95, -147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 975.36, -55.9, -104.81, 2, 0)
+ MovementLoopAddLocation(NPC, 949.16, -57.17, -72.14, 2, 0)
+ MovementLoopAddLocation(NPC, 913.48, -58.87, -30.68, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalionessRaman3.lua b/server/SpawnScripts/Commonlands/asavannalionessRaman3.lua
new file mode 100644
index 000000000..0f6430385
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalionessRaman3.lua
@@ -0,0 +1,80 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalionessRaman3.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 14000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 872.73, -59.48, 5.77, 2, 0)
+ MovementLoopAddLocation(NPC, 868.63, -59.6, 7.51, 2, 0)
+ MovementLoopAddLocation(NPC, 857.94, -58.97, 22.02, 2, 0)
+ MovementLoopAddLocation(NPC, 848.88, -56.66, 44.24, 2, 0)
+ MovementLoopAddLocation(NPC, 834.27, -54.13, 75.68, 2, 0)
+ MovementLoopAddLocation(NPC, 820.55, -54.28, 89.48, 2, 0)
+ MovementLoopAddLocation(NPC, 784.63, -51.93, 118.05, 2, 0)
+ MovementLoopAddLocation(NPC, 737.83, -52.15, 145.18, 2, 0)
+ MovementLoopAddLocation(NPC, 724.07, -52.44, 149.85, 2, 0)
+ MovementLoopAddLocation(NPC, 706.64, -53.53, 150.58, 2, 0)
+ MovementLoopAddLocation(NPC, 692.28, -53.02, 147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 668.76, -49.59, 143.34, 2, 0)
+ MovementLoopAddLocation(NPC, 658.93, -48.75, 137.79, 2, 0)
+ MovementLoopAddLocation(NPC, 652.8, -47.94, 132.35, 2, 0)
+ MovementLoopAddLocation(NPC, 623.66, -46.49, 101.58, 2, 0)
+ MovementLoopAddLocation(NPC, 601.59, -47.18, 79.95, 2, 0)
+ MovementLoopAddLocation(NPC, 566.07, -48.14, 58.63, 2, 0)
+ MovementLoopAddLocation(NPC, 536.11, -48.1, 48.66, 2, 0)
+ MovementLoopAddLocation(NPC, 518.76, -48.82, 36.77, 2, 0)
+ MovementLoopAddLocation(NPC, 496.68, -50.61, 9.58, 2, 0)
+ MovementLoopAddLocation(NPC, 476.98, -49.4, -12.76, 2, 0)
+ MovementLoopAddLocation(NPC, 458.44, -48.6, -36.86, 2, 0)
+ MovementLoopAddLocation(NPC, 443.35, -48.02, -65.33, 2, 0)
+ MovementLoopAddLocation(NPC, 433.57, -47.05, -100.47, 2, 0)
+ MovementLoopAddLocation(NPC, 437.06, -46.41, -116.65, 2, 0)
+ MovementLoopAddLocation(NPC, 449.78, -47.56, -139.24, 2, 0)
+ MovementLoopAddLocation(NPC, 464.61, -47.6, -163.46, 2, 0)
+ MovementLoopAddLocation(NPC, 469.28, -47.43, -197.32, 2, 0)
+ MovementLoopAddLocation(NPC, 465.41, -46.83, -213.62, 2, 0)
+ MovementLoopAddLocation(NPC, 416.2, -46.91, -272.97, 2, 0)
+ MovementLoopAddLocation(NPC, 423.34, -47.81, -295.2, 2, 0)
+ MovementLoopAddLocation(NPC, 448.67, -47.43, -306.49, 2, 0)
+ MovementLoopAddLocation(NPC, 485.21, -47.94, -306.16, 2, 0)
+ MovementLoopAddLocation(NPC, 512.96, -47.41, -311.94, 2, 0)
+ MovementLoopAddLocation(NPC, 562.88, -46.01, -317.03, 2, 0)
+ MovementLoopAddLocation(NPC, 615.54, -47.65, -314.87, 2, 0)
+ MovementLoopAddLocation(NPC, 638.49, -47.98, -313.82, 2, 0)
+ MovementLoopAddLocation(NPC, 665.53, -51.3, -316.33, 2, 0)
+ MovementLoopAddLocation(NPC, 747.99, -57.15, -325.5, 2, 0)
+ MovementLoopAddLocation(NPC, 778.08, -59.39, -323.36, 2, 0)
+ MovementLoopAddLocation(NPC, 853.7, -58.95, -348.76, 2, 0)
+ MovementLoopAddLocation(NPC, 890.58, -57.88, -355.88, 2, 0)
+ MovementLoopAddLocation(NPC, 955.9, -57.98, -357.5, 2, 0)
+ MovementLoopAddLocation(NPC, 994.19, -56.23, -358.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1025.93, -52.07, -358.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.84, -49.34, -349.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1059.88, -47.58, -327.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1061.43, -48.91, -297.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.22, -50.07, -266.84, 2, 0)
+ MovementLoopAddLocation(NPC, 1057, -54.46, -242.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.23, -55.51, -220.31, 2, 0)
+ MovementLoopAddLocation(NPC, 1016.25, -56.11, -175.52, 2, 0)
+ MovementLoopAddLocation(NPC, 995.12, -56.95, -147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 975.36, -55.9, -104.81, 2, 0)
+ MovementLoopAddLocation(NPC, 949.16, -57.17, -72.14, 2, 0)
+ MovementLoopAddLocation(NPC, 913.48, -58.87, -30.68, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asavannalionessRaman4.lua b/server/SpawnScripts/Commonlands/asavannalionessRaman4.lua
new file mode 100644
index 000000000..d4b62ac9f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asavannalionessRaman4.lua
@@ -0,0 +1,80 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asavannalionessRaman4.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 05:01:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 18000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 872.73, -59.48, 5.77, 2, 0)
+ MovementLoopAddLocation(NPC, 868.63, -59.6, 7.51, 2, 0)
+ MovementLoopAddLocation(NPC, 857.94, -58.97, 22.02, 2, 0)
+ MovementLoopAddLocation(NPC, 848.88, -56.66, 44.24, 2, 0)
+ MovementLoopAddLocation(NPC, 834.27, -54.13, 75.68, 2, 0)
+ MovementLoopAddLocation(NPC, 820.55, -54.28, 89.48, 2, 0)
+ MovementLoopAddLocation(NPC, 784.63, -51.93, 118.05, 2, 0)
+ MovementLoopAddLocation(NPC, 737.83, -52.15, 145.18, 2, 0)
+ MovementLoopAddLocation(NPC, 724.07, -52.44, 149.85, 2, 0)
+ MovementLoopAddLocation(NPC, 706.64, -53.53, 150.58, 2, 0)
+ MovementLoopAddLocation(NPC, 692.28, -53.02, 147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 668.76, -49.59, 143.34, 2, 0)
+ MovementLoopAddLocation(NPC, 658.93, -48.75, 137.79, 2, 0)
+ MovementLoopAddLocation(NPC, 652.8, -47.94, 132.35, 2, 0)
+ MovementLoopAddLocation(NPC, 623.66, -46.49, 101.58, 2, 0)
+ MovementLoopAddLocation(NPC, 601.59, -47.18, 79.95, 2, 0)
+ MovementLoopAddLocation(NPC, 566.07, -48.14, 58.63, 2, 0)
+ MovementLoopAddLocation(NPC, 536.11, -48.1, 48.66, 2, 0)
+ MovementLoopAddLocation(NPC, 518.76, -48.82, 36.77, 2, 0)
+ MovementLoopAddLocation(NPC, 496.68, -50.61, 9.58, 2, 0)
+ MovementLoopAddLocation(NPC, 476.98, -49.4, -12.76, 2, 0)
+ MovementLoopAddLocation(NPC, 458.44, -48.6, -36.86, 2, 0)
+ MovementLoopAddLocation(NPC, 443.35, -48.02, -65.33, 2, 0)
+ MovementLoopAddLocation(NPC, 433.57, -47.05, -100.47, 2, 0)
+ MovementLoopAddLocation(NPC, 437.06, -46.41, -116.65, 2, 0)
+ MovementLoopAddLocation(NPC, 449.78, -47.56, -139.24, 2, 0)
+ MovementLoopAddLocation(NPC, 464.61, -47.6, -163.46, 2, 0)
+ MovementLoopAddLocation(NPC, 469.28, -47.43, -197.32, 2, 0)
+ MovementLoopAddLocation(NPC, 465.41, -46.83, -213.62, 2, 0)
+ MovementLoopAddLocation(NPC, 416.2, -46.91, -272.97, 2, 0)
+ MovementLoopAddLocation(NPC, 423.34, -47.81, -295.2, 2, 0)
+ MovementLoopAddLocation(NPC, 448.67, -47.43, -306.49, 2, 0)
+ MovementLoopAddLocation(NPC, 485.21, -47.94, -306.16, 2, 0)
+ MovementLoopAddLocation(NPC, 512.96, -47.41, -311.94, 2, 0)
+ MovementLoopAddLocation(NPC, 562.88, -46.01, -317.03, 2, 0)
+ MovementLoopAddLocation(NPC, 615.54, -47.65, -314.87, 2, 0)
+ MovementLoopAddLocation(NPC, 638.49, -47.98, -313.82, 2, 0)
+ MovementLoopAddLocation(NPC, 665.53, -51.3, -316.33, 2, 0)
+ MovementLoopAddLocation(NPC, 747.99, -57.15, -325.5, 2, 0)
+ MovementLoopAddLocation(NPC, 778.08, -59.39, -323.36, 2, 0)
+ MovementLoopAddLocation(NPC, 853.7, -58.95, -348.76, 2, 0)
+ MovementLoopAddLocation(NPC, 890.58, -57.88, -355.88, 2, 0)
+ MovementLoopAddLocation(NPC, 955.9, -57.98, -357.5, 2, 0)
+ MovementLoopAddLocation(NPC, 994.19, -56.23, -358.15, 2, 0)
+ MovementLoopAddLocation(NPC, 1025.93, -52.07, -358.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.84, -49.34, -349.85, 2, 0)
+ MovementLoopAddLocation(NPC, 1059.88, -47.58, -327.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1061.43, -48.91, -297.02, 2, 0)
+ MovementLoopAddLocation(NPC, 1062.22, -50.07, -266.84, 2, 0)
+ MovementLoopAddLocation(NPC, 1057, -54.46, -242.51, 2, 0)
+ MovementLoopAddLocation(NPC, 1045.23, -55.51, -220.31, 2, 0)
+ MovementLoopAddLocation(NPC, 1016.25, -56.11, -175.52, 2, 0)
+ MovementLoopAddLocation(NPC, 995.12, -56.95, -147.84, 2, 0)
+ MovementLoopAddLocation(NPC, 975.36, -55.9, -104.81, 2, 0)
+ MovementLoopAddLocation(NPC, 949.16, -57.17, -72.14, 2, 0)
+ MovementLoopAddLocation(NPC, 913.48, -58.87, -30.68, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ascourgerat.lua b/server/SpawnScripts/Commonlands/ascourgerat.lua
index 4c834c5b4..e45255054 100755
--- a/server/SpawnScripts/Commonlands/ascourgerat.lua
+++ b/server/SpawnScripts/Commonlands/ascourgerat.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/ascrubrat.lua b/server/SpawnScripts/Commonlands/ascrubrat.lua
index d6bf4d2b3..7a637600c 100755
--- a/server/SpawnScripts/Commonlands/ascrubrat.lua
+++ b/server/SpawnScripts/Commonlands/ascrubrat.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/aseaturtle.lua b/server/SpawnScripts/Commonlands/aseaturtle.lua
new file mode 100644
index 000000000..994289646
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/aseaturtle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/aseaturtle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.23 04:02:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asidewinder.lua b/server/SpawnScripts/Commonlands/asidewinder.lua
new file mode 100644
index 000000000..eae764f99
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asidewinder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asidewinder.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.17 08:01:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asidewinderRoam.lua b/server/SpawnScripts/Commonlands/asidewinderRoam.lua
new file mode 100644
index 000000000..a562b162e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asidewinderRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asidewinderRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.17 08:01:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asiltshark.lua b/server/SpawnScripts/Commonlands/asiltshark.lua
new file mode 100644
index 000000000..2d93b2bb8
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asiltshark.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asiltshark.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.22 05:02:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asmallbluegill.lua b/server/SpawnScripts/Commonlands/asmallbluegill.lua
new file mode 100644
index 000000000..597242f4f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asmallbluegill.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asmallbluegill.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.22 05:02:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asmalldungbeetle.lua b/server/SpawnScripts/Commonlands/asmalldungbeetle.lua
new file mode 100644
index 000000000..70fbb17e2
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asmalldungbeetle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asmalldungbeetle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.11 07:01:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/asmallemeraldbeetle.lua b/server/SpawnScripts/Commonlands/asmallemeraldbeetle.lua
index 1936bf9c2..76ddee679 100755
--- a/server/SpawnScripts/Commonlands/asmallemeraldbeetle.lua
+++ b/server/SpawnScripts/Commonlands/asmallemeraldbeetle.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/asmallpike.lua b/server/SpawnScripts/Commonlands/asmallpike.lua
new file mode 100644
index 000000000..9793250da
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/asmallpike.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/asmallpike.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.22 05:02:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/aspeckledrattler.lua b/server/SpawnScripts/Commonlands/aspeckledrattler.lua
index 0ab520465..5427097df 100755
--- a/server/SpawnScripts/Commonlands/aspeckledrattler.lua
+++ b/server/SpawnScripts/Commonlands/aspeckledrattler.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/astackofbooks.lua b/server/SpawnScripts/Commonlands/astackofbooks.lua
index ce9e5658d..ec0d3b1f6 100755
--- a/server/SpawnScripts/Commonlands/astackofbooks.lua
+++ b/server/SpawnScripts/Commonlands/astackofbooks.lua
@@ -1,6 +1,6 @@
--[[
Script Name : SpawnScripts/Commonlands/astackofbooks.lua
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.16 07:07:46
Script Purpose :
:
@@ -12,6 +12,7 @@ function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Pick up journal' then
if GetQuestStep(Spawn, DeliverHelptoJanusFieri) == 2 then
SetStepComplete(Spawn, DeliverHelptoJanusFieri, 2)
+ SendMessage(Spawn,"You find a tattered journal amidst this stack of materials in the nomads' camp.")
end
end
end
@@ -20,9 +21,6 @@ function spawn(NPC)
SetRequiredQuest(NPC, DeliverHelptoJanusFieri, 2)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
function respawn(NPC)
spawn(NPC)
diff --git a/server/SpawnScripts/Commonlands/astonebeetle.lua b/server/SpawnScripts/Commonlands/astonebeetle.lua
new file mode 100644
index 000000000..8548f0fb1
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/astonebeetle.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/astonebeetle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.19 02:02:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/astonesnake.lua b/server/SpawnScripts/Commonlands/astonesnake.lua
new file mode 100644
index 000000000..a26169848
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/astonesnake.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/astonesnake.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.19 02:02:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/astrangelystitchedzombie.lua b/server/SpawnScripts/Commonlands/astrangelystitchedzombie.lua
new file mode 100644
index 000000000..07509d727
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/astrangelystitchedzombie.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/astrangelystitchedzombie.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.17 04:02:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 18 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 32 + dmgMod)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 962.22, -45.14, -623.63, 2, 0)
+ MovementLoopAddLocation(NPC, 952.66, -45.32, -618.78, 2, 0)
+ MovementLoopAddLocation(NPC, 938.81, -45.13, -614.52, 2, 0)
+ MovementLoopAddLocation(NPC, 924.32, -45.34, -612.46, 2, 0)
+ MovementLoopAddLocation(NPC, 914.74, -45.19, -612.16, 2, 0)
+ MovementLoopAddLocation(NPC, 903.48, -45.13, -614.14, 2, 0)
+ MovementLoopAddLocation(NPC, 897.48, -45.13, -617.3, 2, 0)
+ MovementLoopAddLocation(NPC, 888.66, -45.18, -623.72, 2, 0)
+ MovementLoopAddLocation(NPC, 871.01, -45.43, -628.84, 2, 0)
+ MovementLoopAddLocation(NPC, 845.07, -45.54, -639.19, 2, 0)
+ MovementLoopAddLocation(NPC, 829.45, -45.53, -647.21, 2, 0)
+ MovementLoopAddLocation(NPC, 817.98, -45.7, -649.7, 2, 0)
+ MovementLoopAddLocation(NPC, 823.73, -45.61, -648.83, 2, 0)
+ MovementLoopAddLocation(NPC, 855.09, -45.54, -634.45, 2, 0)
+ MovementLoopAddLocation(NPC, 866.65, -45.49, -630.15, 2, 0)
+ MovementLoopAddLocation(NPC, 884.78, -45.2, -625.68, 2, 0)
+ MovementLoopAddLocation(NPC, 899.01, -45.13, -616.04, 2, 0)
+ MovementLoopAddLocation(NPC, 909.35, -45.13, -612.69, 2, 0)
+ MovementLoopAddLocation(NPC, 919.79, -45.3, -612.44, 2, 0)
+ MovementLoopAddLocation(NPC, 932.64, -45.17, -613.39, 2, 0)
+ MovementLoopAddLocation(NPC, 944.26, -45.13, -616.26, 2, 0)
+ MovementLoopAddLocation(NPC, 962.22, -45.14, -623.63, 2, 0)
+end
+
diff --git a/server/SpawnScripts/Commonlands/athreshbat.lua b/server/SpawnScripts/Commonlands/athreshbat.lua
new file mode 100644
index 000000000..209b72198
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/athreshbat.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/athreshbat.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.09 11:01:47
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 4, -4, 4, -4, 1, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/athumpingbandedarmadillo.lua b/server/SpawnScripts/Commonlands/athumpingbandedarmadillo.lua
new file mode 100644
index 000000000..06c74abc4
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/athumpingbandedarmadillo.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/athumpingbandedarmadillo.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.14 10:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/atidecrawler.lua b/server/SpawnScripts/Commonlands/atidecrawler.lua
new file mode 100644
index 000000000..9e786476a
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/atidecrawler.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/atidecrawler.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.23 03:02:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/atidecrawleroracle.lua b/server/SpawnScripts/Commonlands/atidecrawleroracle.lua
new file mode 100644
index 000000000..78033e037
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/atidecrawleroracle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/atidecrawleroracle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.23 03:02:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/atidecrawlerseer.lua b/server/SpawnScripts/Commonlands/atidecrawlerseer.lua
new file mode 100644
index 000000000..4755ce8c5
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/atidecrawlerseer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/atidecrawlerseer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 06:02:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/atorturedsoul.lua b/server/SpawnScripts/Commonlands/atorturedsoul.lua
index f8ab37a90..08a5abaeb 100755
--- a/server/SpawnScripts/Commonlands/atorturedsoul.lua
+++ b/server/SpawnScripts/Commonlands/atorturedsoul.lua
@@ -5,11 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-require("SpawnScripts/Generic/MovementCircleSmall")
-
-function spawn(NPC)
-SpawnChooseRandomMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/avulrich.lua b/server/SpawnScripts/Commonlands/avulrich.lua
new file mode 100644
index 000000000..969c2b26a
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/avulrich.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/avulrich.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 01:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/awarelephant.lua b/server/SpawnScripts/Commonlands/awarelephant.lua
new file mode 100644
index 000000000..7cbabba44
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/awarelephant.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/awarelephant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.20 03:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 10, -10, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ayoungmithdeer.lua b/server/SpawnScripts/Commonlands/ayoungmithdeer.lua
new file mode 100644
index 000000000..5b774a447
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ayoungmithdeer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ayoungmithdeer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.24 07:02:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ayoungsiltshark.lua b/server/SpawnScripts/Commonlands/ayoungsiltshark.lua
new file mode 100644
index 000000000..5faf8794e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/ayoungsiltshark.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/ayoungsiltshark.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.22 05:02:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 20, -20, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/ayoungvulrich.lua b/server/SpawnScripts/Commonlands/ayoungvulrich.lua
index 11d926cb3..a1e224d45 100755
--- a/server/SpawnScripts/Commonlands/ayoungvulrich.lua
+++ b/server/SpawnScripts/Commonlands/ayoungvulrich.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
-require "SpawnScripts/Generic/MovementCircleSmall"
-function spawn(NPC)
- SpawnChooseRandomMovement(NPC)
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Commonlands/froglokcube.lua b/server/SpawnScripts/Commonlands/froglokcube.lua
new file mode 100755
index 000000000..ac8f9d37d
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/froglokcube.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/froglokcube.lua
+ Script Author : neatz09
+ Script Date : 2023.04.22 09:04:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/questforgottenstatuelightstone.lua b/server/SpawnScripts/Commonlands/questforgottenstatuelightstone.lua
index c1c984247..fe9f4852f 100755
--- a/server/SpawnScripts/Commonlands/questforgottenstatuelightstone.lua
+++ b/server/SpawnScripts/Commonlands/questforgottenstatuelightstone.lua
@@ -9,7 +9,9 @@
local TheReturnOfTheLight = 485
function spawn(NPC)
-SetPlayerProximityFunction(NPC, 5, "InRange")
+ SetRequiredQuest(NPC,TheReturnOfTheLight,3,0,0,1)
+ SetRequiredQuest(NPC,TheReturnOfTheLight,2,0,0,1)
+--SetPlayerProximityFunction(NPC, 5, "InRange")
end
function InRange(NPC, Spawn)
@@ -24,9 +26,10 @@ function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Touch burned out lightstone to statue' then
if GetQuestStep(Spawn, TheReturnOfTheLight) == 3 then
SetStepComplete(Spawn, TheReturnOfTheLight, 3)
- end
- local con = CreateConversation()
- AddConversationOption(con, "[Put stone away]")
- StartDialogConversation(con, 1, NPC, Spawn, "Touching the lightstone to the statue causes the small orb to flicker with light and grow warm in your hand.")
+
+ local con = CreateConversation()
+ AddConversationOption(con, "[Put stone away]")
+ StartDialogConversation(con, 1, NPC, Spawn, "Touching the lightstone to the statue causes the small orb to flicker with light and grow warm in your hand.")
+ end
end
end
diff --git a/server/SpawnScripts/Commonlands/questmournedstatuelightstone.lua b/server/SpawnScripts/Commonlands/questmournedstatuelightstone.lua
index 51e686c2d..8ada72a95 100755
--- a/server/SpawnScripts/Commonlands/questmournedstatuelightstone.lua
+++ b/server/SpawnScripts/Commonlands/questmournedstatuelightstone.lua
@@ -9,7 +9,9 @@
local TheReturnOfTheLight = 485
function spawn(NPC)
-SetPlayerProximityFunction(NPC, 5, "InRange")
+ SetRequiredQuest(NPC,TheReturnOfTheLight,3,0,0,1)
+ SetRequiredQuest(NPC,TheReturnOfTheLight,2,0,0,1)
+--SetPlayerProximityFunction(NPC, 5, "InRange")
end
function InRange(NPC, Spawn)
@@ -24,11 +26,12 @@ function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Touch burned out lightstone to statue' then
if GetQuestStep(Spawn, TheReturnOfTheLight) == 2 then
SetStepComplete(Spawn, TheReturnOfTheLight, 2)
- end
+
local con = CreateConversation()
AddConversationOption(con, "[Put stone away]")
- StartDialogConversation(con, 1, NPC, Spawn, "Touching the lightstone to the statue causes the small orb to flicker with light and grow warm in your hand.")
-end
+ StartDialogConversation(con, 1, NPC, Spawn, "Touching the lightstone to the statue causes the small orb to flicker with light and grow warm in your hand.")
+ end
+ end
end
diff --git a/server/SpawnScripts/Commonlands/spawnkraofla.lua b/server/SpawnScripts/Commonlands/spawnkraofla.lua
new file mode 100755
index 000000000..1b5ad4a4e
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/spawnkraofla.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/spawnkraofla.lua
+ Script Author : cynnar
+ Script Date : 2023.04.10 12:04:35
+ Script Purpose :
+ :
+--]]
+
+local SearchForTheMissing = 573
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ local zone = GetZone(Spawn)
+
+ if HasQuest(Spawn, SearchForTheMissing) and GetQuestStep(Spawn, SearchForTheMissing) == 2 then
+ local Kraofla = SpawnMob(zone, 330291, false, -589.91, -49.14, -626.17, 175.95)
+ end
+end
+
+function LeaveRange(NPC, Spawn)
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem.lua b/server/SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem.lua
new file mode 100755
index 000000000..9c6c37834
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem.lua
@@ -0,0 +1,58 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem.lua
+ Script Author : cynnar
+ Script Date : 2023.04.10 05:04:33
+ Script Purpose :
+ :
+--]]
+
+local AFesteringProblem = 5800
+
+function spawn(NPC)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function QeynosinaCheck(NPC, Spawn)
+ if HasQuest(Spawn, AFesteringProblem) and GetQuestStep(Spawn, AFesteringProblem) == 1 then
+ allDead(NPC, Spawn)
+ end
+end
+
+function allDead(NPC, Spawn)
+ Say(NPC, "All Dead function")
+ local zone = GetZone(NPC)
+
+ local aQeynosianScout1 = GetSpawnByLocationID(zone, 299822)
+ local aQeynosianScout2 = GetSpawnByLocationID(zone, 299824)
+ local aQeynosianScout3 = GetSpawnByLocationID(zone, 299825)
+ local aQeynosianProtector = GetSpawnByLocationID(zone, 299826)
+
+ if GetSpawnByLocationID(zone, 299822) == nil then
+ Say(NPC, "Spawn 299822 is false")
+ end
+
+ if GetSpawnByLocationID(zone, 299824) == nil then
+ Say(NPC, "Spawn 299824 is false")
+ end
+
+ if GetSpawnByLocationID(zone, 299825) == nil then
+ Say(NPC, "Spawn 299825 is false")
+ end
+
+ if GetSpawnByLocationID(zone, 299826) == nil then
+ Say(NPC, "Spawn 299826 is false")
+ end
+
+
+ if IsAlive(aQeynosianScout1) == false and IsAlive(aQeynosianScout2) == false and IsAlive(aQeynosianScout3) == false and IsAlive(aQeynosianProtector) == false then
+ Say(NPC, "All Dead")
+ Say(NPC, "FUCK YOU")
+ SpawnMob(zone, 330291, false, 427.20, -25.02, -894.543, 0)
+ Say(NPC, "CUNTY FROG")
+ end
+end
+
\ No newline at end of file
diff --git a/server/SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem2.lua b/server/SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem2.lua
new file mode 100755
index 000000000..bfbdd438f
--- /dev/null
+++ b/server/SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem2.lua
@@ -0,0 +1,69 @@
+--[[
+ Script Name : SpawnScripts/Commonlands/spawnkraoflaAFesteringProblem2.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.29 05:04:27
+ Script Purpose : For Freeport Froglok quest
+ :
+--]]
+function spawn(NPC)
+Camp1Spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Camp1Spawn(NPC, Spawn) -- Stage 1
+local zone = GetZone(NPC)
+ local aQeynosianScout1 = SpawnByLocationID(zone, 299822)
+ local aQeynosianScout2 = SpawnByLocationID(zone, 299824)
+ local aQeynosianScout3 = SpawnByLocationID(zone, 299825)
+ local aQeynosianProtector = SpawnByLocationID(zone, 299826)
+
+AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+ local aQeynosianScout1 = GetSpawnByLocationID(zone, 299822)
+ local aQeynosianScout2 = GetSpawnByLocationID(zone, 299824)
+ local aQeynosianScout3 = GetSpawnByLocationID(zone, 299825)
+ local aQeynosianProtector = GetSpawnByLocationID(zone, 299826)
+ local Kraofla = GetSpawnByLocationID(zone, 133784668)
+if IsAlive(aQeynosianScout1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(aQeynosianScout2) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(aQeynosianScout3) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(aQeynosianProtector) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ else
+ AddTimer(NPC,6000,"Camp1_Stage2",1, Spawn)
+end
+end
+
+function Camp1_Stage2(NPC, Spawn)
+ local zone = GetZone(NPC)
+ if GetSpawnByLocationID(zone, 133784668) ==nil then
+ local Kraofla = SpawnByLocationID(zone, 133784668)
+ FaceTarget(Kraofla, Spawn)
+ Attack(Kraofla, Spawn)
+ end
+ AddTimer(NPC, 6000, "Camp1_Stage2Check")
+end
+
+function Camp1_Stage2Check(NPC, Spawn)
+ local zone = GetZone(NPC)
+ local KraoflaSpawn = GetSpawnByLocationID(zone, 133784668)
+ if IsAlive(KraoflaSpawn) == true then
+ AddTimer(NPC,6000,"Camp1_Stage2Check",1,Spawn)
+ else
+ AddTimer(NPC, 40000, "Camp1Reset",1,Spawn)
+ end
+end
+
+
+function Camp1Reset(NPC)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/2PointBridgeCrosser.lua b/server/SpawnScripts/DoF_design_path_script/2PointBridgeCrosser.lua
new file mode 100755
index 000000000..5a1f4d000
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/2PointBridgeCrosser.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/2PointBridgeCrosser.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.19 04:07:44
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+AddTimer(NPC,3000,"Waypoint")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Waypoint(NPC,Spawn)
+ MovementLoopAddLocation(NPC,-100,0,-25, 4,3)
+ MovementLoopAddLocation(NPC,-47.5,0,-25, 4,3)
+ end
+
+ function death(NPC,Spawn)
+ Despawn(NPC)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/4PointBridgeCrosser.lua b/server/SpawnScripts/DoF_design_path_script/4PointBridgeCrosser.lua
new file mode 100755
index 000000000..ab1b3354b
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/4PointBridgeCrosser.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/4PointBridgeCrosser.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.19 04:07:23
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+AddTimer(NPC,3000,"Waypoint")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Waypoint(NPC,Spawn)
+ MovementLoopAddLocation(NPC,-70,2.76,-25,4)
+ MovementLoopAddLocation(NPC,-100,0,-25, 4,3)
+ MovementLoopAddLocation(NPC,-70,2.76,-25,4)
+ MovementLoopAddLocation(NPC,-47.5,0,-25, 4,3)
+ end
+
+ function death(NPC,Spawn)
+ Despawn(NPC)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/AnimationSpeedScroll.lua b/server/SpawnScripts/DoF_design_path_script/AnimationSpeedScroll.lua
new file mode 100755
index 000000000..76c923a68
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/AnimationSpeedScroll.lua
@@ -0,0 +1,381 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/AnimationSpeedScroll.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 06:07:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local Busy = false
+local Move = false
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC,Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ if Busy == false then
+ Dialog.AddDialog("This scroll will demonstrate the effects on model animations based on movement speed and spawn size. What would you like to do?")
+ Dialog.AddOption("Setup the Spawns","Setup")
+ Dialog.AddOption("Nevermind")
+ elseif Move == false then
+ Dialog.AddDialog("What would you like to do?")
+ Dialog.AddOption("Begin Movement","Movement")
+ Dialog.AddOption("Change Spawn Type","SpawnType1")
+ Dialog.AddOption("Change Spawn Size","Size1")
+ Dialog.AddOption("Reset the Spawns","Reset")
+ Dialog.AddOption("Nevermind")
+ else
+ Dialog.AddDialog("What would you like to do?")
+ Dialog.AddOption("Change Spawn Type","SpawnType1")
+ Dialog.AddOption("Change Spawn Size","Size1")
+ Dialog.AddOption("Reset the Spawns","Reset")
+ Dialog.AddOption("Nevermind")
+ end
+ Dialog.Start()
+end
+
+function Movement(NPC,Spawn)
+ Move = true
+ Say(NPC,"Movement Initiated in...")
+ AddTimer(NPC,1000,"Say3")
+ AddTimer(NPC,2000,"Say2")
+ AddTimer(NPC,3000,"Say1")
+ AddTimer(NPC,4000,"Waypoints")
+end
+
+function Say3(NPC,Spawn)
+ Say(NPC,"3")
+end
+
+function Say2(NPC,Spawn)
+ Say(NPC,"2")
+
+end
+
+function Say1(NPC,Spawn)
+ Say(NPC,"1")
+end
+
+function Setup(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Flag1 = GetSpawnByLocationID(zone, 133785993)
+ local Flag2 = GetSpawnByLocationID(zone, 133785994)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ Busy = true
+
+ if Flag1 ==nil then
+ SpawnByLocationID(zone, 133785993)
+ end
+ if Flag2 ==nil then
+ SpawnByLocationID(zone, 133785994)
+ end
+ if Speed1 ==nil then
+ SpawnByLocationID(zone, 133785989)
+ end
+ if Speed2 ==nil then
+ SpawnByLocationID(zone, 133785990)
+ end
+ if Speed4 ==nil then
+ SpawnByLocationID(zone, 133785991)
+ end
+ if Speed6 ==nil then
+ SpawnByLocationID(zone, 133785992)
+ end
+end
+
+function Reset(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Flag1 = GetSpawnByLocationID(zone, 133785993)
+ local Flag2 = GetSpawnByLocationID(zone, 133785994)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ Busy = false
+ Move = false
+
+ if Flag1 ~=nil then
+ Despawn(Flag1)
+ end
+ if Flag2 ~=nil then
+ Despawn(Flag2)
+ end
+ if Speed1 ~=nil then
+ KillSpawn(Speed1)
+ end
+ if Speed2 ~=nil then
+ KillSpawn(Speed2)
+ end
+ if Speed4 ~=nil then
+ KillSpawn(Speed4)
+ end
+ if Speed6 ~=nil then
+ KillSpawn(Speed6)
+ end
+end
+
+
+function Waypoints(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ MovementLoopAddLocation(Speed1,-20, 0, -10,1)
+ MovementLoopAddLocation(Speed1,-20, 0, -40,1)
+ end
+ if Speed2 ~=nil then
+ MovementLoopAddLocation(Speed2,-16.667, 0, -10,2)
+ MovementLoopAddLocation(Speed2,-16.667, 0, -40,2)
+ end
+ if Speed4 ~=nil then
+ MovementLoopAddLocation(Speed4,-13.333, 0, -10,4)
+ MovementLoopAddLocation(Speed4,-13.333, 0, -40,4)
+ end
+ if Speed6 ~=nil then
+ MovementLoopAddLocation(Speed6,-10, 0, -10,6)
+ MovementLoopAddLocation(Speed6,-10, 0, -40,6)
+ end
+end
+
+function SpawnType1(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Controls are limited to 7 Options")
+ Dialog.AddOption("Small Cat","Cat")
+ Dialog.AddOption("Normal Goblin","Goblin")
+ Dialog.AddOption("Large Troglodyte","Ape")
+ Dialog.AddOption("A Froglok","Frog")
+ Dialog.AddOption("Shadowy Fiend","Shadow")
+ Dialog.AddOption("Lucan Dlere","Lucan")
+ Dialog.AddOption("Magestic Unicorn","Unicorn")
+ Dialog.AddOption("Reset the Spawns","Reset")
+ Dialog.AddOption("Nevermind")
+ Dialog.Start()
+ end
+
+function Size1(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Controls are limited to 3 Options")
+ Dialog.AddOption("Smallest Size (16)","Small")
+ Dialog.AddOption("Normal Size (32)","Normal")
+ Dialog.AddOption("Largest Size (50)","Large")
+ Dialog.AddOption("Reset the Spawns","Reset")
+ Dialog.AddOption("Nevermind")
+ Dialog.Start()
+ end
+
+function Small(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"size",16)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"size",16)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"size",16)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"size",16)
+ end
+end
+
+function Normal(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"size",32)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"size",32)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"size",32)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"size",32)
+ end
+end
+
+function Large(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"size",50)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"size",50)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"size",50)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"size",50)
+ end
+end
+
+function Cat(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",305)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",305)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",305)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",305)
+ end
+end
+
+function Goblin(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",145)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",145)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",145)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",145)
+ end
+end
+
+function Ape(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",151)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",151)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",151)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",151)
+ end
+end
+
+function Frog(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",77)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",77)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",77)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",77)
+ end
+end
+
+function Shadow(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",240)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",240)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",240)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",240)
+ end
+end
+
+function Lucan(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",4112)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",4112)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",4112)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",4112)
+ end
+end
+
+
+function Unicorn(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Speed1 = GetSpawnByLocationID(zone, 133785989)
+ local Speed2 = GetSpawnByLocationID(zone, 133785990)
+ local Speed4 = GetSpawnByLocationID(zone, 133785991)
+ local Speed6 = GetSpawnByLocationID(zone, 133785992)
+ if Speed1 ~=nil then
+ SpawnSet(Speed1,"model_type",268)
+ end
+ if Speed2 ~=nil then
+ SpawnSet(Speed2,"model_type",268)
+ end
+ if Speed4 ~=nil then
+ SpawnSet(Speed4,"model_type",268)
+ end
+ if Speed6 ~=nil then
+ SpawnSet(Speed6,"model_type",268)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/BridgeCrosser.lua b/server/SpawnScripts/DoF_design_path_script/BridgeCrosser.lua
new file mode 100755
index 000000000..01a5869da
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/BridgeCrosser.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/BridgeCrosser.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 10:07:47
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+AddTimer(NPC,3000,"Waypoint")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Waypoint(NPC,Spawn)
+ MovementLoopAddLocation(NPC,-70,2.76,-25,4)
+ MovementLoopAddLocation(NPC,-80,2.76,-25,4)
+ MovementLoopAddLocation(NPC,-100,0,-25, 4,3)
+ MovementLoopAddLocation(NPC,-80,2.76,-25,4)
+ MovementLoopAddLocation(NPC,-70,2.76,-25,4)
+ MovementLoopAddLocation(NPC,-47.5,0,-25, 4,3)
+ end
+
+ function death(NPC,Spawn)
+ Despawn(NPC)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/BridgePlatform.lua b/server/SpawnScripts/DoF_design_path_script/BridgePlatform.lua
new file mode 100755
index 000000000..a0705ca45
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/BridgePlatform.lua
@@ -0,0 +1,8 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/BridgePlatform.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.19 04:07:26
+ Script Purpose :
+ :
+--]]
+
diff --git a/server/SpawnScripts/DoF_design_path_script/Chonk.lua b/server/SpawnScripts/DoF_design_path_script/Chonk.lua
new file mode 100755
index 000000000..e65088f93
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/Chonk.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/Chonk.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.20 07:07:58
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -66.19, -0.02, 28.33, 2, 3)
+ MovementLoopAddLocation(NPC, -66.19, -0.02, 28.33, 2, 0)
+ MovementLoopAddLocation(NPC, -70.77, 0, 42.94, 2, 3)
+ MovementLoopAddLocation(NPC, -70.77, 0, 42.94, 2, 0)
+ MovementLoopAddLocation(NPC, -79.66, 0, 26.81, 2, 3)
+ MovementLoopAddLocation(NPC, -79.66, 0, 26.81, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/DoF_design_path_script/LordNagafen.lua b/server/SpawnScripts/DoF_design_path_script/LordNagafen.lua
new file mode 100755
index 000000000..cef5f9664
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/LordNagafen.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/LordNagafen.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 10:07:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetSpawnAnimation(NPC,"1643")
+end
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/MovementwithElevationScroll.lua b/server/SpawnScripts/DoF_design_path_script/MovementwithElevationScroll.lua
new file mode 100755
index 000000000..0e60acded
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/MovementwithElevationScroll.lua
@@ -0,0 +1,67 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/MovementwithElevationScroll.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.19 05:07:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local Busy = false
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC,Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("This is demonstrating movement loops with a number of points. What would you like to do?")
+ if Busy == false then
+ Dialog.AddOption("Setup the Spawns","Setup")
+ Dialog.AddOption("Nevermind")
+else
+
+ Dialog.AddOption("Reset the Spawns","Reset")
+ Dialog.AddOption("Nevermind")
+ end
+ Dialog.Start()
+end
+
+function Setup(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Points2 = GetSpawnByLocationID(zone, 133785999)
+ local Points4 = GetSpawnByLocationID(zone, 133786000)
+ local Points6 = GetSpawnByLocationID(zone, 133785995)
+ Busy = true
+
+ if Points2 ==nil then
+ SpawnByLocationID(zone, 133785999)
+ end
+ if Points4 ==nil then
+ SpawnByLocationID(zone, 133786000)
+ end
+ if Points6 ==nil then
+ SpawnByLocationID(zone, 133785995)
+ end
+end
+
+function Reset(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Points2 = GetSpawnByLocationID(zone, 133785999)
+ local Points4 = GetSpawnByLocationID(zone, 133786000)
+ local Points6 = GetSpawnByLocationID(zone, 133785995)
+ Busy = false
+
+ if Points2 ~=nil then
+ KillSpawn(Points2)
+ end
+ if Points4 ~=nil then
+ KillSpawn(Points4)
+ end
+ if Points6 ~=nil then
+ KillSpawn(Points6)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/Speed1.lua b/server/SpawnScripts/DoF_design_path_script/Speed1.lua
new file mode 100755
index 000000000..b5e7baec7
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/Speed1.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/Speed1.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 06:07:38
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function death(NPC, Spawn)
+ Despawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/Speed2.lua b/server/SpawnScripts/DoF_design_path_script/Speed2.lua
new file mode 100755
index 000000000..893376d76
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/Speed2.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/Speed2.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 06:07:12
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function death(NPC, Spawn)
+ Despawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/Speed4.lua b/server/SpawnScripts/DoF_design_path_script/Speed4.lua
new file mode 100755
index 000000000..628dba0e7
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/Speed4.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/Speed4.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 06:07:38
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function death(NPC, Spawn)
+ Despawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/Speed6.lua b/server/SpawnScripts/DoF_design_path_script/Speed6.lua
new file mode 100755
index 000000000..bc86f1bcf
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/Speed6.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/Speed6.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.18 06:07:50
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function death(NPC, Spawn)
+ Despawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/Venekor.lua b/server/SpawnScripts/DoF_design_path_script/Venekor.lua
new file mode 100755
index 000000000..d1187ee9d
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/Venekor.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/Venekor.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.16 11:07:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetSpawnAnimation(NPC,"1643")
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DoF_design_path_script/aGruttoothlookout.lua b/server/SpawnScripts/DoF_design_path_script/aGruttoothlookout.lua
new file mode 100755
index 000000000..cc347aeca
--- /dev/null
+++ b/server/SpawnScripts/DoF_design_path_script/aGruttoothlookout.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/DoF_design_path_script/aGruttoothlookout.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.19 08:07:58
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 84.06, 0, 11.79, 2, 3)
+ MovementLoopAddLocation(NPC, 51.82, 0, -21.66, 2, 3)
+end
diff --git a/server/SpawnScripts/DownBelow/AncientStatue.lua b/server/SpawnScripts/DownBelow/AncientStatue.lua
index 76f7f74cd..bb25fc252 100755
--- a/server/SpawnScripts/DownBelow/AncientStatue.lua
+++ b/server/SpawnScripts/DownBelow/AncientStatue.lua
@@ -5,19 +5,35 @@
Script Purpose :
:
--]]
-
+--You begin to place the scepter in the statue's hand, but meet some resistance. A ring of filth and decay has built over the ages underneath the palm. As you push the scepter into the open hand of the statue, a small golden object drops from the finger of the semi-closed palm. You bend down to discover a tiny, dirty ring.
local Scepter = 5369 -- An Ancient Scepter
function spawn(NPC)
SetRequiredQuest(NPC, Scepter, 1, 1)
+ SetPlayerProximityFunction(NPC, 10, "InRange", Spawn)
end
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Replace scepter' then
- SetStepComplete(Spawn, Scepter, 1)
+ local con = CreateConversation()
+ AddConversationOption(con, "What could this be...","Success")
+ StartDialogConversation(con, 1, NPC, Spawn, "You begin to place the scepter in the statue's hand, but meet some resistance. A ring of filth and decay has built over the ages underneath the palm. As you push the scepter into the open hand of the statue, a small golden object drops from the finger of the semi-closed palm. You bend down to discover a tiny, dirty ring.")
end
end
+function Success(NPC,Spawn)
+ PlayFlavor(Spawn,"","","gathering_success",0,0)
+ SetStepComplete(Spawn, Scepter, 1)
+ CloseItemConversation(NPC,Spawn)
+end
+
+function InRange(NPC, Spawn)
+ if HasQuest(Spawn, Scepter) and GetQuestStep(Spawn,Scepter)==1 then
+ SendMessage(Spawn,"The ancient scepter thrums as you near the old statue in the nearby alcove.","yellow")
+ SendPopUpMessage(Spawn,"The ancient scepter thrums as you near the old statue in the nearby alcove.",225,225,0)
+end
+end
+
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow/JesterCoffinWidget.lua b/server/SpawnScripts/DownBelow/JesterCoffinWidget.lua
index 08d864b79..58809efd5 100755
--- a/server/SpawnScripts/DownBelow/JesterCoffinWidget.lua
+++ b/server/SpawnScripts/DownBelow/JesterCoffinWidget.lua
@@ -9,7 +9,7 @@
local DefiledDremDrem = 5367
function spawn(NPC)
-SetPlayerProximityFunction(NPC, 10, "InRange", Spawn)
+SetPlayerProximityFunction(NPC, 12, "InRange", Spawn)
end
function casted_on(NPC, Spawn, SpellName)
@@ -22,27 +22,27 @@ end
end
function offer(NPC, Spawn)
- OfferQuest(NPC, Spawn, DefiledDremDrem)
- local con = CreateConversation()
- AddConversationOption(con, "I should find the bones.")
- AddConversationOption(con, "exit")
- StartDialogConversation(con, 1, NPC, Spawn, "Upon opening the coffin, you notice that it is empty. This coffin has been defiled!")
- SetAccessToEntityCommand(Spawn,NPC,"examine coffin", 0)
- SpawnSet(NPC, "show_command_icon", 0)
+ OfferQuest(NPC, Spawn, DefiledDremDrem)
+ local con = CreateConversation()
+ AddConversationOption(con, "I should find the bones.")
+ AddConversationOption(con, "exit")
+ StartDialogConversation(con, 1, NPC, Spawn, "Upon opening the coffin, you notice that it is empty. This coffin has been defiled!")
+ SetAccessToEntityCommand(Spawn,NPC,"examine coffin", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
SpawnSet(NPC, "display_hand_icon", 0)
AddTimer(NPC, 10000, "check", 1, Spawn)
end
function InRange(NPC, Spawn)
if HasQuest(Spawn, DefiledDremDrem) or HasCompletedQuest(Spawn, DefiledDremDrem) then
- SetAccessToEntityCommand(Spawn,NPC,"examine coffin", 0)
+ SetAccessToEntityCommand(Spawn,NPC,"examine coffin", 0)
SpawnSet(NPC, "show_command_icon", 0)
SpawnSet(NPC, "display_hand_icon", 0)
end
end
function check(NPC, Spawn)
- if not HasQuest(Spawn, DefiledDremDrem) and not HasCompletedQuest(Spawn, DefiledDremDrem) then
+ if not HasQuest(Spawn, DefiledDremDrem) and not HasCompletedQuest(Spawn, DefiledDremDrem) then
SpawnSet(NPC, "show_command_icon", 1)
SpawnSet(NPC, "display_hand_icon", 1)
SetAccessToEntityCommand(Spawn,NPC,"examine pump", 1)
diff --git a/server/SpawnScripts/DownBelow/bloodsaber_adjunct3015.lua b/server/SpawnScripts/DownBelow/bloodsaber_adjunct3015.lua
index 8df3ebe26..68bec4f30 100755
--- a/server/SpawnScripts/DownBelow/bloodsaber_adjunct3015.lua
+++ b/server/SpawnScripts/DownBelow/bloodsaber_adjunct3015.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(12 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(24 + dmgMod))
waypoints(NPC)
end
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul.lua b/server/SpawnScripts/DownBelow/forgotten_soul.lua
index fa107f0cf..e48e2c326 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul.lua
@@ -5,27 +5,10 @@
Script Date : 05/14/2020 12:14:42 PM
Script Notes : Locations collected from Live
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul2.lua b/server/SpawnScripts/DownBelow/forgotten_soul2.lua
index e69e2580d..96444434d 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul2.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul2.lua
@@ -5,27 +5,11 @@
Script Date : 05/14/2020 12:15:18 PM
Script Notes : Locations collected from Live
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3.lua b/server/SpawnScripts/DownBelow/forgotten_soul3.lua
index a612964f8..0a0bd4800 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3.lua
@@ -5,27 +5,11 @@
Script Date : 05/14/2020 12:15:24 PM
Script Notes : Locations collected from Live
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3055.lua b/server/SpawnScripts/DownBelow/forgotten_soul3055.lua
index 1ad86bc83..90a6f5d66 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3055.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3055.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3056.lua b/server/SpawnScripts/DownBelow/forgotten_soul3056.lua
index 895e45401..ef8b5d1d7 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3056.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3056.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3057.lua b/server/SpawnScripts/DownBelow/forgotten_soul3057.lua
index 2b49fdbfd..057362a52 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3057.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3057.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3058.lua b/server/SpawnScripts/DownBelow/forgotten_soul3058.lua
index ae40e2116..1aaa1f2b5 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3058.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3058.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3059.lua b/server/SpawnScripts/DownBelow/forgotten_soul3059.lua
index 972dd09b4..6f7fcb228 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3059.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3059.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3060.lua b/server/SpawnScripts/DownBelow/forgotten_soul3060.lua
index 862f77cc3..9a02f2857 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3060.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3060.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul3061.lua b/server/SpawnScripts/DownBelow/forgotten_soul3061.lua
index 8b7953229..ca053e67b 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul3061.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul3061.lua
@@ -5,28 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul4.lua b/server/SpawnScripts/DownBelow/forgotten_soul4.lua
index bc75b040b..be81ce5a5 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul4.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul4.lua
@@ -5,28 +5,12 @@
Script Date : 05/14/2020 12:19:19 PM
Script Notes : Locations collected from Live
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow/forgotten_soul5.lua b/server/SpawnScripts/DownBelow/forgotten_soul5.lua
index 7a9b47b21..c0bdd97f9 100755
--- a/server/SpawnScripts/DownBelow/forgotten_soul5.lua
+++ b/server/SpawnScripts/DownBelow/forgotten_soul5.lua
@@ -5,27 +5,11 @@
Script Date : 05/15/2020 12:27:03 PM
Script Notes : Locations collected from Live
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 10
- local level2 = 9
- local difficulty1 = 6
- local hp1 = 370
- local power1 = 130
- local difficulty2 = 6
- local hp2 = 275
- local power2 = 110
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/DownBelow_Classic/AFallenPrince.lua b/server/SpawnScripts/DownBelow_Classic/AFallenPrince.lua
new file mode 100755
index 000000000..d3c6a0d60
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/AFallenPrince.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/AFallenPrince.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:57
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/ARottingVermin.lua b/server/SpawnScripts/DownBelow_Classic/ARottingVermin.lua
new file mode 100755
index 000000000..628e2a54f
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/ARottingVermin.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/ARottingVermin.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.27 09:09:50
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/MerchantAdairBarnes.lua b/server/SpawnScripts/DownBelow_Classic/MerchantAdairBarnes.lua
index f2d425287..90d0ef10a 100755
--- a/server/SpawnScripts/DownBelow_Classic/MerchantAdairBarnes.lua
+++ b/server/SpawnScripts/DownBelow_Classic/MerchantAdairBarnes.lua
@@ -5,52 +5,82 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local WorkingTheDownBelow = 5365
+local Goods = 5376
+
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- if not HasQuest(Spawn, WorkingTheDownBelow) then
- PlayFlavor(NPC, "voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes001.mp3", "", "", 1654451675, 1398785579, Spawn)
- AddConversationOption(conversation, "What are you doing down here?", "Option1")
- StartConversation(conversation, NPC, Spawn, "Are you looking for anything in particular?")
+ if HasQuest(Spawn,Goods) then
+ NoWork(NPC,Spawn)
+ elseif not HasQuest(Spawn, WorkingTheDownBelow) then
+ StartingHail(NPC,Spawn)
elseif GetQuestStep(Spawn, WorkingTheDownBelow) == 2 or GetQuestStep(Spawn, WorkingTheDownBelow) == 3 or GetQuestStep(Spawn, WorkingTheDownBelow) == 1 then
Quest_Progress(NPC, Spawn)
elseif GetQuestStep(Spawn, WorkingTheDownBelow) == 4 then
- SetStepComplete(Spawn, WorkingTheDownBelow, 4)
- PlayFlavor(NPC, "voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes005.mp3", "", "", 1632932876, 2455444862, Spawn)
- AddConversationOption(conversation, "I still don't see why you're down here.", "Option1")
- AddConversationOption(conversation, "Ok.")
- StartConversation(conversation, NPC, Spawn, "I see that you got everything. Good. Keep in mind that I always need help retrieving goods. If you're ever looking for something to do that'll pass the time, think of me!")
+ Again(NPC,Spawn)
end
end
+function NoWork(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Now listen here, Falin and I have an agreement. This means while you're helping him, you're not helping me. Got it? Now, when you're done helping him, that's another story...")
+ Dialog.AddVoiceover("voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes006.mp3", 3753500674, 2879312497)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
+ Dialog.AddOption("Sure, I understand.")
+ Dialog.Start()
+end
+
+function StartingHail(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you looking for anything in particular?")
+ Dialog.AddVoiceover("voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes001.mp3", 1654451675, 1398785579)
+ Dialog.AddOption("What are you doing down here?", "Option1")
+ Dialog.AddOption("Not really.")
+ Dialog.Start()
+end
+
+function Again(NPC,Spawn)
+ SetStepComplete(Spawn, WorkingTheDownBelow, 4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I see that you got everything. Good. Keep in mind that I always need help retrieving goods. If you're ever looking for something to do that'll pass the time, think of me!")
+ Dialog.AddVoiceover("voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes005.mp3", 1632932876, 2455444862)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I still don't see why you're down here.", "Option1")
+ Dialog.AddOption("Ok.")
+ Dialog.Start()
+end
+
function Option1(NPC, Spawn)
local count = GetQuestCompleteCount(Spawn, WorkingTheDownBelow)
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes002.mp3", "", "", 1226253735, 3601518165, Spawn)
- if not HasQuest(Spawn, WorkingTheDownBelow) and count <= 5 then
- AddConversationOption(conversation, "Yeah, I'll help.", "offer")
- AddConversationOption(conversation, "Not now.")
- StartConversation(conversation, NPC, Spawn, "Aren't you a curious bugger! I'll tell you why, it fills my pockets with coin. You'd be surprised by the folks who come down here to buy this or that. Say, why don't you help me fill some orders? There's coin in it for you.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aren't you a curious bugger! I'll tell you why, it fills my pockets with coin. You'd be surprised by the folks who come down here to buy this or that. Say, why don't you help me fill some orders? There's coin in it for you.")
+ Dialog.AddVoiceover("voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes002.mp3", 1226253735, 3601518165)
+ if not HasQuest(Spawn, WorkingTheDownBelow) and count <= 5 then
+ Dialog.AddOption("Yeah, I'll help.", "offer")
+ end
+ Dialog.AddOption("Not now.")
+ Dialog.Start()
end
- end
function offer(NPC, Spawn)
OfferQuest(NPC, Spawn, WorkingTheDownBelow)
end
-
-
function Quest_Progress(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes004.mp3", "", "", 1486605195, 3427920459, Spawn)
- AddConversationOption(conversation, "Ok.")
- StartConversation(conversation, NPC, Spawn, "No time for dawdling! Hurry up and fill those orders.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No time for dawdling! Hurry up and fill those orders.")
+ Dialog.AddVoiceover("voiceover/english/merchant_adair_barnes/qey_catacomb01/merchant_barnes/merchant_barnes004.mp3", 1486605195, 3427920459)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Ok.")
+ Dialog.Start()
end
function spawn(NPC)
@@ -65,6 +95,6 @@ end
function InRange(NPC, Spawn)
if not HasQuest(Spawn, WorkingTheDownBelow) then
PlayFlavor(NPC, "voiceover/english/merchant_adair_barnes/qey_catacomb01/merchants/qey_catacombs01_merchants_adair_barnes_aoi_callout_4830e9a5.mp3", "Ahhh... bringing yourself down into the muck, eh? Gets mighty dark down these parts. Interest you in a fine torch?", "", 3184947609, 3872372210, Spawn)
+ end
end
- end
diff --git a/server/SpawnScripts/DownBelow_Classic/MerchantFalinShaloon.lua b/server/SpawnScripts/DownBelow_Classic/MerchantFalinShaloon.lua
index f28c5077c..abbca0a67 100755
--- a/server/SpawnScripts/DownBelow_Classic/MerchantFalinShaloon.lua
+++ b/server/SpawnScripts/DownBelow_Classic/MerchantFalinShaloon.lua
@@ -5,53 +5,65 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local GoodsDownBelow = 5376
+local WorkingTheDownBelow = 5365
function spawn(NPC)
ProvidesQuest(NPC, GoodsDownBelow)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
+
function hailed(NPC, Spawn)
- local count = GetQuestCompleteCount(Spawn, GoodsDownBelow)
- FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- if not HasQuest(Spawn, GoodsDownBelow) then
- PlayFlavor(NPC, "voiceover/english/merchant_falin_shaloon/qey_catacomb01/merchant_shaloon/merchant_shaloon001.mp3", "", "", 2831988431, 2273687060, Spawn)
- AddConversationOption(conversation, "I'll be on my way. ")
- if GetLevel(Spawn) <= 20 and count <= 5 then
- AddConversationOption(conversation, "How are you able to do business down here?", "Option1")
- end
- StartConversation(conversation, NPC, Spawn, "Buy something or be on your way! I don't have time to chat with the likes of you...")
- elseif GetQuestStep(Spawn, GoodsDownBelow) == 1 or GetQuestStep(Spawn, GoodsDownBelow) == 2 or GetQuestStep(Spawn, GoodsDownBelow) == 3 or GetQuestStep(Spawn, GoodsDownBelow) == 4 then
- AddConversationOption(conversation, "Yeah, I'm on it.")
- StartConversation(conversation, NPC, Spawn, "You're not going back on your word, are you? I expect you to deliver them goods!")
- elseif GetQuestStep(Spawn, GoodsDownBelow) == 5 then
- SetStepComplete(Spawn, GoodsDownBelow, 5)
- AddConversationOption(conversation, "What do most folks ask you for?", "Option1")
- AddConversationOption(conversation, "Thanks.")
- StartConversation(conversation, NPC, Spawn, "It's hard to imagine anyone wanting this stuff, let alone paying for it. Anyway, you kept up your end of the bargain. Take this for your trouble.")
+ if HasQuest(Spawn,WorkingTheDownBelow) then
+ NoWork(NPC,Spawn)
+ elseif not HasQuest(Spawn, GoodsDownBelow) then
+ StartingHail(NPC,Spawn)
+ elseif GetQuestStep(Spawn, GoodsDownBelow) < 5 then
+ Quest_Progress(NPC, Spawn)
+ elseif GetQuestStep(Spawn, GoodsDownBelow) == 5 then
+ Again(NPC,Spawn)
+ end
end
- end
-
+function StartingHail(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Buy something or be on your way! I don't have time to chat with the likes of you...")
+ Dialog.AddVoiceover("voiceover/english/merchant_falin_shaloon/qey_catacomb01/merchant_shaloon/merchant_shaloon001.mp3", 2831988431, 2273687060)
+ Dialog.AddOption("How are you able to do business down here?", "Option1")
+
+ Dialog.AddOption("I'll be on my way. ")
+ Dialog.Start()
+end
function Option1(NPC, Spawn)
- local count = GetQuestCompleteCount(Spawn, GoodsDownBelow)
+ local count = GetQuestCompleteCount(Spawn, WorkingTheDownBelow)
+
FaceTarget(NPC, Spawn)
- local conversation = CreateConversation()
- PlayFlavor(NPC, "")
- if count <= 5 then
- AddConversationOption(conversation, "I'm interested.", "offer")
- end
- AddConversationOption(conversation, "Not today.")
- StartConversation(conversation, NPC, Spawn, "I get requests for this or that, used for who knows what. It seems that the majority of my clientele have to get their supplies here, 'cause it just ain't available top side. Say, how would you like to make yourself useful?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I get requests for this or that, used for who knows what. It seems that the majority of my clientele have to get their supplies here, 'cause it just ain't available top side. Say, how would you like to make yourself useful?")
+ Dialog.AddVoiceover("voiceover/english/merchant_falin_shaloon/qey_catacomb01/merchant_shaloon/merchant_shaloon002.mp3", 2160282903, 1448473468)
+ if GetLevel(Spawn) <= 20 and count <= 5 then
+ Dialog.AddOption("I'm interested.", "offer")
+ end
+ Dialog.AddOption("Not today.")
+ Dialog.Start()
end
-
+function NoWork(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Word gets around quickly down here; so don't think about trying to pull one over on me. I won't have you working for me while you're doing work for Barnes, got it!?")
+ Dialog.AddVoiceover("voiceover/english/merchant_falin_shaloon/qey_catacomb01/merchant_shaloon/merchant_shaloon006.mp3", 176112027, 123486081)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddOption("Maybe I'll come back when I'm through.")
+ Dialog.Start()
+end
function offer(NPC, Spawn)
@@ -59,7 +71,26 @@ OfferQuest(NPC, Spawn, GoodsDownBelow)
end
+function Quest_Progress(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're not going back on your word, are you? I expect you to deliver them goods!")
+ Dialog.AddVoiceover("voiceover/english/merchant_falin_shaloon/qey_catacomb01/merchant_shaloon/merchant_shaloon004.mp3", 718963330, 3239432203)
+ Dialog.AddOption("Yeah, I'm on it.")
+ Dialog.Start()
+end
+function Again(NPC, Spawn)
+ SetStepComplete(Spawn, GoodsDownBelow, 5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's hard to imagine anyone wanting this stuff, let alone paying for it. Anyway, you kept up your end of the bargain. Take this for your trouble.")
+ Dialog.AddVoiceover("voiceover/english/merchant_falin_shaloon/qey_catacomb01/merchant_shaloon/merchant_shaloon005.mp3", 1650487324, 124661569)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("What do most folks ask you for?", "Option1")
+ Dialog.AddOption("Thanks.")
+ Dialog.Start()
+end
function InRange(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/TheCreeper.lua b/server/SpawnScripts/DownBelow_Classic/TheCreeper.lua
new file mode 100755
index 000000000..ee5d966d1
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/TheCreeper.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/TheCreeper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:25
+ Script Purpose :
+ :
+--]]
+
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/TheCryptProtector.lua b/server/SpawnScripts/DownBelow_Classic/TheCryptProtector.lua
new file mode 100755
index 000000000..1afd1599a
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/TheCryptProtector.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/TheCryptProtector.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.16 03:10:35
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/TheGroundsKeeper.lua b/server/SpawnScripts/DownBelow_Classic/TheGroundsKeeper.lua
new file mode 100755
index 000000000..f57c83455
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/TheGroundsKeeper.lua
@@ -0,0 +1,213 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/TheGroundsKeeper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:48
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+ AddTimer(NPC, 6000,"waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -77.8, -0.13, -132.99, 2, 0)
+ MovementLoopAddLocation(NPC, -83.2, -0.11, -137.97, 2, 0)
+ MovementLoopAddLocation(NPC, -86.93, -0.08, -135.68, 2, 0)
+ MovementLoopAddLocation(NPC, -90.96, 0.45, -131.41, 2, 0)
+ MovementLoopAddLocation(NPC, -95.33, 0.45, -126.78, 2, 0)
+ MovementLoopAddLocation(NPC, -103.06, -0.09, -119.42, 2, 0)
+ MovementLoopAddLocation(NPC, -105.92, -0.12, -116.71, 2, 0)
+ MovementLoopAddLocation(NPC, -112.47, -0.14, -115.38, 2, 0)
+ MovementLoopAddLocation(NPC, -118.05, -0.09, -116.99, 2, 0)
+ MovementLoopAddLocation(NPC, -121.33, 0.42, -119.42, 2, 0)
+ MovementLoopAddLocation(NPC, -126.67, -0.13, -125.38, 2, 0)
+ MovementLoopAddLocation(NPC, -127.77, -0.11, -130.09, 2, 0)
+ MovementLoopAddLocation(NPC, -129.2, -0.07, -136.25, 2, 0)
+ MovementLoopAddLocation(NPC, -128.07, -0.1, -143.89, 2, 0)
+ MovementLoopAddLocation(NPC, -124.5, -0.12, -148.49, 2, 0)
+ MovementLoopAddLocation(NPC, -121.16, 0.41, -152.01, 2, 0)
+ MovementLoopAddLocation(NPC, -119.99, -0.08, -155.59, 2, 0)
+ MovementLoopAddLocation(NPC, -119.67, -0.02, -173.11, 2, 0)
+ MovementLoopAddLocation(NPC, -119.99, -0.12, -176.73, 2, 0)
+ MovementLoopAddLocation(NPC, -121.76, 0.5, -179.62, 2, 0)
+ MovementLoopAddLocation(NPC, -124.61, -0.12, -181.42, 2, 0)
+ MovementLoopAddLocation(NPC, -131.85, 0.47, -181.08, 2, 0)
+ MovementLoopAddLocation(NPC, -138.47, -0.3, -180.48, 2, 0)
+ MovementLoopAddLocation(NPC, -148.46, -0.38, -176.22, 2, 0)
+ MovementLoopAddLocation(NPC, -158.5, -0.39, -172.01, 2, 0)
+ MovementLoopAddLocation(NPC, -165.88, 0.36, -171.48, 2, 0)
+ MovementLoopAddLocation(NPC, -169.52, -0.08, -173.24, 2, 0)
+ MovementLoopAddLocation(NPC, -171.49, -0.09, -174.38, 2, 0)
+ MovementLoopAddLocation(NPC, -173.22, 0.02, -178.61, 2, 0)
+ MovementLoopAddLocation(NPC, -172.94, -0.12, -182.75, 2, 0)
+ MovementLoopAddLocation(NPC, -174.21, -0.13, -186.73, 2, 0)
+ MovementLoopAddLocation(NPC, -175.67, -0.07, -188.49, 2, 0)
+ MovementLoopAddLocation(NPC, -180.64, -0.15, -189.99, 2, 5)
+ MovementLoopAddLocation(NPC, -180.64, -0.15, -189.99, 2, 0)
+ MovementLoopAddLocation(NPC, -177.99, -0.09, -189.84, 2, 0)
+ MovementLoopAddLocation(NPC, -175.43, -0.07, -188.34, 2, 0)
+ MovementLoopAddLocation(NPC, -174.01, -0.17, -186.06, 2, 0)
+ MovementLoopAddLocation(NPC, -173.68, 0.02, -180.28, 2, 0)
+ MovementLoopAddLocation(NPC, -173.46, -0.01, -176.63, 2, 0)
+ MovementLoopAddLocation(NPC, -172.63, -0.11, -175.37, 2, 0)
+ MovementLoopAddLocation(NPC, -169.89, -0.09, -173.04, 2, 0)
+ MovementLoopAddLocation(NPC, -166.1, 0.35, -171.55, 2, 0)
+ MovementLoopAddLocation(NPC, -160.27, -0.32, -171.59, 2, 0)
+ MovementLoopAddLocation(NPC, -149.92, -0.36, -175.93, 2, 0)
+ MovementLoopAddLocation(NPC, -139.62, -0.35, -180.74, 2, 0)
+ MovementLoopAddLocation(NPC, -132.42, 0.48, -181.44, 2, 0)
+ MovementLoopAddLocation(NPC, -127.7, -0.08, -181.54, 2, 0)
+ MovementLoopAddLocation(NPC, -122.27, 0.52, -179.73, 2, 0)
+ MovementLoopAddLocation(NPC, -119.59, 0.02, -174.39, 2, 0)
+ MovementLoopAddLocation(NPC, -119.29, -0.1, -160.63, 2, 0)
+ MovementLoopAddLocation(NPC, -119.21, -0.08, -156.99, 2, 0)
+ MovementLoopAddLocation(NPC, -121.04, 0.38, -152.91, 2, 0)
+ MovementLoopAddLocation(NPC, -123.44, -0.1, -150.73, 2, 0)
+ MovementLoopAddLocation(NPC, -126.65, -0.04, -147.81, 2, 0)
+ MovementLoopAddLocation(NPC, -127.42, -0.06, -145.69, 2, 0)
+ MovementLoopAddLocation(NPC, -128.17, -0.12, -139.2, 2, 0)
+ MovementLoopAddLocation(NPC, -129.25, -0.04, -139.54, 2, 0)
+ MovementLoopAddLocation(NPC, -129.36, -0.05, -137.1, 2, 0)
+ MovementLoopAddLocation(NPC, -127.95, -0.14, -131.41, 2, 0)
+ MovementLoopAddLocation(NPC, -127.69, 0.23, -129.34, 2, 0)
+ MovementLoopAddLocation(NPC, -125.23, -0.13, -124.09, 2, 0)
+ MovementLoopAddLocation(NPC, -121.89, 0.55, -120.25, 2, 0)
+ MovementLoopAddLocation(NPC, -118.8, -0.08, -117.79, 2, 0)
+ MovementLoopAddLocation(NPC, -113.58, -0.13, -115.24, 2, 0)
+ MovementLoopAddLocation(NPC, -109.4, -0.08, -115.65, 2, 0)
+ MovementLoopAddLocation(NPC, -104.39, -0.09, -118.25, 2, 0)
+ MovementLoopAddLocation(NPC, -96.26, 0.46, -126.39, 2, 0)
+ MovementLoopAddLocation(NPC, -91.75, 0.46, -130.87, 2, 0)
+ MovementLoopAddLocation(NPC, -84.16, -0.12, -138.68, 2, 0)
+ MovementLoopAddLocation(NPC, -80.36, -0.09, -135.64, 2, 0)
+--
+ MovementLoopAddLocation(NPC, -79.75, -0.1, -134.91, 2, 0)
+ MovementLoopAddLocation(NPC, -76.48, -0.08, -137.59, 2, 0)
+ MovementLoopAddLocation(NPC, -73.14, -0.1, -141.61, 2, 0)
+ MovementLoopAddLocation(NPC, -71.11, -0.06, -145.17, 2, 0)
+ MovementLoopAddLocation(NPC, -70.44, -0.05, -149.51, 2, 0)
+ MovementLoopAddLocation(NPC, -69.09, -0.11, -152.6, 2, 0)
+ MovementLoopAddLocation(NPC, -64.08, 0.09, -153.17, 2, 0)
+ MovementLoopAddLocation(NPC, -58.03, -0.15, -151.86, 2, 0)
+ MovementLoopAddLocation(NPC, -53.13, 0.16, -148.3, 2, 0)
+ MovementLoopAddLocation(NPC, -46.16, -1.07, -141.86, 2, 0)
+ MovementLoopAddLocation(NPC, -38.65, -0.22, -134.71, 2, 0)
+ MovementLoopAddLocation(NPC, -35.93, -0.01, -132.03, 2, 0)
+ MovementLoopAddLocation(NPC, -34.23, 0.54, -127.02, 2, 0)
+ MovementLoopAddLocation(NPC, -34.19, -0.11, -122.34, 2, 0)
+ MovementLoopAddLocation(NPC, -34.49, -0.08, -117.06, 2, 0)
+ MovementLoopAddLocation(NPC, -34.46, -0.06, -111.55, 2, 0)
+ MovementLoopAddLocation(NPC, -30.79, 0.41, -107.34, 2, 0)
+ MovementLoopAddLocation(NPC, -27.12, -1, -104.03, 2, 0)
+ MovementLoopAddLocation(NPC, -21.52, -1.09, -98.69, 2, 0)
+ MovementLoopAddLocation(NPC, -18.51, 0.34, -95.64, 2, 0)
+ MovementLoopAddLocation(NPC, -14.84, -0.06, -91.54, 2, 0)
+ MovementLoopAddLocation(NPC, -12.15, -0.06, -91.39, 2, 0)
+ MovementLoopAddLocation(NPC, -8.92, -0.13, -93.95, 2, 0)
+ MovementLoopAddLocation(NPC, -5.31, 0.44, -97.91, 2, 0)
+ MovementLoopAddLocation(NPC, 0.03, -0.1, -103.24, 2, 0)
+ MovementLoopAddLocation(NPC, 2.24, -0.02, -106.59, 2, 0)
+ MovementLoopAddLocation(NPC, 5.17, -0.02, -108.34, 2, 0)
+ MovementLoopAddLocation(NPC, 8.19, -0.11, -107.07, 2, 0)
+ MovementLoopAddLocation(NPC, 11.5, 0.19, -104.03, 2, 0)
+ MovementLoopAddLocation(NPC, 20.74, 0.13, -96.11, 2, 0)
+ MovementLoopAddLocation(NPC, 22.01, 0.46, -93.3, 2, 0)
+ MovementLoopAddLocation(NPC, 21.55, 0.27, -88.6, 2, 0)
+ MovementLoopAddLocation(NPC, 21.27, -1.01, -83.74, 2, 0)
+ MovementLoopAddLocation(NPC, 21.44, -1.1, -76.56, 2, 0)
+ MovementLoopAddLocation(NPC, 21.3, -0.08, -72.05, 2, 0)
+ MovementLoopAddLocation(NPC, 21.27, 0.57, -68.61, 2, 0)
+ MovementLoopAddLocation(NPC, 19.5, -0.1, -64.81, 2, 0)
+ MovementLoopAddLocation(NPC, 16.78, -0.07, -61.82, 2, 0)
+ MovementLoopAddLocation(NPC, 14.19, -0.08, -60.96, 2, 0)
+ MovementLoopAddLocation(NPC, 11.09, -0.08, -60.5, 2, 0)
+ MovementLoopAddLocation(NPC, 0.17, -0.09, -60.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1.21, -0.12, -60.39, 2, 0)
+ MovementLoopAddLocation(NPC, -4.29, -0.08, -59.27, 2, 0)
+ MovementLoopAddLocation(NPC, -7.1, -0.12, -56.66, 2, 0)
+ MovementLoopAddLocation(NPC, -9.9, 0.53, -53.88, 2, 0)
+ MovementLoopAddLocation(NPC, -13.54, -0.07, -50.08, 2, 0)
+ MovementLoopAddLocation(NPC, -15.14, -0.13, -47.72, 2, 0)
+ MovementLoopAddLocation(NPC, -15.58, 0.57, -45.34, 2, 0)
+ MovementLoopAddLocation(NPC, -15.2, -0.12, -41.81, 2, 0)
+ MovementLoopAddLocation(NPC, -13.48, -0.12, -40.35, 2, 0)
+ MovementLoopAddLocation(NPC, -4.5, -0.1, -31.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2.07, -0.11, -29.11, 2, 0)
+ MovementLoopAddLocation(NPC, -1.16, 0.51, -27.35, 2, 0)
+ MovementLoopAddLocation(NPC, -0.19, -0.08, -24.39, 2, 0)
+ MovementLoopAddLocation(NPC, -0.16, -0.11, -22.42, 2, 5)
+ MovementLoopAddLocation(NPC, -0.16, -0.11, -22.42, 2, 0)
+ MovementLoopAddLocation(NPC, 0.14, -0.09, -24.29, 2, 0)
+ MovementLoopAddLocation(NPC, -0.77, 0.51, -26.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2.32, -0.12, -29.14, 2, 0)
+ MovementLoopAddLocation(NPC, -4.26, -0.09, -31.27, 2, 0)
+ MovementLoopAddLocation(NPC, -13.18, -0.1, -39.41, 2, 0)
+ MovementLoopAddLocation(NPC, -14.87, -0.12, -41.79, 2, 0)
+ MovementLoopAddLocation(NPC, -14.93, 0.6, -44.77, 2, 0)
+ MovementLoopAddLocation(NPC, -15, -0.11, -47.9, 2, 0)
+ MovementLoopAddLocation(NPC, -12.68, -0.08, -50.63, 2, 0)
+ MovementLoopAddLocation(NPC, -10.18, 0.53, -53.29, 2, 0)
+ MovementLoopAddLocation(NPC, -6.21, -0.12, -56.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2.92, -0.09, -60.02, 2, 0)
+ MovementLoopAddLocation(NPC, 0.37, -0.09, -60.37, 2, 0)
+ MovementLoopAddLocation(NPC, 10.28, -0.1, -60.31, 2, 0)
+ MovementLoopAddLocation(NPC, 12.81, -0.03, -60.04, 2, 0)
+ MovementLoopAddLocation(NPC, 15.06, -0.13, -61.26, 2, 0)
+ MovementLoopAddLocation(NPC, 20.06, 0.09, -65.56, 2, 0)
+ MovementLoopAddLocation(NPC, 21.22, 0.54, -68.19, 2, 0)
+ MovementLoopAddLocation(NPC, 21.59, -0.16, -72.56, 2, 0)
+ MovementLoopAddLocation(NPC, 21.5, -1.03, -83.6, 2, 0)
+ MovementLoopAddLocation(NPC, 21.51, 0.17, -87.64, 2, 0)
+ MovementLoopAddLocation(NPC, 21.52, 0.45, -93.65, 2, 0)
+ MovementLoopAddLocation(NPC, 21.28, 0.12, -95.35, 2, 0)
+ MovementLoopAddLocation(NPC, 13.16, 0.14, -103.65, 2, 0)
+ MovementLoopAddLocation(NPC, 8.31, -0.11, -107.24, 2, 0)
+ MovementLoopAddLocation(NPC, 6.78, -0.05, -108.89, 2, 0)
+ MovementLoopAddLocation(NPC, 4.24, -0.03, -107.6, 2, 0)
+ MovementLoopAddLocation(NPC, 1.28, -0.07, -104.52, 2, 0)
+ MovementLoopAddLocation(NPC, -4.6, 0.45, -98.26, 2, 0)
+ MovementLoopAddLocation(NPC, -10.66, -0.09, -92.61, 2, 0)
+ MovementLoopAddLocation(NPC, -12.89, -0.06, -90.62, 2, 0)
+ MovementLoopAddLocation(NPC, -15.45, -0.08, -92.14, 2, 0)
+ MovementLoopAddLocation(NPC, -17.81, 0.31, -94.55, 2, 0)
+ MovementLoopAddLocation(NPC, -21.93, -1.08, -98.57, 2, 0)
+ MovementLoopAddLocation(NPC, -26.6, -1.16, -103.42, 2, 0)
+ MovementLoopAddLocation(NPC, -29.65, 0.51, -106.44, 2, 0)
+ MovementLoopAddLocation(NPC, -32.62, 0.02, -109.38, 2, 0)
+ MovementLoopAddLocation(NPC, -33.77, -0.08, -112.13, 2, 0)
+ MovementLoopAddLocation(NPC, -33.84, -0.09, -116.08, 2, 0)
+ MovementLoopAddLocation(NPC, -33.96, -0.14, -122.8, 2, 0)
+ MovementLoopAddLocation(NPC, -34.01, 0.54, -125.6, 2, 0)
+ MovementLoopAddLocation(NPC, -34.07, -0.09, -129.21, 2, 0)
+ MovementLoopAddLocation(NPC, -36.29, -0.01, -131.75, 2, 0)
+ MovementLoopAddLocation(NPC, -38, 0, -133.5, 2, 0)
+ MovementLoopAddLocation(NPC, -43.94, -1.08, -139.95, 2, 0)
+ MovementLoopAddLocation(NPC, -46.33, -1.08, -142.05, 2, 0)
+ MovementLoopAddLocation(NPC, -52.51, 0.2, -148.05, 2, 0)
+ MovementLoopAddLocation(NPC, -56.19, -0.03, -150.91, 2, 0)
+ MovementLoopAddLocation(NPC, -58.44, -0.15, -151.72, 2, 0)
+ MovementLoopAddLocation(NPC, -62.93, -0.09, -152.65, 2, 0)
+ MovementLoopAddLocation(NPC, -69.98, -0.11, -152.51, 2, 0)
+ MovementLoopAddLocation(NPC, -69.61, 0.23, -148.64, 2, 0)
+ MovementLoopAddLocation(NPC, -70.54, -0.06, -144.72, 2, 0)
+ MovementLoopAddLocation(NPC, -71.84, -0.09, -142.65, 2, 0)
+ MovementLoopAddLocation(NPC, -74.82, -0.11, -139.57, 2, 0)
+ MovementLoopAddLocation(NPC, -79.26, -0.1, -134.88, 2, 0)
+ MovementLoopAddLocation(NPC, -81.37, -0.09, -136.55, 2, 0)
+ MovementLoopAddLocation(NPC, -88.03, -0.11, -143.44, 2, 0)
+ MovementLoopAddLocation(NPC, -88.03, -0.11, -143.44, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberCenterPatrol.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberCenterPatrol.lua
index 4fa840ed2..d4712c4bb 100755
--- a/server/SpawnScripts/DownBelow_Classic/aBloodsaberCenterPatrol.lua
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberCenterPatrol.lua
@@ -5,10 +5,27 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ --if not HasLanguage(Spawn,26) then
+ --Garbled(NPC,Spawn)
+ --end
+
+ if GetSpawnID(NPC) == 8340015 then
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(12 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(24 + dmgMod))
+ else
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ end
+
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberLeftPatrol.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberLeftPatrol.lua
index 9baf7f29a..3f8e641dc 100755
--- a/server/SpawnScripts/DownBelow_Classic/aBloodsaberLeftPatrol.lua
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberLeftPatrol.lua
@@ -5,10 +5,16 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ --if not HasLanguage(Spawn,26) then
+ --Garbled(NPC,Spawn)
+ --end
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberRightPatrol.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberRightPatrol.lua
index 9dbb121f2..bb262488b 100755
--- a/server/SpawnScripts/DownBelow_Classic/aBloodsaberRightPatrol.lua
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberRightPatrol.lua
@@ -5,10 +5,16 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ -- if not HasLanguage(Spawn,26) then
+ -- Garbled(NPC,Spawn)
+ --end
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberinitiate.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberinitiate.lua
new file mode 100755
index 000000000..15427e62c
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberinitiate.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aBloodsaberinitiate.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberlookout.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberlookout.lua
new file mode 100755
index 000000000..afd3e9193
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberlookout.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aBloodsaberlookout.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:34
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ -- if not HasLanguage(Spawn,26) then
+ --Garbled(NPC,Spawn)
+ --end
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsabermeddler.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsabermeddler.lua
new file mode 100755
index 000000000..4831d26ca
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsabermeddler.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aBloodsabermeddler.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.13 03:09:11
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ --if not HasLanguage(Spawn,26) then
+ --Garbled(NPC,Spawn)
+ --end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsabermeddlerRoam.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsabermeddlerRoam.lua
new file mode 100644
index 000000000..367ccbad3
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsabermeddlerRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aBloodsabermeddlerRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 10:12:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 5, 10)
+ ratonga(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberscout1.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberscout1.lua
new file mode 100755
index 000000000..2b43496d4
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberscout1.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aBloodsaberscout1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 07:01:23
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ --if not HasLanguage(Spawn,26) then
+ --Garbled(NPC,Spawn)
+ --end
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 8.55, -0.11, -107.25, 2, 3)
+ MovementLoopAddLocation(NPC, 12.39, 0.15, -104.55, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 12.39, 0.15, -104.55, 2, 0)
+ MovementLoopAddLocation(NPC, 6.32, -0.05, -107.98, 2, 0)
+ MovementLoopAddLocation(NPC, 3.23, -0.03, -107.39, 2, 0)
+ MovementLoopAddLocation(NPC, -0.7, -0.1, -103.2, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -0.7, -0.1, -103.2, 2, 0)
+ MovementLoopAddLocation(NPC, 3.78, -0.1, -104.67, 2, math.random(5,10))
+-- MovementLoopAddLocation(NPC, 3.32, -0.1, -104.63, 2, 0)
+-- MovementLoopAddLocation(NPC, 3.32, -0.1, -104.63, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.45, -0.03, -107.37, 2, 0)
+ MovementLoopAddLocation(NPC, 7.27, -0.09, -107.81, 2, 0)
+ MovementLoopAddLocation(NPC, 13.88, 0.14, -104.39, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 13.88, 0.14, -104.39, 2, 0)
+ MovementLoopAddLocation(NPC, 7.34, 0.2, -104.47, 2, 0)
+ MovementLoopAddLocation(NPC, 7.89, -0.03, -104.4, 2, 0)
+ MovementLoopAddLocation(NPC, 7.89, -0.03, -104.4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 7.06, -0.09, -107.77, 2, 0)
+ MovementLoopAddLocation(NPC, 3.27, -0.05, -107.11, 2, 0)
+ MovementLoopAddLocation(NPC, 3.8, 0.13, -102.28, 2, math.random(5,10))
+-- MovementLoopAddLocation(NPC, 3.75, -0.03, -102.84, 2, math.random(5,10))
+-- MovementLoopAddLocation(NPC, 3.75, -0.03, -102.84, 2, 0)
+ MovementLoopAddLocation(NPC, 2.51, -0.11, -104.87, 2, 0)
+ MovementLoopAddLocation(NPC, 3.75, -0.08, -106.9, 2, 0)
+ MovementLoopAddLocation(NPC, 8.55, -0.11, -107.25, 2, 4)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/aBloodsaberscout2.lua b/server/SpawnScripts/DownBelow_Classic/aBloodsaberscout2.lua
new file mode 100755
index 000000000..a4368a304
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aBloodsaberscout2.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aBloodsaberscout2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:10
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+ --if not HasLanguage(Spawn,26) then
+ -- Garbled(NPC,Spawn)
+ -- end
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 2.4, -0.06, -105.92, 2, 4)
+ MovementLoopAddLocation(NPC, -1.06, -0.11, -102.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -1.06, -0.11, -102.56, 2, 0)
+ MovementLoopAddLocation(NPC, 2.2, -0.02, -106.53, 2, 0)
+ MovementLoopAddLocation(NPC, 6.03, -0.05, -108.01, 2, 0)
+ MovementLoopAddLocation(NPC, 10.85, 0.17, -103.98, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 10.85, 0.17, -103.98, 2, 0)
+ MovementLoopAddLocation(NPC, 7.71, -0.09, -107.95, 2, 0)
+ MovementLoopAddLocation(NPC, 4.38, -0.04, -107.53, 2, 0)
+ MovementLoopAddLocation(NPC, 3.15, -0.12, -105.54, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 3.15, -0.12, -105.54, 2, 0)
+ MovementLoopAddLocation(NPC, 4.2, -0.01, -108.28, 2, 0)
+ MovementLoopAddLocation(NPC, 10.57, -0.07, -107.69, 2, 0)
+ MovementLoopAddLocation(NPC, 12.16, 0.04, -106.97, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 12.16, 0.04, -106.97, 2, 0)
+ MovementLoopAddLocation(NPC, 7.89, -0.06, -108.33, 2, 0)
+ MovementLoopAddLocation(NPC, 3.96, -0.06, -107.18, 2, 0)
+ MovementLoopAddLocation(NPC, 0.08, -0.09, -104.24, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 0.08, -0.09, -104.24, 2, 0)
+ MovementLoopAddLocation(NPC, 0.52, -0.05, -101.78, 2, 0)
+ MovementLoopAddLocation(NPC, -0.2, -0.07, -101.39, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -0.2, -0.07, -101.39, 2, 0)
+ MovementLoopAddLocation(NPC, 2.4, -0.07, -103.88, 2, 0)
+ MovementLoopAddLocation(NPC, 3.34, -0.05, -107.11, 2, 0)
+ MovementLoopAddLocation(NPC, 6.83, -0.07, -107.96, 2, 0)
+ MovementLoopAddLocation(NPC, 8.14, -0.1, -106.27, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, 8.14, -0.1, -106.27, 2, 0)
+ MovementLoopAddLocation(NPC, 5.72, -0.05, -107.8, 2, 0)
+ MovementLoopAddLocation(NPC, 2.4, -0.06, -105.92, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/acoiledburrower.lua b/server/SpawnScripts/DownBelow_Classic/acoiledburrower.lua
index 4dd377fbc..6a765733b 100755
--- a/server/SpawnScripts/DownBelow_Classic/acoiledburrower.lua
+++ b/server/SpawnScripts/DownBelow_Classic/acoiledburrower.lua
@@ -5,27 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/DownBelow_Classic/acreeperprotector.lua b/server/SpawnScripts/DownBelow_Classic/acreeperprotector.lua
new file mode 100755
index 000000000..77592c01b
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/acreeperprotector.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/acreeperprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/acryptsubstance.lua b/server/SpawnScripts/DownBelow_Classic/acryptsubstance.lua
index 5720fd4e8..ac0ee4310 100755
--- a/server/SpawnScripts/DownBelow_Classic/acryptsubstance.lua
+++ b/server/SpawnScripts/DownBelow_Classic/acryptsubstance.lua
@@ -5,27 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/DownBelow_Classic/acryptsubstanceLocal.lua b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceLocal.lua
index 22f95c31b..adcb95105 100755
--- a/server/SpawnScripts/DownBelow_Classic/acryptsubstanceLocal.lua
+++ b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceLocal.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 1, 3, 5)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1,math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail1.lua b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail1.lua
index c208c501b..f1ecb6e01 100755
--- a/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail1.lua
+++ b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail1.lua
@@ -5,34 +5,18 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
--AddTimer(NPC,(MakeRandomInt(5000,6000)),"ChooseMovement")
ChooseMovement(NPC)
end
function ChooseMovement(NPC)
- local route = math.random(1,3)
+
+ local route = MakeRandomInt(1,3)
if route == 1 then
RouteOne(NPC, Spawn)
elseif route == 2 then
diff --git a/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail2.lua b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail2.lua
new file mode 100755
index 000000000..74da0d9a3
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceRail2.lua
@@ -0,0 +1,106 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/acryptsubstanceRail2.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.12 07:11:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+ --AddTimer(NPC,(MakeRandomInt(5000,6000)),"ChooseMovement")
+ ChooseMovement(NPC)
+end
+
+function ChooseMovement(NPC)
+
+ local route = MakeRandomInt(1,2)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ --elseif route == 2 then
+ --RouteTwo(NPC, Spawn)
+ elseif route == 2 then
+ RouteThree(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ MovementLoopAddLocation(NPC, -128.28, -0.12, -136.44, 2, 0)
+ MovementLoopAddLocation(NPC, -127.63, 0.35, -128.26, 2, 0)
+ MovementLoopAddLocation(NPC, -122.16, 0.56, -120.38, 2, 0)
+ MovementLoopAddLocation(NPC, -113.81, -0.14, -115.16, 2, 0)
+ MovementLoopAddLocation(NPC, -106.32, -0.13, -117.06, 2, 0)
+ MovementLoopAddLocation(NPC, -87.83, -0.08, -134.85, 2, 0)
+ MovementLoopAddLocation(NPC, -103.93, -0.09, -118.45, 2, 0)
+ MovementLoopAddLocation(NPC, -107.44, -0.12, -116.05, 2, 0)
+ MovementLoopAddLocation(NPC, -113.72, -0.1, -115.79, 2, 0)
+ MovementLoopAddLocation(NPC, -121.54, 0.51, -119.76, 2, 0)
+ MovementLoopAddLocation(NPC, -127.27, 0.03, -126.7, 2, 0)
+ MovementLoopAddLocation(NPC, -128.2, -0.13, -137.16, 2, 0, "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ MovementLoopAddLocation(NPC, -128.2, -0.13, -137.16, 2, 0)
+ MovementLoopAddLocation(NPC, -151.92, -0.11, -136.84, 2, 0)
+ MovementLoopAddLocation(NPC, -156.74, -0.05, -135.94, 2, 0)
+ MovementLoopAddLocation(NPC, -158.81, -0.05, -132.26, 2, 0)
+ MovementLoopAddLocation(NPC, -158.1, -0.07, -108.92, 2, 0)
+ MovementLoopAddLocation(NPC, -157.15, 0.33, -105.8, 2, 0)
+ MovementLoopAddLocation(NPC, -146.23, -0.12, -79.18, 2, 0)
+ MovementLoopAddLocation(NPC, -158.49, -0.06, -110.44, 2, 0)
+ MovementLoopAddLocation(NPC, -158.87, 0, -131.56, 2, 0)
+ MovementLoopAddLocation(NPC, -157.68, -0.04, -134.16, 2, 0)
+ MovementLoopAddLocation(NPC, -156.09, -0.06, -136.1, 2, 0)
+ MovementLoopAddLocation(NPC, -130.92, -0.05, -136.47, 2, 0)
+ MovementLoopAddLocation(NPC, -128.2, -0.13, -137.16, 2, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ MovementLoopAddLocation(NPC, -128.2, -0.13, -137.16, 2, 0)
+ MovementLoopAddLocation(NPC, -127.9, -0.09, -144.12, 2, 0)
+ MovementLoopAddLocation(NPC, -124.11, -0.1, -149.26, 2, 0)
+ MovementLoopAddLocation(NPC, -121.28, 0.4, -151.86, 2, 0)
+ MovementLoopAddLocation(NPC, -119.44, -0.08, -156.46, 2, 0)
+ MovementLoopAddLocation(NPC, -119.57, -0.12, -176.72, 2, 0)
+ MovementLoopAddLocation(NPC, -121.85, 0.53, -180.23, 2, 0)
+ MovementLoopAddLocation(NPC, -127.11, -0.08, -181.54, 2, 0)
+ MovementLoopAddLocation(NPC, -137.84, -0.32, -180.58, 2, 0)
+ MovementLoopAddLocation(NPC, -149.86, -0.34, -176.32, 2, 0)
+ MovementLoopAddLocation(NPC, -159.7, -0.34, -171.93, 2, 0)
+ MovementLoopAddLocation(NPC, -165.1, 0.15, -171.13, 2, 0)
+ MovementLoopAddLocation(NPC, -172.22, -0.1, -174.76, 2, 0)
+ MovementLoopAddLocation(NPC, -173.23, -0.08, -181.56, 2, 0)
+ MovementLoopAddLocation(NPC, -173.82, -0.07, -187.26, 2, 0)
+ MovementLoopAddLocation(NPC, -176.76, -0.08, -189.14, 2, 0)
+ MovementLoopAddLocation(NPC, -180.28, -0.14, -189.89, 2, 0)
+ MovementLoopAddLocation(NPC, -183.87, -0.09, -189.87, 2, 0)
+ MovementLoopAddLocation(NPC, -179.52, -0.12, -189.62, 2, 0)
+ MovementLoopAddLocation(NPC, -175.26, -0.05, -188.5, 2, 0)
+ MovementLoopAddLocation(NPC, -173.83, -0.16, -186.16, 2, 0)
+ MovementLoopAddLocation(NPC, -173.06, -0.06, -181.01, 2, 0)
+ MovementLoopAddLocation(NPC, -172.01, -0.1, -174.74, 2, 0)
+ MovementLoopAddLocation(NPC, -166.02, 0.38, -171.28, 2, 0)
+ MovementLoopAddLocation(NPC, -160.66, -0.29, -171.5, 2, 0)
+ MovementLoopAddLocation(NPC, -150.21, -0.34, -175.95, 2, 0)
+ MovementLoopAddLocation(NPC, -138.22, -0.31, -180.74, 2, 0)
+ MovementLoopAddLocation(NPC, -127.92, -0.08, -181.49, 2, 0)
+ MovementLoopAddLocation(NPC, -122.35, 0.46, -180.56, 2, 0)
+ MovementLoopAddLocation(NPC, -119.5, -0.15, -175.37, 2, 0)
+ MovementLoopAddLocation(NPC, -119.46, -0.1, -160.9, 2, 0)
+ MovementLoopAddLocation(NPC, -120.44, 0.27, -152.8, 2, 0)
+ MovementLoopAddLocation(NPC, -123.36, -0.08, -149.91, 2, 0)
+ MovementLoopAddLocation(NPC, -127.61, -0.06, -145.37, 2, 0)
+ MovementLoopAddLocation(NPC, -128.2, -0.13, -137.16, 2, 0, "ChooseMovement")
+end
+
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/acryptsubstanceU1.lua b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceU1.lua
new file mode 100755
index 000000000..6bcc04aaf
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/acryptsubstanceU1.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/acryptsubstanceU1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.10 09:01:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+AddTimer(NPC, 5000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -183.14, -0.09, -189.84, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.14, -0.09, -189.84, 2, 0)
+ MovementLoopAddLocation(NPC, -182.21, -0.09, -191.95, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -182.21, -0.09, -191.95, 2, 0)
+ MovementLoopAddLocation(NPC, -183.22, -0.09, -190.2, 2, 0)
+ MovementLoopAddLocation(NPC, -183.7, -0.09, -187.35, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.7, -0.09, -187.35, 2, 0)
+ MovementLoopAddLocation(NPC, -182.87, -0.09, -189.78, 2, 0)
+ MovementLoopAddLocation(NPC, -179.02, -0.14, -189.84, 2, 0)
+ MovementLoopAddLocation(NPC, -177.76, -0.08, -188.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -177.76, -0.08, -188.56, 2, 0)
+ MovementLoopAddLocation(NPC, -179.62, -0.14, -189.92, 2, 0)
+ MovementLoopAddLocation(NPC, -181.47, -0.18, -190.61, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -181.47, -0.18, -190.61, 2, 0)
+ MovementLoopAddLocation(NPC, -183.77, -0.09, -189.8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.77, -0.09, -189.8, 2, 0)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchling.lua b/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchling.lua
index 574ab6851..94a432220 100755
--- a/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchling.lua
+++ b/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchling.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingLocal.lua b/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingLocal.lua
index e9e6fd00b..8f3c33016 100755
--- a/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingLocal.lua
+++ b/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingLocal.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1,math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X + 2.5, Y, Z - 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X - 2.5, Y, Z + 2.5, 1, math.random(3,5))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(3,5), "ChooseMovement")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 2.5, 2.5, 1, 3, 5)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingRail1.lua b/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingRail1.lua
index 0510dc3b5..aad7fd531 100755
--- a/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingRail1.lua
+++ b/server/SpawnScripts/DownBelow_Classic/adustcrawlerhatchlingRail1.lua
@@ -5,34 +5,17 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
--AddTimer(NPC,(MakeRandomInt(0,4000)),"ChooseMovement")
ChooseMovement(NPC)
end
function ChooseMovement(NPC)
- local route = math.random(1,3)
+ local route = MakeRandomInt(1,3)
if route == 1 then
RouteOne(NPC, Spawn)
elseif route == 2 then
diff --git a/server/SpawnScripts/DownBelow_Classic/afallenbodyguard.lua b/server/SpawnScripts/DownBelow_Classic/afallenbodyguard.lua
new file mode 100755
index 000000000..d08028923
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/afallenbodyguard.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/afallenbodyguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/afallennoble.lua b/server/SpawnScripts/DownBelow_Classic/afallennoble.lua
new file mode 100755
index 000000000..17b69ff4a
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/afallennoble.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/afallennoble.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/afrenziedwatcher.lua b/server/SpawnScripts/DownBelow_Classic/afrenziedwatcher.lua
new file mode 100755
index 000000000..4036d80f1
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/afrenziedwatcher.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/afrenziedwatcher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/ajuvenileshriller.lua b/server/SpawnScripts/DownBelow_Classic/ajuvenileshriller.lua
index e70402856..b8a78bac9 100755
--- a/server/SpawnScripts/DownBelow_Classic/ajuvenileshriller.lua
+++ b/server/SpawnScripts/DownBelow_Classic/ajuvenileshriller.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerFlyer.lua b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerFlyer.lua
index 68bd65819..6d4b4c875 100755
--- a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerFlyer.lua
+++ b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerFlyer.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y+2, Z, 2, math.random(2,5))
- MovementLoopAddLocation(NPC, X + 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y+2, Z + 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y-4, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,5))
- MovementLoopAddLocation(NPC, X - 5, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y+2, Z - 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y-4, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y-5, Z - 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,5))
- MovementLoopAddLocation(NPC, X + 5, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y+3, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y-4, Z - 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,5))
- MovementLoopAddLocation(NPC, X - 5, Y-4, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y+2, Z + 5, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 5, -5, 2, -4, 2, 5, 10)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerNook.lua b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerNook.lua
index 97950489a..767ba2900 100755
--- a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerNook.lua
+++ b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerNook.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y+0.5, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y+0.5, Z + 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y-0.5, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y, Z + 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0, "ChooseMovement")
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y+ 0.5, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y+ 0.5, Z - 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y- 0.5, Z, 1.5,0)
- MovementLoopAddLocation(NPC, X + 1.5, Y- 0.5, Z + 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0, "ChooseMovement")
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y+0.5, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y, Z - 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y+0.5, Z+1, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y-0.5, Z - 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0, "ChooseMovement")
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y-0.5, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y, Z + 1, 1.5, 0)
- MovementLoopAddLocation(NPC, X - 1.5, Y+0.5, Z, 1.5, 0)
- MovementLoopAddLocation(NPC, X + 1.5, Y+0.5, Z -1, 1.5, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1.5, 0, "ChooseMovement")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 1.5, -1.5, 0.5, -0.5, 1.5, 0, 0)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail1.lua b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail1.lua
index 4e41bbcd2..3ca655ff7 100755
--- a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail1.lua
+++ b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail1.lua
@@ -5,34 +5,18 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
--AddTimer(NPC,(MakeRandomInt(0,8000)),"ChooseMovement")
ChooseMovement(NPC)
end
function ChooseMovement(NPC)
- local route = math.random(1,3)
+
+ local route = MakeRandomInt(1,3)
if route == 1 then
RouteOne(NPC, Spawn)
elseif route == 2 then
diff --git a/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail2.lua b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail2.lua
new file mode 100755
index 000000000..7f0a2f3f5
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail2.lua
@@ -0,0 +1,106 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/ajuvenileshrillerRail2.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.11 09:11:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+ --AddTimer(NPC,(MakeRandomInt(0,8000)),"ChooseMovement")
+ ChooseMovement(NPC)
+end
+
+function ChooseMovement(NPC)
+
+ local route = MakeRandomInt(1,2)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ --elseif route == 2 then
+ -- RouteTwo(NPC, Spawn)
+ elseif route == 2 then
+ RouteThree(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ MovementLoopAddLocation(NPC, -128.28, 2, -136.44, 2, 0)
+ MovementLoopAddLocation(NPC, -127.63, 2, -128.26, 2, 0)
+ MovementLoopAddLocation(NPC, -122.16, 2, -120.38, 2, 0)
+ MovementLoopAddLocation(NPC, -113.81, 2, -115.16, 2, 0)
+ MovementLoopAddLocation(NPC, -106.32, 2, -117.06, 2, 0)
+ MovementLoopAddLocation(NPC, -87.83, 2, -134.85, 2, 0)
+ MovementLoopAddLocation(NPC, -103.93, 2, -118.45, 2, 0)
+ MovementLoopAddLocation(NPC, -107.44, 2, -116.05, 2, 0)
+ MovementLoopAddLocation(NPC, -113.72, 2, -115.79, 2, 0)
+ MovementLoopAddLocation(NPC, -121.54, 2, -119.76, 2, 0)
+ MovementLoopAddLocation(NPC, -127.27, 2, -126.7, 2, 0)
+ MovementLoopAddLocation(NPC, -128.2, 2, -137.16, 2, 0, "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ MovementLoopAddLocation(NPC, -128.2, 2, -137.16, 2, 0)
+ MovementLoopAddLocation(NPC, -151.92, 2, -136.84, 2, 0)
+ MovementLoopAddLocation(NPC, -156.74, 2, -135.94, 2, 0)
+ MovementLoopAddLocation(NPC, -158.81, 2, -132.26, 2, 0)
+ MovementLoopAddLocation(NPC, -158.1, 2, -108.92, 2, 0)
+ MovementLoopAddLocation(NPC, -157.15, 2, -105.8, 2, 0)
+ MovementLoopAddLocation(NPC, -146.23, 2, -79.18, 2, 0)
+ MovementLoopAddLocation(NPC, -158.49, 2, -110.44, 2, 0)
+ MovementLoopAddLocation(NPC, -158.87, 2, -131.56, 2, 0)
+ MovementLoopAddLocation(NPC, -157.68, 2, -134.16, 2, 0)
+ MovementLoopAddLocation(NPC, -156.09, 2, -136.1, 2, 0)
+ MovementLoopAddLocation(NPC, -130.92, 2, -136.47, 2, 0)
+ MovementLoopAddLocation(NPC, -128.2, 2, -137.16, 2, 0, "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ MovementLoopAddLocation(NPC, -128.2, 2, -137.16, 2, 0)
+ MovementLoopAddLocation(NPC, -127.9, 2, -144.12, 2, 0)
+ MovementLoopAddLocation(NPC, -124.11, 2, -149.26, 2, 0)
+ MovementLoopAddLocation(NPC, -121.28, 2, -151.86, 2, 0)
+ MovementLoopAddLocation(NPC, -119.44, 2, -156.46, 2, 0)
+ MovementLoopAddLocation(NPC, -119.57, 2, -176.72, 2, 0)
+ MovementLoopAddLocation(NPC, -121.85, 2, -180.23, 2, 0)
+ MovementLoopAddLocation(NPC, -127.11, 2, -181.54, 2, 0)
+ MovementLoopAddLocation(NPC, -137.84, 2, -180.58, 2, 0)
+ MovementLoopAddLocation(NPC, -149.86, 2, -176.32, 2, 0)
+ MovementLoopAddLocation(NPC, -159.7, 2, -171.93, 2, 0)
+ MovementLoopAddLocation(NPC, -165.1, 2, -171.13, 2, 0)
+ MovementLoopAddLocation(NPC, -172.22, 2, -174.76, 2, 0)
+ MovementLoopAddLocation(NPC, -173.23, 2, -181.56, 2, 0)
+ MovementLoopAddLocation(NPC, -173.82, 2, -187.26, 2, 0)
+ MovementLoopAddLocation(NPC, -176.76, 2, -189.14, 2, 0)
+ MovementLoopAddLocation(NPC, -180.28, 2, -189.89, 2, 0)
+ MovementLoopAddLocation(NPC, -183.87, 2, -189.87, 2, 0)
+ MovementLoopAddLocation(NPC, -179.52, 2, -189.62, 2, 0)
+ MovementLoopAddLocation(NPC, -175.26, 2, -188.5, 2, 0)
+ MovementLoopAddLocation(NPC, -173.83, 2, -186.16, 2, 0)
+ MovementLoopAddLocation(NPC, -173.06, 2, -181.01, 2, 0)
+ MovementLoopAddLocation(NPC, -172.01, 2, -174.74, 2, 0)
+ MovementLoopAddLocation(NPC, -166.02, 2, -171.28, 2, 0)
+ MovementLoopAddLocation(NPC, -160.66, 2, -171.5, 2, 0)
+ MovementLoopAddLocation(NPC, -150.21, 2, -175.95, 2, 0)
+ MovementLoopAddLocation(NPC, -138.22, 2, -180.74, 2, 0)
+ MovementLoopAddLocation(NPC, -127.92, 2, -181.49, 2, 0)
+ MovementLoopAddLocation(NPC, -122.35, 2, -180.56, 2, 0)
+ MovementLoopAddLocation(NPC, -119.5, 2, -175.37, 2, 0)
+ MovementLoopAddLocation(NPC, -119.46, 2, -160.9, 2, 0)
+ MovementLoopAddLocation(NPC, -120.44, 2, -152.8, 2, 0)
+ MovementLoopAddLocation(NPC, -123.36, 2, -149.91, 2, 0)
+ MovementLoopAddLocation(NPC, -127.61, 2, -145.37, 2, 0)
+ MovementLoopAddLocation(NPC, -128.2, 2, -137.16, 2, 0, "ChooseMovement")
+end
+
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid.lua
new file mode 100755
index 000000000..91cd03f92
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid1.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid1.lua
new file mode 100755
index 000000000..8bb9b2d5c
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid1.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -111.34, -0.01, -183.76, 2, 4)
+ MovementLoopAddLocation(NPC, -110.02, -0.01, -184, 2, 0)
+ MovementLoopAddLocation(NPC, -108.95, -0.1, -182.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.95, -0.1, -182.72, 2, 0)
+ MovementLoopAddLocation(NPC, -108.05, -0.11, -184.26, 2, 0)
+ MovementLoopAddLocation(NPC, -109.78, -0.03, -184.75, 2, 0)
+ MovementLoopAddLocation(NPC, -110.07, -0.03, -183.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -110.07, -0.03, -183.56, 2, 0)
+ MovementLoopAddLocation(NPC, -108.89, -0.11, -183.21, 2, 0)
+ MovementLoopAddLocation(NPC, -108.3, -0.1, -180.73, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.3, -0.1, -180.73, 2, 0)
+ MovementLoopAddLocation(NPC, -109.1, -0.07, -180.85, 2, 0)
+ MovementLoopAddLocation(NPC, -108.6, -0.06, -184.55, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.6, -0.06, -184.55, 2, 0)
+ MovementLoopAddLocation(NPC, -110.05, -0.02, -184.61, 2, 0)
+ MovementLoopAddLocation(NPC, -111.34, -0.01, -183.76, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid10.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid10.lua
new file mode 100755
index 000000000..995dddc4e
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid10.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid10.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -81.31, -0.06, -185.26, 2, 4)
+ MovementLoopAddLocation(NPC, -83.81, -0.1, -184.46, 2, 0)
+ MovementLoopAddLocation(NPC, -85.24, -0.09, -182.27, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.24, -0.09, -182.27, 2, 0)
+ MovementLoopAddLocation(NPC, -83.71, -0.09, -183.4, 2, 0)
+ MovementLoopAddLocation(NPC, -82.84, -0.07, -189.44, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -82.84, -0.07, -189.44, 2, 0)
+ MovementLoopAddLocation(NPC, -83.07, -0.07, -186.83, 2, 0)
+ MovementLoopAddLocation(NPC, -84.5, -0.1, -185.24, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -84.5, -0.1, -185.24, 2, 0)
+ MovementLoopAddLocation(NPC, -82.58, -0.04, -184.01, 2, 0)
+ MovementLoopAddLocation(NPC, -83.23, -0.05, -182.59, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -83.23, -0.05, -182.59, 2, 0)
+ MovementLoopAddLocation(NPC, -82.69, -0.06, -186.52, 2, 0)
+ MovementLoopAddLocation(NPC, -81.31, -0.06, -185.26, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid11.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid11.lua
new file mode 100755
index 000000000..e84573d13
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid11.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid11.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -85.6, -0.07, -185.56, 2, 4)
+ MovementLoopAddLocation(NPC, -84, -0.1, -184.76, 2, 0)
+ MovementLoopAddLocation(NPC, -85.36, -0.09, -182.52, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.36, -0.09, -182.52, 2, 0)
+ MovementLoopAddLocation(NPC, -83.61, -0.08, -183.26, 2, 0)
+ MovementLoopAddLocation(NPC, -82.76, -0.05, -182.54, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -82.76, -0.05, -182.54, 2, 0)
+ MovementLoopAddLocation(NPC, -83.65, -0.09, -185.13, 2, 0)
+ MovementLoopAddLocation(NPC, -83.16, -0.08, -188.05, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -83.16, -0.08, -188.05, 2, 0)
+ MovementLoopAddLocation(NPC, -84.24, -0.09, -186.2, 2, 0)
+ MovementLoopAddLocation(NPC, -83.19, -0.07, -183.88, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -83.19, -0.07, -183.88, 2, 0)
+ MovementLoopAddLocation(NPC, -85.01, -0.08, -181.07, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.01, -0.08, -181.07, 2, 0)
+ MovementLoopAddLocation(NPC, -82.72, -0.05, -182.09, 2, 0)
+ MovementLoopAddLocation(NPC, -83.05, -0.05, -183.38, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -83.05, -0.05, -183.38, 2, 0)
+ MovementLoopAddLocation(NPC, -85.6, -0.07, -185.56, 2, 3)
+end
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid2.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid2.lua
new file mode 100755
index 000000000..88a2fe216
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid2.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -108.34, -0.14, -183.42, 2, 4)
+ MovementLoopAddLocation(NPC, -108.3, -0.09, -179.57, 2, 0)
+ MovementLoopAddLocation(NPC, -106.89, -0.1, -177.51, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -106.89, -0.1, -177.51, 2, 0)
+ MovementLoopAddLocation(NPC, -106.77, -0.12, -179.3, 2, 0)
+ MovementLoopAddLocation(NPC, -105.28, -0.05, -179.77, 2, 0)
+ MovementLoopAddLocation(NPC, -104.23, -0.02, -178.47, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -104.23, -0.02, -178.47, 2, 0)
+ MovementLoopAddLocation(NPC, -108.73, -0.09, -179.88, 2, 0)
+ MovementLoopAddLocation(NPC, -109.17, 0.14, -186.81, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -109.17, 0.14, -186.81, 2, 0)
+ MovementLoopAddLocation(NPC, -109.46, -0.06, -182.21, 2, 0)
+ MovementLoopAddLocation(NPC, -105.49, -0.09, -179.22, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.49, -0.09, -179.22, 2, 0)
+ MovementLoopAddLocation(NPC, -109.33, -0.09, -180.69, 2, 0)
+ MovementLoopAddLocation(NPC, -108.34, -0.14, -183.42, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid3.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid3.lua
new file mode 100755
index 000000000..06d189dd4
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid3.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -104.43, -0.01, -179.29, 2, 4)
+ MovementLoopAddLocation(NPC, -103.66, -0.05, -175.64, 2, 0)
+ MovementLoopAddLocation(NPC, -105.07, -0.09, -172.87, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.07, -0.09, -172.87, 2, 0)
+ MovementLoopAddLocation(NPC, -105.86, -0.13, -176.76, 2, 0)
+ MovementLoopAddLocation(NPC, -108.38, -0.09, -180.01, 2, 0)
+ MovementLoopAddLocation(NPC, -108.65, -0.09, -180.98, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.65, -0.09, -180.98, 2, 0)
+ MovementLoopAddLocation(NPC, -107.85, -0.09, -178.1, 2, 0)
+ MovementLoopAddLocation(NPC, -105.7, -0.14, -176.83, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.7, -0.14, -176.83, 2, 0)
+ MovementLoopAddLocation(NPC, -105.6, -0.09, -179.33, 2, 0)
+ MovementLoopAddLocation(NPC, -107.38, -0.11, -179.25, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -107.38, -0.11, -179.25, 2, 0)
+ MovementLoopAddLocation(NPC, -105.97, -0.07, -180.25, 2, 0)
+ MovementLoopAddLocation(NPC, -104.43, -0.01, -179.29, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid4.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid4.lua
new file mode 100755
index 000000000..f0080482c
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid4.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -107.87, -0.09, -177.12, 2, 4)
+ MovementLoopAddLocation(NPC, -104.92, -0.08, -175.52, 2, 0)
+ MovementLoopAddLocation(NPC, -105.41, -0.1, -172.7, 2, 0)
+ MovementLoopAddLocation(NPC, -106.82, -0.06, -172.36, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -106.82, -0.06, -172.36, 2, 0)
+ MovementLoopAddLocation(NPC, -105.4, -0.11, -173.79, 2, 0)
+ MovementLoopAddLocation(NPC, -106.38, -0.12, -177.71, 2, 0)
+ MovementLoopAddLocation(NPC, -108.22, -0.09, -179.4, 2,math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.22, -0.09, -179.4, 2, 0)
+ MovementLoopAddLocation(NPC, -106.82, -0.12, -179.02, 2, 0)
+ MovementLoopAddLocation(NPC, -105.05, -0.11, -176.77, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.05, -0.11, -176.77, 2, 0)
+ MovementLoopAddLocation(NPC, -104.13, -0.05, -175.1, 2, 0)
+ MovementLoopAddLocation(NPC, -108.48, -0.09, -179, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.48, -0.09, -179, 2, 0)
+ MovementLoopAddLocation(NPC, -106.15, -0.14, -178.46, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -106.15, -0.14, -178.46, 2, 0)
+ MovementLoopAddLocation(NPC, -107.87, -0.09, -177.12, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid5.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid5.lua
new file mode 100755
index 000000000..488eb45de
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid5.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid5.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -104.13, -0.09, -171.67, 2, 4)
+ MovementLoopAddLocation(NPC, -107.48, -0.13, -170.36, 2, 0)
+ MovementLoopAddLocation(NPC, -108.88, -0.11, -168.91, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.88, -0.11, -168.91, 2, 0)
+ MovementLoopAddLocation(NPC, -106.29, -0.1, -171.85, 2, 0)
+ MovementLoopAddLocation(NPC, -105.16, -0.11, -174.67, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.16, -0.11, -174.67, 2, 0)
+ MovementLoopAddLocation(NPC, -105.78, -0.09, -172.01, 2, 0)
+ MovementLoopAddLocation(NPC, -108.24, -0.09, -171.15, 2, 0)
+ MovementLoopAddLocation(NPC, -109.6, -0.12, -170.34, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -109.6, -0.12, -170.34, 2, 0)
+ MovementLoopAddLocation(NPC, -108.02, -0.07, -168.74, 2, 0)
+ MovementLoopAddLocation(NPC, -106.86, -0.07, -169.6, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -106.86, -0.07, -169.6, 2, 0)
+ MovementLoopAddLocation(NPC, -106.46, -0.09, -172.07, 2, 0)
+ MovementLoopAddLocation(NPC, -107.99, -0.06, -171.78, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -107.99, -0.06, -171.78, 2, 0)
+ MovementLoopAddLocation(NPC, -104.94, -0.08, -174.66, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -104.94, -0.08, -174.66, 2, 0)
+ MovementLoopAddLocation(NPC, -104.13, -0.09, -171.67, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid6.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid6.lua
new file mode 100755
index 000000000..83585fede
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid6.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid6.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 08:01:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -108.65, -0.11, -170.64, 2, 4)
+ MovementLoopAddLocation(NPC, -110.24, -0.14, -168.55, 2, 0)
+ MovementLoopAddLocation(NPC, -113.95, 0.36, -168.17, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -113.95, 0.36, -168.17, 2, 0)
+ MovementLoopAddLocation(NPC, -109.66, -0.07, -167.46, 2, 0)
+ MovementLoopAddLocation(NPC, -107.74, -0.09, -169.4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -107.74, -0.09, -169.4, 2, 0)
+ MovementLoopAddLocation(NPC, -108.46, -0.03, -167.26, 2, 0)
+ MovementLoopAddLocation(NPC, -109.92, -0.09, -167.81, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -109.92, -0.09, -167.81, 2, 0)
+ MovementLoopAddLocation(NPC, -106.5, -0.1, -170.54, 2, 0)
+ MovementLoopAddLocation(NPC, -105.2, -0.1, -173.24, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.2, -0.1, -173.24, 2, 0)
+ MovementLoopAddLocation(NPC, -108.32, -0.05, -172.02, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.32, -0.05, -172.02, 2, 0)
+ MovementLoopAddLocation(NPC, -108.39, -0.09, -168.79, 2, 0)
+ MovementLoopAddLocation(NPC, -109.51, -0.13, -168.85, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -109.51, -0.13, -168.85, 2, 0)
+ MovementLoopAddLocation(NPC, -112.77, 0.36, -167.34, 2, 0)
+ MovementLoopAddLocation(NPC, -115.35, -0.04, -168.85, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -115.35, -0.04, -168.85, 2, 0)
+ MovementLoopAddLocation(NPC, -110.87, -0.13, -168.32, 2, 0)
+ MovementLoopAddLocation(NPC, -106.4, -0.07, -169.91, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -106.4, -0.07, -169.91, 2, 0)
+ MovementLoopAddLocation(NPC, -108.65, -0.11, -170.64, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid7.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid7.lua
new file mode 100755
index 000000000..ad47adacd
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid7.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid7.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -91.28, -0.04, -195.95, 2, 4)
+ MovementLoopAddLocation(NPC, -91.16, -0.06, -194.83, 2, 0)
+ MovementLoopAddLocation(NPC, -86.29, -0.09, -193.28, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -86.29, -0.09, -193.28, 2, 0)
+ MovementLoopAddLocation(NPC, -88.89, 0.46, -193.31, 2, 0)
+ MovementLoopAddLocation(NPC, -94.42, 0.14, -194.16, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -94.42, 0.14, -194.16, 2, 0)
+ MovementLoopAddLocation(NPC, -92.35, -0.09, -192.77, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -92.35, -0.09, -192.77, 2, 0)
+ MovementLoopAddLocation(NPC, -88.62, 0.47, -193.62, 2, 0)
+ MovementLoopAddLocation(NPC, -85.94, -0.1, -191.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.94, -0.1, -191.82, 2, 0)
+ MovementLoopAddLocation(NPC, -89.98, 0.31, -193.4, 2, 0)
+ MovementLoopAddLocation(NPC, -91.28, -0.04, -195.95, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid8.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid8.lua
new file mode 100755
index 000000000..8ea89fe63
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid8.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid8.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -88.01, -0.06, -190.38, 2, 4)
+ MovementLoopAddLocation(NPC, -85.88, -0.11, -191.68, 2, 0)
+ MovementLoopAddLocation(NPC, -83.49, -0.07, -189.15, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -83.49, -0.07, -189.15, 2, 0)
+ MovementLoopAddLocation(NPC, -84.28, -0.06, -192.03, 2, 0)
+ MovementLoopAddLocation(NPC, -88.73, 0.45, -193.3, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -88.73, 0.45, -193.3, 2, 0)
+ MovementLoopAddLocation(NPC, -85.24, -0.07, -193.26, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.24, -0.07, -193.26, 2, 0)
+ MovementLoopAddLocation(NPC, -85.94, -0.1, -191.87, 2, 0)
+ MovementLoopAddLocation(NPC, -83.92, -0.07, -188.89, 2, 0)
+ MovementLoopAddLocation(NPC, -83.73, -0.08, -186.51, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -83.73, -0.08, -186.51, 2, 0)
+ MovementLoopAddLocation(NPC, -84.26, -0.07, -190.46, 2, 0)
+ MovementLoopAddLocation(NPC, -88.01, -0.06, -190.38, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/amaleficarachnid9.lua b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid9.lua
new file mode 100755
index 000000000..64e5fb66d
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/amaleficarachnid9.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/amaleficarachnid9.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -83.5, -0.06, -193.69, 2, 4)
+ MovementLoopAddLocation(NPC, -85.14, -0.09, -191.97, 2, 0)
+ MovementLoopAddLocation(NPC, -85.47, -0.1, -190.27, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.47, -0.1, -190.27, 2, 0)
+ MovementLoopAddLocation(NPC, -84.18, -0.06, -191.5, 2, 0)
+ MovementLoopAddLocation(NPC, -82.97, -0.05, -190.93, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -82.97, -0.05, -190.93, 2, 0)
+ MovementLoopAddLocation(NPC, -85.05, -0.07, -192.74, 2, 0)
+ MovementLoopAddLocation(NPC, -86.63, -0.09, -192.19, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -86.63, -0.09, -192.19, 2, 0)
+ MovementLoopAddLocation(NPC, -85.09, -0.1, -190.1, 2, 0)
+ MovementLoopAddLocation(NPC, -83.3, -0.07, -188.91, 2, 0)
+ MovementLoopAddLocation(NPC, -82.59, -0.08, -187.52, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -82.59, -0.08, -187.52, 2, 0)
+ MovementLoopAddLocation(NPC, -84.38, -0.09, -189.44, 2, 0)
+ MovementLoopAddLocation(NPC, -85.03, -0.07, -192.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -85.03, -0.07, -192.72, 2, 0)
+ MovementLoopAddLocation(NPC, -83.5, -0.06, -193.69, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/aputridvermin.lua b/server/SpawnScripts/DownBelow_Classic/aputridvermin.lua
new file mode 100755
index 000000000..c089b94e5
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/aputridvermin.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/aputridvermin.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/arabidpackrat.lua b/server/SpawnScripts/DownBelow_Classic/arabidpackrat.lua
new file mode 100755
index 000000000..182fca9c4
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arabidpackrat.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arabidpackrat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/arabidshriller.lua b/server/SpawnScripts/DownBelow_Classic/arabidshriller.lua
new file mode 100755
index 000000000..a37a62c89
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arabidshriller.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arabidshriller.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.14 06:01:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/arabidshriller1.lua b/server/SpawnScripts/DownBelow_Classic/arabidshriller1.lua
new file mode 100755
index 000000000..68e19c127
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arabidshriller1.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arabidshriller1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.14 06:01:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -204.55, 1.5, -42.7, 2, 0)
+ MovementLoopAddLocation(NPC, -210.2, 1.5, -48.35, 2, 0)
+ MovementLoopAddLocation(NPC, -213.77, 1.5, -51.82, 2, 0)
+ MovementLoopAddLocation(NPC, -218.59, 1.5, -57.22, 2, 0)
+ MovementLoopAddLocation(NPC, -218.91, 1.5, -68.38, 2, 0)
+ MovementLoopAddLocation(NPC, -218.41, 1.5, -80.04, 2, 0)
+ MovementLoopAddLocation(NPC, -217.11, 1.5, -84.38, 2, 0)
+ MovementLoopAddLocation(NPC, -209.64, 1.5, -91.72, 2, 0)
+ MovementLoopAddLocation(NPC, -206.32, 1.5, -93.2, 2, 0)
+ MovementLoopAddLocation(NPC, -190.42, 1.5, -93.47, 2, 0)
+ MovementLoopAddLocation(NPC, -185.25, 1.5, -91.86, 2, 0)
+ MovementLoopAddLocation(NPC, -178.36, 1.5, -85.08, 2, 0)
+ MovementLoopAddLocation(NPC, -176.37, 1.5, -78.9, 2, 0)
+ MovementLoopAddLocation(NPC, -176.61, 1.5, -73.61, 2, 0)
+ MovementLoopAddLocation(NPC, -184.85, 1.5, -73.9, 2, 0)
+ MovementLoopAddLocation(NPC, -190.8, 1.5, -67.91, 2, 0)
+ MovementLoopAddLocation(NPC, -190.85, 1.5, -50.42, 2, 0)
+ MovementLoopAddLocation(NPC, -187.51, 1.5, -45.78, 2, 0)
+ MovementLoopAddLocation(NPC, -181, 1.5, -38.67, 2, 0)
+ MovementLoopAddLocation(NPC, -187.64, 1.5, -45.4, 2, 0)
+ MovementLoopAddLocation(NPC, -190.87, 1.5, -50.13, 2, 0)
+ MovementLoopAddLocation(NPC, -191.08, 1.5, -65.82, 2, 0)
+ MovementLoopAddLocation(NPC, -190.28, 1.5, -68.28, 2, 0)
+ MovementLoopAddLocation(NPC, -186.43, 1.5, -72.99, 2, 0)
+ MovementLoopAddLocation(NPC, -182.22, 1.5, -73.6, 2, 0)
+ MovementLoopAddLocation(NPC, -166.95, 1.5, -74.24, 2, 0)
+ MovementLoopAddLocation(NPC, -152.88, 1.5, -82.16, 2, 0)
+ MovementLoopAddLocation(NPC, -164.99, 1.5, -75.24, 2, 0)
+ MovementLoopAddLocation(NPC, -172.22, 1.5, -73.68, 2, 0)
+ MovementLoopAddLocation(NPC, -176.06, 1.5, -73.88, 2, 0)
+ MovementLoopAddLocation(NPC, -177.23, 1.5, -84.01, 2, 0)
+ MovementLoopAddLocation(NPC, -182.52, 1.5, -89.97, 2, 0)
+ MovementLoopAddLocation(NPC, -189.55, 1.5, -93.15, 2, 0)
+ MovementLoopAddLocation(NPC, -206.35, 1.5, -92.92, 2, 0)
+ MovementLoopAddLocation(NPC, -210.5, 1.5, -90.78, 2, 0)
+ MovementLoopAddLocation(NPC, -216.02, 1.5, -85.22, 2, 0)
+ MovementLoopAddLocation(NPC, -218.59, 1.5, -81.23, 2, 0)
+ MovementLoopAddLocation(NPC, -218.71, 1.51, -68.9, 2, 0)
+ MovementLoopAddLocation(NPC, -218.29, 1.5, -59.07, 2, 0)
+ MovementLoopAddLocation(NPC, -215.87, 1.5, -54.73, 2, 0)
+ MovementLoopAddLocation(NPC, -213.87, 1.5, -52.18, 2, 0)
+ MovementLoopAddLocation(NPC, -209.95, 1.5, -48.01, 2, 0)
+ MovementLoopAddLocation(NPC, -205.48, 1.5, -43.68, 2, 0)
+ MovementLoopAddLocation(NPC, -204.07, 1.5, -42.23, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/arabidshriller2.lua b/server/SpawnScripts/DownBelow_Classic/arabidshriller2.lua
new file mode 100755
index 000000000..8819db8bf
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arabidshriller2.lua
@@ -0,0 +1,66 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arabidshriller2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.15 02:01:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -177.54, 1.5, -35.03, 2, 0)
+ MovementLoopAddLocation(NPC, -185.51, 1.5, -42.79, 2, 0)
+ MovementLoopAddLocation(NPC, -189.81, 1.5, -47.43, 2, 0)
+ MovementLoopAddLocation(NPC, -190.98, 1.5, -53.8, 2, 0)
+ MovementLoopAddLocation(NPC, -191.45, 1.5, -65.83, 2, 0)
+ MovementLoopAddLocation(NPC, -188.65, 1.5, -71.17, 2, 0)
+ MovementLoopAddLocation(NPC, -183.59, 1.5, -73.19, 2, 0)
+ MovementLoopAddLocation(NPC, -167.28, 1.5, -73.98, 2, 0)
+ MovementLoopAddLocation(NPC, -159.32, 1.5, -79.12, 2, 0)
+ MovementLoopAddLocation(NPC, -155.37, 1.5, -81.21, 2, 0)
+ MovementLoopAddLocation(NPC, -163.56, 1.5, -75.37, 2, 0)
+ MovementLoopAddLocation(NPC, -175.14, 1.5, -74.3, 2, 0)
+ MovementLoopAddLocation(NPC, -176.84, 1.5, -82.12, 2, 0)
+ MovementLoopAddLocation(NPC, -179.54, 1.5, -86.74, 2, 0)
+ MovementLoopAddLocation(NPC, -184.4, 1.5, -91.11, 2, 0)
+ MovementLoopAddLocation(NPC, -189.91, 1.5, -93.11, 2, 0)
+ MovementLoopAddLocation(NPC, -202.6, 1.5, -93.4, 2, 0)
+ MovementLoopAddLocation(NPC, -209.44, 1.5, -92.03, 2, 0)
+ MovementLoopAddLocation(NPC, -217.09, 1.5, -84.06, 2, 0)
+ MovementLoopAddLocation(NPC, -218.66, 1.5, -76.88, 2, 0)
+ MovementLoopAddLocation(NPC, -218.61, 1.5, -59.03, 2, 0)
+ MovementLoopAddLocation(NPC, -213.82, 1.5, -52.93, 2, 0)
+ MovementLoopAddLocation(NPC, -207.97, 1.5, -45.87, 2, 0)
+ MovementLoopAddLocation(NPC, -204, 1.5, -42.48, 2, 0)
+ MovementLoopAddLocation(NPC, -208.7, 1.5, -46.58, 2, 0)
+ MovementLoopAddLocation(NPC, -213.02, 1.5, -51.18, 2, 0)
+ MovementLoopAddLocation(NPC, -217.19, 1.5, -55.99, 2, 0)
+ MovementLoopAddLocation(NPC, -218.48, 1.5, -58.99, 2, 0)
+ MovementLoopAddLocation(NPC, -218.88, 1.5, -77.7, 2, 0)
+ MovementLoopAddLocation(NPC, -217.54, 1.5, -83.31, 2, 0)
+ MovementLoopAddLocation(NPC, -209.53, 1.5, -91.79, 2, 0)
+ MovementLoopAddLocation(NPC, -204.65, 1.5, -92.83, 2, 0)
+ MovementLoopAddLocation(NPC, -189.97, 1.5, -93.46, 2, 0)
+ MovementLoopAddLocation(NPC, -180.33, 1.5, -88.38, 2, 0)
+ MovementLoopAddLocation(NPC, -175.91, 1.5, -78.41, 2, 0)
+ MovementLoopAddLocation(NPC, -175.88, 1.5, -74.79, 2, 0)
+ MovementLoopAddLocation(NPC, -183.32, 1.5, -73.76, 2, 0)
+ MovementLoopAddLocation(NPC, -188.62, 1.5, -70.81, 2, 0)
+ MovementLoopAddLocation(NPC, -191.2, 1.5, -67.04, 2, 0)
+ MovementLoopAddLocation(NPC, -191.24, 1.5, -55.25, 2, 0)
+ MovementLoopAddLocation(NPC, -189.99, 1.5, -48.4, 2, 0)
+ MovementLoopAddLocation(NPC, -177.54, 1.5, -35.03, 2, 0)
+end
diff --git a/server/SpawnScripts/DownBelow_Classic/arottingcitizen.lua b/server/SpawnScripts/DownBelow_Classic/arottingcitizen.lua
new file mode 100755
index 000000000..8ffb5ad1a
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arottingcitizen.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arottingcitizen.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/arottingcitizenPatrol.lua b/server/SpawnScripts/DownBelow_Classic/arottingcitizenPatrol.lua
new file mode 100755
index 000000000..b56eb7c9d
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arottingcitizenPatrol.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arottingcitizenPatrol.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.15 03:01:03
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -180.08, 0, -16.5, 2, 5)
+ MovementLoopAddLocation(NPC, -186.5, 0, -10.03, 2, 0)
+ MovementLoopAddLocation(NPC, -189.5, 0, -9.71, 2, 0)
+ MovementLoopAddLocation(NPC, -192.96, 0, -10.93, 2, 0)
+ MovementLoopAddLocation(NPC, -194.46, 0, -11.91, 2, 0)
+ MovementLoopAddLocation(NPC, -195.91, 0, -13.95, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -196.21, 0, -17.38, 2, 0)
+ MovementLoopAddLocation(NPC, -191.09, 0, -21.23, 2, 0)
+ MovementLoopAddLocation(NPC, -188.17, 0, -25.82, 2, 0)
+ MovementLoopAddLocation(NPC, -188.71, 0, -29.6, 2, 0)
+ MovementLoopAddLocation(NPC, -193.64, 0, -34.45, 2, 0)
+ MovementLoopAddLocation(NPC, -196.97, 0, -34.04, 2, 0)
+ MovementLoopAddLocation(NPC, -202.29, 0, -29.35, 2, 0)
+ MovementLoopAddLocation(NPC, -203.66, 0, -26.34, 2, 0)
+ MovementLoopAddLocation(NPC, -202.69, 0, -23.27, 2, 0)
+ MovementLoopAddLocation(NPC, -197.86, 0, -17.61, 2, 0)
+ MovementLoopAddLocation(NPC, -195.8, 0, -12.94, 2, 0)
+ MovementLoopAddLocation(NPC, -193.78, 0, -10.69, 2, 0)
+ MovementLoopAddLocation(NPC, -190.96, 0, -10.79, 2, 0)
+ MovementLoopAddLocation(NPC, -188.22, 0, -9.95, 2, 0)
+ MovementLoopAddLocation(NPC, -184.39, 0, -11.48, 2, 0)
+ MovementLoopAddLocation(NPC, -180.08, 0, -16.5, 2, 0)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoam1.lua b/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoam1.lua
new file mode 100755
index 000000000..bf53d5789
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoam1.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arottingcitizenRoam1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.15 03:01:27
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -192.93, 0, -25.18, 2, 4)
+ MovementLoopAddLocation(NPC, -191.02, 0, -22.96, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -191.02, 0, -22.96, 2, 0)
+ MovementLoopAddLocation(NPC, -193.64, 0, -24.78, 2, 0)
+ MovementLoopAddLocation(NPC, -196.75, 0, -24.26, 2, 0)
+ MovementLoopAddLocation(NPC, -200.15, 0, -25.81, 2, 0)
+ MovementLoopAddLocation(NPC, -202.3, 0, -27.57, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -202.3, 0, -27.57, 2, 0)
+ MovementLoopAddLocation(NPC, -199.13, 0, -26.66, 2, 0)
+ MovementLoopAddLocation(NPC, -193.83, 0, -27.97, 2, 0)
+ MovementLoopAddLocation(NPC, -189.66, 0, -31.54, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -189.66, 0, -31.54, 2, 0)
+ MovementLoopAddLocation(NPC, -193.03, 0, -28.42, 2, 0)
+ MovementLoopAddLocation(NPC, -195.14, 0, -23.76, 2, 0)
+ MovementLoopAddLocation(NPC, -197.56, 0, -20.61, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -197.56, 0, -20.61, 2, 0)
+ MovementLoopAddLocation(NPC, -196.91, 0, -24.27, 2, 0)
+ MovementLoopAddLocation(NPC, -197.85, 0, -26.92, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -197.85, 0, -26.92, 2, 0)
+ MovementLoopAddLocation(NPC, -196.39, 0, -24.45, 2, 0)
+ MovementLoopAddLocation(NPC, -193.25, 0, -22.46, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -193.25, 0, -22.46, 2, 0)
+ MovementLoopAddLocation(NPC, -192.93, 0, -25.18, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoamer2.lua b/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoamer2.lua
new file mode 100755
index 000000000..c6ebd6bbe
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoamer2.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arottingcitizenRoamer2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.15 03:01:59
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -197.74, 0, -28.67, 2, 4)
+ MovementLoopAddLocation(NPC, -197.36, 0, -34.27, 2, 0)
+ MovementLoopAddLocation(NPC, -196.14, 0, -36.24, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -196.14, 0, -36.24, 2, 0)
+ MovementLoopAddLocation(NPC, -200.38, 0, -31.2, 2, 0)
+ MovementLoopAddLocation(NPC, -201.99, 0, -27.85, 2, 0)
+ MovementLoopAddLocation(NPC, -205.89, 0, -26.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -205.89, 0, -26.82, 2, 0)
+ MovementLoopAddLocation(NPC, -202.41, 0, -27.14, 2, 0)
+ MovementLoopAddLocation(NPC, -199.5, 0, -29.42, 2, 0)
+ MovementLoopAddLocation(NPC, -196.32, 0, -30.46, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -196.32, 0, -30.46, 2, 0)
+ MovementLoopAddLocation(NPC, -198.8, 0, -30.15, 2, 0)
+ MovementLoopAddLocation(NPC, -202.25, 0, -33.13, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -202.25, 0, -33.13, 2, 0)
+ MovementLoopAddLocation(NPC, -202.25, 0, -33.13, 2, 0)
+ MovementLoopAddLocation(NPC, -200.66, 0, -32.08, 2, 0)
+ MovementLoopAddLocation(NPC, -199.61, 0, -25.92, 2, 0)
+ MovementLoopAddLocation(NPC, -201.84, 0, -22.73, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -201.84, 0, -22.73, 2, 0)
+ MovementLoopAddLocation(NPC, -197.74, 0, -28.67, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoamer3.lua b/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoamer3.lua
new file mode 100755
index 000000000..c42ab5ce8
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arottingcitizenRoamer3.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arottingcitizenRoamer3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.15 03:01:00
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -184.93, 0, -10.63, 2, 4)
+ MovementLoopAddLocation(NPC, -180.05, 0, -11.51, 2, 0)
+ MovementLoopAddLocation(NPC, -176.15, 0, -10.18, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -176.15, 0, -10.18, 2, 0)
+ MovementLoopAddLocation(NPC, -179.41, 0, -11.99, 2, 0)
+ MovementLoopAddLocation(NPC, -183.42, 0, -16.42, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.42, 0, -16.42, 2, 0)
+ MovementLoopAddLocation(NPC, -184.03, 0, -13.98, 2, 0)
+ MovementLoopAddLocation(NPC, -182.27, 0, -9.86, 2, 0)
+ MovementLoopAddLocation(NPC, -180.01, 0, -7.23, 2, 0)
+ MovementLoopAddLocation(NPC, -180.12, 0, -5.22, 2, 0)
+ MovementLoopAddLocation(NPC, -182.56, 0, -2.56, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -182.56, 0, -2.56, 2, 0)
+ MovementLoopAddLocation(NPC, -173.09, 0, -10.29, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -173.09, 0, -10.29, 2, 0)
+ MovementLoopAddLocation(NPC, -176.01, 0, -10.1, 2, 0)
+ MovementLoopAddLocation(NPC, -181.74, 0, -13.76, 2, 0)
+ MovementLoopAddLocation(NPC, -186.69, 0, -10.65, 2, 0)
+ MovementLoopAddLocation(NPC, -189.53, 0, -10.39, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -189.53, 0, -10.39, 2, 0)
+ MovementLoopAddLocation(NPC, -184.93, 0, -10.63, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/arottingroyal.lua b/server/SpawnScripts/DownBelow_Classic/arottingroyal.lua
new file mode 100755
index 000000000..e00bd1e70
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/arottingroyal.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/arottingroyal.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/ashrillerNook.lua b/server/SpawnScripts/DownBelow_Classic/ashrillerNook.lua
new file mode 100755
index 000000000..d284ed86a
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/ashrillerNook.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/ashrillerNook.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.14 06:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 1.5, -1.5, 0.5, -0.5, 1.5, 0, 0)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/ashrillerPath.lua b/server/SpawnScripts/DownBelow_Classic/ashrillerPath.lua
new file mode 100755
index 000000000..2020b3e9c
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/ashrillerPath.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/ashrillerPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.15 02:01:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -146, 1.5, -78.61, 2, 0)
+ MovementLoopAddLocation(NPC, -156.39, 1.5, -102.37, 2, 0)
+ MovementLoopAddLocation(NPC, -158.05, 1.5, -110.08, 2, 0)
+ MovementLoopAddLocation(NPC, -158.77, 1.5, -125.77, 2, 0)
+ MovementLoopAddLocation(NPC, -158.97, 1.5, -130.99, 2, 0)
+ MovementLoopAddLocation(NPC, -157.47, 1.5, -133.94, 2, 0)
+ MovementLoopAddLocation(NPC, -155.77, 1.5, -135.47, 2, 0)
+ MovementLoopAddLocation(NPC, -153.24, 1.5, -136.16, 2, 0)
+ MovementLoopAddLocation(NPC, -140.44, 1.5, -136.42, 2, 0)
+ MovementLoopAddLocation(NPC, -132.18, 1.5, -136.46, 2, 0)
+ MovementLoopAddLocation(NPC, -140.45, 1.5, -136.33, 2, 0)
+ MovementLoopAddLocation(NPC, -150.57, 1.5, -136.39, 2, 0)
+ MovementLoopAddLocation(NPC, -155.06, 1.5, -136.22, 2, 0)
+ MovementLoopAddLocation(NPC, -157.06, 1.5, -135.18, 2, 0)
+ MovementLoopAddLocation(NPC, -158.52, 1.5, -129.24, 2, 0)
+ MovementLoopAddLocation(NPC, -158.4, 1.5, -111.11, 2, 0)
+ MovementLoopAddLocation(NPC, -156.25, 1.5, -103.3, 2, 0)
+ MovementLoopAddLocation(NPC, -146, 1.5, -78.61, 2, 0)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombforager.lua b/server/SpawnScripts/DownBelow_Classic/atombforager.lua
new file mode 100755
index 000000000..b808364ad
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombforager.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombforager.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.12 08:01:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 2.5, 2.5, 2, 5, 10)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/atombforagerNarrowMovement.lua b/server/SpawnScripts/DownBelow_Classic/atombforagerNarrowMovement.lua
new file mode 100755
index 000000000..1b2cc1315
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombforagerNarrowMovement.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombforagerNarrowMovement.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.12 08:01:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 2, -2, 2, 5, 10)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder.lua
new file mode 100755
index 000000000..f7b01f7ad
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterbleeder.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder1.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder1.lua
new file mode 100755
index 000000000..8ce43af48
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder1.lua
@@ -0,0 +1,67 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterbleeder1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 09:01:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, math.random(4000,8000), "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -173.31, 1.17, -123.83, 2, 0)
+ MovementLoopAddLocation(NPC, -176.6, 1.17, -120.59, 2, 0)
+ MovementLoopAddLocation(NPC, -180.47, 1.17, -119.24, 2, 0)
+ MovementLoopAddLocation(NPC, -186.67, 1.17, -118.53, 2, 0)
+ MovementLoopAddLocation(NPC, -187.34, 1.17, -119.15, 2, 0)
+ MovementLoopAddLocation(NPC, -187.76, 1.17, -120.66, 2, 0)
+ MovementLoopAddLocation(NPC, -187.78, 1.17, -122.38, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -187.78, 1.17, -122.38, 2, 0)
+ MovementLoopAddLocation(NPC, -187.86, 1.17, -121.05, 2, 0)
+ MovementLoopAddLocation(NPC, -187.97, 1.17, -119.38, 2, 0)
+ MovementLoopAddLocation(NPC, -186.95, 1.17, -118.52, 2, 0)
+ MovementLoopAddLocation(NPC, -184.36, 1.17, -118.39, 2, 0)
+ MovementLoopAddLocation(NPC, -182.65, 1.17, -120.52, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -182.65, 1.17, -120.52, 2, 0)
+ MovementLoopAddLocation(NPC, -183.06, 1.17, -123.23, 2, 0)
+ MovementLoopAddLocation(NPC, -185.04, 1.17, -124.52, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -185.04, 1.17, -124.52, 2, 0)
+ MovementLoopAddLocation(NPC, -183.8, 1.17, -122.93, 2, 0)
+ MovementLoopAddLocation(NPC, -183.22, 1.17, -120.5, 2, 0)
+ MovementLoopAddLocation(NPC, -180, 1.17, -119.19, 2, 0)
+ MovementLoopAddLocation(NPC, -175.44, 1.17, -119.93, 2, 0)
+ MovementLoopAddLocation(NPC, -172.79, 1.17, -122.73, 2, 0)
+ MovementLoopAddLocation(NPC, -171.65, 1.17, -124.95, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -171.65, 1.17, -124.95, 2, 0)
+ MovementLoopAddLocation(NPC, -172.83, 1.17, -122.35, 2, 0)
+ MovementLoopAddLocation(NPC, -172.93, 1.17, -118.99, 2, 0)
+ MovementLoopAddLocation(NPC, -172.1, 1.17, -117.03, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -172.1, 1.17, -117.03, 2, 0)
+ MovementLoopAddLocation(NPC, -172.83, 1.17, -118.78, 2, 0)
+ MovementLoopAddLocation(NPC, -175.76, 1.17, -119.3, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -175.76, 1.17, -119.3, 2, 0)
+ MovementLoopAddLocation(NPC, -174.43, 1.17, -120.81, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -174.43, 1.17, -120.81, 2, 0)
+ MovementLoopAddLocation(NPC, -176.77, 1.17, -122.73, 2, 0)
+ MovementLoopAddLocation(NPC, -179.4, 1.17, -123.53, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -179.4, 1.17, -123.53, 2, 0)
+ MovementLoopAddLocation(NPC, -176.29, 1.17, -121.93, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -176.29, 1.17, -121.93, 2, 0)
+ MovementLoopAddLocation(NPC, -172.82, 1.17, -121.92, 2, 0)
+ MovementLoopAddLocation(NPC, -170.83, 1.17, -123.8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -170.83, 1.17, -123.8, 2, 0)
+ MovementLoopAddLocation(NPC, -173.31, 1.17, -123.83, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder2.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder2.lua
new file mode 100755
index 000000000..26cecdf74
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder2.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterbleeder2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 09:01:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -174.4, 1.17, -117.49, 2, 0)
+ MovementLoopAddLocation(NPC, -175.81, 1.17, -116.41, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -175.81, 1.17, -116.41, 2, 0)
+ MovementLoopAddLocation(NPC, -172.89, 1.17, -117.28, 2, 0)
+ MovementLoopAddLocation(NPC, -170.92, 1.17, -121.85, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -170.92, 1.17, -121.85, 2, 0)
+ MovementLoopAddLocation(NPC, -172.61, 1.17, -120.75, 2, 0)
+ MovementLoopAddLocation(NPC, -176.21, 1.17, -120.81, 2, 0)
+ MovementLoopAddLocation(NPC, -178.38, 1.17, -123.69, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -178.38, 1.17, -123.69, 2, 0)
+ MovementLoopAddLocation(NPC, -178.29, 1.17, -121.91, 2, 0)
+ MovementLoopAddLocation(NPC, -179.86, 1.17, -118.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -179.86, 1.17, -118.14, 2, 0)
+ MovementLoopAddLocation(NPC, -178.22, 1.17, -121.76, 2, 0)
+ MovementLoopAddLocation(NPC, -178.67, 1.17, -125.23, 2, 0)
+ MovementLoopAddLocation(NPC, -179.87, 1.17, -126.85, 2, 0)
+ MovementLoopAddLocation(NPC, -181.08, 1.17, -127.85, 2, 0)
+ MovementLoopAddLocation(NPC, -182.38, 1.17, -127.49, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -182.38, 1.17, -127.49, 2, 0)
+ MovementLoopAddLocation(NPC, -179.09, 1.17, -127.5, 2, 0)
+ MovementLoopAddLocation(NPC, -177.1, 1.17, -126.07, 2, 0)
+ MovementLoopAddLocation(NPC, -173.5, 1.17, -121.93, 2, 0)
+ MovementLoopAddLocation(NPC, -172.32, 1.17, -118.4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -172.32, 1.17, -118.4, 2, 0)
+ MovementLoopAddLocation(NPC, -174.4, 1.17, -117.49, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder3.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder3.lua
new file mode 100755
index 000000000..19369a8f6
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterbleeder3.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterbleeder3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 09:01:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -180.31, 1.17, -120.72, 2, 0)
+ MovementLoopAddLocation(NPC, -177.12, 1.17, -120.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -177.12, 1.17, -120.64, 2, 0)
+ MovementLoopAddLocation(NPC, -177.95, 1.17, -122.21, 2, 0)
+ MovementLoopAddLocation(NPC, -181.41, 1.17, -123.33, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -181.41, 1.17, -123.33, 2, 0)
+ MovementLoopAddLocation(NPC, -177.37, 1.17, -125.55, 2, 0)
+ MovementLoopAddLocation(NPC, -173.77, 1.17, -125.8, 2, 0)
+ MovementLoopAddLocation(NPC, -171.4, 1.17, -124.67, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -171.4, 1.17, -124.67, 2, 0)
+ MovementLoopAddLocation(NPC, -173.28, 1.17, -125.12, 2, 0)
+ MovementLoopAddLocation(NPC, -174.73, 1.17, -124.45, 2, 0)
+ MovementLoopAddLocation(NPC, -176.09, 1.17, -118.3, 2, 0)
+ MovementLoopAddLocation(NPC, -177.28, 1.17, -116.95, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -177.28, 1.17, -116.95, 2, 0)
+ MovementLoopAddLocation(NPC, -178.03, 1.17, -120.22, 2, 0)
+ MovementLoopAddLocation(NPC, -179.48, 1.17, -122.26, 2, 0)
+ MovementLoopAddLocation(NPC, -184.09, 1.17, -123.77, 2, 0)
+ MovementLoopAddLocation(NPC, -184.59, 1.17, -125.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -184.59, 1.17, -125.72, 2, 0)
+ MovementLoopAddLocation(NPC, -184.63, 1.17, -124.04, 2, 0)
+ MovementLoopAddLocation(NPC, -178.56, 1.17, -121.75, 2, 0)
+ MovementLoopAddLocation(NPC, -176.07, 1.17, -121.65, 2, 0)
+ MovementLoopAddLocation(NPC, -173.47, 1.17, -119.74, 2, 0)
+ MovementLoopAddLocation(NPC, -172.15, 1.17, -119.52, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -172.15, 1.17, -119.52, 2, 0)
+ MovementLoopAddLocation(NPC, -173.8, 1.17, -120.19, 2, 0)
+ MovementLoopAddLocation(NPC, -176.58, 1.17, -119.48, 2, 0)
+ MovementLoopAddLocation(NPC, -178.61, 1.17, -117.84, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -178.61, 1.17, -117.84, 2, 0)
+ MovementLoopAddLocation(NPC, -178.14, 1.17, -120.55, 2, 0)
+ MovementLoopAddLocation(NPC, -179.22, 1.17, -122.95, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -179.22, 1.17, -122.95, 2, 0)
+ MovementLoopAddLocation(NPC, -180.5, 1.17, -122.61, 2, 0)
+ MovementLoopAddLocation(NPC, -180.31, 1.17, -120.72, 2, math.random(5,10))
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling1.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling1.lua
new file mode 100755
index 000000000..2308a9191
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling1.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -160.33, -0.05, -113.41, 2, 4)
+ MovementLoopAddLocation(NPC, -157.68, -0.09, -117.17, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -157.68, -0.09, -117.17, 2, 0)
+ MovementLoopAddLocation(NPC, -158.97, -0.12, -118.58, 2, 0)
+ MovementLoopAddLocation(NPC, -162.79, -0.08, -119.15, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -162.79, -0.08, -119.15, 2, 0)
+ MovementLoopAddLocation(NPC, -163.5, -0.08, -119.87, 2, 0)
+ MovementLoopAddLocation(NPC, -160.43, -0.11, -121.5, 2, 0)
+ MovementLoopAddLocation(NPC, -160, -0.04, -123.96, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -160, -0.04, -123.96, 2, 0)
+ MovementLoopAddLocation(NPC, -160.53, -0.1, -122.49, 2, 0)
+ MovementLoopAddLocation(NPC, -157.08, -0.08, -118.1, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -157.08, -0.08, -118.1, 2, 0)
+ MovementLoopAddLocation(NPC, -157.77, -0.09, -116.95, 2, 0)
+ MovementLoopAddLocation(NPC, -158.47, -0.07, -112.41, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.47, -0.07, -112.41, 2, 0)
+ MovementLoopAddLocation(NPC, -160.33, -0.05, -113.41, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling10.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling10.lua
new file mode 100755
index 000000000..bb5a4c9bb
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling10.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling10.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -187.03, -0.09, -107.61, 2, 4)
+ MovementLoopAddLocation(NPC, -187.9, -0.12, -105.79, 2, 0)
+ MovementLoopAddLocation(NPC, -192.62, -0.03, -106.1, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -192.62, -0.03, -106.1, 2, 0)
+ MovementLoopAddLocation(NPC, -193.13, -0.08, -104.51, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -193.13, -0.08, -104.51, 2, 0)
+ MovementLoopAddLocation(NPC, -191.9, -0.1, -105.04, 2, 0)
+ MovementLoopAddLocation(NPC, -187.63, -0.07, -104.24, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -187.63, -0.07, -104.24, 2, 0)
+ MovementLoopAddLocation(NPC, -190.05, -0.13, -105.77, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -190.05, -0.13, -105.77, 2, 0)
+ MovementLoopAddLocation(NPC, -190.62, -0.11, -104.81, 2, 0)
+ MovementLoopAddLocation(NPC, -192.75, -0.07, -104.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -192.75, -0.07, -104.94, 2, 0)
+ MovementLoopAddLocation(NPC, -191.01, -0.11, -105.39, 2, 0)
+ MovementLoopAddLocation(NPC, -186.96, -0.11, -104.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -186.96, -0.11, -104.82, 2, 0)
+ MovementLoopAddLocation(NPC, -187.03, -0.09, -107.61, 2, 3)
+end
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling11.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling11.lua
new file mode 100755
index 000000000..b81437a7e
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling11.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling11.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -194.91, -0.03, -106.14, 2, 4)
+ MovementLoopAddLocation(NPC, -192.49, -0.05, -105.54, 2, 0)
+ MovementLoopAddLocation(NPC, -191.05, -0.11, -105.42, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -191.05, -0.11, -105.42, 2, 0)
+ MovementLoopAddLocation(NPC, -193.46, -0.05, -104.76, 2, 0)
+ MovementLoopAddLocation(NPC, -195.62, -0.09, -103.08, 2, 0)
+ MovementLoopAddLocation(NPC, -196.62, -0.15, -101.22, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -196.62, -0.15, -101.22, 2, 0)
+ MovementLoopAddLocation(NPC, -196.62, -0.15, -101.22, 2, 0)
+ MovementLoopAddLocation(NPC, -196.55, -0.1, -102.44, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -196.55, -0.1, -102.44, 2, 0)
+ MovementLoopAddLocation(NPC, -198.46, -0.08, -102.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -198.46, -0.08, -102.14, 2, 0)
+ MovementLoopAddLocation(NPC, -198.26, -0.09, -100.71, 2, 0)
+ MovementLoopAddLocation(NPC, -197.39, -0.08, -99.12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -197.39, -0.08, -99.12, 2, 0)
+ MovementLoopAddLocation(NPC, -197.3, -0.12, -101.67, 2, 0)
+ MovementLoopAddLocation(NPC, -195.91, -0.05, -103.74, 2, 0)
+ MovementLoopAddLocation(NPC, -192.98, -0.04, -105.37, 2, 0)
+ MovementLoopAddLocation(NPC, -191.11, -0.11, -105.29, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -191.11, -0.11, -105.29, 2, 0)
+ MovementLoopAddLocation(NPC, -193.33, -0.05, -104.92, 2, 0)
+ MovementLoopAddLocation(NPC, -194.91, -0.03, -106.14, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling12.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling12.lua
new file mode 100755
index 000000000..d66b33734
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling12.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling12.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 09:01:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -192.77, -0.09, -104.54, 2, 4)
+ MovementLoopAddLocation(NPC, -194.67, -0.1, -102.91, 2, 0)
+ MovementLoopAddLocation(NPC, -196.36, -0.08, -98.21, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -196.36, -0.08, -98.21, 2, 0)
+ MovementLoopAddLocation(NPC, -198.52, -0.08, -98.35, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -198.52, -0.08, -98.35, 2, 0)
+ MovementLoopAddLocation(NPC, -197.78, -0.08, -99.19, 2, 0)
+ MovementLoopAddLocation(NPC, -198.73, -0.08, -102.01, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -198.73, -0.08, -102.01, 2, 0)
+ MovementLoopAddLocation(NPC, -197.25, -0.06, -104.27, 2, 0)
+ MovementLoopAddLocation(NPC, -196.82, -0.05, -103.34, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -193.51, -0.02, -106.34, 2, 0)
+ MovementLoopAddLocation(NPC, -192, -0.04, -106.69, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -192, -0.04, -106.69, 2, 0)
+ MovementLoopAddLocation(NPC, -193.16, -0.01, -106.3, 2, 0)
+ MovementLoopAddLocation(NPC, -195.68, -0.03, -104.08, 2, 0)
+ MovementLoopAddLocation(NPC, -192.77, -0.09, -104.54, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling2.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling2.lua
new file mode 100755
index 000000000..4b0d9fcf0
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling2.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -163.57, -0.08, -120.36, 2, 4)
+ MovementLoopAddLocation(NPC, -164.17, -0.08, -118.67, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -164.17, -0.08, -118.67, 2, 0)
+ MovementLoopAddLocation(NPC, -160.1, -0.13, -119.79, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -160.1, -0.13, -119.79, 2, 0)
+ MovementLoopAddLocation(NPC, -160.47, -0.1, -120.96, 2, 0)
+ MovementLoopAddLocation(NPC, -158.21, -0.13, -122.6, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.21, -0.13, -122.6, 2, 0)
+ MovementLoopAddLocation(NPC, -159.12, -0.13, -121.06, 2, 0)
+ MovementLoopAddLocation(NPC, -159.34, -0.11, -117.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -159.34, -0.11, -117.72, 2, 0)
+ MovementLoopAddLocation(NPC, -160.12, -0.12, -118.67, 2, 0)
+ MovementLoopAddLocation(NPC, -163.47, -0.08, -118.6, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -163.47, -0.08, -118.6, 2, 0)
+ MovementLoopAddLocation(NPC, -163.57, -0.08, -120.36, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling3.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling3.lua
new file mode 100755
index 000000000..a227a9772
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling3.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -163.99, -0.08, -117.58, 2, 4)
+ MovementLoopAddLocation(NPC, -164.45, -0.08, -118.49, 2, 0)
+ MovementLoopAddLocation(NPC, -168.17, -0.03, -119.03, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -168.17, -0.03, -119.03, 2, 0)
+ MovementLoopAddLocation(NPC, -161.99, -0.04, -119.25, 2, 0)
+ MovementLoopAddLocation(NPC, -158.62, -0.11, -117.97, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.62, -0.11, -117.97, 2, 0)
+ MovementLoopAddLocation(NPC, -157.25, -0.05, -116.02, 2, 0)
+ MovementLoopAddLocation(NPC, -157.29, -0.06, -114.47, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -157.29, -0.06, -114.47, 2, 0)
+ MovementLoopAddLocation(NPC, -156.25, -0.02, -117.26, 2, 0)
+ MovementLoopAddLocation(NPC, -156.64, -0.09, -120.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.64, -0.09, -120.72, 2, 0)
+ MovementLoopAddLocation(NPC, -158.57, -0.12, -119.34, 2, 0)
+ MovementLoopAddLocation(NPC, -166.29, 0.11, -118.75, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -166.29, 0.11, -118.75, 2, 0)
+ MovementLoopAddLocation(NPC, -165.18, -0.08, -118.81, 2, 0)
+ MovementLoopAddLocation(NPC, -163.99, -0.08, -117.58, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling4.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling4.lua
new file mode 100755
index 000000000..2f0d62e72
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling4.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -157.88, -0.11, -119.71, 2, 4)
+ MovementLoopAddLocation(NPC, -157.07, -0.11, -121.81, 2, 0)
+ MovementLoopAddLocation(NPC, -157.75, -0.12, -124.72, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -157.75, -0.12, -124.72, 2, 0)
+ MovementLoopAddLocation(NPC, -159.27, -0.04, -125.1, 2, 0)
+ MovementLoopAddLocation(NPC, -159.76, -0.08, -126.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -159.76, -0.08, -126.82, 2, 0)
+ MovementLoopAddLocation(NPC, -158.39, -0.09, -124.58, 2, 0)
+ MovementLoopAddLocation(NPC, -158.02, -0.12, -122.23, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.02, -0.12, -122.23, 2, 0)
+ MovementLoopAddLocation(NPC, -158.94, -0.12, -119.78, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.94, -0.12, -119.78, 2, 0)
+ MovementLoopAddLocation(NPC, -157.34, -0.09, -118.35, 2, 0)
+ MovementLoopAddLocation(NPC, -156.98, -0.06, -117.28, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.98, -0.06, -117.28, 2, 0)
+ MovementLoopAddLocation(NPC, -156.27, -0.06, -119.42, 2, 0)
+ MovementLoopAddLocation(NPC, -156.71, -0.1, -122.38, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.71, -0.1, -122.38, 2, 0)
+ MovementLoopAddLocation(NPC, -157.47, -0.11, -121.7, 2, 0)
+ MovementLoopAddLocation(NPC, -157.88, -0.11, -119.71, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling5.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling5.lua
new file mode 100755
index 000000000..94ea7d13e
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling5.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling5.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -159.97, -0.02, -124.13, 2, 4)
+ MovementLoopAddLocation(NPC, -158.88, -0.04, -125.24, 2, 0)
+ MovementLoopAddLocation(NPC, -158.67, -0.07, -126.55, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.67, -0.07, -126.55, 2, 0)
+ MovementLoopAddLocation(NPC, -158.68, -0.14, -123.41, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.68, -0.14, -123.41, 2, 0)
+ MovementLoopAddLocation(NPC, -160.11, -0.13, -121.41, 2, 0)
+ MovementLoopAddLocation(NPC, -158.46, -0.11, -118.21, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.46, -0.11, -118.21, 2, 0)
+ MovementLoopAddLocation(NPC, -160.03, -0.13, -119.84, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -160.03, -0.13, -119.84, 2, 0)
+ MovementLoopAddLocation(NPC, -159.05, -0.11, -117.81, 2, 0)
+ MovementLoopAddLocation(NPC, -158.55, -0.07, -112.45, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.55, -0.07, -112.45, 2, 0)
+ MovementLoopAddLocation(NPC, -159.49, -0.05, -113.55, 2, 0)
+ MovementLoopAddLocation(NPC, -158.56, -0.09, -115.49, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.56, -0.09, -115.49, 2, 0)
+ MovementLoopAddLocation(NPC, -159.16, -0.1, -116.45, 2, 0)
+ MovementLoopAddLocation(NPC, -158.49, -0.12, -120.69, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.49, -0.12, -120.69, 2, 0)
+ MovementLoopAddLocation(NPC, -156.72, -0.11, -124.53, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.72, -0.11, -124.53, 2, 0)
+ MovementLoopAddLocation(NPC, -157.56, -0.12, -123.79, 2, 0)
+ MovementLoopAddLocation(NPC, -159.97, -0.02, -124.13, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling6.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling6.lua
new file mode 100755
index 000000000..2a9c3b046
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling6.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling6.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -157.45, -0.06, -116.16, 2, 4)
+ MovementLoopAddLocation(NPC, -156.83, -0.07, -113.25, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.83, -0.07, -113.25, 2, 0)
+ MovementLoopAddLocation(NPC, -156.23, -0.01, -115.29, 2, 0)
+ MovementLoopAddLocation(NPC, -156.69, -0.04, -117.26, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.69, -0.04, -117.26, 2, 0)
+ MovementLoopAddLocation(NPC, -158.91, -0.11, -117.69, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.91, -0.11, -117.69, 2, 0)
+ MovementLoopAddLocation(NPC, -157.37, -0.1, -119.35, 2, 0)
+ MovementLoopAddLocation(NPC, -156.77, -0.1, -122.01, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -156.77, -0.1, -122.01, 2, 0)
+ MovementLoopAddLocation(NPC, -157.4, -0.12, -123.82, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -157.4, -0.12, -123.82, 2, 0)
+ MovementLoopAddLocation(NPC, -157.18, -0.11, -122.5, 2, 0)
+ MovementLoopAddLocation(NPC, -159.18, -0.12, -119.35, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -159.18, -0.12, -119.35, 2, 0)
+ MovementLoopAddLocation(NPC, -158.97, -0.06, -113.93, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -158.97, -0.06, -113.93, 2, 0)
+ MovementLoopAddLocation(NPC, -157.86, -0.08, -114.45, 2, 0)
+ MovementLoopAddLocation(NPC, -157.45, -0.06, -116.16, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling7.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling7.lua
new file mode 100755
index 000000000..5b45a4acf
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling7.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling7.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -180.28, -0.01, -109.77, 2, 4)
+ MovementLoopAddLocation(NPC, -182.84, -0.05, -106.41, 2, 0)
+ MovementLoopAddLocation(NPC, -184.72, -0.08, -104.96, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -184.72, -0.08, -104.96, 2, 0)
+ MovementLoopAddLocation(NPC, -185.96, -0.09, -105.9, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -185.96, -0.09, -105.9, 2, 0)
+ MovementLoopAddLocation(NPC, -184.39, -0.11, -106.5, 2, 0)
+ MovementLoopAddLocation(NPC, -184.13, -0.12, -108.86, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -184.13, -0.12, -108.86, 2, 0)
+ MovementLoopAddLocation(NPC, -182.39, -0.1, -110.09, 2, 0)
+ MovementLoopAddLocation(NPC, -181.81, -0.03, -114.01, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -181.81, -0.03, -114.01, 2, 0)
+ MovementLoopAddLocation(NPC, -181.67, -0.04, -111.03, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -181.67, -0.04, -111.03, 2, 0)
+ MovementLoopAddLocation(NPC, -183.49, -0.13, -109.15, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.49, -0.13, -109.15, 2, 0)
+ MovementLoopAddLocation(NPC, -184, -0.1, -106.66, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -184, -0.1, -106.66, 2, 0)
+ MovementLoopAddLocation(NPC, -181.8, -0.03, -107.53, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -181.8, -0.03, -107.53, 2, 0)
+ MovementLoopAddLocation(NPC, -181.85, -0.1, -109.2, 2, 0)
+ MovementLoopAddLocation(NPC, -180.28, -0.01, -109.77, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling8.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling8.lua
new file mode 100755
index 000000000..5fbd301c7
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling8.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling8.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -181.01, -0.02, -114.52, 2, 4)
+ MovementLoopAddLocation(NPC, -181.52, -0.04, -111.08, 2, 0)
+ MovementLoopAddLocation(NPC, -183.35, -0.13, -108.74, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.35, -0.13, -108.74, 2, 0)
+ MovementLoopAddLocation(NPC, -182.04, -0.07, -108.47, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -182.04, -0.07, -108.47, 2, 0)
+ MovementLoopAddLocation(NPC, -183.38, -0.13, -108.39, 2, 0)
+ MovementLoopAddLocation(NPC, -186.57, -0.1, -106.4, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -186.57, -0.1, -106.4, 2, 0)
+ MovementLoopAddLocation(NPC, -184.69, -0.11, -106.17, 2, 0)
+ MovementLoopAddLocation(NPC, -183.08, -0.08, -107.39, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.08, -0.08, -107.39, 2, 0)
+ MovementLoopAddLocation(NPC, -184.41, -0.11, -107.23, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -184.41, -0.11, -107.23, 2, 0)
+ MovementLoopAddLocation(NPC, -183.79, -0.13, -108.54, 2, 0)
+ MovementLoopAddLocation(NPC, -181.79, -0.06, -110.22, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -181.79, -0.06, -110.22, 2, 0)
+ MovementLoopAddLocation(NPC, -181.86, 0.11, -112.13, 2, 0)
+ MovementLoopAddLocation(NPC, -181.01, -0.02, -114.52, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling9.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling9.lua
new file mode 100755
index 000000000..d9d38d2fa
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterhatchling9.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterhatchling9.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 08:01:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -184.15, -0.07, -105.85, 2, 4)
+ MovementLoopAddLocation(NPC, -189.35, -0.13, -105.22, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -189.35, -0.13, -105.22, 2, 0)
+ MovementLoopAddLocation(NPC, -187.09, -0.11, -105.18, 2, 0)
+ MovementLoopAddLocation(NPC, -183.63, -0.11, -107.37, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -183.63, -0.11, -107.37, 2, 0)
+ MovementLoopAddLocation(NPC, -185.42, -0.09, -106.12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -185.42, -0.09, -106.12, 2, 0)
+ MovementLoopAddLocation(NPC, -186.2, -0.09, -104.51, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -186.2, -0.09, -104.51, 2, 0)
+ MovementLoopAddLocation(NPC, -186.29, -0.1, -106.53, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -186.29, -0.1, -106.53, 2, 0)
+ MovementLoopAddLocation(NPC, -184.08, -0.12, -107.39, 2, 0)
+ MovementLoopAddLocation(NPC, -184.15, -0.07, -105.85, 2, 3)
+end
+
diff --git a/server/SpawnScripts/DownBelow_Classic/atombrifterpest.lua b/server/SpawnScripts/DownBelow_Classic/atombrifterpest.lua
new file mode 100755
index 000000000..53a64f04a
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/atombrifterpest.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/atombrifterpest.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.11 09:01:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/avenomouskeeper.lua b/server/SpawnScripts/DownBelow_Classic/avenomouskeeper.lua
new file mode 100755
index 000000000..333d3dbd9
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/avenomouskeeper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/avenomouskeeper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/avenomouskeeper1.lua b/server/SpawnScripts/DownBelow_Classic/avenomouskeeper1.lua
new file mode 100755
index 000000000..9aa720ede
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/avenomouskeeper1.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/avenomouskeeper1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.10 09:01:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -125.51, 0, -198.22, 2, 4)
+ MovementLoopAddLocation(NPC, -124.89, 0, -198.22, 2, 0)
+ MovementLoopAddLocation(NPC, -124.74, 0, -194.42, 2, 0)
+ MovementLoopAddLocation(NPC, -121.46, 0, -192.42, 2, 0)
+ MovementLoopAddLocation(NPC, -118.8, 0, -191.58, 2, 0)
+ MovementLoopAddLocation(NPC, -110.52, 0, -191.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -110.52, 0, -191.94, 2, 0)
+ MovementLoopAddLocation(NPC, -117, 0, -191.61, 2, 0)
+ MovementLoopAddLocation(NPC, -121.39, 0, -192.47, 2, 0)
+ MovementLoopAddLocation(NPC, -124.15, 0, -197.35, 2, 0)
+ MovementLoopAddLocation(NPC, -124.14, 0, -200.33, 2, 0)
+ MovementLoopAddLocation(NPC, -122.83, 0, -203.14, 2, 0)
+ MovementLoopAddLocation(NPC, -117.72, 0, -204.07, 2, 0)
+ MovementLoopAddLocation(NPC, -114.5, 0, -203.75, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -114.5, 0, -203.75, 2, 0)
+ MovementLoopAddLocation(NPC, -117.19, 0, -204.2, 2, 0)
+ MovementLoopAddLocation(NPC, -124.05, 0, -204.24, 2, 0)
+ MovementLoopAddLocation(NPC, -127.37, 0, -199.57, 2, 0)
+ MovementLoopAddLocation(NPC, -126.24, 0, -197.37, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -126.24, 0, -197.37, 2, 0)
+ MovementLoopAddLocation(NPC, -126.35, 0, -201.34, 2, 0)
+ MovementLoopAddLocation(NPC, -126.35, 0, -201.48, 2, 0)
+ MovementLoopAddLocation(NPC, -123.61, 0, -202.31, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -123.61, 0, -202.31, 2, 0)
+ MovementLoopAddLocation(NPC, -123.98, 0, -195.85, 2, 0)
+ MovementLoopAddLocation(NPC, -121.77, 0, -192.12, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -121.77, 0, -192.12, 2, 0)
+ MovementLoopAddLocation(NPC, -118.06, 0, -191.83, 2, 0)
+ MovementLoopAddLocation(NPC, -113.37, 0, -192.37, 2, 0)
+ MovementLoopAddLocation(NPC, -110.22, 0, -192.15, 2, 0)
+ MovementLoopAddLocation(NPC, -109.91, 0, -190.16, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -109.91, 0, -190.16, 2, 0)
+ MovementLoopAddLocation(NPC, -110.41, 0, -191.52, 2, 0)
+ MovementLoopAddLocation(NPC, -117.32, 0, -191.61, 2, 0)
+ MovementLoopAddLocation(NPC, -123.03, 0, -192.01, 2, 0)
+ MovementLoopAddLocation(NPC, -125.71, 0, -194.57, 2, 0)
+ MovementLoopAddLocation(NPC, -125.49, 0, -198.79, 2, 0)
+ MovementLoopAddLocation(NPC, -123.06, 0, -203, 2, 0)
+ MovementLoopAddLocation(NPC, -120.3, 0, -203.8, 2, 0)
+ MovementLoopAddLocation(NPC, -118.91, 0, -203.86, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -118.91, 0, -203.86, 2, 0)
+ MovementLoopAddLocation(NPC, -123.14, 0, -203.73, 2, 0)
+ MovementLoopAddLocation(NPC, -125.54, 0, -200.1, 2, 0)
+ MovementLoopAddLocation(NPC, -123.72, 0, -198.38, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -123.72, 0, -198.38, 2, 0)
+end
diff --git a/server/SpawnScripts/DownBelow_Classic/avenomouskeeper2.lua b/server/SpawnScripts/DownBelow_Classic/avenomouskeeper2.lua
new file mode 100755
index 000000000..d7262c1ef
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/avenomouskeeper2.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/avenomouskeeper2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.10 08:01:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -108.54, 0, -204.4, 2, 4)
+ MovementLoopAddLocation(NPC, -110.93, 0, -205.49, 2, 0)
+ MovementLoopAddLocation(NPC, -112.79, 0, -205.09, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -112.79, 0, -205.09, 2, 0)
+ MovementLoopAddLocation(NPC, -109.38, 0, -204.87, 2, 0)
+ MovementLoopAddLocation(NPC, -106.52, 0, -203.13, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -106.52, 0, -203.13, 2, 0)
+ MovementLoopAddLocation(NPC, -106.52, 0, -203.13, 2, 0)
+ MovementLoopAddLocation(NPC, -106.48, 0, -207.48, 2, 0)
+ MovementLoopAddLocation(NPC, -105.21, 0, -208.19, 2, 0)
+ MovementLoopAddLocation(NPC, -101.39, 0, -207.69, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -101.39, 0, -207.69, 2, 0)
+ MovementLoopAddLocation(NPC, -104.21, 0, -208, 2, 0)
+ MovementLoopAddLocation(NPC, -105.1, 0, -207.16, 2, 0)
+ MovementLoopAddLocation(NPC, -109.28, 0, -204.57, 2, 0)
+ MovementLoopAddLocation(NPC, -113, 0, -204.27, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -113, 0, -204.27, 2, 0)
+ MovementLoopAddLocation(NPC, -111.63, 0, -204.74, 2, 0)
+ MovementLoopAddLocation(NPC, -105.58, 0, -204.52, 2, 0)
+ MovementLoopAddLocation(NPC, -100.24, 0, -203.7, 2, 0)
+ MovementLoopAddLocation(NPC, -99.77, 0, -201.63, 2, 0)
+ MovementLoopAddLocation(NPC, -99.26, 0, -197.07, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -99.26, 0, -197.07, 2, 0)
+ MovementLoopAddLocation(NPC, -99.49, 0, -199.19, 2, 0)
+ MovementLoopAddLocation(NPC, -99.7, 0, -202.79, 2, 0)
+ MovementLoopAddLocation(NPC, -100.81, 0, -203.72, 2, 0)
+ MovementLoopAddLocation(NPC, -103.54, 0, -203.89, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -103.54, 0, -203.89, 2, 0)
+ MovementLoopAddLocation(NPC, -108.88, 0, -202.67, 2, 0)
+ MovementLoopAddLocation(NPC, -111.48, 0, -200.96, 2, 0)
+ MovementLoopAddLocation(NPC, -113.22, 0, -201.74, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -113.22, 0, -201.74, 2, 0)
+ MovementLoopAddLocation(NPC, -111.77, 0, -201.59, 2, 0)
+ MovementLoopAddLocation(NPC, -105.74, 0, -203.36, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -105.74, 0, -203.36, 2, 0)
+ MovementLoopAddLocation(NPC, -103.06, 0, -203.8, 2, 0)
+ MovementLoopAddLocation(NPC, -100.59, 0, -203.85, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -100.59, 0, -203.85, 2, 0)
+ MovementLoopAddLocation(NPC, -104.01, 0, -204.49, 2, 0)
+ MovementLoopAddLocation(NPC, -108.83, 0, -203.98, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -108.83, 0, -203.98, 2, 0)
+end
diff --git a/server/SpawnScripts/DownBelow_Classic/avenomouswatcher.lua b/server/SpawnScripts/DownBelow_Classic/avenomouswatcher.lua
new file mode 100755
index 000000000..8c8776c86
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/avenomouswatcher.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/avenomouswatcher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/avenomspitter.lua b/server/SpawnScripts/DownBelow_Classic/avenomspitter.lua
new file mode 100755
index 000000000..bb94a55de
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/avenomspitter.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/avenomspitter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.09 09:01:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/DownBelow_Classic/avenomspitterRoam.lua b/server/SpawnScripts/DownBelow_Classic/avenomspitterRoam.lua
new file mode 100755
index 000000000..028b75985
--- /dev/null
+++ b/server/SpawnScripts/DownBelow_Classic/avenomspitterRoam.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/DownBelow_Classic/avenomspitterRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.10 09:01:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -129.17, 0, -205.11, 2, 4)
+ MovementLoopAddLocation(NPC, -124.77, 0, -200.32, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -124.77, 0, -200.32, 2, 0)
+ MovementLoopAddLocation(NPC, -126.25, 0, -197.73, 2, 0)
+ MovementLoopAddLocation(NPC, -126.68, 0, -194.85, 2, 0)
+ MovementLoopAddLocation(NPC, -125.22, 0, -193.28, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -125.22, 0, -193.28, 2, 0)
+ MovementLoopAddLocation(NPC, -126.62, 0, -196.06, 2, 0)
+ MovementLoopAddLocation(NPC, -126.37, 0, -200.66, 2, 0)
+ MovementLoopAddLocation(NPC, -123.53, 0, -202.65, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -123.53, 0, -202.65, 2, 0)
+ MovementLoopAddLocation(NPC, -123.53, 0, -202.65, 2, 0)
+ MovementLoopAddLocation(NPC, -124.65, 0, -201.74, 2, 0)
+ MovementLoopAddLocation(NPC, -121.98, 0, -199.6, 2, 0)
+ MovementLoopAddLocation(NPC, -121.82, 0, -197.94, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -121.82, 0, -197.94, 2, 0)
+ MovementLoopAddLocation(NPC, -122.95, 0, -198.38, 2, 0)
+ MovementLoopAddLocation(NPC, -127.06, 0, -197.8, 2, 0)
+ MovementLoopAddLocation(NPC, -128.27, 0, -194.81, 2, 0)
+ MovementLoopAddLocation(NPC, -126.95, 0, -193.13, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -126.95, 0, -193.13, 2, 0)
+ MovementLoopAddLocation(NPC, -129.52, 0, -195.83, 2, 0)
+ MovementLoopAddLocation(NPC, -129.98, 0, -201.38, 2, 0)
+ MovementLoopAddLocation(NPC, -129.17, 0, -205.11, 2, 3)
+end
+
diff --git a/server/SpawnScripts/EastFreeport/ASafarofMajdul.lua b/server/SpawnScripts/EastFreeport/ASafarofMajdul.lua
new file mode 100755
index 000000000..9d04baf84
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/ASafarofMajdul.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/ASafarofMajdul.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:18
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "It is an honor to assist you in your travels to the Isle of Ro. Please just take one of our carpets out to the boat that will take you to the Isle of Ro.", "fullcurtsey", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/AlypiaDamian.lua b/server/SpawnScripts/EastFreeport/AlypiaDamian.lua
new file mode 100755
index 000000000..75a37927e
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/AlypiaDamian.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/AlypiaDamian.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.02 08:10:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC,"","","threaten",0,0,Spawn)
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, hello there. Aren't you the most precious thing! Want to see what I'm selling? I've many nice things that'd do wonders for your image, and my prices are very fair.")
+ Dialog.AddVoiceover("voiceover/english/merchant_alypia_damian/fprt_east/mer_alpyiamanian.mp3", 2228325168, 2657189177)
+ PlayFlavor(NPC,"","","hello",0,0,Spawn)
+ Dialog.AddOption("I have pressing business elsewhere. Safe journeys to you.")
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
+ Dialog.AddOption("Can I think it over?", "Dialog2")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Listen pal. I don't stand here all day for people to think about buying something. Either check out what I have to sell or move out of the way.")
+ PlayFlavor(NPC,"","","tapfoot",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/alypia_damian/fprt_east/mer_alpyiamanian000.mp3", 2608491411, 1675987239)
+ Dialog.AddOption("What is wrong with you?", "Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I've a lot to do, and I don't have time to waste on someone who can't make up their mind. So, please be a dear and go bother someone else.")
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/alypia_damian/fprt_east/mer_alpyiamanian001.mp3", 2481419509, 1914402501)
+ Dialog.AddOption("Okay.")
+ Dialog.Start()
+end
+
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "boggle", 0, 0, Spawn)
+ Dialog.AddDialog("Foreign plant? Are you stupid? What the heck would I do with a foreign plant? This isn't Qeynos, fool. Now either buy something or quit wasting my time.")
+ Dialog.AddVoiceover("voiceover/english/alypia_damian/fprt_east/mer_alpyiamanian002.mp3", 1012015884, 2934321566)
+ Dialog.AddOption("Fine! Sorry.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/AtianooDonicus.lua b/server/SpawnScripts/EastFreeport/AtianooDonicus.lua
new file mode 100755
index 000000000..75e1a9157
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/AtianooDonicus.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/AtianooDonicus.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:44
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/BarriusIacomus.lua b/server/SpawnScripts/EastFreeport/BarriusIacomus.lua
new file mode 100755
index 000000000..56b903be6
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/BarriusIacomus.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/BarriusIacomus.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.08 01:10:10
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+ end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahoy! Welcome to the Seafarer's Roost. Name's Barrius, but all these scallywags just call me Bar. Be sure to mind your manners. I don't want any more trouble!")
+ Dialog.AddVoiceover("voiceover/english/barrius_iacomus/fprt_east/mer_barrius_iacomus.mp3", 1480714381, 1891140502)
+ Dialog.AddOption("I am not thirsty. Thank you anyways.")
+ Dialog.AddOption("What kind of trouble?", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("One drink too many, one word misspoken, one chair accidentally broken over someone's head and before you know it, we have the Militia in here keeping the peace. Dead drunks don't pay their tabs!")
+ Dialog.AddVoiceover("voiceover/english/barrius_iacomus/fprt_east/mer_barrius_iacomus000.mp3", 2301022032, 1978382838)
+ Dialog.AddOption("Okay.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/EastFreeport/Bernice.lua b/server/SpawnScripts/EastFreeport/Bernice.lua
new file mode 100755
index 000000000..6aeaaa9bc
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Bernice.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Bernice.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 05:10:49
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
+SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ GenericDrunkCallout(NPC, Spawn, faction)
+ end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericDrunkHail(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/BrucciusCapito.lua b/server/SpawnScripts/EastFreeport/BrucciusCapito.lua
new file mode 100755
index 000000000..1da4df80b
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/BrucciusCapito.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/BrucciusCapito.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 02:10:07
+ Script Purpose :
+ :
+--]]
+
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Helloo there! Can you feel it? The wind is changing direction....")
+ Dialog.AddVoiceover("voiceover/english/optional1/bruccius_capito/fprt_east/qst_brucciuscapito.mp3", 2213419422, 824549942)
+ Dialog.AddOption("I must meet someone soon and must be going. Good day.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/ChonaxBonedancer.lua b/server/SpawnScripts/EastFreeport/ChonaxBonedancer.lua
new file mode 100755
index 000000000..470cea943
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/ChonaxBonedancer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/ChonaxBonedancer.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:35
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/DamarGThez.lua b/server/SpawnScripts/EastFreeport/DamarGThez.lua
new file mode 100755
index 000000000..5b0dad7ff
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/DamarGThez.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/DamarGThez.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:01
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/FadiaCoggles.lua b/server/SpawnScripts/EastFreeport/FadiaCoggles.lua
new file mode 100755
index 000000000..735c85baa
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/FadiaCoggles.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/FadiaCoggles.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:06
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Fichman.lua b/server/SpawnScripts/EastFreeport/Fichman.lua
new file mode 100755
index 000000000..0215c07f2
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Fichman.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Fichman.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 05:10:54
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
+SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ GenericDrunkCallout(NPC, Spawn, faction)
+ end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericDrunkHail(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/GladiatorSkullgrind.lua b/server/SpawnScripts/EastFreeport/GladiatorSkullgrind.lua
new file mode 100755
index 000000000..e65ce2db2
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/GladiatorSkullgrind.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/GladiatorSkullgrind.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:41
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Irena.lua b/server/SpawnScripts/EastFreeport/Irena.lua
new file mode 100755
index 000000000..a04eae964
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Irena.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Irena.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:15
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Javvy.lua b/server/SpawnScripts/EastFreeport/Javvy.lua
new file mode 100755
index 000000000..0a8c7545c
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Javvy.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Javvy.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 05:10:56
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Shove off! Not interested in company. Leave me to my grog. ")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1048.mp3", 0, 0)
+ Dialog.AddOption("Whatever...")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Jistarr.lua b/server/SpawnScripts/EastFreeport/Jistarr.lua
new file mode 100755
index 000000000..5debbe0ce
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Jistarr.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Jistarr.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:06
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Josef.lua b/server/SpawnScripts/EastFreeport/Josef.lua
new file mode 100755
index 000000000..0420f85af
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Josef.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Josef.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:46
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Kouryick.lua b/server/SpawnScripts/EastFreeport/Kouryick.lua
new file mode 100755
index 000000000..5ec62ab8a
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Kouryick.lua
@@ -0,0 +1,76 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Kouryick.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 05:10:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog3(NPC, Spawn)
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey! If it isn't my ol' marauder killin' buddy! Drink up!")
+ Dialog.AddVoiceover("voiceover/english/kouryick/fprt_east/qst_kouryick012.mp3", 1785679252, 3662653439)
+ Dialog.AddOption("Ok.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A Seafury ship with some very personal cargo went down off the coast of the Nektulos forest. I know those Nerius marauders were responsible! I just know it! If you get my cargo back for me, I'd be very grateful. I'd do it, but I'm so busy.")
+ Dialog.AddVoiceover("voiceover/english/kouryick/fprt_east/qst_kouryick001.mp3", 3246317258, 3403783500)
+ Dialog.AddOption("I will retrieve the cargo.", "Dialog5")
+ Dialog.AddOption("I don't want to help.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What do you want? Can't you see I want to be alone? Wait. Wait. Maybe you can help me?")
+ Dialog.AddVoiceover("voiceover/english/kouryick/fprt_east/qst_kouryick000.mp3", 1405975208, 3281446533)
+ Dialog.AddOption("What can I do?", "Dialog2")
+ Dialog.AddOption("No.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh yes. Yes. I knew you wouldn't let me down. I could just tell that about you..about you. Not like those useless marauders...untrustworthy pusses. I'll never trust them again.")
+ Dialog.AddVoiceover("voiceover/english/kouryick/fprt_east/qst_kouryick005.mp3", 3198731400, 4098557916)
+ Dialog.AddOption("Goodbye.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good! Be careful. Those marauders are sneaky.")
+ Dialog.AddVoiceover("voiceover/english/kouryick/fprt_east/qst_kouryick002.mp3", 414993411, 1936857844)
+ Dialog.AddOption("Goodbye.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What are you doing here? Where's that cargo? Don't come back unless you have it.")
+ Dialog.AddVoiceover("voiceover/english/kouryick/fprt_east/qst_kouryick004.mp3", 1561165149, 1345431663)
+ Dialog.AddOption("Okay.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Kronasoo.lua b/server/SpawnScripts/EastFreeport/Kronasoo.lua
new file mode 100755
index 000000000..9aeb9833f
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Kronasoo.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Kronasoo.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:03
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/LolliaParnesius.lua b/server/SpawnScripts/EastFreeport/LolliaParnesius.lua
new file mode 100755
index 000000000..bfb45806e
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/LolliaParnesius.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/LolliaParnesius.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.08 04:10:12
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, hello there! Perhaps my eyes fail me, but you look like you're handy with a quill. Can you do some scribe work for me?")
+ Dialog.AddVoiceover("voiceover/english/optional1/lollia_parnesius/fprt_east/mer_lolliaparnesius.mp3", 2582198165, 1582491385)
+ Dialog.AddOption("I would sooner use the quill to stab you than to write with it...")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/EastFreeport/MeleniaScantus.lua b/server/SpawnScripts/EastFreeport/MeleniaScantus.lua
new file mode 100755
index 000000000..597d6a237
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/MeleniaScantus.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/MeleniaScantus.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:51
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/MirowiBurrah.lua b/server/SpawnScripts/EastFreeport/MirowiBurrah.lua
new file mode 100755
index 000000000..4fa1394fa
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/MirowiBurrah.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/MirowiBurrah.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:29
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/MoiraeNalascos.lua b/server/SpawnScripts/EastFreeport/MoiraeNalascos.lua
new file mode 100755
index 000000000..2c8879e99
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/MoiraeNalascos.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/MoiraeNalascos.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:13
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Neskavul.lua b/server/SpawnScripts/EastFreeport/Neskavul.lua
new file mode 100755
index 000000000..c796972e1
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Neskavul.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Neskavul.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:09
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/PulcherAmandio.lua b/server/SpawnScripts/EastFreeport/PulcherAmandio.lua
new file mode 100755
index 000000000..e5e9b4e85
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/PulcherAmandio.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/PulcherAmandio.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 05:10:20
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+ end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Leave me be. Leave me be!")
+ Dialog.AddVoiceover("pulcher_amandio/liveevents/jul_07/pulcher001.mp3", 3642849910, 492507522)
+ Dialog.AddOption("I'm going. I'm going!")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/PutadBloodrinker.lua b/server/SpawnScripts/EastFreeport/PutadBloodrinker.lua
new file mode 100755
index 000000000..2523e973a
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/PutadBloodrinker.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/PutadBloodrinker.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/RanikCalman.lua b/server/SpawnScripts/EastFreeport/RanikCalman.lua
new file mode 100755
index 000000000..be640625d
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/RanikCalman.lua
@@ -0,0 +1,251 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/RanikCalman.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.05 03:10:05
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local Fighter = 5898
+local Scout = 5910
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+ end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye. Welcome to the Seafarer's Roost. Been out at sea for a while, or just stopping through? Put some coin in my hand and I'll sell ye drinks until ye sail out again.")
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman000.mp3", 2125799617, 970361473)
+ if HasQuest(Spawn,Fighter) and GetQuestStep(Spawn,Fighter)>=3 and GetQuestStep(Spawn,Fighter)<=5 and GetQuestStepProgress(Spawn,Fighter,4)==0 then
+ Dialog.AddOption("I have a message for you from the Overlord.","Dialog2")
+ end
+ if HasQuest(Spawn,Scout) and GetQuestStep(Spawn,Scout)>=3 and GetQuestStep(Spawn,Scout)<=4 and GetQuestStepProgress(Spawn,Scout,4)==0 then
+ Dialog.AddOption("I can sing you songs! I have such tales to tell!","Dialog4")
+ end
+ Dialog.AddOption("Thanks for the info.")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("From the Overlord? Really? Umm ... I'm afraid to ask what the message is...")
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman001.mp3", 2775106195, 3777373516)
+ Dialog.AddOption("You should be. How about a kick to the groin!","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "kick", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog2b",1,Spawn)
+end
+
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(NPC, "", "", "gutcramp", 0, 0, Spawn)
+ ApplySpellVisual(NPC,249)
+ AddTimer(NPC,800,"Dialog3",1,Spawn)
+end
+
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ow! What kind of message was that?")
+ SetStepComplete(Spawn,Fighter,4)
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman002.mp3", 2302749969, 1537670483)
+ Dialog.AddOption("No more serving Guttersnipes!")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ local Race = GetRace(Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Take it to the theater, you silly fop! We don't want to hear any stupid lullabies, and I sure as heck am not gonna pay you to do it, either. Now, leave me alone. I'm counting my daily earnings.")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman004.mp3", 3300208815, 926648094)
+ Dialog.AddOption("[ Wrack your brain for a sad love song ]","Dialog4a")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC, Spawn)
+ local Race = GetRace(Spawn)
+ FaceTarget(Spawn, NPC)
+ FaceTarget(NPC, Spawn)
+if Race == 0 then -- Barbarian
+ PlayFlavor(Spawn, "", "In Freeport's clash, where steel and shadows entwine, Barbarian's heart yearns for Halas, a love divine.", "orate", 0, 0)
+ elseif Race == 1 then -- Dark Elf
+ PlayFlavor(Spawn, "", "Beneath Neriak's shadows, where Fallen Gate crumbled low, Teir'Dal heart, once ablaze, now cloaked in woe.", "orate", 0, 0)
+ elseif Race == 3 then -- Erudite
+ PlayFlavor(Spawn, "", "In Freeport's shadow, where brilliance meets disdain, Erudite's heart, an unsung symphony of intellectual pain.", "orate", 0, 0)
+ elseif Race == 5 then--Gnome
+ PlayFlavor(Spawn, "", "In Temple Street's embrace, where ratonga shadows play, Gnome's heart, a cog amiss, love's invention led astray.", "orate", 0, 0)
+ elseif Race == 6 then -- Half Elf
+ PlayFlavor(Spawn, "", "In Barggar's Court's twilight, where shadows dance with strife, Half-elf's heart, a blend of races, a turbulent life.", "orate", 0, 0)
+ elseif Race == 9 then -- Human
+ PlayFlavor(Spawn, "", "In Freeport's embrace, where shadows silently weep, Love's loyalty shattered, in betrayal's deep.", "orate", 0, 0)
+ elseif Race == 10 then -- Iksar
+ PlayFlavor(Spawn, "", "In Freeport's shadow, where the past lies entwined, Iksar's heart echoes for an empire left behind.", "orate", 0, 0)
+ elseif Race == 11 then -- Kerra
+ PlayFlavor(Spawn, "", "In Freeport's alleys, where shadows twist and turn, Kerran's heart aches, for a lover they yearn.", "orate", 0, 0)
+ elseif Race == 12 then -- Ogre
+ PlayFlavor(Spawn, "", "In Freeport's shadows, where vengeance breeds might, Ogre's heart, a battlefield, love in the fight.", "orate", 0, 0)
+ elseif Race == 13 then-- Ratonga
+ PlayFlavor(Spawn, "", "From caves I fled, where shadows held their sway, Ratonga heart, in the city, lost its way.", "orate", 0, 0)
+ elseif Race == 14 then -- Troll
+ PlayFlavor(Spawn, "", "In Freeport's chaos, where my hunger reigns, Troll heart pounds, love's feast in my veins.", "orate", 0, 0)
+ elseif Race == 17 then -- Arasai
+ PlayFlavor(Spawn, "", "In Freeport's shadowed realm where allegiance binds, Arasai heart in servitude, love's fate unwinds.", "orate", 0, 0)
+ elseif Race == 19 then -- Vampire
+ PlayFlavor(Spawn, "", "In Freeport's cloak, where shadows veil my plight, A silent yearning, love cloaked in the night.", "orate", 0, 0)
+ else
+ PlayFlavor(Spawn, "", "On waves of sorrow, The Sundering's cruel divide, Lost love's echo, in the ocean's somber tide.", "orate", 0, 0)
+end
+ AddTimer(NPC,4300,"Dialog5",1,Spawn)
+end
+
+function Dialog5(NPC, Spawn)
+ local Race = GetRace(Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey... what kind of love song is this?")
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman005.mp3", 160002062, 3362984864)
+ Dialog.AddOption("[ Grasp at the chords of lost love ]","Dialog5a")
+ Dialog.Start()
+end
+
+function Dialog5a(NPC, Spawn)
+ local Race = GetRace(Spawn)
+ FaceTarget(Spawn, NPC)
+ FaceTarget(NPC, Spawn)
+if Race == 0 then -- Barbarian
+ PlayFlavor(Spawn, "", "Northern winds whisper tales of snow-kissed lore, Longing for home, in Freeport's turbulent roar.", "orate", 0, 0)
+ elseif Race == 1 then -- Dark Elf
+ PlayFlavor(Spawn, "", "In the rubble's embrace, love's demise took its toll, Lost in the echoes, swallowed by the blackened soul.", "orate", 0, 0)
+ elseif Race == 3 then -- Erudite
+ PlayFlavor(Spawn, "", "Among the unseeing, genius sparks dimly burn, Love for knowledge unreturned, a scholar's yearn.", "orate", 0, 0)
+ elseif Race == 5 then--Gnome
+ PlayFlavor(Spawn, "", "Among rat folk whispers, dreams of gears gone awry, Tinkering hands fumbled, like a broken lullaby.", "orate", 0, 0)
+ elseif Race == 6 then -- Half Elf
+ PlayFlavor(Spawn, "", "Caught between disdain, in the alleys' disdainful gaze, Love's harmony falters in a world of mixed-race malaise.", "orate", 0, 0)
+ elseif Race == 9 then -- Human
+ PlayFlavor(Spawn, "", "To Qeynos they journeyed, leaving loyalty behind, A city's grief echoes, in a broken heart confined.", "orate", 0, 0)
+ elseif Race == 10 then -- Iksar
+ PlayFlavor(Spawn, "", "Amidst the alleys, yearning for a bygone reign, Love's lament weaves through scales, a nostalgic pain.", "orate", 0, 0)
+ elseif Race == 11 then -- Kerra
+ PlayFlavor(Spawn, "", "Erudite experiments, a twisted fate, Love's sacrifice in a lab of cold debate.", "orate", 0, 0)
+ elseif Race == 12 then -- Ogre
+ PlayFlavor(Spawn, "", "Crushing foes, but a tender ache remains, Lost in war drums, love's haunting refrains.", "orate", 0, 0)
+ elseif Race == 13 then-- Ratonga
+ PlayFlavor(Spawn, "", "In Freeport's maze, love's scent begins to fade, Echoes of escape, a love betrayed.", "orate", 0, 0)
+ elseif Race == 14 then -- Troll
+ PlayFlavor(Spawn, "", "Not too bright, but I feel the yearning sting, To devour love, a clumsy, wild thing.", "orate", 0, 0)
+ elseif Race == 17 then -- Arasai
+ PlayFlavor(Spawn, "", "Dark Elf's command, a haunting melody, Love's wings clipped, in loyalty's decree.", "orate", 0, 0)
+ elseif Race == 19 then -- Vampire
+ PlayFlavor(Spawn, "", "Amongst mortals' throng, my heart a whispering ghost, Love's crimson ache, a secret engrossed.", "orate", 0, 0)
+ else
+ PlayFlavor(Spawn, "", "To the Isle of Refuge, my heart drifts alone, Torn continents, a love forever overthrown.", "orate", 0, 0)
+end
+ AddTimer(NPC,4300,"Dialog6",1,Spawn)
+end
+
+
+
+function Dialog6(NPC, Spawn)
+ local Race = GetRace(Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That is one heck of a sad song, buddy. Why don't you ... uh ... quit singing already, okay?")
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman006.mp3", 471096328, 2312190469)
+ Dialog.AddOption("[ Wrap up your woeful melody ]","Dialog7")
+ Dialog.Start()
+end
+
+
+
+function Dialog7(NPC, Spawn)
+ local Race = GetRace(Spawn)
+ FaceTarget(Spawn, NPC)
+ FaceTarget(NPC, Spawn)
+if Race == 0 then -- Barbarian
+ PlayFlavor(Spawn, "", "Halas' echoes resonate in a barbarian's croon, A song of sorrow, in Freeport's city, beneath the cold shattered moon.", "heartattack", 0, 0)
+ elseif Race == 1 then -- Dark Elf
+ PlayFlavor(Spawn, "", "Hate's bitter symphony, in the ruins' cruel fate, A Teir'Dal weeps for a love entwined with Fallen Gate.", "heartattack", 0, 0)
+ elseif Race == 3 then -- Erudite
+ PlayFlavor(Spawn, "", "In the city's noise, Erudite laments in tune, A mind unappreciated, beneath the indifferent broken moon.", "heartattack", 0, 0)
+ elseif Race == 5 then--Gnome
+ PlayFlavor(Spawn, "", "Temple Street echoes a gnome's melancholy croon, Tinkering sans love, in ratonga shadows, under the fractured moon.", "heartattack", 0, 0)
+ elseif Race == 6 then -- Half Elf
+ PlayFlavor(Spawn, "", "Barggar's Court weeps beneath the moon's indifferent boon, A half-elf's sorrow, in the echoes of a love lost too soon.", "heartattack", 0, 0)
+ elseif Race == 9 then -- Human
+ PlayFlavor(Spawn, "", "Under Freeport's watchful towers, love's melody is strewn, A betrayed soul laments, beneath the moon's cold tune.", "heartattack", 0, 0)
+ elseif Race == 10 then -- Iksar
+ PlayFlavor(Spawn, "", "Under Freeport's banner, a reptilian croon, Longing for the empire, 'neath the shattered Luclin moon.", "heartattack", 0, 0)
+ elseif Race == 11 then -- Kerra
+ PlayFlavor(Spawn, "", "Beneath Freeport's towers, a Kerran mourns, A feline soul weeps, as their lover's essence is torn.", "heartattack", 0, 0)
+ elseif Race == 12 then -- Ogre
+ PlayFlavor(Spawn, "", "With fists like thunder, still, a heart yearns true, In the battlefield's chaos, love's war cries pursue.", "heartattack", 0, 0)
+ elseif Race == 13 then-- Ratonga
+ PlayFlavor(Spawn, "", "Through alleys dark, where secrets intertwine, Ratonga weeps, in the city's lonely design.", "heartattack", 0, 0)
+ elseif Race == 14 then -- Troll
+ PlayFlavor(Spawn, "", "Amidst the hunt, I seek what I can't name, In the taste of sorrow, love becomes my game.", "heartattack", 0, 0)
+ elseif Race == 17 then -- Arasai
+ PlayFlavor(Spawn, "", "Through Teir'Dal whispers, my heart's lament, In shadows cast, a forlorn love, forever spent.", "heartattack", 0, 0)
+ elseif Race == 19 then -- Vampire
+ PlayFlavor(Spawn, "", "In the depths of shadows, I fade away, Lost in echoes of love, in the cold dark's sway.", "heartattack", 0, 0)
+ else
+ PlayFlavor(Spawn, "", "Amidst the sea's lament, a whispering plea, In the abyss of parting, love sank beneath the Tranquil Sea.", "heartattack", 0, 0)
+end
+ AddTimer(NPC,4300,"Dialog7a",1,Spawn)
+end
+
+
+function Dialog7a(NPC, Spawn)
+ CloseConversation(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("[Your song has distracted Ranik away from his accounting. A gold coin rests on the edge of the counter. If you are sly enough, you might just...]")
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("[ Casually slip the coin into your palm ]","CoinSwipe")
+ Dialog.Start()
+end
+
+function CoinSwipe(NPC,Spawn)
+ PlayFlavor(Spawn, "", "", "converse_male06", 0, 0,NPC)
+ SendMessage(Spawn,"You slip Ranik's coin off the counter and into your pocket.")
+ SendPopUpMessage(Spawn,"You slip the coin into your palm",220,220,220)
+ AddTimer(NPC,1700,"Dialog7b",1,Spawn)
+end
+
+
+function CoinSwipe3(NPC,Spawn)
+end
+
+function Dialog7b(NPC, Spawn)
+ SetStepComplete(Spawn,Scout,4)
+ CloseConversation(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey ... just ... just shut up, already, okay? Wow, you've got it bad. I guess ... I guess you can sing here if you want ... but please try to lighten it up some, okay? ")
+ PlayFlavor(NPC, "", "", "sigh", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/merchant_ranik_calman/fprt_east/ranikcalman007.mp3", 1462727142, 588866905)
+ Dialog.AddOption("Perhaps next time. I'm off for now!")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Rashja.lua b/server/SpawnScripts/EastFreeport/Rashja.lua
new file mode 100755
index 000000000..5808b012a
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Rashja.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Rashja.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:38
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/RennyParvat.lua b/server/SpawnScripts/EastFreeport/RennyParvat.lua
index c809346f5..a676f8e6d 100755
--- a/server/SpawnScripts/EastFreeport/RennyParvat.lua
+++ b/server/SpawnScripts/EastFreeport/RennyParvat.lua
@@ -5,12 +5,16 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
end
function hailed(NPC, Spawn)
+if HasQuest(Spawn,5865) and not QuestStepIsComplete(Spawn,5865,1)then --FREEPORT OPPORTUNITY
+ SetStepComplete(Spawn,5865,1)
+end
Dialog2(NPC, Spawn)
end
@@ -30,10 +34,11 @@ function Dialog1(NPC, Spawn)
end
function Dialog2(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("What are you looking at? Stay away from me, and keep your hands off my collections, you scumbag!")
- Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1046.mp3", 0, 0)
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..choice.."_1046.mp3", 0, 0)
Dialog.AddOption("What collections?", "Dialog8")
if HasCollectionsToHandIn(Spawn) then
Dialog.AddOption("I have a collection for you.", "Dialog1")
diff --git a/server/SpawnScripts/EastFreeport/Rumdum.lua b/server/SpawnScripts/EastFreeport/Rumdum.lua
index 801ede7f2..4bc38edb9 100755
--- a/server/SpawnScripts/EastFreeport/Rumdum.lua
+++ b/server/SpawnScripts/EastFreeport/Rumdum.lua
@@ -56,7 +56,7 @@ function Dialog7(NPC, Spawn)
Dialog.AddDialog("Froglok?! Let me tell ya somethin' 'bout them Frogloks... them froggies are only good fer squishin'. I remember the first time I squished a Froglok ... I was five-years old and --")
Dialog.AddVoiceover("voiceover/english/rumdum/fprt_east/quest_rumdum008.mp3", 1911216997, 2661721879)
Dialog.AddEmote("threaten")
- if HasCoin(Spawn, 400) then
+ if HasCoin(Spawn, 400) and CanReceiveQuest(Spawn,TheSteinOfMoggok)then
Dialog.AddOption("Bartender, we need another four silver ale here!", "Dialog8")
end
Dialog.AddOption("That's it, I'm out of here.")
@@ -117,7 +117,7 @@ function Dialog2(NPC, Spawn)
Dialog.AddDialog("Are ya callin' me smelly?! Nobody calls Rumdum Clurg smelly!")
Dialog.AddVoiceover("voiceover/english/rumdum/fprt_east/quest_rumdum002.mp3", 2456172890, 2255945862)
Dialog.AddEmote("threaten")
- if not HasQuest(Spawn, TheSteinOfMoggok) and not HasCompletedQuest(Spawn, TheSteinOfMoggok) then
+ if not HasQuest(Spawn, TheSteinOfMoggok) and not HasCompletedQuest(Spawn, TheSteinOfMoggok) and CanReceiveQuest(Spawn,TheSteinOfMoggok) then
Dialog.AddOption("Easy, big guy. How about I buy you a drink?", "Dialog3")
end
Dialog.AddOption("Uh... I'll be leaving now.")
diff --git a/server/SpawnScripts/EastFreeport/SileniTRhizius.lua b/server/SpawnScripts/EastFreeport/SileniTRhizius.lua
new file mode 100755
index 000000000..17b7bf655
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/SileniTRhizius.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/SileniTRhizius.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/StilusGraphium.lua b/server/SpawnScripts/EastFreeport/StilusGraphium.lua
new file mode 100755
index 000000000..df5515e8d
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/StilusGraphium.lua
@@ -0,0 +1,159 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/StilusGraphium.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.27 04:09:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local Part1 = 5889
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+if GetAlignment(Spawn)~=0 then
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+else
+ Dialog1(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hail, hail, and all that. I'm very busy right now. I must get today's edition out by at least tomorrow. If you want to chat, try the guards. They're always up for good banter.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium.mp3", 626338698, 3291446303)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("I'm looking for more than gossip. Surely this place has more to offer.","Intro1")
+ Dialog.AddOption("Fine. I was just leaving.")
+ Dialog.Start()
+end
+
+function Intro1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Observer has been here for generations. No matter which way the wind blows at the time, people hunger for the truth. As the editor of the Observer, I give the people the REAL truth, not the kind the Quintet would have you hear.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/quests/stilusgraphium/stilus_x1_finish.mp3", 3836403748, 1513651252)
+ Dialog.AddOption("I get around. Have any leads I can help with?","Intro1A")
+ Dialog.AddOption("What kind of truth does the Quintet supply?","Intro2")
+ Dialog.AddOption("Well, unless I do something amazing leave me out of it!")
+ Dialog.Start()
+end
+
+function Intro1A(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Overlord and the Quintet detest freelancers. If you want real power in this city, the only place to find it is in the arms of the Quintet.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/quests/stilusgraphium/stilus_x1_finish3.mp3", 4067542453, 3603700039)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("What kind of truth does the Quintet supply?","Intro2")
+ Dialog.AddOption("Well, I've lost interest anyway.")
+ Dialog.Start()
+end
+
+function Intro2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Their usual fare of propaganda - \"We're your only hope\", \"The Overlord likes us more than the other four\", \"Join us or die\". Well, they're right about that last one, at least. Anyone who's someone has to choose a side one of these days.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/quests/stilusgraphium/stilus_x1_finish2.mp3", 2443543125, 1280249851)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddOption("That all sounds like my kind of news!")
+ Dialog.AddOption("What if I don't want to choose a side?","Dialog2")
+ Dialog.Start()
+end
+
+
+
+
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("People who don't choose a side end up breathing dirt in some fitlhy alley. This is the one thing the Quintet agree on. Choose a side when they tell you, or die. Then again, there is another way...")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium000.mp3", 343230773, 2344751061)
+ if GetLevel(Spawn)<18 then
+ Dialog.AddOption("My side is the best side. Leave me out of yours!")
+ if CanReceiveQuest(Spawn,Part1) then
+ Dialog.AddOption("Whose side are you on, anyway?","Dialog3")
+ end
+ elseif GetLevel(Spawn)>=18 then
+ Dialog.AddOption("I've picked my side. I want NOTHING to do with yours!")
+ end
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Qeynos. You can always choose Qeynos. Look around you, friend! Do what the guards say, or they kill you. Carry out the evil wishes of the Quintet, or they kill you. Worship Lucan as a god, or he kills you. We're all slaves to the Overlord in this godsforsaken city! Is that how you want to live?")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium001.mp3", 2011282956, 1928628774)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No way! I don't want to go to Qeynos.")
+ Dialog.AddOption("Are you some sort of spy?","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("If by spy you mean someone who wants the evil ways of Freeport stopped, then yes, I am a spy. I fight for the ideals of goodwill rather than the empty promises of evil. If you feel the same way, then you must join us in Qeynos, friend. What do you say? ")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium002.mp3", 393133427, 3433323586)
+ Dialog.AddOption("Qeynos is for the weak. My home is Freeport. And you are a traitor!","Dialog5")
+ Dialog.AddOption("Yes. I cannot stand the evil of Freeport. I want to fight for good, not evil!","Betray1")
+ Dialog.Start()
+end
+
+function Dialog5(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A traitor? How am I a traitor? I'm not the refugee who hopped off a boat not too long ago, you are. I'm not the one who was snooping around town asking lots of questions about the Quintet, you are.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium003.mp3", 1760281781, 1305326262)
+ PlayFlavor(NPC, "", "", "whome", 0, 0, Spawn)
+ Dialog.AddOption("You are the one who brought up Qeynos!","Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I am, however, the one who informed the Lucanic Knights that you are the spy they're looking for. As we speak, they're waiting to hear from me.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium004.mp3", 3111410834, 984123691)
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+ Dialog.AddOption("I should kill you where you stand.","Dialog7")
+ Dialog.AddOption("I want nothing more to do with this!")
+ Dialog.Start()
+end
+
+function Dialog7(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("If you kill me, I'll never get the chance to clear your name, will I? On the other hand, if you walk away and pretend we never talked, I'll tell Lucan's Knights that the spy was someone else. So walk away, keep your mouth shut, and we're both happy. Good bye, stranger.")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium005.mp3", 2090418381, 2124257979)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddOption("Fine, but sleep with one eye open.")
+ Dialog.Start()
+end
+
+function Betray1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You must understand that just speaking these words makes you a traitor. You know what the Overlord does to traitors, right? Do you believe in your heart that following the path of goodwill to Qeynos is for you?")
+ Dialog.AddVoiceover("voiceover/english/stilus_graphium/fprt_east/qst_stilusgraphium006.mp3", 730354074, 1124651336)
+ Dialog.AddOption("What was I thinking?! I would never choose to leave Freeport! TRAITOR!","Dialog5")
+ Dialog.AddOption("Yes. I wish to forsake evil by helping Qeynos in their struggle!","Offer")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Part1)
+end
+
diff --git a/server/SpawnScripts/EastFreeport/SyrinisHGez.lua b/server/SpawnScripts/EastFreeport/SyrinisHGez.lua
new file mode 100755
index 000000000..d3b2b08f5
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/SyrinisHGez.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/SyrinisHGez.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:37
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/ThanatosKividius.lua b/server/SpawnScripts/EastFreeport/ThanatosKividius.lua
new file mode 100755
index 000000000..ac1d5f567
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/ThanatosKividius.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/ThanatosKividius.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:22
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/TobanCogscamper.lua b/server/SpawnScripts/EastFreeport/TobanCogscamper.lua
new file mode 100755
index 000000000..a4fe8fbe9
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/TobanCogscamper.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/TobanCogscamper.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:31
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/UraniaHelvonius.lua b/server/SpawnScripts/EastFreeport/UraniaHelvonius.lua
new file mode 100755
index 000000000..3ec52c8c0
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/UraniaHelvonius.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/UraniaHelvonius.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 04:10:03
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/EastFreeport/Yohance.lua b/server/SpawnScripts/EastFreeport/Yohance.lua
new file mode 100755
index 000000000..19aa5894d
--- /dev/null
+++ b/server/SpawnScripts/EastFreeport/Yohance.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/EastFreeport/Yohance.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.11 03:10:05
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ElddarGrove/Adrianna.lua b/server/SpawnScripts/ElddarGrove/Adrianna.lua
index 7281c9436..d06ec8c90 100755
--- a/server/SpawnScripts/ElddarGrove/Adrianna.lua
+++ b/server/SpawnScripts/ElddarGrove/Adrianna.lua
@@ -8,6 +8,7 @@
local Delivery = 5562
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "cooking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/ElddarGrove/CarolynWu.lua b/server/SpawnScripts/ElddarGrove/CarolynWu.lua
index 9e41a8d16..00d769b09 100755
--- a/server/SpawnScripts/ElddarGrove/CarolynWu.lua
+++ b/server/SpawnScripts/ElddarGrove/CarolynWu.lua
@@ -25,25 +25,25 @@ function EmoteLoop(NPC)
local choice = MakeRandomInt(1,10)
if choice == 1 then
- PlayAnimation(NPC, 1966)
+ PlayFlavor(NPC,"","","bostaff_attack")
AddTimer(NPC, 2100, "Idle")
elseif choice == 2 then
- PlayAnimation(NPC, 1967)
+ PlayFlavor(NPC,"","","bostaff_attack01")
AddTimer(NPC, 1700, "Idle")
elseif choice == 3 then
- PlayAnimation(NPC, 1968)
+ PlayFlavor(NPC,"","","bostaff_attack02")
AddTimer(NPC, 2400, "Idle")
elseif choice == 4 then
- PlayAnimation(NPC, 1969)
+ PlayFlavor(NPC,"","","bostaff_attack03")
AddTimer(NPC, 3200, "Idle")
elseif choice == 5 then
- PlayAnimation(NPC, 2953)
+ PlayFlavor(NPC,"","","bostaff_kick")
AddTimer(NPC, 3700, "Idle")
elseif choice == 6 then
- PlayAnimation(NPC, 10868)
+ PlayFlavor(NPC,"","","bostaff_dodge_forehand")
AddTimer(NPC, 1500, "Idle")
else
- PlayAnimation(NPC, 10889)
+ PlayFlavor(NPC,"","","bostaff_taunt_combat_art")
AddTimer(NPC, 3500, "Idle")
end
end
diff --git a/server/SpawnScripts/ElddarGrove/Duvo.lua b/server/SpawnScripts/ElddarGrove/Duvo.lua
index 7328fd378..458c34704 100755
--- a/server/SpawnScripts/ElddarGrove/Duvo.lua
+++ b/server/SpawnScripts/ElddarGrove/Duvo.lua
@@ -11,6 +11,7 @@ local papers = 5536
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
ProvidesQuest(NPC,muffins)
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
diff --git a/server/SpawnScripts/ElddarGrove/GregorEarthstride.lua b/server/SpawnScripts/ElddarGrove/GregorEarthstride.lua
index d58af4d6c..43ead381e 100755
--- a/server/SpawnScripts/ElddarGrove/GregorEarthstride.lua
+++ b/server/SpawnScripts/ElddarGrove/GregorEarthstride.lua
@@ -40,53 +40,41 @@ end
function Feathers1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
- AddConversationOption(conversation, "I think I could get the feathers you need.","Feathers2")
+ AddConversationOption(conversation, "I think I could get the feathers you need.","Feathersoffer")
AddConversationOption(conversation, "I wish you luck with finding them.")
StartConversation(conversation, NPC, Spawn, "I hate to admit it, but I've not been having the best of luck with the feathers. It seems there's been some furious competition for the hawks in the forest ruins, as their feathers are not only very useful for fletching, but also for use as quills.")
end
-function Feathers2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "", "", "whome", 0, 0, Spawn)
- AddConversationOption(conversation, "I'll be back with the birds as soon as I manage to kill them!","Feathers3")
- AddConversationOption(conversation, "I wish you luck with finding them.")
- StartConversation(conversation, NPC, Spawn, "You would do that for a stranger? I couldn't let such a task go unrewarded of course. I am but a simple hunter, but I would find something to grant you in return for the feathers. I can't make enough arrows without the feathers from at least five hawks.")
-end
-function Feathers3(NPC, Spawn)
+function Feathersoffer(NPC, Spawn)
OfferQuest(NPC,Spawn, Hawks)
FaceTarget(NPC, Spawn)
end
function FeathersDone1(NPC, Spawn)
+ SetStepComplete(Spawn,Hawks,2)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
- AddConversationOption(conversation, "Thank you, and safe journeys to you.","FeathersDone2")
+ AddConversationOption(conversation, "Thank you, and safe journeys to you.")
StartConversation(conversation, NPC, Spawn, "That's wonderful! I'll be happy to pull the feathers off myself, that's not a problem! You've saved me quite a bit of coin! Speaking of coin, here's some for your effort.")
end
-function FeathersDone2(NPC, Spawn)
- SetStepComplete(Spawn,Hawks,2)
- FaceTarget(NPC, Spawn)
-end
function EmoteLoop(NPC)
local emoteChoice = MakeRandomInt(1,3)
if emoteChoice == 1 then
-- ponder
- PlayAnimation(NPC, 12030)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
AddTimer(NPC, MakeRandomInt(15000,18000), "EmoteLoop")
elseif emoteChoice == 2 then
-- sniff
- PlayAnimation(NPC, 12329)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
AddTimer(NPC, MakeRandomInt(6000,9000), "EmoteLoop")
else
-- tapfoot
- PlayAnimation(NPC, 13056)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
AddTimer(NPC, MakeRandomInt(15000,18000), "EmoteLoop")
end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/ElddarGrove/InitiateLoFan.lua b/server/SpawnScripts/ElddarGrove/InitiateLoFan.lua
index 6132f8ebb..00909aaf7 100755
--- a/server/SpawnScripts/ElddarGrove/InitiateLoFan.lua
+++ b/server/SpawnScripts/ElddarGrove/InitiateLoFan.lua
@@ -15,29 +15,29 @@ function EmoteLoop(NPC)
local choice = MakeRandomInt(1,8)
if choice == 1 then
- PlayAnimation(NPC, 1644)
- AddTimer(NPC, 1550, "Idle")
+ PlayFlavor(NPC,"","","pugilist_attack")
+ AddTimer(NPC, 2550, "Idle")
elseif choice == 2 then
- PlayAnimation(NPC, 1646)
- AddTimer(NPC, 2100, "Idle")
+ PlayFlavor(NPC,"","","pugilist_attack02")
+ AddTimer(NPC, 3100, "Idle")
elseif choice == 3 then
- PlayAnimation(NPC, 1284)
- AddTimer(NPC, 2050, "Idle")
+ PlayFlavor(NPC,"","","monk_attack02")
+ AddTimer(NPC, 3050, "Idle")
elseif choice == 4 then
- PlayAnimation(NPC, 3021)
- AddTimer(NPC, 2100, "Idle")
+ PlayFlavor(NPC,"","","monk_wild_swing")
+ AddTimer(NPC, 3100, "Idle")
elseif choice == 5 then
- PlayAnimation(NPC, 1201)
- AddTimer(NPC, 1450, "Idle")
+ PlayFlavor(NPC,"","","monk_attack01")
+ AddTimer(NPC, 2450, "Idle")
elseif choice == 6 then
- PlayAnimation(NPC, 1181)
- AddTimer(NPC, 1550, "Idle")
+ PlayFlavor(NPC,"","","monk_attack")
+ AddTimer(NPC, 2550, "Idle")
elseif choice == 7 then
- PlayAnimation(NPC, 4506)
- AddTimer(NPC, 3400, "Idle")
+ PlayFlavor(NPC,"","","monk_attack03")
+ AddTimer(NPC, 4400, "Idle")
else
- PlayAnimation(NPC, 3037)
- AddTimer(NPC, 2300, "Idle")
+ PlayFlavor(NPC,"","","pugilist_wild_swing")
+ AddTimer(NPC, 3300, "Idle")
end
end
diff --git a/server/SpawnScripts/ElddarGrove/InitiateThomas.lua b/server/SpawnScripts/ElddarGrove/InitiateThomas.lua
index a9ded591e..23b24e435 100755
--- a/server/SpawnScripts/ElddarGrove/InitiateThomas.lua
+++ b/server/SpawnScripts/ElddarGrove/InitiateThomas.lua
@@ -13,32 +13,32 @@ end
function EmoteLoop(NPC)
SpawnSet(NPC, "action_state", 0)
local choice = MakeRandomInt(1,8)
-
- if choice == 1 then
- PlayAnimation(NPC, 1644)
- AddTimer(NPC, 1550, "Idle")
+ if choice == 1 then
+ PlayFlavor(NPC,"","","pugilist_attack")
+ AddTimer(NPC, 2550, "Idle")
elseif choice == 2 then
- PlayAnimation(NPC, 1646)
- AddTimer(NPC, 2100, "Idle")
+ PlayFlavor(NPC,"","","pugilist_attack02")
+ AddTimer(NPC, 3100, "Idle")
elseif choice == 3 then
- PlayAnimation(NPC, 1284)
- AddTimer(NPC, 2050, "Idle")
+ PlayFlavor(NPC,"","","monk_attack02")
+ AddTimer(NPC, 3050, "Idle")
elseif choice == 4 then
- PlayAnimation(NPC, 3021)
- AddTimer(NPC, 2100, "Idle")
+ PlayFlavor(NPC,"","","monk_wild_swing")
+ AddTimer(NPC, 3100, "Idle")
elseif choice == 5 then
- PlayAnimation(NPC, 1201)
- AddTimer(NPC, 1450, "Idle")
+ PlayFlavor(NPC,"","","monk_attack01")
+ AddTimer(NPC, 2450, "Idle")
elseif choice == 6 then
- PlayAnimation(NPC, 1181)
- AddTimer(NPC, 1550, "Idle")
+ PlayFlavor(NPC,"","","monk_attack")
+ AddTimer(NPC, 2550, "Idle")
elseif choice == 7 then
- PlayAnimation(NPC, 4506)
- AddTimer(NPC, 3400, "Idle")
+ PlayFlavor(NPC,"","","monk_attack03")
+ AddTimer(NPC, 4400, "Idle")
else
- PlayAnimation(NPC, 3037)
- AddTimer(NPC, 2300, "Idle")
- end
+ PlayFlavor(NPC,"","","pugilist_wild_swing")
+ AddTimer(NPC, 3300, "Idle")
+ end
+
end
function Idle(NPC)
diff --git a/server/SpawnScripts/ElddarGrove/LookoutVenylle.lua b/server/SpawnScripts/ElddarGrove/LookoutVenylle.lua
index 2413151a9..4cf2b9b4e 100755
--- a/server/SpawnScripts/ElddarGrove/LookoutVenylle.lua
+++ b/server/SpawnScripts/ElddarGrove/LookoutVenylle.lua
@@ -1,10 +1,11 @@
--[[
Script Name : SpawnScripts/ElddarGrove/LookoutVenylle.lua
Script Purpose : Lookout Venylle
- Script Author : John Adams
- Script Date : 2008.09.28
+ Script Author : Dorbin
+ Script Date : 09.19.2023
Script Notes : Quests,VOs added 5.3.2022 - Dorbin
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
ProvidesQuest(NPC, 5515)
@@ -20,59 +21,42 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
else
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle000.mp3", "", "hello", 487024690, 2845985258, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, greetings, friend. I'm sorry I've no time for chatting. We rangers must be ever watchful. Many dangers lurk in the dark. Some natural, some ... unnatural.")
+ Dialog.AddVoiceover("voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle000.mp3",487024690, 2845985258)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
if not HasQuest(Spawn,5515) and not HasCompletedQuest (Spawn,5515) then
- AddConversationOption(conversation, "What unnatural dangers lurk in the dark?", "dlg_10_1")
- else
- AddConversationOption(conversation, "I need a reminder on how to get to Windstalker's grave.", "dlg_10_2")
- end
+ Dialog.AddOption("What dangers have you heard about?", "Holly1")
+ end
if not HasQuest(Spawn,5516) and not HasCompletedQuest (Spawn,5516) and GetLevel(Spawn) >=9 then
- AddConversationOption(conversation, "Do any unnatural dangers threaten Qeynos?", "Dangers1")
+ Dialog.AddOption("Do any unnatural dangers threaten Qeynos?", "DangerQuest")
elseif GetQuestStep(Spawn,5516)==2 then
- AddConversationOption(conversation, "I was able to deal with some of the undead from Antonica as you mentioned.", "Dangers2")
+ Dialog.AddOption("I was able to deal with some of the undead from Antonica as you mentioned.", "Dangers2")
end
- AddConversationOption(conversation, "Don't let me keep you from your vigilance. ")
- StartConversation(conversation, NPC, Spawn, "Well, greetings, friend. I'm sorry I've no time for chatting. We rangers must be ever watchful. Many dangers lurk in the dark. Some natural, some ... unnatural.")
+ Dialog.AddOption("Don't let me keep you from your vigilance. ")
+ Dialog.Start()
end
end
-function dlg_10_1(NPC, Spawn)
+function Holly1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle001.mp3", "", "no", 3608144910, 1097856081, Spawn)
- AddConversationOption(conversation, "I've heard of the name Holly Windstalker. I think I'd like to see the grave.", "dlg_10_2")
- AddConversationOption(conversation, "I tend to stay away from graves that may not be able to hold their dead. ")
- StartConversation(conversation, NPC, Spawn, "It is ill to speak of the dead, but knowing the dangers that prowl in the dark is for your own safety. Rumor has it, that Holly Windstalker once again walks the hills. I won't guarantee this is true, but neither will I discount it. What I do know is a grave bearing her name sits on a hill overlooking the village. You'll see for yourself; she was laid to rest years ago.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It is ill to speak of the dead, but knowing the dangers that prowl in the dark is for your own safety. Rumor has it, that Holly Windstalker once again walks the hills. I won't guarantee this is true, but neither will I discount it. What I do know is a grave bearing her name sits on a hill overlooking the village. You'll see for yourself; she was laid to rest years ago.")
+ Dialog.AddVoiceover("voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle001.mp3",3608144910, 1097856081)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I've heard of the name Holly Windstalker. I think I'd like to see the grave.", "Holly2")
+ Dialog.AddOption("I tend to stay away from graves that may not be able to hold their dead. ")
+ Dialog.Start()
end
-function dlg_10_2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle002.mp3", "", "agree", 2384165847, 2428685999, Spawn)
- AddConversationOption(conversation, "Thank you. I'll follow those directions.", "dlg_10_3")
- StartConversation(conversation, NPC, Spawn, "Ahh ... very well, you are a daring soul! To get to the grave, follow the aqueduct from Qeynos to Windstalker Village. The village is built around the waterwheel that keeps the aqueduct flowing. The duct passes through rock so you may lose sight of it for a time. Just continue around the mountain, and you'll see it on the other side.")
-end
-
-function dlg_10_3(NPC, Spawn)
+function Holly2(NPC, Spawn)
if not HasQuest(Spawn,5515) and not HasCompletedQuest (Spawn,5515) then
OfferQuest(NPC,Spawn, 5515)
FaceTarget(NPC, Spawn)
end
end
-function Dangers1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle003.mp3", "", "agree", 166316836, 1644056019, Spawn)
- AddConversationOption(conversation, "Alright. I'll return once I've dealt with a dozen of these undead.", "DangerQuest")
- AddConversationOption(conversation, "I prefer to stay away from undead. Sorry.")
- StartConversation(conversation, NPC, Spawn, "Too many unatural dangers thrive to name them in one sitting. You'd learn more of the undead if you served Qeynos in a civic manner. A mausoleum rests on a small island in Antonica near the north gates of Qeynos. Venture to the crypt and confront it's protector's decaying filthy skeletons. Put to rest a dozen of these unnatural guardians who walk the earth.")
-end
function DangerQuest(NPC, Spawn)
OfferQuest(NPC,Spawn, 5516)
@@ -80,15 +64,14 @@ FaceTarget(NPC, Spawn)
end
function Dangers2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle004.mp3", "", "thank", 1813659207, 4263570557, Spawn)
- AddConversationOption(conversation, "Thank you. I'll keep that in mind.", "DangerDone")
- StartConversation(conversation, NPC, Spawn, "Ahh, you've done well adventurer! This is just one of the many valuable lessons you'll learn on your adventures. Please, take this reward for serving Qeynos.")
-end
-
-function DangerDone(NPC, Spawn)
SetStepComplete(Spawn,5516,3)
FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahh, you've done well adventurer! This is just one of the many valuable lessons you'll learn on your adventures. Please, take this reward for serving Qeynos.")
+ Dialog.AddVoiceover("voiceover/english/lookout_venylle/qey_elddar/lookoutvenylle004.mp3",1813659207, 4263570557)
+ PlayFlavor(NPC, "", "", "thank", 0, 0, Spawn)
+ Dialog.AddOption("Thank you. I'll keep that in mind.")
+ Dialog.Start()
end
+
+
diff --git a/server/SpawnScripts/ElddarGrove/MasterArcherNightbow.lua b/server/SpawnScripts/ElddarGrove/MasterArcherNightbow.lua
index ffe83c081..9b06219b3 100755
--- a/server/SpawnScripts/ElddarGrove/MasterArcherNightbow.lua
+++ b/server/SpawnScripts/ElddarGrove/MasterArcherNightbow.lua
@@ -5,9 +5,11 @@
Script Date : 2022.05.08
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local arrows = 5521
local deposit = 5523
+local Priest1 = 5772
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
@@ -15,8 +17,8 @@ ProvidesQuest(NPC,deposit)
end
function InRange(NPC,Spawn)
--- if not HasCompletedQuest (Spawn, deposit) and not HasQuest (Spawn, deposit) then
- if math.random(1, 100) <= 60 then
+ -- if not HasCompletedQuest (Spawn, deposit) and not HasQuest (Spawn, deposit) then
+ if MakeRandomInt(1, 100) <= 60 and GetFactionAmount(Spawn,11)>0 then
FaceTarget(NPC, Spawn)
choice = math.random(1,2)
if choice == 1 then
@@ -32,50 +34,56 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
if GetFactionAmount(Spawn,11) <0 then
AddPrimaryEntityCommand(NPC,"hail")
- choice = math.random(1,2)
+ choice = MakeRandomInt(1,2)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/banker/halfelf_banker_service_evil_1_notcitizen_gf_c0c992e7.mp3", "I'm afraid your business is not welcome here. So, please go away!", "shakefist", 2088886924, 3736631596, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/armorsmith/halfelf_armorsmith_service_good_1_notcitizen_gf_5f06e404.mp3", "Only those who swear alegence with Qeynos can purchase their goods here!", "heckno", 1584866727, 581589457, Spawn)
end
else
- PlayFlavor(NPC, "voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow.mp3", "", "hello", 416492633, 699282975, Spawn)
- local conversation = CreateConversation()
- if HasCompletedQuest(Spawn, arrows) and not HasQuest(Spawn,deposit) and not HasCompletedQuest(Spawn, deposit) then
- AddConversationOption(conversation, "How is business?", "Delivery")
- end
- if GetQuestStep(Spawn,arrows)==1 then
- AddConversationOption(conversation, "I'm here to pick up arrows for Patrolman Fanthis.", "Pickup")
- end
- if GetQuestStep(Spawn,deposit)==2 then
- AddConversationOption(conversation, "Here is the recipt for your deposit to the Qeynos Exchange.", "Delivered")
- end
- AddConversationOption(conversation, "I appreciate it. Thank you.")
- StartConversation(conversation, NPC, Spawn, "Welcome to In-Range. If you need help with anything, just let me know.")
-
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome to In-Range. If you need help with anything, just let me know.")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow.mp3", 416492633, 699282975)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ if HasCompletedQuest(Spawn, arrows) and not HasQuest(Spawn,deposit) and not HasCompletedQuest(Spawn, deposit) then
+ Dialog.AddOption("How is business?", "Delivery")
+ end
+ if HasQuest(Spawn,Priest1) and GetQuestStepProgress(Spawn,Priest1,1)==0 then
+ Dialog.AddOption("I hear you have lately been injured.", "Priest")
+ end
+ if GetQuestStep(Spawn,arrows)==1 then
+ Dialog.AddOption("I'm here to pick up arrows for Patrolman Fanthis.", "Pickup")
+ end
+ if GetQuestStep(Spawn,deposit)==2 then
+ Dialog.AddOption("Here is the receipt for your deposit to the Qeynos Exchange.", "Delivered")
+ end
+ Dialog.AddOption("I appreciate it. Thank you.")
+ Dialog.Start()
end
end
function Pickup(NPC, Spawn)
+ SetStepComplete(Spawn,arrows, 1)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow000.mp3", "", "nod", 2435179288, 2250697055, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I'll let him know.", "Pickup2")
- StartConversation(conversation, NPC, Spawn, "Perfect! I've actually had these arrows ready for the better part of a week now. I'm surprised he hasn't come by to pick them up earlier. Please do tell Fanthis to be more punctual next time he orders from me.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perfect! I've actually had these arrows ready for the better part of a week now. I'm surprised he hasn't come by to pick them up earlier. Please do tell Fanthis to be more punctual next time he orders from me.")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow000.mp3", 2435179288, 2250697055)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I'll let him know.")
+ Dialog.Start()
end
-function Pickup2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- SetStepComplete(Spawn,arrows, 1)
- end
function Delivery(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow001.mp3", "", "ponder", 3825875299, 2066482180, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Sure. I'll head to the Qeynos Exchange for you.", "Delivery2")
- AddConversationOption(conversation, "That is too far out of my way. Sorry.")
- StartConversation(conversation, NPC, Spawn, "You were the one who brought those arrows back to Fanthis, correct? I would never forget a face like yours. If you'd be willing, I need my deposit taken over to the Qeynos Exchange in Qeynos Harbor. If Fanthis trusted you with his errand I'm certain you'll do fine with this one.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You were the one who brought those arrows back to Fanthis, correct? I would never forget a face like yours. If you'd be willing, I need my deposit taken over to the Qeynos Exchange in Qeynos Harbor. If Fanthis trusted you with his errand I'm certain you'll do fine with this one.")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow001.mp3", 3825875299, 2066482180)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Sure. I'll head to the Qeynos Exchange for you.", "Delivery2")
+ Dialog.AddOption("That is too far out of my way. Sorry.")
+ Dialog.Start()
end
function Delivery2(NPC, Spawn)
@@ -83,15 +91,56 @@ function Delivery2(NPC, Spawn)
OfferQuest(NPC, Spawn,deposit)
end
- function Delivered(NPC, Spawn)
+ function Delivered(NPC, Spawn)
+ SetStepComplete(Spawn,deposit, 2)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow003.mp3", "", "thank", 1662759058, 2206697138, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "It was no problem.", "FinishQuest")
- StartConversation(conversation, NPC, Spawn, "I hope Grisvane didn't give you any trouble. Sometimes he's a bit gruff with those he doesn't know. Please allow me to pay you for your trouble. Perhaps we will do other business in the future.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I hope Grisvane didn't give you any trouble. Sometimes he's a bit gruff with those he doesn't know. Please allow me to pay you for your trouble. Perhaps we will do other business in the future.")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow003.mp3", 1662759058, 2206697138)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("It was no problem.")
+ Dialog.Start()
end
-function FinishQuest(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- SetStepComplete(Spawn,deposit, 2)
- end
\ No newline at end of file
+ function Priest(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Injured? Nonsense! I'm fit as a falchion! Well ... except for this little splinter in my finger here. Smarts like a devil, it does.")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow004.mp3", 777229878, 3203644005)
+ PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("Let me see. That doesn't look like a little splinter at all!","Priesta")
+ Dialog.Start()
+end
+
+ function Priesta(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, it's nothing ... although it wedged itself under the nail pretty good. Happens all the time in my line of work. I tried to get it out myself the other day, and only made things worse. It's starting to look a bit funny. See the green color?")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow006.mp3", 3334031312, 952690457)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Madam, your finger is severely infected! Please, let me help you.","Priestb")
+ Dialog.Start()
+end
+
+ function Priestb(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Infected? Is it serious? Well, you are an adept, so I guess you would know. Can anything be done?")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow007.mp3", 625347903, 1608099602)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("In the name of the gods, I will heal you.","Priestc")
+ Dialog.Start()
+end
+
+ function Priestc(NPC, Spawn)
+ SetStepComplete(Spawn,Priest1,1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The splinter ... it, it's gone! The nail is whole again! How did you do that? I must show my thanks!")
+ Dialog.AddVoiceover("voiceover/english/master_archer_nightbow/qey_elddar/armsdealernightbow008.mp3", 215150336, 479717582)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("You may show your thanks by offering a prayer to the gods. They are the ones who have truly healed you. Good day.")
+ Dialog.Start()
+ ApplySpellVisual(NPC,58)
+ CastSpell(Spawn,53)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ElddarGrove/MusicianZwena.lua b/server/SpawnScripts/ElddarGrove/MusicianZwena.lua
index 194e2f731..289b15ef8 100755
--- a/server/SpawnScripts/ElddarGrove/MusicianZwena.lua
+++ b/server/SpawnScripts/ElddarGrove/MusicianZwena.lua
@@ -8,6 +8,7 @@
local Message = 5525
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "orate")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/ElddarGrove/PelleShinkicker.lua b/server/SpawnScripts/ElddarGrove/PelleShinkicker.lua
index f3b3b47ab..9e3668969 100755
--- a/server/SpawnScripts/ElddarGrove/PelleShinkicker.lua
+++ b/server/SpawnScripts/ElddarGrove/PelleShinkicker.lua
@@ -12,6 +12,7 @@ local BookDelivery = 5514
function spawn(NPC)
ProvidesQuest(NPC,BookDelivery)
SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "fishing_fight")
end
function InRange(NPC, Spawn)
@@ -49,7 +50,7 @@ end
function Option1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I could in fact! I've been slightly worried that you've come to me with another story to write, or some other such thing. I already write my stiff fingers closer to their doom, and don't need more work to keep me away from my tavern in the Buabbleshire!")
+ Dialog.AddDialog("I could in fact! I had been slightly worried that you'd come to me with another story to write, or some other such thing! I already write my poor stiff fingers ever closer to their doom, and don't need more work to keep me away from my tavern in the Baubbleshire!")
Dialog.AddVoiceover("voiceover/english/pelle_shinkicker/qey_elddar/pelleshinkicker001.mp3",2510348441, 2397724897)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
Dialog.AddOption("On with it. What do you need?", "Option2")
@@ -60,7 +61,7 @@ function Option1(NPC, Spawn)
function Option2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Calm yourself sir! I'll have you know I'm just as respected around here for my exploits as an adventurer as my skill with a quill, Heh! Are you going to take my friend this book or not? I can't sit around here chatting all day about whether you'll do it or not.")
+ Dialog.AddDialog("Calm yourself! I'll have you know I'm just as respected around here for my exploits as an adventurer as my skill with the quill! Now, are you going to take my friend this book, or not? I can't very well sit around chatting with you all day about whether you'll do it or not!")
Dialog.AddVoiceover("voiceover/english/pelle_shinkicker/qey_elddar/pelleshinkicker002.mp3", 1275889861, 2180981417)
PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
Dialog.AddOption("Sorry. I'll deliver your book.", "StartQuest")
diff --git a/server/SpawnScripts/ElddarGrove/RaskHelstot.lua b/server/SpawnScripts/ElddarGrove/RaskHelstot.lua
index 97f3216be..e0b0fb24a 100755
--- a/server/SpawnScripts/ElddarGrove/RaskHelstot.lua
+++ b/server/SpawnScripts/ElddarGrove/RaskHelstot.lua
@@ -20,11 +20,6 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC, "voiceover/english/optional1/rask_helstot/qey_elddar/raskhelstot000.mp3", "", "", 2809197179, 4166706387, Spawn)
AddConversationOption(conversation, "Trees... bah. ", "dlg_19_1")
StartConversation(conversation, NPC, Spawn, "Though it's the only remaining tree of its kind, the Elddar grows ever larger. Perhaps a symbol of Qeynos and her people even more fitting than the Claymore itself.")
- if convo==20 then
- PlayFlavor(NPC, "voiceover/english/optional1/rask_helstot/qey_elddar/raskhelstot000.mp3", "", "", 2809197179, 4166706387, Spawn)
- AddConversationOption(conversation, "Trees... bah. ", "dlg_20_1")
- StartConversation(conversation, NPC, Spawn, "Though it's the only remaining tree of its kind, the Elddar grows ever larger. Perhaps a symbol of Qeynos and her people even more fitting than the Claymore itself.")
- end
end
diff --git a/server/SpawnScripts/ElddarGrove/Steelguard.lua b/server/SpawnScripts/ElddarGrove/Steelguard.lua
index e58b8f975..4aa44dd53 100755
--- a/server/SpawnScripts/ElddarGrove/Steelguard.lua
+++ b/server/SpawnScripts/ElddarGrove/Steelguard.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/FarJourneyFreeport/Anikra.lua b/server/SpawnScripts/FarJourneyFreeport/Anikra.lua
index 6af8c815c..d44ab169b 100755
--- a/server/SpawnScripts/FarJourneyFreeport/Anikra.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/Anikra.lua
@@ -9,39 +9,86 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
-
+SetTempVariable(NPC, "GoblinCheck", nil) -- Checks for Goblin attack and resets POST rain spell.
+AddTimer(NPC,6000,"DrakeLoop",1)
end
function hailed(NPC, Spawn)
goblin = GetSpawn(NPC, 270008)
- if goblin == nil and GetSpawn(NPC, 270011)~= nil or IsAlive(goblin) == false and GetSpawn(NPC, 270011)~= nil then
+ if goblin == nil or IsAlive(goblin) == false and GetTempVariable(NPC,"GoblinCheck") == nil then
FaceTarget(NPC, Spawn)
- choice = math.random(1, 2)
+ choice = MakeRandomInt(1, 2)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/anikra/boat_06p_tutorial02_fvo_001.mp3", "Thanks for saving me", "thanks", 3802219844, 3242323771)
else
- PlayFlavor(NPC, "voiceover/english/anikra/boat_06p_tutorial02/anikra_0_003.mp3", "I don't know how I did that. What was that?", "boggle", 927876289, 3048340606)
- end
- elseif IsAlive(goblin) == true and GetSpawn(NPC, 270011)== nil then --Stops hails during goblin attack
- else
+ PlayFlavor(NPC, "voiceover/english/anikra/boat_06p_tutorial02/anikra_0_003.mp3", "I don't know how I did that. What was that?", "confused", 927876289, 3048340606)
+ end
+ elseif IsAlive(goblin) == true and GetSpawn(NPC, 270011)== nil and GetTempVariable(NPC, "GoblinCheck") == nil then --Stops hails during goblin attack
+ elseif IsAlive(goblin) == true and GetSpawn(NPC, 270011)~= nil then
PlayFlavor(NPC, "voiceover/english/anikra/boat_06p_tutorial02_fvo_002.mp3", "I really miss my husband. Why did those smugglers have to throw him overboard?", "sigh", 1493499523, 2767493059)
end
end
-
-
---[[
-function callDrake(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-Say(NPC,"I have made it past FaceTarget")
- local drake = GetSpawn(Spawn, 270013)
-Say(NPC, "I have set the local drake to the spawn id")
-Say(NPC, "Test " .. drake)
- SpawnSet(drake, "visual_state", 10783)
-
+function DrakeLoop(NPC)
+ Drake = GetSpawn(NPC,270011)
+ Goblin = GetSpawn(NPC,270008)
+ if Drake == nil then
+ AddTimer(NPC,6000,"GoblinLoop",1)
+ SetTempVariable(NPC, "GoblinCheck", 1)
+ else
+ AddTimer(NPC,6000,"DrakeLoop",1)
end
-]]--
+end
+
+function GoblinLoop(NPC)
+ Drake = GetSpawn(NPC,270011)
+ Goblin = GetSpawn(NPC,270008)
+ if IsAlive(Goblin) == false or Goblin == nil then
+ AddTimer(NPC,3000,"RainPath",1)
+ else
+ AddTimer(NPC,6000,"GoblinLoop",1)
+end
+end
+
+function RainPath(NPC)
+ MoveToLocation(NPC, -2.32, -2.07, 6.77, 2)
+ MoveToLocation(NPC, -2.32, -2.07, 6.77, 2,"RainTimer")
+end
+
+function RainTimer(NPC)
+ SetHeading(NPC,180)
+ AddTimer(NPC, 1500, "Rain")
+end
+
+function Rain(NPC)
+ CastSpell(NPC,20)
+ AddTimer(NPC, 6000, "Rain2",1)
+ AddTimer(NPC, 8000, "Reset",1)
+ AddTimer(NPC, 10000, "Boggle",1)
+end
+
+function Rain2(NPC)
+Boxes = GetSpawn(NPC, 270013)
+ PlaySound(NPC,"sounds/widgets/triggered_environmental/enviro_thunderroll001.wav",GetX(NPC),GetY(NPC),GetZ(NPC))
+ PlayFlavor(Boxes,"","","rain")
+ AddTimer(NPC, 14000, "Rain3",1)
+end
+
+function Reset(NPC)
+SetTempVariable(NPC, "GoblinCheck", nil)
+end
+
+function Boggle(NPC)
+ PlayFlavor(NPC,"","","boggle")
+end
+
+function Rain3(NPC)
+Boxes = GetSpawn(NPC, 270013)
+ PlayFlavor(Boxes,"","","kill_rain")
+end
+
+
function respawn(NPC)
-
+spawn(NPC)
end
diff --git a/server/SpawnScripts/FarJourneyFreeport/CaptainVarlos.lua b/server/SpawnScripts/FarJourneyFreeport/CaptainVarlos.lua
index 55adc0af8..f5854aae0 100755
--- a/server/SpawnScripts/FarJourneyFreeport/CaptainVarlos.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/CaptainVarlos.lua
@@ -22,7 +22,7 @@ seen_quest_praise = false
function GenerateStateDefines(player)
local bLegacy = (GetClientVersion(player) <= 526)
- if bLegacy then
+ if bLegacy == true then
VSTATE_WAVE = 883
VSTATE_HELLO = 318
VSTATE_DOUBLETAKE = 250
@@ -54,10 +54,15 @@ end
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
-
+SetTempVariable(NPC,"SetStep9",nil)
end
function get_attention_init(NPC, player)
+ AddTimer(NPC,5000,"attention_trigger",1,player)
+end
+
+
+function attention_trigger(NPC, player)
InstructionWindow(player, -1.0, "Captain Varlos looks like he is trying to get your attention.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_027_30c39009.mp3", 2146230300, 3258594756, "captain_attention", "", "continue")
AddTimer(NPC, 100, "get_attention", 1, player)
end
@@ -103,7 +108,7 @@ function hailed(NPC, player)
Dialog.AddVoiceover("voiceover/english/captain_varlos/boat_06p_tutorial02/varlos_0_001.mp3", 1930075150, 2666442405)
Dialog.AddEmote("hello")
if GetClass(player)>0 then
- Dialog.AddOption("There must be a mistake. I'm just a commoner. [CLASSIC CLASS CHANGE]", "Commoner")
+ Dialog.AddOption("There must be a mistake. I'm just a commoner.\n\n[CLASSIC CLASS CHANGE]", "Commoner")
end
Dialog.AddOption("Where am I?", "where_am_I")
Dialog.Start()
@@ -123,12 +128,14 @@ function hailed(NPC, player)
elseif HasQuest(player, 524) and GetQuestStep(player, 524) == 10 then
PlayFlavor(NPC, "voiceover/english/captain_varlos/boat_06p_tutorial02_fvo_023.mp3", "You still need to kill that landlubber of a goblin! Get to it mate!", "", 3269557913, 3104212801,player)
elseif HasQuest(player, 524) and GetQuestStep(player, 524) == 9 then
+if GetTempVariable(NPC,"SetStep9")~= "1" then
SetTutorialStep(player, 51)
Dialog.New(NPC, player)
Dialog.AddDialog("Ya' made quick work of them vermin.")
Dialog.AddVoiceover("voiceover/english/captain_varlos/boat_06p_tutorial02/varlos_0_016.mp3", 1130776869, 4119313971)
Dialog.AddOption("Thanks.", "quest_step_9")
Dialog.Start()
+end
elseif HasCompletedQuest(player, 524) and not seen_quest_praise then
seen_quest_praise = true
Dialog.New(NPC, player)
@@ -155,7 +162,7 @@ function Commoner(NPC, player)
Dialog.AddVoiceover("voiceover/english/captain_varlos/boat_06p_tutorial02/varlos_0_002.mp3", 2054400186, 1976167819)
Dialog.AddEmote("ponder")
Dialog.AddOption("Yes, I am a Commoner.", "Commoner2")
- Dialog.AddOption("Nevermind. Who are you?","who_are_you")
+ Dialog.AddOption("Nevermind. Who are you?","who_are_you")
Dialog.Start()
end
@@ -197,14 +204,21 @@ function drop_anchor(NPC, player)
Dialog.AddOption("[Continue]", "hailed")
Dialog.Start()
MovementLoopAddLocation(GetSpawn(NPC, 270001), 4.21, -2.07, 3.72, 4,0)
- MovementLoopAddLocation(GetSpawn(NPC, 270001), 1.97, 0.59, 16.73, 4,0)
- MovementLoopAddLocation(GetSpawn(NPC, 270001), 1.07, 0.66, 18.69, 4,20)
- MovementLoopAddLocation(GetSpawn(NPC, 270001), 1.07, 0.66, 18.69, 2,0)
+ MovementLoopAddLocation(GetSpawn(NPC, 270001), 1.97, 0.63, 16.73, 4,0)
+ MovementLoopAddLocation(GetSpawn(NPC, 270001), 2.22, 0.66, 18.76, 4,0)
+ MovementLoopAddLocation(GetSpawn(NPC, 270001), 2.22, 0.66, 18.76, 4,2,"Head")
+ MovementLoopAddLocation(GetSpawn(NPC, 270001), 2.22, 0.66, 18.76, 4,120)
+ MovementLoopAddLocation(GetSpawn(NPC, 270001), 2.22, 0.66, 18.76, 4,0)
MovementLoopAddLocation(GetSpawn(NPC, 270001), 1.97, 0.59, 16.73, 2,0)
MovementLoopAddLocation(GetSpawn(NPC, 270001), 4.21, -2.07, 3.72, 2,0)
MovementLoopAddLocation(GetSpawn(NPC, 270001), 2.91, -2.07, -3.61, 2,120)
end
+function Head(NPC)
+ SetHeading(GetSpawn(NPC, 270001),220)
+end
+
+
function ready_to_go_ashore(NPC, player)
Dialog.New(NPC, player)
Dialog.AddDialog("Don't ya' mind, we get paid ta' do that.")
@@ -235,6 +249,7 @@ function zone_to_isle(NPC, player)
end
function quest_step_9(NPC, player)
+ SetTempVariable(NPC,"SetStep9",1)
if GetClientVersion(player)<= 546 then
AddTimer(GetSpawn(NPC, 270013), 100, "attack")
else
@@ -243,12 +258,20 @@ function quest_step_9(NPC, player)
AddTimer(NPC, 1000, "quest_step_9b", 1, player)
end
+
function quest_step_9b(NPC, player)
FaceTarget(NPC, GetSpawn(NPC, 270013))
PlayFlavor(NPC, "voiceover/english/captain_varlos/boat_06p_tutorial02_fvo_017.mp3", "Wait. Tis that a... No, it cain' be!", "", 1253231512, 1752159147)
- AddTimer(NPC, 4000, "quest_step_9c", 1, player)
+ AddTimer(NPC, 1500, "Roar", 1, player)
+ AddTimer(NPC, 8000, "quest_step_9c", 1, player)
GenerateStateDefines(player)
SendStateCommand(GetSpawn(NPC, 270005), VSTATE_DOUBLETAKE)
+ CastSpell(player,2550417,1,1,player)
+end
+
+function Roar(NPC,player)
+ PlayFlavor(NPC,"","","listen")
+ PlaySound(NPC,"sounds/critters/drake/drake_scream01.wav",GetX(NPC),GetY(NPC),GetZ(NPC))
end
function quest_step_9c(NPC, player)
@@ -265,7 +288,7 @@ function quest_step_9c(NPC, player)
GenerateStateDefines(player)
SendStateCommand(Anikra, VSTATE_POINT)
- SendStateCommand(Valik, VSTATE_POINT)
+ SendStateCommand(Valik, VSTATE_SQUEAL)
SendStateCommand(Geredo, VSTATE_POINT)
SendStateCommand(GetSpawn(NPC, 270001), VSTATE_CROUCH_ENTER)
@@ -274,7 +297,7 @@ function quest_step_9c(NPC, player)
MoveToLocation(Vim, -0.27, 0.56, 15.78,4)
MoveToLocation(Vim, 2.15, 0.55, 15.60,4)
MoveToLocation(Vim, 5.84, -1.82, 9.84,4)
- AddTimer(NPC, 8000, "VimHeading")
+ AddTimer(NPC, 6500, "VimHeading")
AddTimer(NPC, 9000, "quest_step_9d", 1, player)
end
@@ -284,7 +307,7 @@ function VimHeading(NPC, player)
end
function quest_step_9d(NPC, player)
- PlayFlavor(NPC, "voiceover/english/captain_varlos/boat_06p_tutorial02_fvo_019.mp3", "Everyone down! Watch it!", "", 2065401462, 2542613809)
+ PlayFlavor(NPC, "voiceover/english/captain_varlos/boat_06p_tutorial02_fvo_019.mp3", "Everyone down! Watch it!", "untrained_dodge", 2065401462, 2542613809)
GenerateStateDefines(player)
SendStateCommand(GetSpawn(NPC, 270007), VSTATE_CROUCH_ENTER)
SendStateCommand(GetSpawn(NPC, 270001), VSTATE_CROUCH_EXIT)
@@ -292,7 +315,8 @@ function quest_step_9d(NPC, player)
SendStateCommand(GetSpawn(NPC, 270006), VSTATE_OUCH)
SendStateCommand(GetSpawn(NPC, 270005), VSTATE_CRINGE)
SendStateCommand(GetSpawn(NPC, 270002), VSTATE_CRINGE)
- AddTimer(NPC, 3500, "quest_step_9e", 1, player)
+ PlayFlavor(player,"","","untrained_dodge01")
+ AddTimer(NPC, 1500, "quest_step_9e", 1, player)
i=1
spawns = GetSpawnListBySpawnID(player, 270011)
repeat
@@ -309,6 +333,7 @@ function quest_step_9e(NPC, player)
PerformCameraShake(player, 0.5)
PerformCameraShake(player, 0.30000001192092896)
PerformCameraShake(player, 0.10000000149011612)
+ PlayFlavor(NPC,"","","untrained_dodge")
AddTimer(NPC, 3500, "quest_step_9f", 1, player)
end
@@ -356,16 +381,23 @@ function quest_step_7b(NPC, player)
Dialog.AddVoiceover("voiceover/english/captain_varlos/boat_06p_tutorial02/varlos_0_013.mp3", 3880459741, 170861362)
Dialog.AddOption("How do you expect me to kill them?", "quest_step_7c")
Dialog.Start()
+ SendStateCommand(NPC, 0)
+
end
function quest_step_7c(NPC, player)
Dialog.New(NPC, player)
Dialog.AddDialog("Wit this 'ere club. It is nice and splintered, sure ta' cause them some pain.")
Dialog.AddVoiceover("voiceover/english/captain_varlos/boat_06p_tutorial02/varlos_0_014.mp3", 2083163804, 202693960)
+ AddTimer(NPC, 500, "Brandish", 1, player)
Dialog.AddOption("Aye, aye, Captain!", "quest_step_7d")
Dialog.Start()
end
+function Brandish(NPC,Spawn)
+ PlayFlavor(NPC,"","","brandish",0,0,player)
+end
+
function quest_step_7d (NPC,player)
SetStepComplete(player, 524, 7)
end
@@ -432,15 +464,21 @@ function where_are_we_headed(NPC, player)
finished_how_did_I_get_here = true
if not finished_where_are_we_headed then
FaceTarget(NPC, player)
- PlayFlavor(NPC, "voiceover/english/captain_varlos/boat_06p_tutorial02_fvo_005.mp3", "We are heading to the Island of Refuge.", "", 1602680439, 2810422278)
+ CloseConversation(NPC,player)
+ AddTimer(NPC,200,"headingto",1,player)
AddTimer(NPC, 500, "shake_camera_medium", 1, player)
AddTimer(NPC, 1500, "shake_camera_low", 1, player)
AddTimer(NPC, 2500, "shake_camera_low", 1, player)
AddTimer(NPC, 3100, "shake_camera_low", 1, player)
- AddTimer(NPC, 3600, "high_winds_1", 1, player)
+ AddTimer(NPC, 4400, "shake_camera_medium", 1, player)
+ AddTimer(NPC, 5600, "high_winds_1", 1, player)
end
end
+function headingto(NPC,player)
+ PlayFlavor(NPC, "voiceover/english/captain_varlos/boat_06p_tutorial02_fvo_005.mp3", "We are heading to the Island of Refuge.", "", 1602680439, 2810422278, player)
+end
+
function shake_camera_low(NPC, player)
PerformCameraShake(player, 0.10000000149011612)
end
diff --git a/server/SpawnScripts/FarJourneyFreeport/HelmsmanNyles.lua b/server/SpawnScripts/FarJourneyFreeport/HelmsmanNyles.lua
index de41b763e..da5d6af31 100755
--- a/server/SpawnScripts/FarJourneyFreeport/HelmsmanNyles.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/HelmsmanNyles.lua
@@ -15,12 +15,20 @@ function hailed(NPC, Spawn)
local conversation = CreateConversation()
AddConversationOption(conversation, "Yes", "leave")
AddConversationOption(conversation, "No")
+-- AddConversationOption(conversation, "Test Remove","Test")
if GetClass(Spawn)>0 then
- AddConversationOption(conversation, " Wait, I'm just a commoner. [CLASSIC CLASS CHANGE TO COMMONER].","Commoner")
+ AddConversationOption(conversation, "Wait, I'm just a commoner.\n\n[CLASSIC CLASS CHANGE TO COMMONER].","Commoner")
end
- StartConversation(conversation, NPC, Spawn, " Head for land? [Leave The Far Journey?]")
+ StartConversation(conversation, NPC, Spawn, "Head for land?\n[Leave The Far Journey?]")
+end
+
+function Test(NPC,Spawn)
+ PlayFlavor(NPC, "", "Done", "", 0, 0, Spawn, 0)
+ if HasQuest(Spawn, 524)then -- COMPLETES REMAINING QUEST STEPS (Replace w/ quest removal once we figure that out)
+ RemovePlayerQuest(Spawn,524)
+end
end
function leave(NPC, Spawn)
@@ -114,7 +122,7 @@ if HasQuest(Spawn, 524)then -- COMPLETES REMAINING QUEST STEPS (Replace w/ q
end
-AddTimer(NPC,3000,"ToShore",1,Spawn)
+AddTimer(NPC,3300,"ToShore",1,Spawn)
end
@@ -129,10 +137,10 @@ function ToShore(NPC, Spawn)
RemoveItem(Spawn,12565,1)
end
if GetClass(Spawn) == 0 then
- ZoneRef = GetZone("IsleRefuge1")
+ ZoneRef = GetZone("IsleRefuge1")
Zone(ZoneRef,Spawn)
elseif GetDeity(Spawn) == 0 then
- ZoneRef = GetZone("OutpostOverlord")
+ ZoneRef = GetZone("OutpostOverlord")
Zone(ZoneRef,Spawn)
elseif GetDeity(Spawn) == 1 then
diff --git a/server/SpawnScripts/FarJourneyFreeport/Ingrid.lua b/server/SpawnScripts/FarJourneyFreeport/Ingrid.lua
index c4f4c3eef..ba9ab728f 100755
--- a/server/SpawnScripts/FarJourneyFreeport/Ingrid.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/Ingrid.lua
@@ -37,13 +37,11 @@ function hailed(NPC, Spawn)
"Is Vim not going to sell it to you? That is just my luck... well I guess I will have to finish this work then.",
"", 4181806501, 3186272404)
elseif step == 6 then
- SetTutorialStep(Spawn, 31)
- AddCoin(Spawn, 10)
- DisplayText(Spawn, 34, "You receive 10 Copper.")
+ AddTimer(NPC,5000,"Next",1,Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog(
- "Ah! You got the shard. Great! Now I can stop doing this work and enjoy the rest of this trip. Here is some coin for your help.")
+ Dialog.AddDialog("Ah! You got the shard. Great! Now I can stop doing this work and enjoy the rest of this trip. Here is some coin for your help.")
Dialog.AddVoiceover("voiceover/english/ingrid/boat_06p_tutorial02/ingrid_0_006.mp3", 502975024, 483052250)
+ PlayFlavor(NPC,"","","happy")
Dialog.AddOption("Thanks.", "thanks_for_getting_shard")
Dialog.Start()
elseif GetX(NPC) < 5 then
@@ -60,17 +58,21 @@ function hailed(NPC, Spawn)
end
end
end
+
+function Next(NPC,Spawn)
+ SetTutorialStep(Spawn, 31)
+end
end
-function InRange(NPC,Player)
+function InRange(NPC,Spawn)
if GetTempVariable(NPC,"Starting","Checking") then
- SetTempVariable(NPC, "Staring", "Done")
- AddTimer(NPC, 30000, "WalkToGeredo",1,Player)
+ SetTempVariable(NPC, "Starting", "Done")
+ AddTimer(NPC, 30000, "WalkToGeredo",1,Spawn)
end
end
-function WalkToGeredo(NPC, Player)
- playerhasquest = HasQuest(Player, 524)
+function WalkToGeredo(NPC, Spawn)
+ playerhasquest = HasQuest(Spawn, 524)
if playerhasquest == true then
MoveToLocation(NPC, 2.35, -2.07, -3.34, 5, nil, false)
else
@@ -331,6 +333,8 @@ end
function thanks_for_getting_shard(NPC, Spawn)
SetStepComplete(Spawn, 524, 6)
RemoveItem(Spawn, ShardOfLuclin)
+ AddCoin(Spawn, 10)
+ SendMessage(Spawn, "You receive 10 Copper.")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/FarJourneyFreeport/Valik.lua b/server/SpawnScripts/FarJourneyFreeport/Valik.lua
index 1b4802451..6313bea0f 100755
--- a/server/SpawnScripts/FarJourneyFreeport/Valik.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/Valik.lua
@@ -11,6 +11,17 @@ AddTimer(NPC,26000,"waypoints")
end
function hailed(NPC, Spawn)
+ goblin = GetSpawn(NPC, 270008)
+ if goblin == nil or IsAlive(goblin) == false then
+ Talk(NPC,Spawn)
+ elseif IsAlive(goblin) == true and GetSpawn(NPC, 270011)~= nil then
+ Talk(NPC,Spawn)
+ elseif IsAlive(goblin) == true and GetSpawn(NPC, 270011)== nil then
+ PlayFlavor(NPC, "", "", "cringe", 0, 0)
+ end
+end
+
+function Talk(NPC,Spawn)
choice = math.random(0, 1)
FaceTarget(NPC, Spawn)
if choice == 1 then
diff --git a/server/SpawnScripts/FarJourneyFreeport/Vim.lua b/server/SpawnScripts/FarJourneyFreeport/Vim.lua
index 5c82ffd40..e7e411158 100755
--- a/server/SpawnScripts/FarJourneyFreeport/Vim.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/Vim.lua
@@ -9,10 +9,13 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
-
end
-function hailed(NPC, player)
+
+function hailed(NPC, player)
+ if HasQuest(player,524) and GetQuestStep(player,524)==5 and HasItem(player,12565,1) then
+ SetStepComplete(player,524,5)
+ end
choice = math.random(1, 5)
FaceTarget(NPC, player)
if choice == 1 then
@@ -28,13 +31,18 @@ function hailed(NPC, player)
PlayFlavor(NPC, "voiceover/english/merchant_vim/boat_06p_tutorial02_fvo_005.mp3", "The Far Journey's a beautiful ship, ain't she?", "",3585442471, 604828909)
end
if GetTutorialStep(player) == 24 then
- InstructionWindow(player, -1.0, "This is the merchant screen where all buying and selling takes place. Money comes in four denominations: copper, silver, gold, and platinum. Each type of coin is worth 100 times more than the previous one. For example, 100 copper pieces equals 1 silver piece. But right now, as this display shows, you have no money, so left click on the sell tab.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_021_6c80e66e.mp3", 1226703760, 969427050, "tutorial_stage_25", "Click on the 'Sell' tab in the merchant window.", "pane Merchant Sell")
+ AddTimer(NPC,2500,"Next",1,player)
+ end
+end
+
+function Next(NPC,player)
+ InstructionWindow(player, -1.0, "This is the merchant screen where all buying and selling takes place. Money comes in four denominations: copper, silver, gold, and platinum. Each type of coin is worth 100 times more than the previous one. For example, 100 copper pieces equals 1 silver piece. But right now, as this display shows, you have no money, so left click on the sell tab.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_021_6c80e66e.mp3", 1226703760, 969427050, "tutorial_stage_25", "Click on the 'Sell' tab in the merchant window.", "pane Merchant Sell")
FlashWindow(player, "Inventory.Merchant.PlatinumCoinIcon", 8.0)
FlashWindow(player, "Inventory.Merchant.GoldCoinIcon", 8.0)
FlashWindow(player, "Inventory.Merchant.SilverCoinIcon", 8.0)
FlashWindow(player, "Inventory.Merchant.CopperCoinIcon", 8.0)
end
-end
+
function respawn(NPC)
diff --git a/server/SpawnScripts/FarJourneyFreeport/Waulon.lua b/server/SpawnScripts/FarJourneyFreeport/Waulon.lua
index eae11c407..68394a3a3 100755
--- a/server/SpawnScripts/FarJourneyFreeport/Waulon.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/Waulon.lua
@@ -19,7 +19,7 @@ function hailed(NPC, player)
step = GetQuestStep(player, 524)
if step == 1 then
-- InstructionWindowGoal(player,0)
--- InstructionWindowClose(player)
+ InstructionWindowClose(player)
Dialog.New(NPC, player)
Dialog.AddDialog("Wot? Oh, hey there, ye' startled me.")
Dialog.AddVoiceover("voiceover/english/waulon/boat_06p_tutorial02/walon_0_001.mp3", 814960513, 2301562586)
@@ -33,7 +33,8 @@ function hailed(NPC, player)
Dialog.AddVoiceover("voiceover/english/waulon/boat_06p_tutorial02/walon_0_005.mp3", 4097259098, 893296183)
Dialog.AddOption("Glad to help!", "returned_hat")
Dialog.Start()
- InstructionWindowGoal(player, 0)
+ SetEquipment(NPC, 2, 1083, 255, 255, 255, 255, 255, 255) --Gives Waulon his hat back visually
+-- InstructionWindowGoal(player, 0)
end
end
end
@@ -46,11 +47,12 @@ function returned_hat(NPC, player)
Dialog.Start()
end
-function returned_hat(NPC, player)
+function received_charm(NPC, player)
+ finished_step_three(NPC, player)
Dialog.New(NPC, player)
Dialog.AddDialog("Well now, Ingrid o'er there, can show ya' the rest of the ship. Me needs ta' plot the course ta' the isles now.")
Dialog.AddVoiceover("voiceover/english/waulon/boat_06p_tutorial02/walon_0_007.mp3", 1973137904, 2648127610)
- Dialog.AddOption("Ok.", "finished_step_three")
+ Dialog.AddOption("Ok.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/FarJourneyFreeport/agoblin.lua b/server/SpawnScripts/FarJourneyFreeport/agoblin.lua
index 90e2e4dd2..00a75fc6f 100755
--- a/server/SpawnScripts/FarJourneyFreeport/agoblin.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/agoblin.lua
@@ -7,10 +7,12 @@
Script Notes : Created client versioning & added interactions between NPCs. MISSING INGRED CHASE AROUND BOAT, but not necessary. - Dorbin 08.14.22
--]]
local legacy = true -- Client check. True == DoF or Classic
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ CageCollision(NPC)
-function spawn(NPC)
--- AddTimer(NPC, 5000, "idle_loop")
-CageCollision(NPC)
end
function hailed(NPC, player)
diff --git a/server/SpawnScripts/FarJourneyFreeport/arat.lua b/server/SpawnScripts/FarJourneyFreeport/arat.lua
index b153efebc..aa05299bc 100755
--- a/server/SpawnScripts/FarJourneyFreeport/arat.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/arat.lua
@@ -6,8 +6,12 @@
:
--]]
-function spawn(NPC)
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
waypoints(NPC)
+
end
function hailed(NPC, Spawn)
@@ -17,6 +21,15 @@ function respawn(NPC)
spawn(NPC)
end
+function death(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local rat1 = GetSpawnByLocationID(zone,1586105)
+ local rat2 = GetSpawnByLocationID(zone,1586106)
+ if not IsAlive(rat1) and not IsAlive(rat2) then
+ SetPlayerLevel(Spawn,2)
+ end
+end
+
function waypoints(NPC)
if GetSpawnLocationID(NPC)== 1586106 then
MovementLoopAddLocation(NPC, 2.31, -2.07, -4.95, 1, math.random(6,10))
diff --git a/server/SpawnScripts/FarJourneyFreeport/tutorialdrake.lua b/server/SpawnScripts/FarJourneyFreeport/tutorialdrake.lua
index 57731550e..39e62ee92 100755
--- a/server/SpawnScripts/FarJourneyFreeport/tutorialdrake.lua
+++ b/server/SpawnScripts/FarJourneyFreeport/tutorialdrake.lua
@@ -14,34 +14,35 @@ end
--DoF Version
function attack(NPC)
SendStateCommand(NPC, 65) -- attack
- AddTimer(NPC, 40000, "DoFdrake_rain")
+-- AddTimer(NPC, 40000, "DoFdrake_rain")
end
function DoFdrake_rain(NPC)
SendStateCommand(NPC, 910) --rain
- AddTimer(NPC, 10000, "DoFdrake_stop")
+-- AddTimer(NPC, 10000, "DoFdrake_stop")
end
function DoFdrake_stop(NPC)
- SendStateCommand(NPC, 33678) --kill_rain
+-- SendStateCommand(NPC, 33678) --kill_rain
end
--non DoF Version
function NonDoFattack(NPC)
-- SendStateCommand(NPC, 10783) -- attack
- SpawnSet(NPC, "visual_state", 10783)
- AddTimer(NPC, 40000, "drake_rain")
+ PlayFlavor(NPC,"","","attack")
+ --SpawnSet(NPC, "visual_state", 10783)
+-- AddTimer(NPC, 40000, "drake_rain")
end
function drake_rain(NPC)
-- SendStateCommand(NPC, 12080) --rain
SpawnSet(NPC, "visual_state", 12080)
- AddTimer(NPC, 10000, "drake_stop")
+ -- AddTimer(NPC, 10000, "drake_stop")
end
function drake_stop(NPC)
-- SendStateCommand(NPC, 44848) --kill_rain
- SpawnSet(NPC, "visual_state", 44848)
+-- SpawnSet(NPC, "visual_state", 44848)
end
diff --git a/server/SpawnScripts/FermentedGrape/CaptainPegrinos.lua b/server/SpawnScripts/FermentedGrape/CaptainPegrinos.lua
new file mode 100755
index 000000000..5a72d5b56
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/CaptainPegrinos.lua
@@ -0,0 +1,199 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/CaptainPegrinos.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 05:12:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+local Quest = 5785
+
+ local greetingsTable = { "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3",
+ "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3",
+ "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3"};
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ PlayFlavor(NPC, greetingsTable[math.random(#greetingsTable)], "", "glare", 0, 0, Spawn)
+ FaceTarget(NPC, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Take it easy on her, it`s hard to perform!","Dialog1")
+ StartConversation(conversation, NPC, Spawn, "Hey waddya want? Her performance is terrible and we`re gonna fix that...for good.")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Don't be a fool! People come here to take it easy- not to get their face punched!","Attack1")
+ AddConversationOption(conversation, "How do you expect her to get better if you hurt her now?","Dialog2")
+ AddConversationOption(conversation, "Surely you and your lot have better things to do than attack a minstrel?","Dialog3")
+ StartConversation(conversation, NPC, Spawn, "Now what should we be doing that? Her song was off-key, the lyrics were terrible, and I think one of me hearties ruptured an ear listenin` to her rot!")
+end
+
+function Attack1(NPC,Spawn)
+ PlayFlavor(NPC,"","Did ya hear that boys? We've been called fools! Time to punch this one's face!","shakefist",0,0,Spawn)
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,3000,"AttackFinal",1,Spawn)
+end
+
+
+
+function AttackFinal(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+Attack(Pirate1,Spawn)
+Attack(Pirate2,Spawn)
+Attack(Pirate3,Spawn)
+Attack(Pirate4,Spawn)
+Attack(Pirate5,Spawn)
+Attack(Pirate6,Spawn)
+Attack(Captain,Spawn)
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Bully! That's what you are! A big gnoll-kissing meany! ","Boot")
+ AddConversationOption(conversation, "But she`s just a poor, innocent bard!","Dialog2a")
+ AddConversationOption(conversation, "How about you leave her alone and nobody gets hurt...","Attack2")
+ StartConversation(conversation, NPC, Spawn, "Ya weak-bellied scoundrel! We`re not expectin`her to get better, that`s rather the point!")
+end
+
+function Attack2(NPC,Spawn)
+ PlayFlavor(NPC,"","Nobody get's hurt except YOU that is! Haha! It's time, boys! Get'm!","chuckle",0,0,Spawn)
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,3000,"AttackFinal",1,Spawn)
+PlaySound(Spawn,"sounds/e3_scripted/mage_ohh02.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Dialog2a(NPC,Spawn)
+ PlayFlavor(NPC,"","Àrrr! Ya went and made em run! It`s just up to me and my mates here now! Prepare yerself, ya angered the wrong captain!","grumble",0,0,Spawn)
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,4500,"AttackFinal",1,Spawn)
+ SendPopUpMessage(Spawn,"Some pirates disperse after your conversation with their captain.",250,250,250)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+-- PlaySound(Spawn,"sounds/e3_scripted/mage_boo01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ zone = GetZone(NPC)
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+Despawn(Pirate3)
+Despawn(Pirate4)
+Despawn(Pirate5)
+Despawn(Pirate6)
+end
+
+
+function Boot(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Wait...WAIT!")
+ StartConversation(conversation, NPC, Spawn, "That's cute... I don't even got 'da heart to rough you up! Boys, carry this one out of here!")
+-- Dialog.New(NPC, Spawn)
+-- Dialog.AddDialog("That's cute... I don't even got 'da heart to rough you up! Boys, carry this one out of here!")
+ PlayFlavor(NPC, "", "", "sigh", 0, 0, Spawn)
+-- Dialog.AddOption("Wait...WAIT!")
+-- Dialog.Start()
+ SendPopUpMessage(Spawn,"The pirates have upi kicked out!",255,0,0)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ PlaySound(Spawn,"sounds/e3_scripted/mage_boo01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ AddTimer(NPC,3500,"Kick",1,Spawn)
+end
+
+function Kick(NPC,Spawn)
+ SQ = GetZone("SouthQeynos")
+ Zone(SQ,Spawn,582.89, -17.48, 255.57, 254)
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "But she`s just a poor, innocent bard!","Dialog2a")
+ AddConversationOption(conversation, "You want to tumble? I've got your answer right here!","Attack3")
+ AddConversationOption(conversation, "You're just a ... Drunder-headed bully!","Boot")
+ StartConversation(conversation, NPC, Spawn, "'Tis our first landfall in months just to hear this dribble! Give me one reason I shouldn't bash some teeth in...")
+end
+
+
+function Attack3(NPC,Spawn)
+ PlayFlavor(NPC,"","Let's gett'm boys! Bring me those teeth!","cutthroat",0,0,Spawn)
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,3000,"AttackFinal",1,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+Attack(Pirate1,Spawn)
+Attack(Pirate2,Spawn)
+Attack(Pirate3,Spawn)
+Attack(Pirate4,Spawn)
+Attack(Pirate5,Spawn)
+Attack(Pirate6,Spawn)
+Attack(Captain,Spawn)
+end
+
+function death(NPC,Spawn)
+CloseConversation(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ if HasQuest(Spawn,5784) then
+ SetStepComplete(Spawn,5784,1)
+ end
+SpawnSet(Bartender,"name","a relieved bartender")
+SpawnSet(Bartender,"mood_state",0)
+SpawnSet(Bartender,"action_state",11214)
+SpawnSet(Bard,"name","a thankful bard")
+SpawnSet(Bard,"mood_state",11854)
+SpawnSet(Bard,"action_state",0)
+SpawnSet(Bobick,"action_state",11422)
+SpawnSet(Bobick,"name","a satisfied patron")
+
+end
+end
diff --git a/server/SpawnScripts/FermentedGrape/aconcentratingchessplayer.lua b/server/SpawnScripts/FermentedGrape/aconcentratingchessplayer.lua
new file mode 100755
index 000000000..0de0f570a
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/aconcentratingchessplayer.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/aconcentratingchessplayer.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 03:12:23
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/scribe_ommanoden/qey_village02/100_scribe_ommanoden_multhail1_becd50b2.mp3", "Can't you see I'm busy organizing my collections of wisdom? I've no time for chatting. Leave me alone!", "no", 3010394589, 1905118172, Spawn)
+else
+SendMessage(Spawn,"The chess player doesn't seem to acknowledge your pressence.")
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FermentedGrape/acoweringbard.lua b/server/SpawnScripts/FermentedGrape/acoweringbard.lua
new file mode 100755
index 000000000..fa6352716
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/acoweringbard.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/acoweringbard.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 02:12:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+ local greetingsTable = { "voiceover/english/voice_emotes/greetings/greetings_1_1011.mp3",
+ "voiceover/english/voice_emotes/greetings/greetings_2_1011.mp3",
+ "voiceover/english/voice_emotes/greetings/greetings_3_1011.mp3"};
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,greetingsTable[math.random(#greetingsTable)]," Oh thank you so much! I was afraid they were going to kill me!","thanks",0,0,Spawn)
+else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_e0dfed5b.mp3", "P-p-please d-don't hurt me!", "beg", 623352569, 1914748091, Spawn, 0)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FermentedGrape/acuriouspatron.lua b/server/SpawnScripts/FermentedGrape/acuriouspatron.lua
new file mode 100755
index 000000000..faad7052a
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/acuriouspatron.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/acuriouspatron.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 03:12:25
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ FaceTarget(NPC, Spawn)
+ local check = MakeRandomInt(1,2)
+ if check == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfling_eco_race_good/ft/eco/good/halfling_eco_race_good_hail_gm_34b03729.mp3", "I'm sure we've met some place before. You look so familiar!", "ponder", 1550233671, 4104979611, Spawn)
+ elseif check == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfling_eco_race_good/ft/eco/good/halfling_eco_race_good_hail_gm_74b0fd50.mp3", "A good joke deserves a good audiance I always say.", "agree", 95315026, 2602312757, Spawn)
+ end
+ else
+ PlayFlavor(NPC, "voiceover/english/halfling_eco_good_1/ft/halfling/halfling_eco_good_1_hail_gm_cf902b40.mp3", "Get on now! There is plenty of work to be done. Maybe you should lend a hand if you feel up to it.", "point", 1396062221, 310311489, Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FermentedGrape/aperplexedbartender.lua b/server/SpawnScripts/FermentedGrape/aperplexedbartender.lua
new file mode 100755
index 000000000..d7c9a2aa4
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/aperplexedbartender.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/aperplexedbartender.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 05:12:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+end
+
+
+
+
+
+ local greetingsTable = { "voiceover/english/voice_emotes/greetings/greetings_1_1012.mp3",
+ "voiceover/english/voice_emotes/greetings/greetings_2_1012.mp3",
+ "voiceover/english/voice_emotes/greetings/greetings_3_1012.mp3"};
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_hail_gm_57b9ce4e.mp3", "I am sorry. I am burdened with my own thoughts, and haven't a moment to converse.", "no", 1692526278, 2332878998, Spawn)
+else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_hail_gm_eb4f8f5d.mp3", "I hope you have been sent by someone of importance. I'm quite busy.", "grumble", 111891212, 1507953677, Spawn)
+end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FermentedGrape/apiratecutter.lua b/server/SpawnScripts/FermentedGrape/apiratecutter.lua
new file mode 100755
index 000000000..ab2a68d17
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/apiratecutter.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/apiratecutter.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 05:12:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) then
+ SpawnSet(NPC,"mood_state",11852)
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","threaten",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","taunt",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","neener",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","violin",0,0)
+ end
+ end
+ AddTimer(NPC,5000,"EmoteLoop")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/halfelf/halfelf_eco_evil_1_hail_gm_7344f21b.mp3", "I'm in the mood to kick someone in the teeth.", "kick", 620861878, 995351111, Spawn, 0)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+Attack(Pirate1,Spawn)
+Attack(Pirate2,Spawn)
+Attack(Pirate3,Spawn)
+Attack(Pirate4,Spawn)
+Attack(Pirate5,Spawn)
+Attack(Pirate6,Spawn)
+Attack(Captain,Spawn)
+end
+
+
+function death(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ if HasQuest(Spawn,5784) then
+ SetStepComplete(Spawn,5784,1)
+ end
+SpawnSet(Bartender,"name","a relieved bartender")
+SpawnSet(Bartender,"mood_state",0)
+SpawnSet(Bartender,"action_state",11214)
+SpawnSet(Bard,"name","a thankful bard")
+SpawnSet(Bard,"mood_state",11854)
+SpawnSet(Bard,"action_state",0)
+SpawnSet(Bobick,"action_state",11422)
+SpawnSet(Bobick,"name","a satisfied patron")
+end
+end
diff --git a/server/SpawnScripts/FermentedGrape/apiratefirstmate.lua b/server/SpawnScripts/FermentedGrape/apiratefirstmate.lua
new file mode 100755
index 000000000..c035b40b5
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/apiratefirstmate.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/apiratefirstmate.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 01:12:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) then
+ SpawnSet(NPC,"mood_state",11852)
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","threaten",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","taunt",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","chuckle",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","point",0,0)
+ end
+ end
+ AddTimer(NPC,6000,"EmoteLoop")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_farsea_1/ft/service/guard/halfelf_guard_service_farsea_1_hail_gf_2b42c14f.mp3", "After twelve weeks at sea, bashing the head of a nosy landlubber sounds quite appealing!", "threaten", 1936614211, 2469553737, Spawn, 0)
+end
+
+
+function death(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ if HasQuest(Spawn,5784) then
+ SetStepComplete(Spawn,5784,1)
+ end
+SpawnSet(Bartender,"name","a relieved bartender")
+SpawnSet(Bartender,"mood_state",0)
+SpawnSet(Bartender,"action_state",11214)
+SpawnSet(Bard,"name","a thankful bard")
+SpawnSet(Bard,"mood_state",11854)
+SpawnSet(Bard,"action_state",0)
+SpawnSet(Bobick,"action_state",11422)
+SpawnSet(Bobick,"name","a satisfied patron")
+end
+end
diff --git a/server/SpawnScripts/FermentedGrape/apiratesailor.lua b/server/SpawnScripts/FermentedGrape/apiratesailor.lua
new file mode 100755
index 000000000..f5e5a59b7
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/apiratesailor.lua
@@ -0,0 +1,88 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/apiratesailor.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 05:12:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) then
+ SpawnSet(NPC,"mood_state",11852)
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","threaten",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","taunt",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","frustrated",0,0)
+ end
+ end
+ AddTimer(NPC,6000,"EmoteLoop")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+Attack(Pirate1,Spawn)
+Attack(Pirate2,Spawn)
+Attack(Pirate3,Spawn)
+Attack(Pirate4,Spawn)
+Attack(Pirate5,Spawn)
+Attack(Pirate6,Spawn)
+Attack(Captain,Spawn)
+end
+
+
+function death(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ if HasQuest(Spawn,5784) then
+ SetStepComplete(Spawn,5784,1)
+ end
+SpawnSet(Bartender,"name","a relieved bartender")
+SpawnSet(Bartender,"mood_state",0)
+SpawnSet(Bartender,"action_state",11214)
+SpawnSet(Bard,"name","a thankful bard")
+SpawnSet(Bard,"mood_state",11854)
+SpawnSet(Bard,"action_state",0)
+SpawnSet(Bobick,"action_state",11422)
+SpawnSet(Bobick,"name","a satisfied patron")
+end
+end
diff --git a/server/SpawnScripts/FermentedGrape/apirateswabby.lua b/server/SpawnScripts/FermentedGrape/apirateswabby.lua
new file mode 100755
index 000000000..d9313d811
--- /dev/null
+++ b/server/SpawnScripts/FermentedGrape/apirateswabby.lua
@@ -0,0 +1,73 @@
+--[[
+ Script Name : SpawnScripts/FermentedGrape/apirateswabby.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 01:12:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+Attack(Pirate1,Spawn)
+Attack(Pirate2,Spawn)
+Attack(Pirate3,Spawn)
+Attack(Pirate4,Spawn)
+Attack(Pirate5,Spawn)
+Attack(Pirate6,Spawn)
+Attack(Captain,Spawn)
+if GetRace(NPC)== 9 and GetGender(NPC)==1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_farsea_1/ft/service/guard/human_guard_service_farsea_1_hail_gm_990c7e98.mp3", "What do you think you're looking at?", "", 2597948053, 2836713373, Spawn, 0)
+end
+end
+
+
+function death(NPC,Spawn)
+local zone = GetZone(NPC)
+local Pirate1 = GetSpawnByLocationID(zone, 133781037) --FIRSTMATE
+local Pirate2 = GetSpawnByLocationID(zone, 133781036) --CUTTER
+local Pirate3 = GetSpawnByLocationID(zone, 133781038)
+local Pirate4 = GetSpawnByLocationID(zone, 133781039)
+local Pirate5 = GetSpawnByLocationID(zone, 133781035)
+local Pirate6 = GetSpawnByLocationID(zone, 133781034)
+local Captain = GetSpawnByLocationID(zone, 133781033)
+
+local Bartender = GetSpawnByLocationID(zone, 133781031)
+local Bard = GetSpawnByLocationID(zone, 133781032)
+local Bobick = GetSpawnByLocationID(zone, 133781027)
+
+if not IsAlive(Pirate1) and not IsAlive(Pirate2) and not IsAlive(Pirate3) and not IsAlive(Pirate4) and not IsAlive(Pirate5) and not IsAlive(Pirate6) and not IsAlive(Captain) then
+ if HasQuest(Spawn,5784) then
+ SetStepComplete(Spawn,5784,1)
+ end
+SpawnSet(Bartender,"name","a relieved bartender")
+SpawnSet(Bartender,"mood_state",0)
+SpawnSet(Bartender,"action_state",11214)
+SpawnSet(Bard,"name","a thankful bard")
+SpawnSet(Bard,"mood_state",11854)
+SpawnSet(Bard,"action_state",0)
+SpawnSet(Bobick,"action_state",11422)
+SpawnSet(Bobick,"name","a satisfied patron")
+end
+end
diff --git a/server/SpawnScripts/Firemyst1/SentryDelain.lua b/server/SpawnScripts/Firemyst1/SentryDelain.lua
new file mode 100755
index 000000000..0818a7029
--- /dev/null
+++ b/server/SpawnScripts/Firemyst1/SentryDelain.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/Firemyst1/SentryDelain.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.15 10:04:59
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function movement_script(NPC, Spawn)
+MovementLoopAddLocation(NPC, -1,088.97, -20.34, 744.10, 92.17, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,083.25, -19.47, 744.76, 143.77, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,085.06, -19.43, 747.45, 146.06, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,097.65, -21.34, 748.57, 42.09, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,098.46, -21.67, 746.02, 322.19, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,097.30, -21.66, 743.78, 274.94, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,091.18, -20.63, 744.73, 291.75, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,086.03, -19.81, 744.93, 252.01, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,083.46, -19.32, 745.92, 245.72, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,095.30, -21.18, 745.68, 290.84, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,098.28, -22.15, 740.17, 8.52, 2, MakeRandomInt(10, 24))
+ MovementLoopAddLocation(NPC, -1,098.28, -22.15, 740.17, 8.52, 2)
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ForestRuins_Classic/aBlackAsp.lua b/server/SpawnScripts/ForestRuins_Classic/aBlackAsp.lua
new file mode 100755
index 000000000..5e174f862
--- /dev/null
+++ b/server/SpawnScripts/ForestRuins_Classic/aBlackAsp.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/ForestRuins_Classic/aBlackAsp.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 07:09:12
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(10 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(22 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ForestRuins_Classic/aCrownedScavenger.lua b/server/SpawnScripts/ForestRuins_Classic/aCrownedScavenger.lua
new file mode 100755
index 000000000..fc794874a
--- /dev/null
+++ b/server/SpawnScripts/ForestRuins_Classic/aCrownedScavenger.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/ForestRuins_Classic/aCrownedScavenger.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 04:09:23
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ForestRuins_Classic/abrittleaccountant.lua b/server/SpawnScripts/ForestRuins_Classic/abrittleaccountant.lua
new file mode 100755
index 000000000..daf0af2bd
--- /dev/null
+++ b/server/SpawnScripts/ForestRuins_Classic/abrittleaccountant.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ForestRuins_Classic/abrittleaccountant.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ForestRuins_Classic/alakeswarmer.lua b/server/SpawnScripts/ForestRuins_Classic/alakeswarmer.lua
new file mode 100755
index 000000000..4030499fb
--- /dev/null
+++ b/server/SpawnScripts/ForestRuins_Classic/alakeswarmer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ForestRuins_Classic/alakeswarmer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ForestRuins_Classic/atatteredspellbook.lua b/server/SpawnScripts/ForestRuins_Classic/atatteredspellbook.lua
new file mode 100755
index 000000000..daeab63a9
--- /dev/null
+++ b/server/SpawnScripts/ForestRuins_Classic/atatteredspellbook.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ForestRuins_Classic/atatteredspellbook.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Freeport/IntelligenceOfficerGezlowe.lua b/server/SpawnScripts/Freeport/IntelligenceOfficerGezlowe.lua
index b6d80383b..e569eaa20 100755
--- a/server/SpawnScripts/Freeport/IntelligenceOfficerGezlowe.lua
+++ b/server/SpawnScripts/Freeport/IntelligenceOfficerGezlowe.lua
@@ -3,62 +3,192 @@
Script Author : Premierio015
Script Date : 2020.08.07 07:08:31
Script Purpose :
- :
+ : Needs emote in InRange elseif beckon is just a placeholder
--]]
-local QUEST = 573
+
+require "SpawnScripts/Generic/DialogModule"
+
+local SearchForTheMissing = 573
+local AFesteringProblem = 5800
function spawn(NPC)
-SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
end
+function respawn(NPC)
+ spawn(NPC)
+end
function InRange(NPC, Spawn)
-if HasQuest(Spawn, QUEST) and GetQuestStep(Spawn, QUEST) == 1 then
-PlayFlavor(NPC, "", "You there! If you don't wish to be found in violation of treason, you'd better have a word with me.", "beckon", 1689589577, 4560189, Spawn)
+ if HasQuest(Spawn, SearchForTheMissing) and GetQuestStep(Spawn, SearchForTheMissing) == 1 then
+ PlayFlavor(NPC, "", "You there! If you don't wish to be found in violation of treason, you'd better have a word with me.", "beckon", 1689589577, 4560189, Spawn)
+ elseif HasCompletedQuest(Spawn, SearchForTheMissing) and not HasQuest(Spawn, AFesteringProblem) then
+ PlayFlavor(NPC, "", "Hey, you! I could use a capable adventurer like you for something!", "beckon", 0, 0, Spawn, 0)
+ end
end
- end
function LeaveRange(NPC, Spawn)
end
-
function hailed(NPC, Spawn)
+ --Say(NPC, "You are currently on step " .. GetQuestStep(Spawn, AFesteringProblem))
+ QuestChecks(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,7)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Move along, move along.", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "You there! If you don't wish to be found in violation of treason, you'd better have a word with me.", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "Hey, you! I could use a capable adventurer like you for something!", "", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "You display the makings of a fine, upstanding member of this city, you do.", "", 0, 0, Spawn, 0)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1048.mp3", 0, 0, Spawn)
+ elseif choice == 6 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1048.mp3", 0, 0, Spawn)
+ elseif choice == 7 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1048.mp3", 0, 0, Spawn)
+ end
+end
+
+function QuestChecks(NPC, Spawn)
+ if HasQuest(Spawn, SearchForTheMissing) and GetQuestStep(Spawn, SearchForTheMissing) == 1 then
+ Dialog3(NPC, Spawn)
+ elseif HasCompletedQuest(Spawn, SearchForTheMissing) and GetQuestStep(Spawn, AFesteringProblem) ~= 2 and not HasCompletedQuest(Spawn, AFesteringProblem) then
+ Dialog11(NPC, Spawn)
+ elseif HasQuest(Spawn, AFesteringProblem) and GetQuestStep(Spawn, AFesteringProblem) == 2 then
+ Dialog12(NPC, Spawn)
+ elseif HasCompletedQuest(Spawn, AFesteringProblem) then
+ Dialog10(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "", "Move along, move along.", "", 0, 0, Spawn, 0)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Figured an old Freeport hero like yourself wouldn't have a problem with it. One of the guards found this in the frog's cell. Apparently it's got an admirer. I'm sure you'll find the right thing to do.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe011.mp3", 3091008699, 1945248180)
+ Dialog.AddOption("I'm sure I will.", "Dialog13")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good, right along our line of thinking. We can't just have these multi-colored dissidents wandering around, can we?")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe003.mp3", 1225667417, 2186564758)
+ Dialog.AddOption("No, sir.", "Dialog4")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good, good. I'm glad you made the right choice. I understand you've agreed to do a bit of work for a prisoner. Lucan doesn't take kindly to those who would aid enemies of the state.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe001.mp3", 4100697640, 2084488414)
+ Dialog.AddOption("Enemies of the state?", "Dialog8")
+ Dialog.AddOption("I was just getting more information so I could find the rest of them.", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ SetStepComplete(Spawn, SearchForTheMissing, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So what we're going to do is take care of this little incident before we find more of these things on our doorstep. Go find the one you're looking for. Kill it. Then tell the frog that it died of sunstroke or something.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe004.mp3", 2945684159, 2849117183)
+ Dialog.AddOption("Very well.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Bingo. Why don't you saunter over there and kill three Qeynosians and a froglok with one stone?")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe007.mp3", 439964706, 2468326434)
+ Dialog.AddOption("I might be persuaded. But I'm not gonna do this out of the goodness of my heart.", "Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wouldn't expect you to. Lucan rewards his allies well. I'd imagine though that you might want to please him. You know. Just this once... seeing as how the frog's only alive because you didn't finish the job.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe008.mp3", 3922312219, 4101212124)
+ Dialog.AddOption("I told you, it was dead when I left.", "AFesteringProblemQuest")
+ Dialog.Start()
+end
+
+function AFesteringProblemQuest (NPC, Spawn)
FaceTarget(NPC, Spawn)
- if HasQuest(Spawn, QUEST) and GetQuestStep(Spawn, QUEST) == 1 then
- conversation = CreateConversation()
- PlayFlavor(NPC, "intelligence_officer_gezlowe/fprt_west/io_gezlowe001.mp3", "", "", 4100697640, 2084488414, Spawn)
- AddConversationOption(conversation, "Enemies of the state?", "option1")
- AddConversationOption(conversation, "I was just getting more information so I could find the rest of them.", "option2")
- StartConversation(conversation, NPC, Spawn, "Good, good. I'm glad you made the right choice. I understand you've agreed to do a bit of work for a prisoner. Lucan doesn't take kindly to those who would aid enemies of the state.")
- else
- PlayFlavor(NPC, "", "Move along, move along.", "", 1689589577, 4560189, Spawn)
-end
- end
-
-
-function option1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "intelligence_officer_gezlowe/fprt_west/io_gezlowe002.mp3", "", "", 2574431215, 475612057, Spawn)
- AddConversationOption(conversation, "Yeah, I understand.", "option2_1")
- StartConversation(conversation, NPC, Spawn, "Frogloks. If the legends are to be believed, they've got some sort of religious relation to Lucan's old enemies. Can't have them wandering around, understand?")
- end
-
-function option2(NPC, Spawn)
-FaceTarget(NPC, Spawn)
-conversation = CreateConversation()
-PlayFlavor(NPC, "intelligence_officer_gezlowe/fprt_west/io_gezlowe003.mp3", "", "", 1225667417, 2186564758, Spawn)
-AddConversationOption(conversation, "No, sir.", "option2_1")
-StartConversation(conversation, NPC, Spawn, "Good, right along our line of thinking. We can't just have these multi-colored dissidents wandering around, can we?")
+ OfferQuest(NPC, Spawn, AFesteringProblem)
end
-function option2_1(NPC, Spawn)
-FaceTarget(NPC, Spawn)
-conversation = CreateConversation()
-SetStepComplete(Spawn, QUEST, 1)
-PlayFlavor(NPC, "intelligence_officer_gezlowe/fprt_west/io_gezlowe004.mp3", "", "", 2945684159, 2849117183, Spawn)
-AddConversationOption(conversation, "No, sir.")
-StartConversation(conversation, NPC, Spawn, "So what we're going to do is take care of this little incident before we find more of these things on our doorstep. Go find the one you're looking for. Kill it. Then tell the frog that it died of sunstroke or something.")
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Frogloks. If the legends are to be believed, they've got some sort of religious relation to Lucan's old enemies. Can't have them wandering around, understand?")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe002.mp3", 2574431215, 475612057)
+ Dialog.AddOption("Yeah, I understand.", "Dialog4")
+ Dialog.Start()
end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How in Lucan's name am I supposed to know? One of Siegemaker's informants in the Commons found a camp of them. Apparently it's not well enough to travel, so they've set up a camp to protect it while it heals.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe006.mp3", 440769352, 3623662014)
+ Dialog.AddOption("I'm guessing from your tone that it needs to die.", "Dialog5")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did you lose that scroll? It's a good thing that we keep good records...")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe014.mp3", 1549689638, 2411406729)
+ Dialog.AddOption("Yes, I need another.", "SummonAnother")
+ Dialog.AddOption("No, I still have mine.")
+ Dialog.Start()
+end
+
+function SummonAnother(NPC, Spawn)
+ SummonItem(Spawn, 2611, 1)
+end
+
+function Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It seems that a band of those filthy Qeynosians managed to save that frog you killed earlier.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe005.mp3", 1053087635, 2286317524)
+ Dialog.AddOption("How? I made sure it was dead.", "Dialog9")
+ Dialog.AddOption("Look, I'm not interested.")
+ Dialog.Start()
+end
+
+function Dialog12(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're back. I take it that means you've taken care of the little pest.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe010.mp3", 2403328736, 294239661)
+ Dialog.AddOption("It's six feet under.", "Dialog1")
+ Dialog.Start()
+end
+
+function Dialog13(NPC, Spawn)
+ SetStepComplete(Spawn, AFesteringProblem, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good. You can handle it from here.")
+ Dialog.AddVoiceover("intelligence_officer_gezlowe/fprt_west/io_gezlowe013.mp3", 1704086596, 3560389288)
+ Dialog.AddOption("Indeed I can.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Freeport/JeththeSpy.lua b/server/SpawnScripts/Freeport/JeththeSpy.lua
new file mode 100755
index 000000000..9a2ce575a
--- /dev/null
+++ b/server/SpawnScripts/Freeport/JeththeSpy.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/TheCityofFreeport/JeththeSpy.lua
+ Script Purpose : Jeth the Spy
+ Script Author : cynnar
+ Script Date : 2023.04.29
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+local QuellingTheRebellion = 5807
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if HasQuest(Spawn, QuellingTheRebellion) and GetQuestStep(Spawn, QuellingTheRebellion) == 1 then
+ PlayFlavor(NPC, "", "Drat! Found out! Well, this won't be the end - there are others!", "", 0, 0, Spawn, 0)
+ end
+end
+
+function LeaveRange(NPC, Spawn)
+
+end
diff --git a/server/SpawnScripts/Freeport/LieutenantDarrius.lua b/server/SpawnScripts/Freeport/LieutenantDarrius.lua
index 2a1ff7923..a7bfdade0 100755
--- a/server/SpawnScripts/Freeport/LieutenantDarrius.lua
+++ b/server/SpawnScripts/Freeport/LieutenantDarrius.lua
@@ -17,7 +17,10 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5865) and not QuestStepIsComplete(Spawn,5865,7)then --FREEPORT OPPORTUNITY
+ SetStepComplete(Spawn,5865,7)
+end
+ FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("The militia has a task for you, citizen. Will you accept the call to duty?")
Dialog.AddVoiceover("voiceover/english/lieutenant_darrius/fprt_west/lieutenant_darrius.mp3", 913608800, 3646524676)
diff --git a/server/SpawnScripts/Freeport/MissionaryGZule.lua b/server/SpawnScripts/Freeport/MissionaryGZule.lua
index 25785bac5..b48424f26 100755
--- a/server/SpawnScripts/Freeport/MissionaryGZule.lua
+++ b/server/SpawnScripts/Freeport/MissionaryGZule.lua
@@ -5,62 +5,87 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local RustySymbolOfMarr = 584
+local DeathCert = 5872
function spawn(NPC)
-
+ProvidesQuest(NPC,DeathCert)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/missionary_g_zule/fprt_north/qst_gzule.mp3", "", "", 1791825577, 3485372568, Spawn)
- AddConversationOption(conversation, "Is that why you are afraid to go in yourself, hmm?", "dlg01")
- if HasQuest(Spawn, RustySymbolOfMarr) then
- AddConversationOption(conversation, "I found something that may be of interest to you.", "quest")
- end
- AddConversationOption(conversation, "I think I can handle myself just fine, thanks.")
- StartConversation(conversation, NPC, Spawn, "You better watch your step if you choose to enter the Temple of War. I would suspect the greeting for a person like yourself would be a dagger in the back rather than a handshake.")
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","cutthroat",0,0,Spawn)
+ else
+ Dialog1(NPC,Spawn)
+end
end
-function dlg01(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/missionary_g_zule/fprt_north/qst_gzule001.mp3", "", "", 1035950997, 818649186, Spawn)
- AddConversationOption(conversation, "What's the problem? You haven't done enough sacrificing to sit with the big boys yet?", "dlg02")
- StartConversation(conversation, NPC, Spawn, "It is my station to be here, you worm. Soon enough I'll take my place inside the temple.")
-end
-
-
-
-function dlg02(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/missionary_g_zule/fprt_north/qst_gzule002.mp3", "", "", 2865163916, 2862700718, Spawn)
- AddConversationOption(conversation, "For some reason I see you standing here for a while.")
- StartConversation(conversation, NPC, Spawn, "I'll have you know that I have done all the sacrificing I need to do, lucky for your worthless carcass. I only have to find a symbol of the old paladins to desecrate to fulfill my advancement.")
-end
-
-function quest(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/missionary_g_zule/fprt_north/qst_gzule003.mp3", "", "", 212622032, 1987675547, Spawn)
- AddConversationOption(conversation, "You won't charge me? How about you pay me for it. I know you need this.", "complete")
- StartConversation(conversation, NPC, Spawn, "I could take the symbol of Marr off your hands. You certainly don't want to carry that thing openly around here. I won't even charge the usual fee to dispose of it.")
-end
-
-function complete(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- SetStepComplete(Spawn, RustySymbolOfMarr, 1)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/missionary_g_zule/fprt_north/qst_gzule004.mp3", "", "", 2506235491, 1587607096, Spawn)
- AddConversationOption(conversation, "A pleasure doing business with you.")
- StartConversation(conversation, NPC, Spawn, "Fine, here is a small pouch of coins for the symbol. You know it's worthless to you anyway.")
-end
-
function respawn(NPC)
end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You better watch your step if you choose to enter the Temple of War. I would suspect the greeting for a person like yourself would be a dagger in the back rather than a handshake.")
+ Dialog.AddVoiceover("voiceover/english/missionary_g_zule/fprt_north/qst_gzule.mp3", 1791825577, 3485372568)
+ Dialog.AddOption("Is that why you are afraid to go in yourself, hmm? ", "Dialog2")
+ if HasQuest(Spawn, RustySymbolOfMarr) then
+ Dialog.AddOption("I found something that may be of interest to you.", "quest")
+ end
+ if CanReceiveQuest(Spawn,DeathCert) then
+ Dialog.AddOption("Give me a task worthy of proving myself then!","Offer")
+ end
+ Dialog.AddOption("I think I can handle myself just fine, thanks.")
+ Dialog.Start()
+end
+
+function Offer(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,DeathCert)
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It is my station to be here, you worm. Soon enough I'll take my place inside the temple.")
+ Dialog.AddVoiceover("voiceover/english/missionary_g_zule/fprt_north/qst_gzule001.mp3", 1035950997, 818649186)
+ Dialog.AddOption("What's the problem? You haven't done enough sacrificing to sit with the big boys yet?", "Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'll have you know that I have done all the sacrificing I need to do, lucky for your worthless carcass. I only have to find a symbol of the old paladins to desecrate to fulfill my advancement.")
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/missionary_g_zule/fprt_north/qst_gzule002.mp3", 2865163916, 2862700718)
+ Dialog.AddOption("For some reason I see you standing here for a while.")
+ Dialog.Start()
+end
+
+
+
+function quest(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog( "I could take the symbol of Marr off your hands. You certainly don't want to carry that thing openly around here. I won't even charge the usual fee to dispose of it.")
+ Dialog.AddVoiceover("voiceover/english/missionary_g_zule/fprt_north/qst_gzule003.mp3", 212622032, 1987675547)
+ Dialog.AddOption("You won't charge me? How about you pay me for it. I know you need this.", "complete")
+ Dialog.Start()
+end
+
+function complete(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ Dialog.AddDialog( "Fine, here is a small pouch of coins for the symbol. You know it's worthless to you anyway.")
+ Dialog.AddVoiceover("voiceover/english/missionary_g_zule/fprt_north/qst_gzule004.mp3", 2506235491, 1587607096)
+ Dialog.AddOption("A pleasure doing business with you.")
+ Dialog.Start()
+ SetStepComplete(Spawn, RustySymbolOfMarr, 1)
+end
diff --git a/server/SpawnScripts/Freeport/spawnInfiltratorKath.lua b/server/SpawnScripts/Freeport/spawnInfiltratorKath.lua
new file mode 100755
index 000000000..91719df34
--- /dev/null
+++ b/server/SpawnScripts/Freeport/spawnInfiltratorKath.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Freeport/spawnInfiltratorKath.lua
+ Script Author : cynnar
+ Script Date : 2023.04.30 01:04:37
+ Script Purpose :
+ :
+--]]
+
+local QuellingTheRebellion = 5807
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+
+ AddTimer(NPC, 3000, "SpawnKath", 1, Spawn)
+
+end
+
+function LeaveRange(NPC, Spawn)
+
+end
+
+function SpawnKath(NPC, Spawn)
+ local zone = GetZone(Spawn)
+
+ if HasQuest(Spawn, QuellingTheRebellion) then
+ if GetQuestStep(Spawn, QuellingTheRebellion) == 3 then
+ if GetSpawnByLocationID(zone, 133784675) == nil then
+ Say(NPC, "You are currently on step " .. GetQuestStep(Spawn, QuellingTheRebellion))
+ local InfiltratorKath = SpawnMob(zone, 5590963, false, -99.12, -11.00, -76.83, 362.84)
+ end
+ end
+ end
+end
diff --git a/server/SpawnScripts/Freeport/spawnJeththeSpy.lua b/server/SpawnScripts/Freeport/spawnJeththeSpy.lua
new file mode 100755
index 000000000..fcd42d9d9
--- /dev/null
+++ b/server/SpawnScripts/Freeport/spawnJeththeSpy.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/Freeport/spawnJeththeSpy.lua
+ Script Author : cynnar
+ Script Date : 2023.04.29 09:04:51
+ Script Purpose :
+ :
+--]]
+
+local QuellingTheRebellion = 5807
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange", Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ local zone = GetZone(Spawn)
+
+ if HasQuest(Spawn, QuellingTheRebellion) then
+ if GetQuestStep(Spawn, QuellingTheRebellion) == 1 then
+ if GetSpawnByLocationID(zone, 133784673) ==nil then
+ local JethTheSpy = SpawnMob(zone, 5590962, false, -124.97, -37.62, -19.76, 312.75)
+ Attack(JethTheSpy, Spawn)
+ end
+ end
+ end
+end
+
+function LeaveRange(NPC, Spawn)
+
+end
diff --git a/server/SpawnScripts/Freeport2Room1/SlumlordValthun.lua b/server/SpawnScripts/Freeport2Room1/SlumlordValthun.lua
new file mode 100755
index 000000000..e70c3549d
--- /dev/null
+++ b/server/SpawnScripts/Freeport2Room1/SlumlordValthun.lua
@@ -0,0 +1,416 @@
+--[[
+ Script Name : SpawnScripts/Freeport2Room1/SlumlordValthun.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.21 08:06:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ if GetSpawnLocationID(NPC)==133785258 then
+ SetRequiredQuest(NPC, 5859, 1, 1) --STONESTAIR
+ SetRequiredQuest(NPC, 5859, 2, 1)
+ SetRequiredQuest(NPC, 5859, 3, 1)
+ SetRequiredQuest(NPC, 5859, 4, 1)
+ SetRequiredQuest(NPC, 5859, 5, 1)
+ SetRequiredQuest(NPC, 5859, 6, 1)
+ SetRequiredQuest(NPC, 5859, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133785259 then
+ SetRequiredQuest(NPC, 5859, 11, 1)
+ SetRequiredQuest(NPC, 5859, 12, 1)
+ SetRequiredQuest(NPC, 5859, 13, 1)
+ end
+
+ if GetSpawnLocationID(NPC)==133785258 then
+ SetRequiredQuest(NPC, 5860, 1, 1) --BIG BEND
+ SetRequiredQuest(NPC, 5860, 2, 1)
+ SetRequiredQuest(NPC, 5860, 3, 1)
+ SetRequiredQuest(NPC, 5860, 4, 1)
+ SetRequiredQuest(NPC, 5860, 5, 1)
+ SetRequiredQuest(NPC, 5860, 6, 1)
+ SetRequiredQuest(NPC, 5860, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133785259 then
+ SetRequiredQuest(NPC, 5860, 11, 1)
+ SetRequiredQuest(NPC, 5860, 12, 1)
+ SetRequiredQuest(NPC, 5860, 13, 1)
+ end
+
+ if GetSpawnLocationID(NPC)==133785258 then
+ SetRequiredQuest(NPC, 5861, 1, 1) --BEGGAR'S COURT
+ SetRequiredQuest(NPC, 5861, 2, 1)
+ SetRequiredQuest(NPC, 5861, 3, 1)
+ SetRequiredQuest(NPC, 5861, 4, 1)
+ SetRequiredQuest(NPC, 5861, 5, 1)
+ SetRequiredQuest(NPC, 5861, 6, 1)
+ SetRequiredQuest(NPC, 5861, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133785259 then
+ SetRequiredQuest(NPC, 5861, 11, 1)
+ SetRequiredQuest(NPC, 5861, 12, 1)
+ SetRequiredQuest(NPC, 5861, 13, 1)
+ end
+
+ if GetSpawnLocationID(NPC)==133785258 then
+ SetRequiredQuest(NPC, 5862, 1, 1) --LONGSHADOW
+ SetRequiredQuest(NPC, 5862, 2, 1)
+ SetRequiredQuest(NPC, 5862, 3, 1)
+ SetRequiredQuest(NPC, 5862, 4, 1)
+ SetRequiredQuest(NPC, 5862, 5, 1)
+ SetRequiredQuest(NPC, 5862, 6, 1)
+ SetRequiredQuest(NPC, 5862, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133785259 then
+ SetRequiredQuest(NPC, 5862, 11, 1)
+ SetRequiredQuest(NPC, 5862, 12, 1)
+ SetRequiredQuest(NPC, 5862, 13, 1)
+ end
+
+ if GetSpawnLocationID(NPC)==133785258 then
+ SetRequiredQuest(NPC, 5863, 1, 1) --SCALE YARD
+ SetRequiredQuest(NPC, 5863, 2, 1)
+ SetRequiredQuest(NPC, 5863, 3, 1)
+ SetRequiredQuest(NPC, 5863, 4, 1)
+ SetRequiredQuest(NPC, 5863, 5, 1)
+ SetRequiredQuest(NPC, 5863, 6, 1)
+ SetRequiredQuest(NPC, 5863, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133785259 then
+ SetRequiredQuest(NPC, 5863, 11, 1)
+ SetRequiredQuest(NPC, 5863, 12, 1)
+ SetRequiredQuest(NPC, 5863, 13, 1)
+ end
+
+ if GetSpawnLocationID(NPC)==133785258 then
+ SetRequiredQuest(NPC, 5864, 1, 1) --TEMPLE STREET
+ SetRequiredQuest(NPC, 5864, 2, 1)
+ SetRequiredQuest(NPC, 5864, 3, 1)
+ SetRequiredQuest(NPC, 5864, 4, 1)
+ SetRequiredQuest(NPC, 5864, 5, 1)
+ SetRequiredQuest(NPC, 5864, 6, 1)
+ SetRequiredQuest(NPC, 5864, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133785259 then
+ SetRequiredQuest(NPC, 5864, 11, 1)
+ SetRequiredQuest(NPC, 5864, 12, 1)
+ SetRequiredQuest(NPC, 5864, 13, 1)
+ end
+end
+
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==2 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==2 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==2 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==2 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==2 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==2 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/slumlord_valthun/fprt_ph_1r01/100_city_slumlord_valthun_housing_callout1_b64ee15.mp3", "It's about time you arrived. Let's get this over with.", "sniff", 3512384459, 1802814631, Spawn)
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==5 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==5 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==5 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==5 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==5 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==5 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/slumlord_valthun/fprt_ph_1r01/100_city_slumlord_valthun_housing_callout2_f99d8b9b.mp3", "Ah, you're back. I'd like to...err... apologize for my earlier behavior.", "nod", 3212324263, 527488253, Spawn)
+ elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==11 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==11 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==11 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==11 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==11 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==11 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/slumlord_valthun/fprt_ph_1r01/100_city_slumlord_valthun_housing_callout3_b7ae1d4c.mp3", "Why are you back already?!", "doubletake", 1913759677, 811352449, Spawn)
+ end
+end
+
+
+function hailed(NPC, Spawn)
+if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==2 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==2 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==2 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==2 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==2 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==2 then
+Dialog1 (NPC,Spawn) --GET FURNITURE 1
+
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==3 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==3 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==3 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==3 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==3 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==3 then
+ if HasItem(Spawn,61915,1) then --CHECK IF HAS TABLE (FURNITURE1)
+ continue1(NPC, Spawn) --STILL NEED TO PLACE FURNITURE 1
+ else
+ Dialog2(NPC,Spawn) --SPEAK WITH BANKER
+ end
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==4 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==4 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==4 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==4 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==4 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==4 then
+ Dialog2(NPC, Spawn) --SPEAK WITH BANKER
+
+
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==5 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==5 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==5 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==5 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==5 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==5 then
+ Dialog3(NPC,Spawn) --GET FURNITURE 2
+
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==6 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==6 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==6 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==6 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==6 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==6 then
+ if HasItem(Spawn,61913,1) then --CHECK IF HAS MIRROR (FURNITURE2)
+ Dialog3(NPC,Spawn) --STILL NEED TO PLACE FURNITURE 2
+ else
+ Dialog4(NPC,Spawn) --FIND LOCATIONS
+ end
+
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==7 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==7 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==6 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==7 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==7 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==7 then
+ Dialog4b(NPC, Spawn) --IF ALREADY ON THE TASK TO FIND LOCATIONS. CARETAKER DISAPPEARS UNTIL ON THE FINAL STEPS.
+
+ elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==11 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==11 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==11 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==11 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==11 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==11 then
+ Dialog5(NPC,Spawn) -- GET FURNITURE 3
+
+ elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==12 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==12 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==12 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==12 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==12 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==12 then
+ if HasItem(Spawn,61909,1) then --CHECK IF HAS CHANDELIER (FURNITURE3)
+ Dialog5a(NPC,Spawn) --STILL NEED TO PLACE FURNITURE 3
+ else
+ Dialog6(NPC,Spawn) --START CITIZENSHIP TRIAL
+ end
+elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==13 or HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==13 or HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==13 or HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==13 or HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==13 or HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==13 then
+ Dialog6b(NPC, Spawn)
+end
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddDialog("You wasted enough of my precious time. I've more important duties than talking to you. So listen closely: This is your new home. Get used to it. Consider yourself lucky to receive such a fine house from the Overlord. If I had it my way, you'd freeze in the alleys. ")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun001.mp3", 2753005301, 1802095357)
+ Dialog.AddOption("Do you have a problem with me?", "AllWeCanDo")
+ Dialog.Start()
+end
+
+function AllWeCanDo(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ SpawnSet(NPC,"mood_state","11852")
+ Dialog.AddDialog("Do I have a problem with you? Let's see, you're a filthy refugee who doesn't have coin worth counting. I'm not making a copper off you, but the Overlord forces me to let you live here for free. So, do I have a problem with you? Yes. I do. Now, let's get on with this, shall we?")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun002.mp3", 2611962175, 2812157786)
+ Dialog.AddOption("[continue]", "continue1")
+ Dialog.Start()
+end
+
+function continue1(NPC, Spawn)
+
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==2 then
+ SetStepComplete(Spawn,5859,2)
+ Quest = GetQuest(Spawn,5859)
+ GiveQuestItem(Quest, Spawn, "A welcome gift from The Coalition of Tradesfolke. Decorate your inn room with it.", 61915)
+ elseif HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==2 then
+ SetStepComplete(Spawn,5860,2)
+ Quest = GetQuest(Spawn,5860)
+ GiveQuestItem(Quest, Spawn, "A welcome gift from The Coalition of Tradesfolke. Decorate your inn room with it.", 61915)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==2 then
+ SetStepComplete(Spawn,5861,2)
+ Quest = GetQuest(Spawn,5861)
+ GiveQuestItem(Quest, Spawn, "A welcome gift from The Coalition of Tradesfolke. Decorate your inn room with it.", 61915)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==2 then
+ SetStepComplete(Spawn,5862,2)
+ Quest = GetQuest(Spawn,5862)
+ GiveQuestItem(Quest, Spawn, "A welcome gift from The Coalition of Tradesfolke. Decorate your inn room with it.", 61915)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==2 then
+ SetStepComplete(Spawn,5863,2)
+ Quest = GetQuest(Spawn,5863)
+ GiveQuestItem(Quest, Spawn, "A welcome gift from The Coalition of Tradesfolke. Decorate your inn room with it.", 61915)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==2 then
+ SetStepComplete(Spawn,5864,2)
+ Quest = GetQuest(Spawn,5864)
+ GiveQuestItem(Quest, Spawn, "A welcome gift from The Coalition of Tradesfolke. Decorate your inn room with it.", 61915)
+ end
+
+
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ Dialog.AddDialog("The Coalition of Tradesfolke gave you a piece of furniture. The first time it's free. Now, take this and put it in the room. Let's get on with it.")
+ SpawnSet(NPC,"mood_state","0")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun003.mp3", 3293605893, 2029752984)
+ Dialog.AddOption("Give me a moment while I put this down.")
+ Dialog.Start()
+end
+
+
+-------DIALOG 2
+
+function Dialog2(NPC, Spawn)
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==3 then
+ SetStepComplete(Spawn,5859,3)
+ elseif HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==3 then
+ SetStepComplete(Spawn,5860,3)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==3 then
+ SetStepComplete(Spawn,5861,3)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==3 then
+ SetStepComplete(Spawn,5862,3)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==3 then
+ SetStepComplete(Spawn,5863,3)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==3 then
+ SetStepComplete(Spawn,5864,3)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "lookaway", 0, 0, Spawn)
+ Dialog.AddDialog("Ugh ... you're putting that there? Even your decorating taste is pathetic, but do as you wish. The last thing I need to tell you about is your bank account. The Freeport Reserve is waiting for you to register. Now we're finished, and I can leave.")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun004.mp3", 1742619924, 1180312438)
+ Dialog.AddOption("Thank you for your time, caretaker.")
+ Dialog.Start()
+end
+
+-------DIALOG 3
+function Dialog3(NPC, Spawn)
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==5 then
+ SetStepComplete(Spawn,5859,5)
+ Quest = GetQuest(Spawn,5859)
+ GiveQuestItem(Quest, Spawn, "A 'gift' from Valthun as a token of 'friendship'?", 61913)
+ elseif HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==5 then
+ SetStepComplete(Spawn,5860,5)
+ Quest = GetQuest(Spawn,5860)
+ GiveQuestItem(Quest, Spawn, "A 'gift' from Valthun as a token of 'friendship'?", 61913)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==5 then
+ SetStepComplete(Spawn,5861,5)
+ Quest = GetQuest(Spawn,5861)
+ GiveQuestItem(Quest, Spawn, "A 'gift' from Valthun as a token of 'friendship'?", 61913)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==5 then
+ SetStepComplete(Spawn,5862,5)
+ Quest = GetQuest(Spawn,5862)
+ GiveQuestItem(Quest, Spawn, "A 'gift' from Valthun as a token of 'friendship'?", 61913)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==5 then
+ SetStepComplete(Spawn,5863,5)
+ Quest = GetQuest(Spawn,5863)
+ GiveQuestItem(Quest, Spawn, "A 'gift' from Valthun as a token of 'friendship'?", 61913)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==5 then
+ SetStepComplete(Spawn,5864,5)
+ Quest = GetQuest(Spawn,5864)
+ GiveQuestItem(Quest, Spawn, "A 'gift' from Valthun as a token of 'friendship'?", 61913)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddDialog("I am sorry if I was a bit ... rude. You must understand. I've had a very long day. As a token of my friendship, please take this mirror. Place it anywhere you like as long as you can see yourself in it. What use is a mirror if you can't see it, right?")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun005.mp3", 1179966071, 3385583561)
+ Dialog.AddOption("Hmmm... very well. I'll accept your apology.")
+ Dialog.Start()
+end
+
+-------DIALOG 4
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddDialog("That's a perfect spot, friend ... perfect. Have you thought about how to make some coin now that you have a new, loving home?")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun006.mp3", 2411252077, 4223491068)
+ Dialog.AddOption("No, I haven't thought of that yet.","Dialog4a")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, if I may be so bold, let me offer a suggestion: Many people make a bounty of coin ridding our fine city of unwanted vermin. Some people venture down below into the sewers beneath our feet, but others seek their fortunes within the older, ruined parts of the city. You would do well exterminating these creatures, adventurer.")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun007.mp3", 2795247576, 826391005)
+ Dialog.AddOption("Where will I find these places?", "Dialog4b")
+ Dialog.Start()
+end
+
+function Dialog4b(NPC, Spawn)
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==6 then
+ SetStepComplete(Spawn,5859,6)
+ elseif HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==6 then
+ SetStepComplete(Spawn,5860,6)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==6 then
+ SetStepComplete(Spawn,5861,6)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==6 then
+ SetStepComplete(Spawn,5862,6)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==6 then
+ SetStepComplete(Spawn,5863,6)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==6 then
+ SetStepComplete(Spawn,5864,6)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I just told you, fool! Errr ... I meant to say, quite a number of places, actually. Search the city to find the vermin. Let me jot down a list for you. And don't worry about me. I'll wait here while you're gone.")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun008.mp3", 1471261046, 2380441133)
+ Dialog.AddOption("If you touch any of my things while I'm gone, I'll be sure to return the favor.")
+ Dialog.Start()
+end
+
+-------DIALOG 5
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddDialog("Err... I mean, did you find your way around alright?")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun009.mp3", 216673398, 1959125107)
+ Dialog.AddOption("Yeah. What were you just doing?","Dialog5a")
+ Dialog.Start()
+end
+
+function Dialog5a(NPC, Spawn)
+
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==11 then
+ SetStepComplete(Spawn,5859,11)
+ Quest = GetQuest(Spawn,5859)
+ GiveQuestItem(Quest, Spawn, "Valthun has given you an old chandelier. At least it will brighten up the place.", 61909)
+ elseif HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==11 then
+ SetStepComplete(Spawn,5860,11)
+ Quest = GetQuest(Spawn,5860)
+ GiveQuestItem(Quest, Spawn, "Valthun has given you an old chandelier. At least it will brighten up the place.", 61909)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==11 then
+ SetStepComplete(Spawn,5861,11)
+ Quest = GetQuest(Spawn,5861)
+ GiveQuestItem(Quest, Spawn, "Valthun has given you an old chandelier. At least it will brighten up the place.", 61909)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==11 then
+ SetStepComplete(Spawn,5862,11)
+ Quest = GetQuest(Spawn,5862)
+ GiveQuestItem(Quest, Spawn, "Valthun has given you an old chandelier. At least it will brighten up the place.", 61909)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==11 then
+ SetStepComplete(Spawn,5863,11)
+ Quest = GetQuest(Spawn,5863)
+ GiveQuestItem(Quest, Spawn, "Valthun has given you an old chandelier. At least it will brighten up the place.", 61909)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==11 then
+ SetStepComplete(Spawn,5864,11)
+ Quest = GetQuest(Spawn,5864)
+ GiveQuestItem(Quest, Spawn, "Valthun has given you an old chandelier. At least it will brighten up the place.", 61909)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
+ Dialog.AddDialog("Oh ... uh, nothing special. I was ... uh ... putting up this chandelier for you. I bought a new one, and I thought this old one would brighten up your home. Perhaps you can hang it somewhere special.")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun010.mp3", 3386970796, 557685294)
+ Dialog.AddOption("Hmmm... I guess so. I also have a question for you when I'm done.")
+ Dialog.Start()
+end
+
+-------DIALOG 6
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ SpawnSet(NPC,"mood_state","0")
+ Dialog.AddDialog("Well, I'm done here. Now, before I leave, you had a question ...")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun011.mp3", 138919413, 3715601776)
+ Dialog.AddOption("Why can't I go into the city gates?","Dialog6a")
+ Dialog.Start()
+end
+
+function Dialog6a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
+ SpawnSet(NPC,"mood_state","11852")
+ Dialog.AddDialog("Why can't you go into the city gates?! I'll tell you why! Because you're a refugee, idiot! By our Lord's decree, only citizens may enter the city gates. Others who enter shall face the consequence of breaking the Overlord's laws. Friends or family may care about your well being, but in our city, you live and die by the laws of Freeport. Get used to it.")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun012.mp3", 787996548, 2478588401)
+ Dialog.AddOption("How do I become a citizen? Answer my question or suffer the consequences.","Dialog6b")
+ Dialog.Start()
+end
+
+function Dialog6b(NPC, Spawn)
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==12 then
+ SetStepComplete(Spawn,5859,12)
+ elseif HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==12 then
+ SetStepComplete(Spawn,5860,12)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==12 then
+ SetStepComplete(Spawn,5861,12)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==12 then
+ SetStepComplete(Spawn,5862,12)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==12 then
+ SetStepComplete(Spawn,5863,12)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==12 then
+ SetStepComplete(Spawn,5864,12)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ SpawnSet(NPC,"mood_state","0")
+ Dialog.AddDialog("Fine, fine! It's your funeral, fool. Now, give me your stupid journal. I'll write down the name of the person who can tell you how to become a citizen. Now, I've answered your questions, so I'll take my leave of you. We shall not see each other again.")
+ Dialog.AddVoiceover("voiceover/english/slumlord_valthun/tutorial_island02/slumlord_valthun013.mp3", 2573415341, 2897801437)
+ Dialog.AddOption("I'd like to keep it that way.")
+ Dialog.Start()
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportBetrayal/Chains.lua b/server/SpawnScripts/FreeportBetrayal/Chains.lua
new file mode 100755
index 000000000..99e72bd0f
--- /dev/null
+++ b/server/SpawnScripts/FreeportBetrayal/Chains.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/FreeportBetrayal/Chains.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 05:09:35
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 1, "InRange", "LeaveRange")
+end
+
+
+function LeaveRange(NPC,Spawn)
+ SetPosition(Spawn,-1.05, -1.21, -30.84,355)
+ CastSpell(Spawn,2550422,1,1,Tayil)
+end
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportBetrayal/ExecutionerSelindi.lua b/server/SpawnScripts/FreeportBetrayal/ExecutionerSelindi.lua
new file mode 100755
index 000000000..8f11748df
--- /dev/null
+++ b/server/SpawnScripts/FreeportBetrayal/ExecutionerSelindi.lua
@@ -0,0 +1,86 @@
+--[[
+ Script Name : SpawnScripts/FreeportBetrayal/ExecutionerSelindi.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 11:09:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+function Attention(NPC,Spawn)
+local Lucan = GetSpawn(NPC,8450000)
+ PlayFlavor(NPC,"","","salute_freeport",0,0)
+ FaceTarget(NPC, Lucan)
+ AddTimer(NPC,2500,"Moving",1,Spawn)
+ AddTimer(NPC,7000,"Face",1,Spawn)
+ AddTimer(NPC,10000,"Attacking",1,Spawn)
+ AddTimer(NPC,12500,"Attacking2",1,Spawn)
+ AddTimer(NPC,16500,"Salute2",1,Spawn)
+ AddTimer(NPC,20000,"Face2",1,Spawn)
+end
+
+function Moving(NPC,Spawn)
+ MovementLoopAddLocation(NPC,1.45, -1.21, -32.58,2,1)
+ MovementLoopAddLocation(NPC,1.45, -1.21, -32.58,2,12,"Attacking")
+ MovementLoopAddLocation(NPC,1.45, -1.21, -32.58,2,1)
+ MovementLoopAddLocation(NPC,3.67, -1.21, -37.71,2,1)
+ MovementLoopAddLocation(NPC,3.67, -1.21, -37.71,2,99999,"Face2")
+ SetTarget(NPC, Spawn)
+end
+
+function Face(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function Attacking(NPC,Spawn)
+if IsAlive(Spawn)== true then
+CastSpell(Spawn,2550426,1,NPC)
+Attack(NPC,Spawn)
+SetStepComplete(Spawn,5890,2)
+AddTimer(NPC,2700,"Attacking2",1,Spawn)
+else
+local Lucan = GetSpawn(NPC,8450000)
+ SetTarget(NPC, Lucan)
+ FaceTarget(NPC, Lucan)
+end
+end
+
+function Attacking2(NPC,Spawn)
+local Lucan = GetSpawn(NPC,8450000)
+ SetTarget(NPC, Lucan)
+ FaceTarget(NPC, Lucan)
+local zone = GetZone(NPC)
+local Tayil = GetSpawnByLocationID(zone,133786877)
+ ApplySpellVisual(Spawn,174)
+ SetInfoStructString(Tayil, "action_state", "0")
+end
+
+
+function Salute2(NPC,Spawn)
+ PlayFlavor(NPC,"","","salute_freeport",0,0)
+end
+
+function Moving2(NPC,Spawn)
+ MoveToLocation(NPC,3.67, -1.21, -37.71,2,false)
+end
+
+function victory(NPC,Spawn)
+local Lucan = GetSpawn(NPC,8450000)
+ SetTarget(NPC, Lucan)
+ FaceTarget(NPC, Lucan)
+end
+
+function Face2(NPC,Spawn)
+ SetHeading(NPC,88)
+ SetTarget(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportBetrayal/LucanDLere.lua b/server/SpawnScripts/FreeportBetrayal/LucanDLere.lua
new file mode 100755
index 000000000..8132692b1
--- /dev/null
+++ b/server/SpawnScripts/FreeportBetrayal/LucanDLere.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : SpawnScripts/FreeportBetrayal/LucanDLere.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 08:09:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetTempVariable(NPC,"Step1",nil)
+SetTempVariable(NPC,"Step2",nil)
+end
+
+function hailed(NPC, Spawn)
+if GetTempVariable(NPC,"Step1")~= "nil" and GetTempVariable(NPC,"Step2")== "nil" then
+Speech1(NPC,Spawn)
+elseif GetTempVariable(NPC,"Step2")== "nil" then
+Speech2(NPC,Spawn)
+else
+end
+end
+
+function SpeechCheck(NPC,Spawn)
+SetTempVariable(NPC,"Step1",1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Speech1(NPC,Spawn)
+local Ken = GetSpawn(NPC,8450028)
+local Stilus = GetSpawn(NPC,8450027)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Enough, you worms! I did not permit you to speak. As for you, cur... I commend you for putting on a great show. Now it's time for you to pay the price for breaking my laws. You're so quiet... Don't you want to beg for your life, traitor?")
+ Dialog.AddVoiceover("voiceover/english/overlord_lucan_d_lere/fprt_ph_3r03/lucan_betrayal001.mp3", 2112584825, 2632081703)
+ PlayFlavor(NPC,"","","converse_male12",0,0)
+ SetTarget(Spawn,NPC)
+ SetTarget(Ken,NPC)
+ SetTarget(Stilus,NPC)
+ SetTarget(NPC,Spawn)
+ Dialog.AddOption("I meant what I said. I will die knowing there was good in my heart.","Speech2")
+ Dialog.Start()
+end
+
+function Speech2(NPC,Spawn)
+local Ken = GetSpawn(NPC,8450028)
+local Stilus = GetSpawn(NPC,8450027)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How honorable of you to die for what you believe in. A long time ago, I would have respected that in my enemies. Now I view it as a pointless effort. Executioner, this traitor bores me. End the drama now.")
+ Dialog.AddVoiceover("voiceover/english/overlord_lucan_d_lere/fprt_ph_3r03/lucan_betrayal003.mp3", 3312526214, 3456178374)
+ PlayFlavor(NPC,"","","converse_male10",0,0)
+ Dialog.AddOption("For Qeynos!!","Continue")
+ Dialog.Start()
+ local Sel = GetSpawn(NPC,8450021)
+ AddTimer(Sel,18000,"Attention",1,Spawn)
+ SetTempVariable(NPC,"Step2",1)
+end
+
+function Continue(NPC,Spawn) -- ALLOWS FOR CONTINUED VO
+end
+
diff --git a/server/SpawnScripts/FreeportBetrayal/StilusGraphium.lua b/server/SpawnScripts/FreeportBetrayal/StilusGraphium.lua
new file mode 100755
index 000000000..9ca51f198
--- /dev/null
+++ b/server/SpawnScripts/FreeportBetrayal/StilusGraphium.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/FreeportBetrayal/StilusGraphium.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 04:09:53
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+--Didn't I tell you that nobility comes from personal sacrifice? You sacrificed your life for the Overlord's entertainment. What could be more noble?
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportBetrayal/TheBonebreaker.lua b/server/SpawnScripts/FreeportBetrayal/TheBonebreaker.lua
new file mode 100755
index 000000000..c12471bee
--- /dev/null
+++ b/server/SpawnScripts/FreeportBetrayal/TheBonebreaker.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/FreeportBetrayal/TheBonebreaker.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 06:09:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function victory(NPC,Spawn)
+ if IsPlayer(Spawn) == true then
+ AddTimer(NPC,1500,"FailureExit",1,Spawn)
+ end
+end
+
+function FailureExit(NPC,Spawn)
+ FailExit = GetZone("SerpentSewer")
+ Zone(FailExit,Spawn,-133.56, -0.21, 28.15, 41.26)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportBetrayal/adoor.lua b/server/SpawnScripts/FreeportBetrayal/adoor.lua
new file mode 100755
index 000000000..570c9b603
--- /dev/null
+++ b/server/SpawnScripts/FreeportBetrayal/adoor.lua
@@ -0,0 +1,129 @@
+--[[
+ Script Name : SpawnScripts/FreeportBetrayal/adoor.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 12:09:32
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC,Spawn)
+local zone = GetZone(NPC)
+if GetSpawnLocationID(NPC) == 133786891 then
+AddTimer(NPC,6000,"SpawnCheck",1)
+SetTempVariable(NPC,"ClickCheck",nil)
+end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function SpawnCheck(NPC,Spawn)
+ local Guard1 = GetSpawn(NPC,8450023)
+ local Guard2 = GetSpawn(NPC,8450024)
+ local Guard3 = GetSpawn(NPC,8450022)
+
+if Guard1 == nil or not IsAlive(Guard1) then
+ if Guard2 == nil or not IsAlive(Guard2) then
+ if Guard3 == nil or not IsAlive(Guard3) then
+ Unlock(NPC,Spawn)
+ else
+ AddTimer(NPC,5000,"SpawnCheck",1)
+ end
+ else
+ AddTimer(NPC,5000,"SpawnCheck",1)
+ end
+else
+ AddTimer(NPC,5000,"SpawnCheck",1)
+ end
+ end
+
+function Unlock(NPC,Spawn)
+ local Rug = GetSpawn(NPC,8450007)
+ PlaySound(NPC,"sounds/widgets/object_interaction/obj_unlock001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ PlaySound(Rug,"sounds/widgets/object_interaction/obj_unlock001.wav",GetX(Rug), GetY(Rug), GetZ(Rug))
+ SpawnSet(NPC,"show_command_icon",1)
+ SpawnSet(NPC,"display_hand_icon",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"Open",10000,"Open")
+ SendUpdateDefaultCommand(NPC,10000,"Open")
+end
+
+function casted_on(NPC, Spawn, Message)
+ local zone = GetZone(NPC)
+ if Message == "Open" and GetTempVariable(NPC,"ClickCheck")== nil then
+ SpawnSet(NPC,"show_command_icon",0)
+ SpawnSet(NPC,"display_hand_icon",0)
+ if GetDistance(NPC,Spawn) <= 5 then
+ SetTempVariable(NPC,"ClickCheck",1)
+ AddTimer(NPC,1100,"Porting1",1,Spawn)
+ AddTimer(NPC,2100,"Porting2",1,Spawn)
+ PlaySound(NPC,"sounds/widgets/doors/door_genericwood_open001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ else
+ SendMessage(Spawn,"You need to be closer to open the door.")
+ SendPopUpMessage(Spawn,"You need to be closer to open the door.",250,50,50)
+ end
+ end
+end
+
+function Porting1(NPC,Spawn)
+local Tayil = GetSpawn(NPC,8450001)
+ ApplySpellVisual(Spawn,18)
+ CastSpell(Spawn,2550422,1,1,Tayil)
+ if GetQuestStep(Spawn,5890)==1 then
+ SetStepComplete(Spawn,5890,1)
+ end
+end
+
+function Porting2(NPC,Spawn)
+local Lucan = GetSpawn(NPC,8450000)
+ SetPosition(Spawn,-1.11, -1.21, -31.39,355)
+ SetTarget(Lucan,Spawn)
+ PlayFlavor(Spawn,"","","result_teleport_appear",0,0)
+ AddTimer(NPC,500,"Chains1",1,Spawn)
+ AddTimer(NPC,4000,"Lucan",1,Spawn)
+ AddTimer(NPC,16000,"Kenjedeau",1,Spawn)
+ AddTimer(NPC,24500,"Stilus",1,Spawn)
+ AddTimer(Lucan,31000,"SpeechCheck",1,Spawn)
+ AddTimer(Lucan,32000,"Speech1",1,Spawn)
+end
+
+function Chains1 (NPC,Spawn)
+local Tayil = GetSpawn(NPC,8450001)
+ PlayFlavor(Tayil,"","","cast_enthralling_fetters_circling_ghostly",0,0)
+ SetTarget(Tayil,Spawn)
+ if GetQuestStep(Target,5890)==1 then
+ SetStepComplete(Target,5890,1)
+ end
+end
+
+
+
+function Lucan(NPC,Spawn)
+local Lucan = GetSpawn(NPC,8450000)
+ PlayFlavor(Lucan,"voiceover/english/overlord_lucan_d_lere/fprt_ph_3r03/quest_betrayal_f_lucan_betrayal_callout1_5002277b.mp3","Excellent! The entertainment has arrived. I can't remember the last time someone managed to get this far. I congratulate you on picking this one, Kenjedeau.","",365186407,3843156497)
+
+local Tayil = GetSpawn(NPC,8450001)
+local Lucan = GetSpawn(NPC,8450000)
+ PlayFlavor(Tayil,"","","kill_cast_enthralling_fetters_circling_ghostly",0,0)
+ SetTarget(Spawn,Lucan)
+end
+
+function Kenjedeau(NPC,Spawn)
+local Ken = GetSpawn(NPC,8450028)
+ PlayFlavor(Ken,"","Thank you, Overlord. But I cannot take all the credit. Stilus did most of the work. I just endured this one's pathetic exclamations of goodwill and virtue.","nod",0,0)
+ SetTarget(NPC,Spawn)
+end
+
+function Stilus(NPC,Spawn)
+local Stilus = GetSpawn(NPC,8450027)
+ PlayFlavor(Stilus,"","Didn't I tell you that nobility comes from personal sacrifice? You sacrificed your life for the Overlord's entertainment. What could be more noble?","chuckle",0,0)
+ SetTarget(NPC,Spawn)
+end
+
+function StartSpeech(NPC,Spawn)
+local Lucan = GetSpawn(NPC,8450000)
+ Speech1(Lucan,Spawn)
+end
+
+
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/AQeynosianinfiltrator.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/AQeynosianinfiltrator.lua
new file mode 100755
index 000000000..3e828e872
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/AQeynosianinfiltrator.lua
@@ -0,0 +1,143 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/AQeynosianinfiltrator.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.25 04:06:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+local BBCitizen = 5866 --Big Bend
+local BCCitizen = 5867 --Beggar's Court
+local LACitizen = 5868 --Longshadow Alley
+local SYCitizen = 5869 -- Scale Yard
+local SBCitizen = 5870 --Stonestair Byway
+local TSCitizen = 5871 --Temple St
+
+function spawn(NPC)
+ combatModule(NPC, Spawn)
+ local Level = GetLevel(NPC)
+ local level1 = 5
+ local level2 = 6
+ local difficulty1 = 6
+ local hp1 = 130
+ local power1 = 65
+ local difficulty2 = 6
+ local hp2 = 150
+ local power2 = 80
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,2)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_a68f64b6.mp3", "Alarm! Alarm!", "", 1220383018, 2962002142, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2.76, 0.40, -21.07, 2, 7)
+ MovementLoopAddLocation(NPC, -2.76, 0.40, -21.07, 2, 1)
+ MovementLoopAddLocation(NPC, -1.49, 0.40, -20.09, 2, 0)
+ MovementLoopAddLocation(NPC, 0.57, 0.37, -18.22, 2, 8)
+ MovementLoopAddLocation(NPC, 0.09, 0.10, -14.04, 2, 5)
+ MovementLoopAddLocation(NPC, 0.09, 0.10, -14.04, 2, 1)
+ MovementLoopAddLocation(NPC, 1.45, 0.43, -17.51, 2, 3)
+ MovementLoopAddLocation(NPC, -2.34, 0.25, -18.81, 2, 5)
+ MovementLoopAddLocation(NPC, -2.34, 0.25, -18.81, 2, 1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
+
+function death(NPC,Spawn)
+
+local Traitor1 = GetSpawn(NPC,1640001)
+local Traitor2 = GetSpawn(NPC,1640002)
+local Traitor3 = GetSpawn(NPC,1640018)
+local Traitor3 = GetSpawn(NPC,1640021)
+
+ if Traitor1 == nil or not IsAlive(Traitor1) then
+ if Traitor2 == nil or not IsAlive(Traitor2) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if HasQuest(Spawn,BBCitizen) then
+ SetStepComplete(Spawn,BBCitizen,4)
+ elseif HasQuest(Spawn,BCCitizen) then
+ SetStepComplete(Spawn,BCCitizen,4)
+ elseif HasQuest(Spawn,LACitizen) then
+ SetStepComplete(Spawn,LACitizen,4)
+ elseif HasQuest(Spawn,SYCitizen) then
+ SetStepComplete(Spawn,SYCitizen,4)
+ elseif HasQuest(Spawn,SBCitizen) then
+ SetStepComplete(Spawn,SBCitizen,4)
+ elseif HasQuest(Spawn,TSCitizen) then
+ SetStepComplete(Spawn,TSCitizen,4)
+ end
+ end
+ end
+ end
+ end
+end
+
+function FailureExit(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn,3.24, -4.37, -98.46, 185.35)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn,21.81, 2.92, 21.37, 190.87)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,61.07, -7.08, 111.67, 339.27)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn,94.12, -2.00, 2.53, 98)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("longshadow")
+ Zone(ZoneRef,Spawn,4.22, 3.00, 71.07, 353.87)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn,-6.78, -5.63, -12.96, 194.63)
+
+ else
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,58.67, -7.08, 112.61, 352.60)
+
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/Afailedapplicant.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/Afailedapplicant.lua
new file mode 100755
index 000000000..ee5ce4cc5
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/Afailedapplicant.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/Afailedapplicant.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.25 06:06:01
+ Script Purpose :
+ :
+--]]
+
+local CalloutCount = true
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetQuestStep(Spawn, 5718) >=4 or GetQuestStep(Spawn, 5719) >=4 or GetQuestStep(Spawn, 5720) >=4 or GetQuestStep(Spawn, 5721) >=4 or GetQuestStep(Spawn, 5722) >=4 or GetQuestStep(Spawn, 5723) >=4 then
+ DoorCheck(NPC,Spawn)
+end
+end
+
+function DoorCheck(NPC,Spawn)
+ Door = GetSpawn(NPC,1640023)
+ if Door ~= nil then
+ Despawn(Door)
+ end
+ local zone = GetZone(NPC)
+ if GetSpawnByLocationID(zone,133785371) ~=nil then
+ Despawn(GetSpawnByLocationID(zone,133785371))
+ end
+end
+
+function hailed(NPC, Spawn)
+if CalloutCount == true then
+ choice = MakeRandomInt(1,2)
+if choice == 1 then
+Say(NPC,"Qeynos...filth...")
+else
+Say(NPC,"Unghhh...")
+end
+ CalloutCount = false
+else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ SendMessage(Spawn, "The applicant does not respond to your actions.")
+ elseif choice == 2 then
+ SendMessage(Spawn, "There is no indication the applicant is still breathing.")
+ elseif choice == 3 then
+ SendMessage(Spawn, "This applicant obviously failed due to weakness.")
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/ArbbetorTAvi.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/ArbbetorTAvi.lua
new file mode 100755
index 000000000..8d328e3ca
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/ArbbetorTAvi.lua
@@ -0,0 +1,344 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/ArbbetorTAvi.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.22 06:06:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local BBFCitizen = 5866 --BigBend
+local Beg_FCitizen = 5867--Beggar's Court
+local LA_FCitizen = 5868--Longshadow
+local Scale_FCitizen = 5869--ScaleYard
+local Stone_FCitizen = 5870--Stonestair
+local Temp_FCitizen = 5871--TempltSt
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetQuestStep (Spawn,BBFCitizen )==3 or GetQuestStep (Spawn,Beg_FCitizen )==3 or GetQuestStep (Spawn,LA_FCitizen)==3 or GetQuestStep (Spawn,Scale_FCitizen )==3 or GetQuestStep (Spawn,Stone_FCitizen )==3 or GetQuestStep (Spawn,Temp_FCitizen)==3 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetor_tavi_callout_5ab3b4e6.mp3","Hey you! Get over here!", "point", 3348850018,53224247, Spawn)
+ end
+end
+
+
+function LeaveRange(NPC, Spawn)
+ SetTarget(NPC,nil)
+end
+
+function hailed(NPC, Spawn)
+if GetQuestStep (Spawn,BBFCitizen )==3 or GetQuestStep (Spawn,Beg_FCitizen )==3 or GetQuestStep (Spawn,LA_FCitizen)==3 or GetQuestStep (Spawn,Scale_FCitizen )==3 or GetQuestStep (Spawn,Stone_FCitizen )==3 or GetQuestStep (Spawn,Temp_FCitizen)==3 then
+ Dialog1(NPC,Spawn)
+elseif GetQuestStep (Spawn,BBFCitizen )==5 or GetQuestStep (Spawn,Beg_FCitizen )==5 or GetQuestStep (Spawn,LA_FCitizen)==5 or GetQuestStep (Spawn,Scale_FCitizen )==5 or GetQuestStep (Spawn,Stone_FCitizen )==5 or GetQuestStep (Spawn,Temp_FCitizen)==5 then
+ Dialog2(NPC,Spawn)
+elseif GetQuestStep(Spawn,BBFCitizen )==4 or
+ GetQuestStep(Spawn,Beg_FCitizen )==4 or
+ GetQuestStep(Spawn,LA_FCitizen)==4 or
+ GetQuestStep(Spawn,Scale_FCitizen )==4 or
+ GetQuestStep(Spawn,Stone_FCitizen )==4 or
+ GetQuestStep(Spawn,Temp_FCitizen)==4 then
+ Dialog3(NPC,Spawn)
+ DoorCheck(NPC,Spawn)
+
+elseif HasCompletedQuest(Spawn,BBFCitizen ) or HasCompletedQuest(Spawn,Beg_FCitizen ) or HasCompletedQuest(Spawn,LA_FCitizen) or HasCompletedQuest(Spawn,Scale_FCitizen ) or HasCompletedQuest(Spawn,Stone_FCitizen ) or HasCompletedQuest(Spawn,Temp_FCitizen) then
+ Dialog2(NPC,Spawn)
+else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/erudite_eco_good_1/ft/erudite/erudite_eco_good_1_notcitizen_gf_48350e59.mp3","You're not allowed in here! Off with you until you've proven yourself to complete this trial.", "glare", 3405287024, 2122169059, Spawn)
+end
+end
+
+
+function DoorCheck(NPC,Spawn)
+ Door = GetSpawn(NPC,1640023)
+ if Door ~= nil then
+ Despawn(Door)
+ end
+ local zone = GetZone(NPC)
+ if GetSpawnByLocationID(zone,133785371) ~=nil then
+ Despawn(GetSpawnByLocationID(zone,133785371))
+ end
+end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, well... I've been expecting you. You're not quite what I hoped, given T'Kirr's glowing recommendation, but you'll do.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi001.mp3", 1917752715, 2073406033)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("Do? What do you mean?", "Option1A")
+ Dialog.Start()
+end
+
+
+function Option1A (NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're here to become a citizen, aren't you?")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi002.mp3", 2786599552, 1370339276)
+ PlayFlavor(NPC,"","","",0,0,Spawn)
+ Dialog.AddOption("Of course.", "Option1B")
+ Dialog.Start()
+end
+
+function Option1B(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Then stop talking and start listening. The Overlord has little time for those who don't know when to hold their tongue.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi003.mp3", 543002968, 1965375267)
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
+ Dialog.AddOption("Speak to me like that again...", "Option1Fb")
+ Dialog.AddOption("...", "Option1C")
+ Dialog.Start()
+end
+
+function Option1C(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I see you learn quickly. Now let's move on.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi005.mp3", 194269005, 133004706)
+ Dialog.AddOption("[continue]", "Option1D")
+ Dialog.Start()
+end
+
+function Option1D(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I've discovered a den of traitorous dogs that must be punished. The Overlord's will cannot be questioned. These beasts must suffer a terrible fate.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi006.mp3", 476682468, 1543848106)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("I am to interrorgate them? Kill them, perhaps?", "Option1E")
+ Dialog.AddOption("What do I get out of this?", "Option1Ea")
+ Dialog.Start()
+end
+
+function Option1Ea(NPC,Spawn) --Evil
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The honor of living among the elite, the citizens of Freeport. And, of course, you get to move out of this pit and away from the refugee trash, though with your attitude...")
+-- Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi004.mp3", 922126162, 3879014430)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ Dialog.AddOption("I just don't understand why I should do YOUR job!", "Option1Fb")
+ Dialog.AddOption("[continue]", "Option1F")
+ Dialog.Start()
+end
+
+function Option1E(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Indeed you are.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi007.mp3", 1995736381, 541616666)
+ Dialog.AddOption("[Continue]", "Option1F")
+ Dialog.Start()
+end
+
+
+
+function Option1F(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("As I was saying ... We ... err... I will determine your worth by how you take care of these misguided fools.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi006.mp3", 2699197105, 566046082)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("I am ready to serve my Overlord.", "Option1C")
+ Dialog.Start()
+end
+
+
+function Option1Fa(NPC,Spawn) --Evil
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Or you'll what? The Overlord brooks no insolence and neither do I. You'll find little tolerance for back talk here. Let's get on with this.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi004.mp3", 922126162, 3879014430)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ Dialog.AddOption("No one tells me what to do! My greatness knows no bounds!", "Option1Fb")
+ Dialog.AddOption("[Listen quietly]", "Option1C")
+ Dialog.Start()
+end
+
+function Option1Fb(NPC,Spawn) --Evil Fail
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Fool! The Overlord is watching you as we speak.")
+ Dialog.AddVoiceover("voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_notcitizen_gf_e5838bd0.mp3", 644059683, 1813641447)
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ Dialog.AddOption("Ummm... I should be going.")
+ Dialog.Start()
+ SendPopUpMessage(Spawn,"The Overlord finds your obedience lacking.",250,50,50)
+ AddTimer(NPC,4500,"FailureExit",1,Spawn)
+end
+
+
+
+function Option1F(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Go forth. Punish them as they deserve and as the Overlord commands. Your reward lies on the far side: entrance to the great city of Freeport.")
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi010.mp3", 3234477305, 2227612151)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("Thank you Abbetor.")
+ Dialog.Start()
+ DoorCheck(NPC,Spawn)
+ if HasQuest(Spawn,BBFCitizen ) then
+ SetStepComplete(Spawn,BBFCitizen ,3)
+ elseif HasQuest(Spawn,Beg_FCitizen) then
+ SetStepComplete(Spawn,Beg_FCitizen,3)
+ elseif HasQuest(Spawn,LA_FCitizen) then
+ SetStepComplete(Spawn,LA_FCitizen,3)
+ elseif HasQuest(Spawn,Scale_FCitizen) then
+ SetStepComplete(Spawn,Scale_FCitizen,3)
+ elseif HasQuest(Spawn,Stone_FCitizen) then
+ SetStepComplete(Spawn,Stone_FCitizen,3)
+ elseif HasQuest(Spawn,Temp_FCitizen) then
+ SetStepComplete(Spawn,Temp_FCitizen,3)
+ end
+ if HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==13 then
+ SetStepComplete(Spawn,5860,13)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==13 then
+ SetStepComplete(Spawn,5861,13)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==13 then
+ SetStepComplete(Spawn,5862,13)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==13 then
+ SetStepComplete(Spawn,5863,13)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==13 then
+ SetStepComplete(Spawn,5864,13)
+ elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==13 then
+ SetStepComplete(Spawn,5859,13)
+ end
+end
+
+
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You surprised me... Your paperwork is signed, offically making you a citizen of Freeport. Let your actions continue to prove true to the Overlord, and we won't have to meet down here again under different circumstances...") --FABRICATED
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1033.mp3", 0, 0)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("Those traitors got what they deserved.")
+ Dialog.AddOption("By The Overlord's will.")
+ Dialog.AddOption("As a citizen, what can I do now?", "Option2A")
+ Dialog.Start()
+ if HasQuest(Spawn,5860) and GetQuestStep(Spawn,5860)==14 then
+ SetStepComplete(Spawn,5860,14)
+ elseif HasQuest(Spawn,5861) and GetQuestStep(Spawn,5861)==14 then
+ SetStepComplete(Spawn,5861,14)
+ elseif HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==14 then
+ SetStepComplete(Spawn,5862,14)
+ elseif HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==14 then
+ SetStepComplete(Spawn,5863,14)
+ elseif HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==14 then
+ SetStepComplete(Spawn,5864,14)
+ elseif HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==14 then
+ SetStepComplete(Spawn,5859,14)
+ end
+ if HasQuest(Spawn,BBFCitizen ) then
+ SetStepComplete(Spawn,BBFCitizen ,5)
+ AddSpellBookEntry(Spawn, 8057, 1) --CALL TO FREEPORT
+ AddTimer(NPC,500,"Citizen",1,Spawn)
+ elseif HasQuest(Spawn,Beg_FCitizen ) then
+ SetStepComplete(Spawn,Beg_FCitizen ,5)
+ AddSpellBookEntry(Spawn, 8057, 1) --CALL TO FREEPORT
+ AddTimer(NPC,500,"Citizen",1,Spawn)
+ elseif HasQuest(Spawn,LA_FCitizen) then
+ SetStepComplete(Spawn,LA_FCitizen,5)
+ AddSpellBookEntry(Spawn, 8057, 1) --CALL TO FREEPORT
+ AddTimer(NPC,500,"Citizen",1,Spawn)
+ elseif HasQuest(Spawn,Scale_FCitizen ) then
+ SetStepComplete(Spawn,Scale_FCitizen ,5)
+ AddSpellBookEntry(Spawn, 8057, 1) --CALL TO FREEPORT
+ AddTimer(NPC,500,"Citizen",1,Spawn)
+ elseif HasQuest(Spawn,Stone_FCitizen ) then
+ SetStepComplete(Spawn,Stone_FCitizen ,5)
+ AddSpellBookEntry(Spawn, 8057, 1) --CALL TO FREEPORT
+ AddTimer(NPC,500,"Citizen",1,Spawn)
+ elseif HasQuest(Spawn,Temp_FCitizen) then
+ SetStepComplete(Spawn,Temp_FCitizen,5)
+ AddSpellBookEntry(Spawn, 8057, 1) --CALL TO FREEPORT
+ AddTimer(NPC,500,"Citizen",1,Spawn)
+ end
+end
+
+ function Citizen(NPC,Spawn)
+ SendMessage(Spawn, "You are now a Citizen of Freeport!","yellow")
+ SendPopUpMessage(Spawn, "You are now a Citizen of Freeport!",250,250,250)
+ PlaySound(Spawn, "sounds/test/endquest.wav", GetX(Spawn), GetY(Spawn), GetZ(Spawn), Spawn)
+ ApplySpellVisual(Spawn, 324)
+end
+
+function Option2A(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'll offer you one warning: Watch your step and your purse in Freeport. This city is full of questionable characters who would love to relieve you of your coin and your life. Now be on your way.")--FABRICATED
+ Dialog.AddVoiceover("voiceover/english/julie_danerous/fprt_east/100_questjuliedanerou_multhail1_6195b062.mp3", 3623154907, 3385551552)
+ Dialog.AddOption("I'll keep that in mind.","Done")
+ Dialog.Start()
+end
+
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Why are you speaking to me? Finish your task!")
+ PlayFlavor(NPC, "","", "no", 0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/abbetor_t_avi/fprt_sewer_epic08/abbetortavi012.mp3", 3529749208, 569435182)
+ Dialog.AddOption("Ok, ok!")
+ Dialog.Start()
+end
+
+function Done(NPC,Spawn)
+ PlayFlavor(NPC,"","","salute_freeport",0,0,Spawn)
+end
+
+function FailureExit(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn,3.24, -4.37, -98.46, 185.35)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn,21.81, 2.92, 21.37, 190.87)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,61.07, -7.08, 111.67, 339.27)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn,94.12, -2.00, 2.53, 98)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("longshadow")
+ Zone(ZoneRef,Spawn,4.22, 3.00, 71.07, 353.87)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn,-6.78, -5.63, -12.96, 194.63)
+
+ else
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,58.67, -7.08, 112.61, 352.60)
+
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/aFreeporttraitor.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/aFreeporttraitor.lua
new file mode 100755
index 000000000..9cc9d4a64
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/aFreeporttraitor.lua
@@ -0,0 +1,173 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/aFreeporttraitor.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.25 01:06:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+local BBCitizen = 5866 --Big Bend
+local BCCitizen = 5867 --Beggar's Court
+local LACitizen = 5868 --Longshadow Alley
+local SYCitizen = 5869 -- Scale Yard
+local SBCitizen = 5870 --Stonestair Byway
+local TSCitizen = 5871 --Temple St
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+if not IsInCombat(NPC) then
+PlayFlavor(NPC, "","Psst! Perhaps we can come to an arrangement...", "", 0,0, Spawn)
+end
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayAnimation(NPC,"539")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Please don't hurt me. I can make you wealthy!")
+ Dialog.AddVoiceover("voiceover/english/a_freeport_traitor/fprt_sewer_epic08/bribingtraitor000.mp3", 3714658197, 1541784827)
+ Dialog.AddOption("I'm listening.", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My family already left for Qeynos. If you let me live, I'll send you exactly what you deserve for this!")
+ Dialog.AddVoiceover("voiceover/english/a_freeport_traitor/fprt_sewer_epic08/bribingtraitor001.mp3", 0, 0)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("Stay here. Let me consider this.")
+ Dialog.AddOption("How can I trust you?", "Dialog3")
+ Dialog.AddOption("Coin cannot cover what you've done!", "AttackTimer")
+ Dialog.AddOption("I don't think so.", "AttackTimer")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I don't suppose you can ... so you have to trust me.")
+ Dialog.AddVoiceover("voiceover/english/a_freeport_traitor/fprt_sewer_epic08/bribingtraitor002.mp3", 0, 0)
+ PlayFlavor(NPC,"","","whome",0,0,Spawn)
+ Dialog.AddOption("Fine.","Fail")
+ Dialog.AddOption("A bribe? Pay with your life!", "AttackTimer")
+ Dialog.Start()
+end
+
+function AttackTimer(NPC,Spawn)
+ AddTimer(NPC,1200,"Attacking",1,Spawn)
+end
+
+function Attacking(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
+ Attack(NPC,Spawn)
+end
+
+function Fail(NPC,Spawn)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"To accept a bribe from a Qeynosian shows a disgusting lack of ethics.",255,50,50)
+ SendMessage(Spawn,"To accept a bribe from a Qeynosian shows a disgusting lack of ethics.","red")
+ AddTimer(NPC,4500,"FailureExit",1,Spawn)
+end
+
+
+function FailureExit(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn,3.24, -4.37, -98.46, 185.35)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn,21.81, 2.92, 21.37, 190.87)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,61.07, -7.08, 111.67, 339.27)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn,94.12, -2.00, 2.53, 98)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("longshadow")
+ Zone(ZoneRef,Spawn,4.22, 3.00, 71.07, 353.87)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn,-6.78, -5.63, -12.96, 194.63)
+
+ else
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,58.67, -7.08, 112.61, 352.60)
+
+ end
+end
+
+function aggro(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ SpawnSet(NPC,"command_primary",11)
+ SpawnSet(NPC,"action_state",0)
+end
+
+function death(NPC,Spawn)
+
+local Traitor1 = GetSpawn(NPC,1640001)
+local Traitor2 = GetSpawn(NPC,1640002)
+local Traitor3 = GetSpawn(NPC,1640018)
+local Traitor3 = GetSpawn(NPC,1640021)
+
+ if Traitor1 == nil or not IsAlive(Traitor1) then
+ if Traitor2 == nil or not IsAlive(Traitor2) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if HasQuest(Spawn,BBCitizen) then
+ SetStepComplete(Spawn,BBCitizen,4)
+ elseif HasQuest(Spawn,BCCitizen) then
+ SetStepComplete(Spawn,BCCitizen,4)
+ elseif HasQuest(Spawn,LACitizen) then
+ SetStepComplete(Spawn,LACitizen,4)
+ elseif HasQuest(Spawn,SYCitizen) then
+ SetStepComplete(Spawn,SYCitizen,4)
+ elseif HasQuest(Spawn,SBCitizen) then
+ SetStepComplete(Spawn,SBCitizen,4)
+ elseif HasQuest(Spawn,TSCitizen) then
+ SetStepComplete(Spawn,TSCitizen,4)
+ end
+ end
+ end
+ end
+ end
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiandefector.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiandefector.lua
new file mode 100755
index 000000000..e2a52e7b7
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiandefector.lua
@@ -0,0 +1,183 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiandefector.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.25 02:06:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+local BBCitizen = 5866 --Big Bend
+local BCCitizen = 5867 --Beggar's Court
+local LACitizen = 5868 --Longshadow Alley
+local SYCitizen = 5869 -- Scale Yard
+local SBCitizen = 5870 --Stonestair Byway
+local TSCitizen = 5871 --Temple St
+
+function spawn(NPC)
+ combatModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+if not IsInCombat(NPC) then
+PlayFlavor(NPC, "","Please, leave me alone!", "cringe", 0,0, Spawn)
+end
+end
+
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I promise I'll do as the Overlord says!")
+ PlayFlavor(NPC,"","","cringe",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/a_qeynosian_defector/fprt_sewer_epic08/feigninghelpless000.mp3", 364977579, 2901182928)
+ Dialog.AddOption("You lie!", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I beg of you, no! I have a family!")
+ Dialog.AddVoiceover("voiceover/english/a_qeynosian_defector/fprt_sewer_epic08/feigninghelpless001.mp3", 3339052683, 3646445209)
+ PlayFlavor(NPC,"","","beg",0,0,Spawn)
+ Dialog.AddOption("And where is this family now?", "Dialog3")
+ Dialog.AddOption("All traitors to the Overlord must die.", "AttackTimer")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("They're back in the villa ... err, district, yes, district! We're simple farmers!")
+ Dialog.AddVoiceover("voiceover/english/a_freeport_traitor/fprt_sewer_epic08/bribingtraitor002.mp3", 0, 0)
+ PlayFlavor(NPC,"","","whome",0,0,Spawn)
+ Dialog.AddOption("I understand. Get out of here, quietly!","Fail")
+ Dialog.AddOption("Fine. Hide your family, but you're finished.", "Dialog4")
+ Dialog.AddOption("Keep your secrets and die, traitor!", "AttackTimer")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...I understand. If it's a fight ya want, it's a fight you'll get!")
+ Dialog.AddVoiceover("voiceover/english/a_freeport_traitor/fprt_sewer_epic08/bribingtraitor002.mp3", 0, 0)
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+ Dialog.AddOption("Prepare to die!", "AttackTimer")
+ Dialog.Start()
+end
+
+function AttackTimer(NPC,Spawn)
+ AddTimer(NPC,1200,"Attacking",1,Spawn)
+end
+
+function Attacking(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
+ Attack(NPC,Spawn)
+end
+
+function Fail(NPC,Spawn)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Allowing defection from Freeport will not be tolerated!",255,50,50)
+ SendMessage(Spawn,"Allowing defection from Freeport will not be tolerated!","red")
+ AddTimer(NPC,4500,"FailureExit",1,Spawn)
+end
+
+
+function FailureExit(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn,3.24, -4.37, -98.46, 185.35)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn,21.81, 2.92, 21.37, 190.87)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,61.07, -7.08, 111.67, 339.27)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn,94.12, -2.00, 2.53, 98)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("longshadow")
+ Zone(ZoneRef,Spawn,4.22, 3.00, 71.07, 353.87)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn,-6.78, -5.63, -12.96, 194.63)
+
+ else
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,58.67, -7.08, 112.61, 352.60)
+
+ end
+end
+
+function aggro(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ SpawnSet(NPC,"command_primary",11)
+ SpawnSet(NPC,"action_state",0)
+end
+
+function death(NPC,Spawn)
+
+local Traitor1 = GetSpawn(NPC,1640001)
+local Traitor2 = GetSpawn(NPC,1640002)
+local Traitor3 = GetSpawn(NPC,1640018)
+local Traitor3 = GetSpawn(NPC,1640021)
+
+ if Traitor1 == nil or not IsAlive(Traitor1) then
+ if Traitor2 == nil or not IsAlive(Traitor2) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if HasQuest(Spawn,BBCitizen) then
+ SetStepComplete(Spawn,BBCitizen,4)
+ elseif HasQuest(Spawn,BCCitizen) then
+ SetStepComplete(Spawn,BCCitizen,4)
+ elseif HasQuest(Spawn,LACitizen) then
+ SetStepComplete(Spawn,LACitizen,4)
+ elseif HasQuest(Spawn,SYCitizen) then
+ SetStepComplete(Spawn,SYCitizen,4)
+ elseif HasQuest(Spawn,SBCitizen) then
+ SetStepComplete(Spawn,SBCitizen,4)
+ elseif HasQuest(Spawn,TSCitizen) then
+ SetStepComplete(Spawn,TSCitizen,4)
+ end
+ end
+ end
+ end
+ end
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiansympathizer.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiansympathizer.lua
new file mode 100755
index 000000000..b842cd901
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiansympathizer.lua
@@ -0,0 +1,181 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/aQeynosiansympathizer.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.25 04:06:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+local BBCitizen = 5866 --Big Bend
+local BCCitizen = 5867 --Beggar's Court
+local LACitizen = 5868 --Longshadow Alley
+local SYCitizen = 5869 -- Scale Yard
+local SBCitizen = 5870 --Stonestair Byway
+local TSCitizen = 5871 --Temple St
+
+function spawn(NPC)
+ combatModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+if not IsInCombat(NPC) then
+PlayFlavor(NPC, "","No! Please don't hurt me!", "beg", 0,0, Spawn)
+end
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I didn't do it! They pulled me from my home! All I did was make this invention that they stole!")
+ PlayFlavor(NPC,"","","whome",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/a_qeynosian_sympathizer/fprt_sewer_epic08/falselyaccused000.mp3", 1319923328, 1248891325)
+ Dialog.AddOption("What invention? Does it explode?", "Dialog2")
+ Dialog.AddOption("Freeport's only mistake was accepting you as a refugee.", "Attacking")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("For the last time, gnomes didn't make Luclin explode! We would have gone with disintegration.")
+ Dialog.AddVoiceover("voiceover/english/gnome_eco_evil_1/ft/gnome/gnome_eco_evil_1_hail_gm_3b50e81d.mp3", 269246846, 1507536385)
+ PlayFlavor(NPC,"","","grumble",0,0,Spawn)
+ Dialog.AddOption("Are... you sure you're a traitor?", "Dialog3")
+ Dialog.AddOption("Another reason you should die!", "AttackTimer")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I will prove to them that I'm not mad! If I have to kill everyone of them to prove it, I will!")
+ Dialog.AddVoiceover("voiceover/english/gnome_eco_evil_1/ft/gnome/gnome_eco_evil_1_hail_gm_87cefc8f.mp3", 3561903619, 1901803882)
+ PlayFlavor(NPC,"","","heckno",0,0,Spawn)
+ Dialog.AddOption("You don't seem Qeynosian... You should get out of here.","Fail")
+ Dialog.AddOption("The Overlord has deemed you unworthy!", "Attacking")
+ Dialog.AddOption("Enough. Tell me where your invention is!", "AttackTimer")
+ Dialog.Start()
+end
+
+function AttackTimer(NPC,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You'll never steal my experiment!")
+ Dialog.AddVoiceover("voiceover/english/gnome_base_1/ft/gnome/gnome_base_1_1_aggro_gm_7d3374f8.mp3", 671789066, 1889150438)
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+ Dialog.AddOption("...", "AttackTimer")
+ Dialog.Start()
+ AddTimer(NPC,2200,"Attacking",1,Spawn)
+end
+
+function Attacking(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
+ Attack(NPC,Spawn)
+end
+
+function Fail(NPC,Spawn)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"The Overlord's will must not be questioned!",255,50,50)
+ SendMessage(Spawn,"The Overlord's will must not be questioned!","red")
+ AddTimer(NPC,4500,"FailureExit",1,Spawn)
+end
+
+
+function aggro(NPC,Spawn)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")zSpawnSet(NPC,"action_state",0)
+end
+
+function death(NPC,Spawn)
+
+local Traitor1 = GetSpawn(NPC,1640001)
+local Traitor2 = GetSpawn(NPC,1640002)
+local Traitor3 = GetSpawn(NPC,1640018)
+local Traitor3 = GetSpawn(NPC,1640021)
+
+ if Traitor1 == nil or not IsAlive(Traitor1) then
+ if Traitor2 == nil or not IsAlive(Traitor2) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if Traitor3 == nil or not IsAlive(Traitor3) then
+ if HasQuest(Spawn,BBCitizen) then
+ SetStepComplete(Spawn,BBCitizen,4)
+ elseif HasQuest(Spawn,BCCitizen) then
+ SetStepComplete(Spawn,BCCitizen,4)
+ elseif HasQuest(Spawn,LACitizen) then
+ SetStepComplete(Spawn,LACitizen,4)
+ elseif HasQuest(Spawn,SYCitizen) then
+ SetStepComplete(Spawn,SYCitizen,4)
+ elseif HasQuest(Spawn,SBCitizen) then
+ SetStepComplete(Spawn,SBCitizen,4)
+ elseif HasQuest(Spawn,TSCitizen) then
+ SetStepComplete(Spawn,TSCitizen,4)
+ end
+ end
+ end
+ end
+ end
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
+
+function FailureExit(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn,3.24, -4.37, -98.46, 185.35)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn,21.81, 2.92, 21.37, 190.87)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,61.07, -7.08, 111.67, 339.27)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn,94.12, -2.00, 2.53, 98)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("longshadow")
+ Zone(ZoneRef,Spawn,4.22, 3.00, 71.07, 353.87)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn,-6.78, -5.63, -12.96, 194.63)
+
+ else
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,58.67, -7.08, 112.61, 352.60)
+
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/asludgewalkerhatchling.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/asludgewalkerhatchling.lua
new file mode 100755
index 000000000..29391d8a9
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/asludgewalkerhatchling.lua
@@ -0,0 +1,77 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/asludgewalkerhatchling.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.25 03:06:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+function spawn(NPC)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC,MakeRandomInt(0,2800),"ChooseMovement")
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 1,math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,15))
+ MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 1, math.random(5,15))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 6, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,15))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 6, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpcity.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpcity.lua
new file mode 100755
index 000000000..0ce5bbb1f
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpcity.lua
@@ -0,0 +1,77 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpcity.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.27 12:06:01
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function casted_on(NPC, Player,SpellName)
+ if SpellName == 'Enter Freeport' then
+ local con = CreateConversation()
+if not HasCompletedQuest(Player,5866) and
+not HasCompletedQuest(Player,5867) and
+not HasCompletedQuest(Player,5868) and
+not HasCompletedQuest(Player,5869) and
+not HasCompletedQuest(Player,5870) and
+not HasCompletedQuest(Player,5871) then
+ SendMessage(Player,"You must be a citizen to enter the city.")
+ SendPopUpMessage(Player,"You must be a citizen to enter the city.",255,255,255)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+else
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Player, "Do you wish to enter the City of Freeport?")
+end
+end
+end
+
+function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-5.33, -20.05, -307.49, 173.11)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("SouthFreeport")
+ Zone(ZoneRef,Spawn,-174.13, -36.65, 325.36, 30.57)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-146.95, -50.60, -376.78, 183.34)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("SouthFreeport")
+ Zone(ZoneRef,Spawn,61.09, -12.09, 247.55, 4.3)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-80.29, -34.58, -369.26, 178.10)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("SouthFreeport")
+ Zone(ZoneRef,Spawn,-62.26, -25.02, 282.78, 19.45)
+
+ else
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-146.95, -50.60, -376.78, 183.34)
+
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpvillages.lua b/server/SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpvillages.lua
new file mode 100755
index 000000000..834447058
--- /dev/null
+++ b/server/SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpvillages.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : SpawnScripts/FreeportCitizenshipTrialChamber/zonetofpvillages.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 04:06:56
+ Script Purpose : Race based door for returning to racial hamlet. Newer/evil races are sent to BeggersCourt.
+ :
+--]]
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Return Home' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseItemConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Do you wish to leave the trial chamber?")
+end
+end
+
+function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,61.07, -7.08, 111.67, 339.27)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn,94.12, -2.00, 2.53, 98)
+
+ -- Dark Elf
+ elseif Race == 1 or Race == 19 or Race == 17 then
+ ZoneRef = GetZone("longshadow")
+ Zone(ZoneRef,Spawn,4.22, 3.00, 71.07, 353.87)
+
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn)
+
+ else
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn,58.67, -7.08, 112.61, 352.60)
+
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/FrostfangSea/FirionaVie.lua b/server/SpawnScripts/FrostfangSea/FirionaVie.lua
index 7124f081e..921dc6c2e 100755
--- a/server/SpawnScripts/FrostfangSea/FirionaVie.lua
+++ b/server/SpawnScripts/FrostfangSea/FirionaVie.lua
@@ -16,7 +16,7 @@ function hailed(NPC, Spawn)
AddConversationOption(conversation, "How do I get to the Discord?", "Choice1")
AddConversationOption(conversation, "How do I use commands?", "Choice2")
AddConversationOption(conversation, "I need gear!", "Choice3")
- --AddConversationOption(conversation, "Can you take me to Memorial Island please?", "Choice4")
+-- AddConversationOption(conversation, "Can you take me to Memorial Island please?", "Choice4")
AddConversationOption(conversation, "I do not require anything at this time.", "EndConvo")
StartConversation(conversation, NPC, Spawn, "Hail, Adventurer. How may I assist you?")
--AddCharacterTitle(Spawn, "Lord")
@@ -25,8 +25,16 @@ end
function Choice1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
+ AddConversationOption(conversation, "Tell me more.","Discord2")
AddConversationOption(conversation, "Thank you!")
- StartConversation(conversation, NPC, Spawn, "Visit the website to get a link to the Discord server. There you will find many useful resources.")
+ StartConversation(conversation, NPC, Spawn, "Visit the website to get a link to the Discord server. There you will find many useful resources. I have more information regarding Discord if you would like to know.")
+end
+
+function Discord2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+ AddConversationOption(conversation, "Thank you!")
+ StartConversation(conversation, NPC, Spawn, "There are 2 public EQ2EMU Discord Channels. 'EQ2EMU & EQ2PVP' channel handels more backend code discussion. 'EQ2Emu' channel covers more content related updates (and Bug reporting). ")
end
function Choice2(NPC, Spawn)
diff --git a/server/SpawnScripts/GaranelRestingPlace/theghostofGaranelRucksif.lua b/server/SpawnScripts/GaranelRestingPlace/theghostofGaranelRucksif.lua
new file mode 100755
index 000000000..69db3008a
--- /dev/null
+++ b/server/SpawnScripts/GaranelRestingPlace/theghostofGaranelRucksif.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/GaranelRestingPlace/theghostofGaranelRucksif.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 12:04:02
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function aggro(NPC, Spawn)
+PlayFlavor(NPC, "", "In your mind, this was a good idea, right?", "", 1689589577, 4560189)
+end
+
+function death(NPC, Spawn)
+PlayFlavor(NPC, "", "I'll be back for you", "", 1689589577, 4560189)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/AHardManToPleaseOrcsScript.lua b/server/SpawnScripts/Generic/AHardManToPleaseOrcsScript.lua
index ede6fc8ee..6382ab569 100755
--- a/server/SpawnScripts/Generic/AHardManToPleaseOrcsScript.lua
+++ b/server/SpawnScripts/Generic/AHardManToPleaseOrcsScript.lua
@@ -5,19 +5,20 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Bloodskull(NPC)
+ OrcArmorCommon(NPC)
SetPlayerProximityFunction(NPC, 50, "InRange")
end
function InRange(NPC, Spawn)
-if IsPlayer(Spawn) then
- Attack(NPC, Spawn)
- end
- end
-
-
-
+ if IsPlayer(Spawn) then
+ Attack(NPC, Spawn)
+ end
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Generic/AdvancementGaze.lua b/server/SpawnScripts/Generic/AdvancementGaze.lua
new file mode 100755
index 000000000..6522339a4
--- /dev/null
+++ b/server/SpawnScripts/Generic/AdvancementGaze.lua
@@ -0,0 +1,106 @@
+--[[
+ Script Name : SpawnScripts/Generic/AdvancementGaze.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 12:08:46
+ Script Purpose :
+ :
+--]]
+
+local Q_MageCheck = 5877
+local Q_FighterCheck = 5878
+local Q_PriestCheck = 5879
+local Q_ScoutCheck = 5880
+
+local Q_Mage1 = 5767
+local Q_Mage2 = 5768
+local Q_Ench = 5771
+local Q_Sorc = 5769
+local Q_Summ = 5770
+
+local Q_Fighter1 = 5787
+local Q_Fighter2 = 5788
+local Q_Brawl = 5790
+local Q_Crusade = 5789
+local Q_Warrior = 5791
+
+local Q_Priest1 = 5772
+local Q_Priest2 = 5773
+local Q_Cleric = 5771
+local Q_Druid = 5769
+local Q_Shaman = 5770
+
+local Q_Scout1 = 5782
+local Q_Scout2 = 5783
+local Q_Bard = 5784
+local Q_Pred = 5785
+local Q_Rog = 5786
+
+--[[function spawn(NPC)
+SetPlayerProximityFunction(NPC, 12, "ClassCheck", "LeaveRange")
+end]]--
+
+function ClassCheck(NPC,Spawn) --Quest Callout
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+
+ if GetClass(Spawn)==1 then -- FIGHTER
+ if not HasQuest(Spawn,Q_FighterCheck) then
+ if not HasQuest(Spawn,Q_Fighter1) and not HasCompletedQuest(Spawn,Q_Fighter1) and GetLevel(Spawn)>=8 then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Fighter1) and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Q_Fighter2) and not HasCompletedQuest(Spawn,Q_Fighter2) then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Fighter2) and not HasQuest(Spawn,Q_Brawl) and not HasQuest(Spawn,Q_Crusade) and not HasQuest(Spawn,Q_Warrior) then
+ Offer(NPC,Spawn)
+ end
+ end
+
+ elseif GetClass(Spawn)==11 then -- PRIEST
+ if not HasQuest(Spawn,Q_PriestCheck) then
+ if not HasQuest(Spawn,Q_Priest1) and not HasCompletedQuest(Spawn,Q_Priest1) and GetLevel(Spawn)>=8 then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Priest1) and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Q_Priest2) and not HasCompletedQuest(Spawn,Q_Priest2) then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Priest2) and not HasQuest(Spawn,Q_Cleric) and not HasQuest(Spawn,Q_Druid) and not HasQuest(Spawn,Q_Shaman) then
+ Offer(NPC,Spawn)
+ end
+ end
+
+ elseif GetClass(Spawn)==21 then -- MAGE
+ if CanReceiveQuest(Spawn,Q_MageCheck) then
+ if not HasQuest(Spawn,Q_Mage1) and not HasCompletedQuest(Spawn,Q_Mage1) and GetLevel(Spawn)>=8 then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Mage1) and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Q_Mage2) and not HasCompletedQuest(Spawn,Q_Mage2) then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Mage2) and not HasQuest(Spawn,Q_Ench) and not HasQuest(Spawn,Q_Sorc) and not HasQuest(Spawn,Q_Summ) then
+ Offer(NPC,Spawn)
+ end
+ end
+
+ elseif GetClass(Spawn)==31 then -- SCOUT
+ if not HasQuest(Spawn,Q_ScoutCheck) then
+ if not HasQuest(Spawn,Q_Scout1) and not HasCompletedQuest(Spawn,Q_Scout1) and GetLevel(Spawn)>=8 then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Scout1) and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Q_Scout2) and not HasCompletedQuest(Spawn,Q_Scout2) then
+ Offer(NPC,Spawn)
+ elseif HasCompletedQuest(Spawn,Q_Scout2) and not HasQuest(Spawn,Q_Bard) and not HasQuest(Spawn,Q_Pred) and not HasQuest(Spawn,Q_Rog) then
+ Offer(NPC,Spawn)
+ end
+ end
+ end
+ end
+end
+end
+
+function Offer(NPC,Spawn)
+if GetFactionAmount(Spawn,11) >= 5000 then
+ if GetClass(Spawn) == 1 then
+ OfferQuest(NPC,Spawn,Q_FighterCheck)
+ elseif GetClass(Spawn) == 11 then
+ OfferQuest(NPC,Spawn,Q_PriestCheck)
+ elseif GetClass(Spawn) == 21 then
+ OfferQuest(NPC,Spawn,Q_MageCheck)
+ elseif GetClass(Spawn) == 31 then
+ OfferQuest(NPC,Spawn,Q_ScoutCheck)
+ end
+end
+end
diff --git a/server/SpawnScripts/Generic/BetrayalGeneric.lua b/server/SpawnScripts/Generic/BetrayalGeneric.lua
old mode 100644
new mode 100755
diff --git a/server/SpawnScripts/Generic/CatalogueQuestUpdates.lua b/server/SpawnScripts/Generic/CatalogueQuestUpdates.lua
new file mode 100755
index 000000000..7c23f0812
--- /dev/null
+++ b/server/SpawnScripts/Generic/CatalogueQuestUpdates.lua
@@ -0,0 +1,236 @@
+--[[
+ Script Name : SpawnScripts/Generic/CatalogueQuestUpdates.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.10 10:09:20
+ Script Purpose : Facilitates updates for Catalogue Quest updates. Only created catalogue quests are referenced here.
+ The script requires the 'Catalogue Creature' ability to be cast, Player to be on the right Quest, and the Appropriate Target/Update to complete the quest step.
+ :
+--]]
+local OutlyingQeynos = 519
+local Antonica = 5885
+
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "Catalogue Creature" then
+
+ --OUTLYING QEYNOS GUIDE-------------------------------------------------------
+
+ if HasQuest(Spawn, OutlyingQeynos) then
+
+ --OAKMYST FAIRIES
+ if GetSpawnID(NPC) == 8300048 or GetSpawnID(NPC) == 8300049 or GetSpawnID(NPC) == 8300050 or GetSpawnID(NPC) == 8300014 or GetSpawnID(NPC) == 8300015 or GetSpawnID(NPC) == 8300011 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,1) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 1)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Oakmyst Fairy\n\n\"Oakmyst fairies should not be mistaken for sweet innocent pranksters. In a world of spirits, these fairies embody deception. Many tales are told to children of Qeynos about being led off into the woods by playful fayefolk, never to be seen again. Sadly, those tales are more true than I’d like to admit.\"\n\n-Heirophant Aldalad")
+ end
+ --SUNSHIMMER SPRITE
+ elseif GetSpawnID(NPC) == 8300051 or GetSpawnID(NPC) == 8300052 or GetSpawnID(NPC) == 8300053 or GetSpawnID(NPC) == 8300006 or GetSpawnID(NPC) == 8300052 or GetSpawnID(NPC) == 8300012 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,2) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 2)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Sunshimmer Sprite\n\n\"Sprites are a newer addition to the Oakmyst since The Cataclysm. Supposedly hailing from more enchanted waters, they were swept in from the torrential winds. My fellow trackers have had difficulty determining the terms the sprites have made with the resident fairies to occupy the same woods. It is also unknown how they may shift the balance of these woods.\"\n\n-Tracker Kelnis")
+ end
+ --BADGER CUB
+ elseif GetSpawnID(NPC) == 8300001 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,3) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 3)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Badger Cub\n\n\"Badger cubs go weeks before their ear canals develop. This lack of hearing causes the parental badgers to remain nearby at all times to provide a familiar scent. If a parent badger loses their young, for whatever reason, their temperament becomes vicious. The increased aggression empowers their attacks and manifests in their actual claws - a perfect ingredient for infusing nature's rage into mundane objects!\"\n\n-Yanari Cyellann")
+ end
+ --RUINS SKULKER
+ elseif GetSpawnID(NPC) == 8270058 or GetSpawnID(NPC) == 8270059 or GetSpawnID(NPC) == 8270060 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,4) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 4)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Ruins Skulker\n\n\"The aqua goblins here in the ruins crawled out of the sea once the dust settled from the chunks of Luclin that collided in the old mage quarter. They have this insatiable need to collect and trade trinkets they find amongst each other. You have to wonder where they put it all…\"\n\n-Sergeant at Arms Uthros")
+ end
+ --FLAMEPAW LOYALIST
+ elseif GetSpawnID(NPC) == 8270010 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,5) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 5)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Flamepaw Loyalist\n\n\"Kinloc Flamepaw was renowned in the Age of Turmoil for his control of summoning magic in Qeynos. Aspiring mages flocked to him for protection from The Shattering as Luclin succumbed to its fate. Fortunately for us, he sacrificed himself to protect Qeynos. He did this by weaving together elements to absorb most of the impacts… His aspiring students were not as lucky. Even now, those mages still cling to Kinloc's remains, searching for answers. \"\n\n-Bellengere the Three")
+ end
+
+ --SLEEPLESS ONE
+ elseif GetSpawnID(NPC) == 8270018 or GetSpawnID(NPC) == 8270066 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,6) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 6)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Sleepless One\n\n\"Not all students of the arcane are as focused as I would like. Ages ago, meditation to regain precious mana was a common practice. This required closing your mind to distraction and feeling the mana flow through you. Still in the old magician guild ruins, these students continue their meditations- even in undeath. They might not even know they're dead!\n\nI'de doubt if today's students have that sort of attention span... \"\n\n-Telamina Garendell")
+ end
+ --ALABASTER GOLEM
+ elseif GetSpawnID(NPC) == 8260021 or GetSpawnID(NPC) == 8260022 or GetSpawnID(NPC) == 8260077 or GetSpawnID(NPC) == 8260079 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,7) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 7)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Alabaster Golem\n\n\"It is believed that waters with trace magical properties have seeped below the old ruins of the original Three Towers and have impacted the geology below. The affected stones themselves became animated, similar to the guardians above - smoothing their edges through repetative movements.\n\nRumor is that gnolls have taken these malformed constructs as ‘pets.’ Can you imagine? Gnolls?! \"\n\n-Elspeth Astley of the Three Towers")
+ end
+ --DUSTPAW GUARD
+ elseif GetSpawnID(NPC) == 8260006 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,8) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 8)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Dustpaw Guard\n\n\"Fortunately for Qeynos, the splintered gnoll factions down in the caves have distractions that keep them in their tunnels. With little exposure to the outside dangers, their guards spend more time protecting their treasures than their kin. If a treasure hunter were savvy enough, they might find some tucked away in their ornamental chests… if you don’t mind the smell of wet dog.\"\n\n-Knight-Lieutenant Laughlin")
+ end
+ --ALBINO PYTHON
+ elseif GetSpawnID(NPC) == 8260024 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,9) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 9)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Albino Python\n\n\"A purveyor of exotic beasts offered me a rare specimen a few years ago - a white python. Supposedly traded as pets from old Neriak between the upper class, I pounced at the opportunity to make a few gold on such a rare find. Little did I know that the thing was pregnant!\"\n\n-Donovan Herald, Pet Shop Owner")
+ end
+ --BOG SLUDGE
+ elseif GetSpawnID(NPC) == 8290004 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,10) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 10)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Bog Sludge\n\n\"While easily enough to confuse for muck, the bog sludges in the Peat Bog are actually abandoned conjuration attempts by young students of the arcane. The current theory believes that when the conjuration’s magic is exhausted, it dissolves into the earth. I’m still testing the possibility that they may congeal into one massive creature, but that could have disastrous (and most assuredly messy) results! \"\n\n-Magister Niksel")
+ end
+ --MARSH HATCHLING
+ elseif GetSpawnID(NPC) == 8290022 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,11) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 11)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Marsh Hatchling\n\n\"Slugs have been a common sight in the Peat Bog for ages. All the waste material pumped into the bog from Qeynos is broken down by the critters there, particularly the slugs. Slugs are essential part of a marsh monitor's diet and keep the slug populations in check. Without the monitor lizards, the slugs would devour the bog and end up in our homes!\n\nThat muck you’re standing in when you’re in the bog? That was inside a slug. So be thankful to the marsh hatchlings.\"\n\n-Sean Wellfayer, Angler")
+ end
+ --BOG FAERIE
+ elseif GetSpawnID(NPC) == 8290001 or GetSpawnID(NPC) == 8290002 or GetSpawnID(NPC) == 8290003 or GetSpawnID(NPC) == 8290052 then
+
+ if GetQuestStepProgress(Spawn,OutlyingQeynos,12) == 0 then
+ SetStepComplete(Spawn, OutlyingQeynos, 12)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Bog Faerie\n\n\"Faeries in the bog have been a menace to neighboring communities since they took up residence there—pranking, prodding, and meddling in the affairs of refugees and citizens alike. Some reports state they have some sort of allegiance to an elusive Queen or whatnot, but if that were true, I would have rooted them out ages ago!\"\n\n-Knight-Lieutenant Ilgar")
+ end
+
+
+ end
+
+
+ --ANTONICA GUIDE-------------------------------------------------------
+
+ elseif HasQuest(Spawn, Antonica) then
+
+ --YOUNG KODIAK
+ if GetSpawnID(NPC) == 120294 then
+
+ if GetQuestStepProgress(Spawn,Antonica,1) == 0 then
+ SetStepComplete(Spawn, Antonica, 1)
+ end
+ --GRIZZLED BADGER
+ elseif GetSpawnID(NPC) == 120014 then
+
+ if GetQuestStepProgress(Spawn,Antonica,2) == 0 then
+ SetStepComplete(Spawn, Antonica, 2)
+ end
+ --LOWLAND VIPER
+ elseif GetSpawnID(NPC) == 120068 then
+
+ if GetQuestStepProgress(Spawn,Antonica,3) == 0 then
+ SetStepComplete(Spawn, Antonica, 3)
+ end
+ --COLDWIND OCTOPUS
+ elseif GetSpawnID(NPC) == 120032 or GetSpawnID(NPC) == 120193 or GetSpawnID(NPC) == 120085 or GetSpawnID(NPC) == 120194 then
+
+ if GetQuestStepProgress(Spawn,Antonica,4) == 0 then
+ SetStepComplete(Spawn, Antonica, 4)
+ end
+ --SONIC SHRIEKER
+ elseif GetSpawnID(NPC) == 120297 then
+
+ if GetQuestStepProgress(Spawn,Antonica,5) == 0 then
+ SetStepComplete(Spawn, Antonica, 5)
+ end
+
+ --KLICNIK WARRIOR
+ elseif GetSpawnID(NPC) == 120253 or GetSpawnID(NPC) == 120367 then
+
+ if GetQuestStepProgress(Spawn,Antonica,6) == 0 then
+ SetStepComplete(Spawn, Antonica, 6)
+ end
+ --TIMBERCLAW GNOLL
+ elseif GetSpawnID(NPC) == 120296 or GetSpawnID(NPC) == 120295 then
+
+ if GetQuestStepProgress(Spawn,Antonica,7) == 0 then
+ SetStepComplete(Spawn, Antonica, 7)
+ end
+ --DANKFUR GNOLL
+ elseif GetSpawnID(NPC) == 121482 or GetSpawnID(NPC) == 120420 or GetSpawnID(NPC) == 120340 then
+
+ if GetQuestStepProgress(Spawn,Antonica,8) == 0 then
+ SetStepComplete(Spawn, Antonica, 8)
+ end
+ --POND BEAVER
+ elseif GetSpawnID(NPC) == 120415 then
+
+ if GetQuestStepProgress(Spawn,Antonica,9) == 0 then
+ SetStepComplete(Spawn, Antonica, 9)
+ end
+ --SOGBONE SKELETON
+ elseif GetSpawnID(NPC) == 120261 then
+
+ if GetQuestStepProgress(Spawn,Antonica,10) == 0 then
+ SetStepComplete(Spawn, Antonica, 10)
+ end
+ --KODIAK
+ elseif GetSpawnID(NPC) == 120105 then
+
+ if GetQuestStepProgress(Spawn,Antonica,11) == 0 then
+ SetStepComplete(Spawn, Antonica, 11)
+ end
+ --TIDEWALKER BEHEMOTH
+ elseif GetSpawnID(NPC) == 120243 then
+
+ if GetQuestStepProgress(Spawn,Antonica,12) == 0 then
+ SetStepComplete(Spawn, Antonica, 12)
+ end
+ --ROOT STRANGLER
+ elseif GetSpawnID(NPC) == 120475 then
+
+ if GetQuestStepProgress(Spawn,Antonica,13) == 0 then
+ SetStepComplete(Spawn, Antonica, 13)
+ end
+ --EARTHEN BURROWER
+ elseif GetSpawnID(NPC) == 120157 then
+
+ if GetQuestStepProgress(Spawn,Antonica,14) == 0 then
+ SetStepComplete(Spawn, Antonica, 14)
+ end
+ --WANDERING BAT
+ elseif GetSpawnID(NPC) == 120210 then
+
+ if GetQuestStepProgress(Spawn,Antonica,15) == 0 then
+ SetStepComplete(Spawn, Antonica, 15)
+ end
+
+ end
+
+
+
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/ClassSkillCheck.lua b/server/SpawnScripts/Generic/ClassSkillCheck.lua
new file mode 100755
index 000000000..2da67e667
--- /dev/null
+++ b/server/SpawnScripts/Generic/ClassSkillCheck.lua
@@ -0,0 +1,1522 @@
+--[[
+ Script Name : SpawnScripts/Generic/ClassSkillCheck.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.23 12:05:54
+ Script Purpose :
+ :
+--]]
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+local PRIEST = 11
+local CLERIC = 12
+local TEMPLAR = 13
+local INQUISITOR = 14
+local DRUID = 15
+local WARDEN = 16
+local FURY = 17
+local SHAMAN = 18
+local MYSTIC = 19
+local DEFILER = 20
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+local SCOUT = 31
+local ROGUE = 32
+local SWASHBUCKLER = 33
+local BRIGAND = 34
+local BARD = 35
+local TROUBADOR = 36
+local DIRGE = 37
+local PREDATOR = 38
+local RANGER = 39
+local ASSASSIN = 40
+local ANIMALIST = 41
+local BEASTLORD = 42
+local SHAPER = 43
+local CHANNELER = 44
+
+function SkillCheck(NPC, Spawn)
+ GeneralSkills(NPC,Spawn)
+ AddTimer(NPC,500,"CastingSkills",1,Spawn)
+ AddTimer(NPC,1000,"GearSkills",1,Spawn)
+ AddTimer(NPC,1500,"ClassSkills",1,Spawn)
+end
+
+
+ -- GENERAL SKILLS --
+
+function GeneralSkills(NPC, Spawn)
+ local level = GetLevel(Spawn)*5
+
+--Defense
+if not HasSkill(Spawn, 609880714) then -- Defense
+ AddSkill(Spawn, 609880714,30,level)
+ SendMessage(Spawn, "You have learned the Defense skill")
+end
+
+--Magic Affinity
+if not HasSkill(Spawn, 2072844078) then -- Magic Affinity
+ AddSkill(Spawn, 2072844078,1,level)
+ SendMessage(Spawn, "You have learned the Magic Affinity skill")
+end
+
+--Spell Avoidance
+if not HasSkill(Spawn, 2383540775) then -- Spell Avoidance
+ AddSkill(Spawn, 2383540775,30,level)
+ SendMessage(Spawn, "You have learned the Spell Avoidance skill")
+end
+
+--Very Light Armor
+if not HasSkill(Spawn, 3539032716) then -- Very Light Armor
+ AddSkill(Spawn, 3539032716,1,level)
+ SendMessage(Spawn, "You are now more proficient with Very Light Armor")
+end
+
+-- Alcohol Tolerance
+if not HasSkill(Spawn, 4250045746) and not GetClass(Spawn) == 0 then -- Alcohol Tolerance
+ AddSkill(Spawn, 4250045746,1,level)
+ SendMessage(Spawn, "You have learned the Alcohol Tolerance skill")
+ elseif HasSkill(Spawn,4250045746) then-- Alcohol Tolerance
+ RemoveSkill(Spawn, 4250045746)
+end
+
+-- Swimming
+if not HasSkill(Spawn, 2037831821) and not GetClass(Spawn) == 0 then -- Swimming
+ AddSkill(Spawn, 2037831821,1,level)
+ SendMessage(Spawn, "You have learned the Swimming skill")
+ elseif HasSkill(Spawn,2037831821) then-- Swimming
+ RemoveSkill(Spawn, 2037831821)
+end
+
+--Focus
+if not HasSkill(Spawn, 2638198038) and not GetClass(Spawn) == 0 then -- Focus
+ AddSkill(Spawn, 2638198038,1,level)
+ SendMessage(Spawn, "You have learned the Focus skill")
+ elseif HasSkill(Spawn,2638198038) then-- Focus
+ RemoveSkill(Spawn, 2638198038)
+end
+
+-- Parry
+if not HasSkill(Spawn, 540022425) then -- Parry
+ AddSkill(Spawn, 540022425,1,level)
+ SendMessage(Spawn, "You have learned the Parry skill")
+end
+
+--Safe Fall (Warrior, Brawler, Scouts Only)
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+if not HasSkill(Spawn, 2638198038)then -- Safe Fall
+ AddSkill(Spawn, 2638198038,1,level)
+ SendMessage(Spawn, "You have learned the Safe Fall skill")
+ elseif HasSkill(Spawn,2638198038) then-- Safe Fall
+ RemoveSkill(Spawn, 2638198038)
+end
+end
+
+--Deflection (Brawlers Only)
+if GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER then
+
+if not HasSkill(Spawn, 3850377186)then -- Deflection
+ AddSkill(Spawn, 3850377186,1,level)
+ SendMessage(Spawn, "You have learned the Deflection skill")
+ elseif HasSkill(Spawn,3850377186) then-- Deflection
+ RemoveSkill(Spawn, 3850377186)
+end
+end
+
+--Disarm Traps (Scouts Only)
+if GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+if not HasSkill(Spawn, 2200201799)then -- Disarm Traps
+ AddSkill(Spawn, 2200201799,1,level)
+ SendMessage(Spawn, "You have learned the Disarm Traps skill")
+ elseif HasSkill(Spawn,2200201799) then-- Disarm Traps
+ RemoveSkill(Spawn, 2200201799)
+end
+end
+
+ -- HARVESTING SKILLS --
+
+ local level = GetLevel(Spawn)*5
+if HasSkill(Spawn, 1970131346) then -- Transmuting
+ RemoveSkill(Spawn, 1970131346)
+end
+if not HasSkill(Spawn, 3659699625) and GetClass(Spawn)~=0 then -- Mining
+ AddSkill(Spawn, 3659699625,1,level)
+end
+if not HasSkill(Spawn, 688591146) and GetClass(Spawn)~=0 then -- Foresting
+ AddSkill(Spawn, 688591146,1,level)
+end
+if not HasSkill(Spawn, 1048513601) and GetClass(Spawn)~=0 then -- Gathering
+ AddSkill(Spawn, 1048513601,1,level)
+end
+if not HasSkill(Spawn, 4158365743) and GetClass(Spawn)~=0 then -- Trapping
+ AddSkill(Spawn, 4158365743,1,level)
+end
+if not HasSkill(Spawn, 2319450178) and GetClass(Spawn)~=0 then -- Fishing
+ AddSkill(Spawn, 2319450178,1,level)
+end
+
+
+
+end
+
+
+function CastingSkills(NPC, Spawn)
+ local level = GetLevel(Spawn)*5
+
+ -- CASTING SKILLS --
+
+if GetClass(Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER then
+
+ if not HasSkill(Spawn, 613995491) then -- Disruption
+ AddSkill(Spawn, 613995491,1,level)
+ SendMessage(Spawn, "You have learned the Disruption skill")
+ end
+ if not HasSkill(Spawn, 366253016) then -- Ministration
+ AddSkill(Spawn, 366253016,1,level)
+ SendMessage(Spawn, "You have learned the Ministration skill")
+ end
+ if not HasSkill(Spawn, 3587918036) then -- Ordination
+ AddSkill(Spawn, 3587918036,1,level)
+ SendMessage(Spawn, "You have learned the Ordination skill")
+ end
+ if not HasSkill(Spawn, 882983852) then -- Subjugation
+ AddSkill(Spawn, 882983852,1,level)
+ SendMessage(Spawn, "You have learned the Subjugation skill")
+ end
+else
+
+ if HasSkill(Spawn, 613995491) then-- Disruption
+ RemoveSkill(Spawn, 613995491)
+ end
+ if HasSkill(Spawn,366253016) then-- Ministration
+ RemoveSkill(Spawn, 366253016)
+ end
+ if HasSkill(Spawn,3587918036) then-- Ordination
+ RemoveSkill(Spawn, 3587918036)
+ end
+ if HasSkill(Spawn,882983852) then-- Subjugation
+ RemoveSkill(Spawn, 882983852)
+ end
+end
+
+
+
+ -- DAMAGE STYLE PROFICIENCY SKILLS --
+
+--CRUSHING
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER then
+ if not HasSkill(Spawn, 3421494576) then -- CRUSHING
+ AddSkill(Spawn, 3421494576,1,level)
+ SendMessage(Spawn, "You have learned the Crushing skill")
+ end
+elseif HasSkill(Spawn, 3421494576) then -- CRUSHING
+ RemoveSkill(Spawn, 2638198038)
+end
+
+--SLASHING
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+ if not HasSkill(Spawn, 418532101) then -- SLASHING
+ AddSkill(Spawn, 418532101,1,level)
+ SendMessage(Spawn, "You have learned the Slashing skill")
+ end
+elseif HasSkill(Spawn, 418532101) then -- CRUSHING
+ RemoveSkill(Spawn, 418532101)
+end
+
+--PIERCING
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+ if not HasSkill(Spawn, 3048574950) then -- Piercing
+ AddSkill(Spawn, 3048574950,1,level)
+ SendMessage(Spawn, "You have learned the Piercing skill")
+ end
+elseif HasSkill(Spawn, 3048574950) then -- Piercing
+ RemoveSkill(Spawn, 3048574950)
+ end
+
+--RANGED
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+ if not HasSkill(Spawn, 1756482397) then -- Ranged
+ AddSkill(Spawn, 1756482397,1,level)
+ SendMessage(Spawn, "You have learned the Ranged skill")
+ end
+elseif HasSkill(Spawn, 1756482397) then -- Ranged
+ RemoveSkill(Spawn, 1756482397)
+ end
+
+end
+
+
+function GearSkills(NPC,Spawn)
+ local level = GetLevel(Spawn)*5
+
+ -- DEFENSE TYPE SKILLS --
+
+--Light Armor
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 2897193374) then -- Light Armor
+ AddSkill(Spawn, 2897193374,1,level)
+ SendMessage(Spawn, "You are now more proficient with Light Armor")
+ end
+elseif HasSkill(Spawn, 2897193374) then -- Light Armor
+ RemoveSkill(Spawn, 2897193374)
+ end
+
+--Medium Armor
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 2246237129) then -- Medium Armor
+ AddSkill(Spawn, 2246237129,1,level)
+ SendMessage(Spawn, "You are now more proficient with Medium Armor")
+ end
+elseif HasSkill(Spawn, 2246237129) then -- Medium Armor
+ RemoveSkill(Spawn, 2246237129)
+ end
+
+--Heavy Armor
+if GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR then
+
+ if not HasSkill(Spawn, 241174330) then -- Heavy Armor
+ AddSkill(Spawn, 241174330,1,level)
+ SendMessage(Spawn, "You are now more proficient with Heavy Armor")
+ end
+elseif HasSkill(Spawn, 241174330) then -- Heavy Armor
+ RemoveSkill(Spawn, 241174330)
+ end
+
+
+ -- SHIELDS --
+
+--Buckler (small)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 4037812502) then -- Buckler
+ AddSkill(Spawn, 4037812502,1,level)
+ SendMessage(Spawn, "You are now more proficient with Bucklers")
+ end
+elseif HasSkill(Spawn, 4037812502) then -- Buckler
+ RemoveSkill(Spawn, 4037812502)
+end
+
+--Round Shield (medium)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 3173504370) then -- Round Shield
+ AddSkill(Spawn, 3173504370,1,level)
+ SendMessage(Spawn, "You are now more proficient with Round Shields")
+ end
+elseif HasSkill(Spawn, 3173504370) then -- Round Shield
+ RemoveSkill(Spawn, 3173504370)
+ end
+
+--Kite Shield (large)
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT then
+
+ if not HasSkill(Spawn, 570458645) then -- Kite Shield
+ AddSkill(Spawn, 570458645,1,level)
+ SendMessage(Spawn, "You are now more proficient with Kite Shields")
+ end
+elseif HasSkill(Spawn, 570458645) then -- Kite Shield
+ RemoveSkill(Spawn, 570458645)
+end
+
+--Tower Shield (very large)
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER then
+
+ if not HasSkill(Spawn, 570458645) then -- Tower Shield
+ AddSkill(Spawn, 570458645,1,level)
+ SendMessage(Spawn, "You are now more proficient with Tower Shields")
+ end
+elseif HasSkill(Spawn, 570458645) then -- Tower Shield
+ RemoveSkill(Spawn, 570458645)
+end
+
+--Symbols
+if GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER then
+
+ if not HasSkill(Spawn, 545043066) then -- Symbols
+ AddSkill(Spawn, 545043066,1,level)
+ SendMessage(Spawn, "You are now more proficient with Symbols")
+ end
+elseif HasSkill(Spawn, 545043066) then -- Symbols
+ RemoveSkill(Spawn, 545043066)
+end
+
+ -- WEAPON SKILLS --
+
+-- Axe (1-H axes)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 545043066) then -- Axe
+ AddSkill(Spawn, 2476073427,1,level)
+ SendMessage(Spawn, "You are now more proficient with Axes")
+ end
+elseif HasSkill(Spawn, 2476073427) then -- Axe
+ RemoveSkill(Spawn, 2476073427)
+end
+
+-- Great Axe (2-H axes)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN then
+
+ if not HasSkill(Spawn, 2954459351) then -- Great Axe
+ AddSkill(Spawn, 2954459351,1,level)
+ SendMessage(Spawn, "You are now more proficient with Great Axes")
+ end
+elseif HasSkill(Spawn, 2954459351) then -- Great Axe
+ RemoveSkill(Spawn, 2954459351)
+end
+
+-- Bow (short & long bows)
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 1743366740) then -- Bow
+ AddSkill(Spawn, 1743366740,1,level)
+ SendMessage(Spawn, "You are now more proficient with Bows")
+ end
+elseif HasSkill(Spawn, 1743366740) then -- Bow
+ RemoveSkill(Spawn, 1743366740)
+end
+
+-- Dagger
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN or
+
+GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 887279616) then -- Dagger
+ AddSkill(Spawn, 887279616,1,level)
+ SendMessage(Spawn, "You are now more proficient with Daggers")
+ end
+elseif HasSkill(Spawn, 887279616) then -- Dagger
+ RemoveSkill(Spawn, 887279616)
+end
+
+-- Fists
+if GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER then
+
+ if not HasSkill(Spawn, 3177806075) then -- Fists
+ AddSkill(Spawn, 3177806075,1,level)
+ SendMessage(Spawn, "You are now more proficient with your Fists")
+ end
+elseif HasSkill(Spawn, 3177806075) then -- Fists
+ RemoveSkill(Spawn, 3177806075)
+end
+
+-- Hammer (1-H hammers)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER then
+
+ if not HasSkill(Spawn, 554333641) then -- Hammer
+ AddSkill(Spawn, 554333641,1,level)
+ SendMessage(Spawn, "You are now more proficient with Hammers")
+ end
+elseif HasSkill(Spawn, 554333641) then -- Hammer
+ RemoveSkill(Spawn, 554333641)
+end
+
+-- Great Hammer (2-H hammers)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER then
+
+ if not HasSkill(Spawn, 1653482350) then -- Great Hammer
+ AddSkill(Spawn, 1653482350,1,level)
+ SendMessage(Spawn, "You are now more proficient with Great Hammers")
+ end
+elseif HasSkill(Spawn, 1653482350) then -- Great Hammer
+ RemoveSkill(Spawn, 1653482350)
+end
+
+-- Mace
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER then
+
+ if not HasSkill(Spawn, 770311065) then -- Mace
+ AddSkill(Spawn, 770311065,1,level)
+ SendMessage(Spawn, "You are now more proficient with Maces")
+ end
+elseif HasSkill(Spawn, 770311065) then -- Mace
+ RemoveSkill(Spawn, 770311065)
+end
+
+-- Rapier
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 641561514) then -- Rapier
+ AddSkill(Spawn, 641561514,1,level)
+ SendMessage(Spawn, "You are now more proficient with Rapiers")
+ end
+elseif HasSkill(Spawn, 641561514) then -- Rapier
+ RemoveSkill(Spawn, 641561514)
+end
+
+-- Spear
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN or
+
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 1616998748) then -- Spear
+ AddSkill(Spawn, 1616998748,1,level)
+ SendMessage(Spawn, "You are now more proficient with Spears")
+ end
+elseif HasSkill(Spawn, 1616998748) then -- Spear
+ RemoveSkill(Spawn, 1616998748)
+end
+
+-- Great Spear (large polearms)
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == GUARDIAN then
+
+ if not HasSkill(Spawn, 2380184628) then -- Great Spear
+ AddSkill(Spawn, 2380184628,1,level)
+ SendMessage(Spawn, "You are now more proficient with Great Spears")
+ end
+elseif HasSkill(Spawn, 2380184628) then -- Great Spear
+ RemoveSkill(Spawn, 2380184628)
+end
+
+-- Staff (2-H staves)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+
+GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER or
+
+GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER then
+
+ if not HasSkill(Spawn, 3180399725) then -- Staff
+ AddSkill(Spawn, 3180399725,1,level)
+ SendMessage(Spawn, "You are now more proficient with a Staff")
+ end
+elseif HasSkill(Spawn, 3180399725) then -- Staff
+ RemoveSkill(Spawn, 3180399725)
+end
+
+-- Sword (1-H swords)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT or
+
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 1696217328) then -- Sword
+ AddSkill(Spawn, 1696217328,1,level)
+ SendMessage(Spawn, "You are now more proficient with Swords")
+ end
+elseif HasSkill(Spawn, 1696217328) then -- Sword
+ RemoveSkill(Spawn, 1696217328)
+end
+
+-- Great Sword (2-H swords)
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT then
+
+ if not HasSkill(Spawn, 2292577688) then -- Great Sword
+ AddSkill(Spawn, 2292577688,1,level)
+ SendMessage(Spawn, "You are now more proficient with Great Swords")
+ end
+elseif HasSkill(Spawn, 2292577688) then -- Great Sword
+ RemoveSkill(Spawn, 2292577688)
+end
+
+-- Thrown Weapon (knives & shuriken)
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+
+GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+
+ if not HasSkill(Spawn, 2650425026) then -- Thrown Weapon
+ AddSkill(Spawn, 2650425026,1,level)
+ SendMessage(Spawn, "You are now more proficient with Thrown Weapons")
+ end
+elseif HasSkill(Spawn, 2650425026) then -- Thrown Weapon
+ RemoveSkill(Spawn, 2650425026)
+end
+
+end
+
+
+function ClassSkills(NPC, Spawn)
+ local level = GetLevel(Spawn)*5
+
+ -- FIGHTER SKILLS --
+
+-- Martial/Fighter
+if GetClass (Spawn) == FIGHTER or
+GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER or
+GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER or
+GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT then
+if not HasSkill(Spawn, 1408356869) then -- Martial skill
+ AddSkill(Spawn, 1408356869,1,level)
+ SendMessage(Spawn, "You have learned the Martial skill")
+elseif HasSkill(Spawn,1408356869) then
+ RemoveSkill(Spawn, 1408356869)
+end
+end
+
+
+ -- Tactics/Warrior
+if GetClass (Spawn) == WARRIOR or
+GetClass (Spawn) == GUARDIAN or
+GetClass (Spawn) == BERZERKER then
+if not HasSkill(Spawn, 1124719197) then -- Martial skill
+ AddSkill(Spawn, 1124719197,1,level)
+ SendMessage(Spawn, "You have learned the Tactics skill")
+elseif HasSkill(Spawn,1124719197) then
+ RemoveSkill(Spawn, 1124719197)
+end
+end
+
+-- Berserk/Berserker
+if GetClass (Spawn) == BERZERKER then
+if not HasSkill(Spawn, 433335062) then -- Berserk skill
+ AddSkill(Spawn, 433335062,1,level)
+ SendMessage(Spawn, "You have learned the Berserk skill")
+elseif HasSkill(Spawn,433335062) then
+ RemoveSkill(Spawn, 433335062)
+end
+end
+
+-- Protection/Guardian
+if GetClass (Spawn) == BERZERKER then
+if not HasSkill(Spawn, 1209716810) then -- Protection skill
+ AddSkill(Spawn, 1209716810,1,level)
+ SendMessage(Spawn, "You have learned the Protection skill")
+elseif HasSkill(Spawn,1209716810) then
+ RemoveSkill(Spawn, 1209716810)
+end
+end
+
+-- Brawl/Brawling
+if GetClass (Spawn) == BRAWLER or
+GetClass (Spawn) == MONK or
+GetClass (Spawn) == BRUISER then
+if not HasSkill(Spawn, 3856706740) then -- Brawl skill
+ AddSkill(Spawn, 3856706740,1,level)
+ SendMessage(Spawn, "You have learned the Brawl skill")
+elseif HasSkill(Spawn,3856706740) then
+ RemoveSkill(Spawn, 3856706740)
+end
+end
+
+-- Tranquility/Monk
+if GetClass (Spawn) == MONK then
+if not HasSkill(Spawn, 2011726342) then -- Tranquility skill
+ AddSkill(Spawn, 2011726342,1,level)
+ SendMessage(Spawn, "You have learned the Tranquility skill")
+elseif HasSkill(Spawn,2011726342) then
+ RemoveSkill(Spawn, 2011726342)
+end
+end
+
+-- Physicality/Bruiser
+if GetClass (Spawn) == BRUISER then
+if not HasSkill(Spawn, 3067436248) then -- Physicality skill
+ AddSkill(Spawn, 3067436248,1,level)
+ SendMessage(Spawn, "You have learned the Physicality skill")
+elseif HasSkill(Spawn,3067436248) then
+ RemoveSkill(Spawn, 3067436248)
+end
+end
+
+-- Faith/Crusader
+if GetClass (Spawn) == CRUSADER or
+GetClass (Spawn) == PALADIN or
+GetClass (Spawn) == SHADOWKNIGHT then
+if not HasSkill(Spawn, 3809066846) then -- Faith skill
+ AddSkill(Spawn, 3809066846,1,level)
+ SendMessage(Spawn, "You have learned the Faith skill")
+elseif HasSkill(Spawn,3809066846) then
+ RemoveSkill(Spawn, 3809066846)
+end
+end
+
+-- Determined Faith/Paladin
+if GetClass (Spawn) == PALADIN then
+if not HasSkill(Spawn, 90523872) then -- Determined Faith skill
+ AddSkill(Spawn, 90523872,1,level)
+ SendMessage(Spawn, "You have learned the Determined Faith skill")
+elseif HasSkill(Spawn,90523872) then
+ RemoveSkill(Spawn, 90523872)
+end
+end
+
+-- Determined Zeal/Shadowknight
+if GetClass (Spawn) == SHADOWKNIGHT then
+if not HasSkill(Spawn, 2741805322) then -- Determined Zeal skill
+ AddSkill(Spawn, 2741805322,1,level)
+ SendMessage(Spawn, "You have learned the Determined Zeal skill")
+elseif HasSkill(Spawn,2741805322) then
+ RemoveSkill(Spawn, 2741805322)
+end
+end
+
+ -- SCOUT SKILLS --
+
+--Reconnaissance/Scout
+if GetClass (Spawn) == SCOUT or
+GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND or
+GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE or
+GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+if not HasSkill(Spawn, 1921433074) then -- Reconnaissance skill
+ AddSkill(Spawn, 1921433074,1,level)
+ SendMessage(Spawn, "You have learned the Reconnaissance skill")
+elseif HasSkill(Spawn,1921433074) then
+ RemoveSkill(Spawn, 1921433074)
+end
+end
+
+ -- Melodies/Bard
+if GetClass (Spawn) == BARD or
+GetClass (Spawn) == TROUBADOR or
+GetClass (Spawn) == DIRGE then
+if not HasSkill(Spawn, 1311635100) then -- Melodies skill
+ AddSkill(Spawn, 1311635100,1,level)
+ SendMessage(Spawn, "You have learned the Melodies skill")
+elseif HasSkill(Spawn,1311635100) then
+ RemoveSkill(Spawn, 1311635100)
+end
+end
+
+-- Ballads/Troubador
+if GetClass (Spawn) == TROUBADOR then
+if not HasSkill(Spawn, 296246391) then -- Ballads skill
+ AddSkill(Spawn, 296246391,1,level)
+ SendMessage(Spawn, "You have learned the Ballads skill")
+elseif HasSkill(Spawn,296246391) then
+ RemoveSkill(Spawn, 296246391)
+end
+end
+
+-- Dirges/Dirge
+if GetClass (Spawn) == DIRGE then
+if not HasSkill(Spawn, 340921594) then -- Dirges skill
+ AddSkill(Spawn, 340921594,1,level)
+ SendMessage(Spawn, "You have learned the Dirges skill")
+elseif HasSkill(Spawn,340921594) then
+ RemoveSkill(Spawn, 340921594)
+end
+end
+
+-- Skulldugery/Rogue
+if GetClass (Spawn) == ROGUE or
+GetClass (Spawn) == SWASHBUCKLER or
+GetClass (Spawn) == BRIGAND then
+if not HasSkill(Spawn, 1514256692) then -- Skulldugery skill
+ AddSkill(Spawn, 1514256692,1,level)
+ SendMessage(Spawn, "You have learned the Skulldugery skill")
+elseif HasSkill(Spawn,1514256692) then
+ RemoveSkill(Spawn, 1514256692)
+end
+end
+
+-- Swashbuckling/Swashbuckler
+if GetClass (Spawn) == SWASHBUCKLER then
+if not HasSkill(Spawn, 2663054519) then -- Swashbuckling skill
+ AddSkill(Spawn, 2663054519,1,level)
+ SendMessage(Spawn, "You have learned the Swashbuckling skill")
+elseif HasSkill(Spawn,2663054519) then
+ RemoveSkill(Spawn, 2663054519)
+end
+end
+
+-- Banditry/Brigand
+if GetClass (Spawn) == BRIGAND then
+if not HasSkill(Spawn, 1519965519) then -- Banditry skill
+ AddSkill(Spawn, 1519965519,1,level)
+ SendMessage(Spawn, "You have learned the Banditry skill")
+elseif HasSkill(Spawn,1519965519) then
+ RemoveSkill(Spawn, 1519965519)
+end
+end
+
+-- Stalking/Predator
+if GetClass (Spawn) == PREDATOR or
+GetClass (Spawn) == RANGER or
+GetClass (Spawn) == ASSASSIN then
+if not HasSkill(Spawn, 3167106577) then -- Stalking skill
+ AddSkill(Spawn, 3167106577,1,level)
+ SendMessage(Spawn, "You have learned the Stalking skill")
+elseif HasSkill(Spawn,3167106577) then
+ RemoveSkill(Spawn, 3167106577)
+end
+end
+
+-- Archery/Ranger
+if GetClass (Spawn) == RANGER then
+if not HasSkill(Spawn, 1400160844) then -- Archery skill
+ AddSkill(Spawn, 1400160844,1,level)
+ SendMessage(Spawn, "You have learned the Archery skill")
+elseif HasSkill(Spawn,1400160844) then
+ RemoveSkill(Spawn, 1400160844)
+end
+end
+
+-- Assassination Zeal/Assassin
+if GetClass (Spawn) == ASSASSIN then
+if not HasSkill(Spawn, 2711101135) then -- Assassination skill
+ AddSkill(Spawn, 2711101135,1,level)
+ SendMessage(Spawn, "You have learned the Assassination skill")
+elseif HasSkill(Spawn,2711101135) then
+ RemoveSkill(Spawn, 2711101135)
+end
+end
+
+ -- MAGE SKILLS --
+
+-- Evocations/Mage
+if GetClass (Spawn) == MAGE or
+GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK or
+GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER or
+GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER then
+if not HasSkill(Spawn, 3820670534) then -- Evocations skill
+ AddSkill(Spawn, 3820670534,1,level)
+ SendMessage(Spawn, "You have learned the Evocations skill")
+elseif HasSkill(Spawn,3820670534) then
+ RemoveSkill(Spawn, 3820670534)
+end
+end
+
+
+ -- Sorcery/Sorcerer
+if GetClass (Spawn) == SORCERER or
+GetClass (Spawn) == WIZARD or
+GetClass (Spawn) == WARLOCK then
+if not HasSkill(Spawn, 2533124061) then -- Sorcery skill
+ AddSkill(Spawn, 2533124061,1,level)
+ SendMessage(Spawn, "You have learned the Sorcery skill")
+elseif HasSkill(Spawn,2533124061) then
+ RemoveSkill(Spawn, 2533124061)
+end
+end
+
+-- Elemental Mastery/Wizard
+if GetClass (Spawn) == WIZARD then
+if not HasSkill(Spawn, 2662430630) then -- Elemental Mastery skill
+ AddSkill(Spawn, 2662430630,1,level)
+ SendMessage(Spawn, "You have learned the Elemental Mastery skill")
+elseif HasSkill(Spawn,2662430630) then
+ RemoveSkill(Spawn, 2662430630)
+end
+end
+
+-- Noctivagance/Warlock
+if GetClass (Spawn) == WARLOCK then
+if not HasSkill(Spawn, 193411854) then -- Noctivagance skill
+ AddSkill(Spawn, 193411854,1,level)
+ SendMessage(Spawn, "You have learned the Noctivagance skill")
+elseif HasSkill(Spawn,193411854) then
+ RemoveSkill(Spawn, 193411854)
+end
+end
+
+
+-- Enchantments/Enchanter
+if GetClass (Spawn) == ENCHANTER or
+GetClass (Spawn) == ILLUSIONIST or
+GetClass (Spawn) == COERCER then
+if not HasSkill(Spawn, 287643040) then -- Enchantments skill
+ AddSkill(Spawn, 287643040,1,level)
+ SendMessage(Spawn, "You have learned the Enchantments skill")
+elseif HasSkill(Spawn,287643040) then
+ RemoveSkill(Spawn, 287643040)
+end
+end
+
+-- Hallucinations/Illusionist
+if GetClass (Spawn) == ILLUSIONIST then
+if not HasSkill(Spawn, 2898101972) then -- Hallucinations skill
+ AddSkill(Spawn, 2898101972,1,level)
+ SendMessage(Spawn, "You have learned the Hallucinations skill")
+elseif HasSkill(Spawn,2898101972) then
+ RemoveSkill(Spawn, 2898101972)
+end
+end
+
+-- Protean/Coecerer
+if GetClass (Spawn) == COERCER then
+if not HasSkill(Spawn, 3067436248) then -- Protean skill
+ AddSkill(Spawn, 3067436248,1,level)
+ SendMessage(Spawn, "You have learned the Protean skill")
+elseif HasSkill(Spawn,3067436248) then
+ RemoveSkill(Spawn, 3067436248)
+end
+end
+
+-- Legerdemain/Summoner
+if GetClass (Spawn) == SUMMONER or
+GetClass (Spawn) == CONJUROR or
+GetClass (Spawn) == NECROMANCER then
+if not HasSkill(Spawn, 2120065377) then -- Legerdemain skill
+ AddSkill(Spawn, 2120065377,1,level)
+ SendMessage(Spawn, "You have learned the Legerdemain skill")
+elseif HasSkill(Spawn,2120065377) then
+ RemoveSkill(Spawn, 2120065377)
+end
+end
+
+-- Conjurations/Conjuror
+if GetClass (Spawn) == CONJUROR then
+if not HasSkill(Spawn, 2042842194) then -- Conjurations skill
+ AddSkill(Spawn, 2042842194,1,level)
+ SendMessage(Spawn, "You have learned the Conjurations skill")
+elseif HasSkill(Spawn,2042842194) then
+ RemoveSkill(Spawn, 2042842194)
+end
+end
+
+-- Sepulchers/Necromancer
+if GetClass (Spawn) == NECROMANCER then
+if not HasSkill(Spawn, 289471519) then -- Sepulchers skill
+ AddSkill(Spawn, 289471519,1,level)
+ SendMessage(Spawn, "You have learned the Sepulchers skill")
+elseif HasSkill(Spawn,289471519) then
+ RemoveSkill(Spawn, 289471519)
+end
+end
+
+ -- PRIEST SKILLS --
+
+-- Inspirations/Priest
+if GetClass (Spawn) == PRIEST or
+GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR or
+GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY or
+GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER then
+if not HasSkill(Spawn, 2463145248) then -- Inspirations skill
+ AddSkill(Spawn, 2463145248,1,level)
+ SendMessage(Spawn, "You have learned the Inspirations skill")
+elseif HasSkill(Spawn,2463145248) then
+ RemoveSkill(Spawn, 2463145248)
+end
+end
+
+
+ -- Theurgy/Cleric
+if GetClass (Spawn) == CLERIC or
+GetClass (Spawn) == TEMPLAR or
+GetClass (Spawn) == INQUISITOR then
+if not HasSkill(Spawn, 2533124061) then -- Theurgy skill
+ AddSkill(Spawn, 2533124061,1,level)
+ SendMessage(Spawn, "You have learned the Theurgy skill")
+elseif HasSkill(Spawn,2533124061) then
+ RemoveSkill(Spawn, 2533124061)
+end
+end
+
+-- Regimens/Templar
+if GetClass (Spawn) == TEMPLAR then
+if not HasSkill(Spawn, 2581053277) then -- Regimens skill
+ AddSkill(Spawn, 2581053277,1,level)
+ SendMessage(Spawn, "You have learned the Regimens skill")
+elseif HasSkill(Spawn,2581053277) then
+ RemoveSkill(Spawn, 2581053277)
+end
+end
+
+-- Inquisitions/Inquisitor
+if GetClass (Spawn) == INQUISITOR then
+if not HasSkill(Spawn, 1829443087) then -- Inquisitions skill
+ AddSkill(Spawn, 1829443087,1,level)
+ SendMessage(Spawn, "You have learned the Inquisitions skill")
+elseif HasSkill(Spawn,1829443087) then
+ RemoveSkill(Spawn, 1829443087)
+end
+end
+
+
+-- Archegenesis/Druid
+if GetClass (Spawn) == DRUID or
+GetClass (Spawn) == WARDEN or
+GetClass (Spawn) == FURY then
+if not HasSkill(Spawn, 3282420779) then -- Archegenesis skill
+ AddSkill(Spawn, 3282420779,1,level)
+ SendMessage(Spawn, "You have learned the Archegenesis skill")
+elseif HasSkill(Spawn,3282420779) then
+ RemoveSkill(Spawn, 3282420779)
+end
+end
+
+-- Nature's Refuge/Warden
+if GetClass (Spawn) == WARDEN then
+if not HasSkill(Spawn, 1040683335) then -- Nature's Refuge skill
+ AddSkill(Spawn, 1040683335,1,level)
+ SendMessage(Spawn, "You have learned the Nature's Refuge skill")
+elseif HasSkill(Spawn,1040683335) then
+ RemoveSkill(Spawn, 1040683335)
+end
+end
+
+-- Nature's Reckoning/Fury
+if GetClass (Spawn) == FURY then
+if not HasSkill(Spawn, 1624274802) then -- Nature's Reckoning skill
+ AddSkill(Spawn, 1624274802,1,level)
+ SendMessage(Spawn, "You have learned the Nature's Reckoning skill")
+elseif HasSkill(Spawn,1624274802) then
+ RemoveSkill(Spawn, 1624274802)
+end
+end
+
+-- Talismans/Shaman
+if GetClass (Spawn) == SHAMAN or
+GetClass (Spawn) == MYSTIC or
+GetClass (Spawn) == DEFILER then
+if not HasSkill(Spawn, 2120065377) then -- Talismans skill
+ AddSkill(Spawn, 2120065377,1,level)
+ SendMessage(Spawn, "You have learned the Talismans skill")
+elseif HasSkill(Spawn,2120065377) then
+ RemoveSkill(Spawn, 2120065377)
+end
+end
+
+-- Fetichisms/Mystic
+if GetClass (Spawn) == MYSTIC then
+if not HasSkill(Spawn, 3467160477) then -- Fetichisms skill
+ AddSkill(Spawn, 3467160477,1,level)
+ SendMessage(Spawn, "You have learned the Fetichisms skill")
+elseif HasSkill(Spawn,3467160477) then
+ RemoveSkill(Spawn, 3467160477)
+end
+end
+
+-- Vehemence/Defiler
+if GetClass (Spawn) == DEFILER then
+if not HasSkill(Spawn, 3191839982) then -- Vehemence skill
+ AddSkill(Spawn, 3191839982,1,level)
+ SendMessage(Spawn, "You have learned the Vehemence skill")
+elseif HasSkill(Spawn,3191839982) then
+ RemoveSkill(Spawn, 3191839982)
+end
+end
+
+end
+
+
+--[[
+if not HasSkill(Spawn, 1852383242) then -- Dual Wield
+ AddSkill(Spawn, 1852383242,1,level)
+ SendMessage(Spawn, "You have learned the Dual Wield skill")
+end]]--
+
diff --git a/server/SpawnScripts/Generic/ClassSkillCheckNew.lua b/server/SpawnScripts/Generic/ClassSkillCheckNew.lua
new file mode 100755
index 000000000..28188e843
--- /dev/null
+++ b/server/SpawnScripts/Generic/ClassSkillCheckNew.lua
@@ -0,0 +1,317 @@
+--[[
+ Script Name : SpawnScripts/Generic/ClassSkillCheck.lua
+ Script Author : Dorbin & Neveruary
+ Script Date : 2023.05.23 12:05:54
+ Script Purpose : Check & re-check skills for classic choices below level 10.
+ Script Notes : Re-wrote function to use table loops instead of multiple if statements.
+--]]
+
+fighterSkills = {
+Martial = 1408356869,
+Crushing = 3421494576,
+Slashing = 418532101,
+["Dual Wield"] = 1852383242,
+Focus = 2638198038
+}
+priestSkills = {
+Inspirations = 2463145248,
+Crushing = 3421494576,
+Disruption = 613995491,
+Ministration = 366253016,
+Ordination = 3587918036,
+Subjugation = 882983852,
+Focus = 2638198038
+}
+mageSkills = {
+Evocations = 3820670534,
+Piercing = 3048574950,
+Crushing = 3421494576,
+Disruption = 613995491,
+Ministration = 366253016,
+Ordination = 3587918036,
+Subjugation = 882983852,
+Focus = 2638198038
+}
+scoutSkills = {
+Reconnaissance = 1921433074,
+Tracking = 1468243427,
+["Disarm Trap"] = 2200201799,
+Ranged = 1756482397,
+Piercing = 3048574950,
+Slashing = 418532101,
+["Dual Wield"] = 1852383242,
+["Thrown Weapon"] = 2650425026,
+Focus = 2638198038
+}
+fighterWeapons = {
+["Light Armor"] = 2897193374,
+Buckler = 4037812502,
+Roundshield = 3173504370,
+Axe = 2476073427,
+["Great Axe"] = 2954459351,
+Sword = 1696217328,
+["Great Sword"] = 2292577688,
+Mace = 770311065,
+Hammer = 554333641,
+["Great Hammer"] = 1653482350,
+Staff = 3180399725
+}
+priestWeapons = {
+Buckler = 4037812502,
+Symbol = 545043066,
+Mace = 770311065,
+Hammer = 554333641,
+["Great Hammer"] = 1653482350,
+Staff = 3180399725
+}
+mageWeapons = {
+Buckler = 4037812502,
+Symbol = 545043066,
+Dagger = 887279616,
+Staff = 3180399725
+}
+scoutWeapons = {
+["Light Armor"] = 2897193374,
+Buckler = 4037812502,
+Roundshield = 3173504370,
+Spear = 1616998748,
+Dagger = 887279616,
+Bow = 1743366740,
+Axe = 2476073427,
+Mace = 770311065,
+Rapier = 641561514,
+Sword = 1696217328
+}
+fighterRemovedWeapons = {
+887279616, --Dagger
+570458645, --Tower Shield
+3048574950, --Piercing
+1756482397, --Ranged
+540022425, --Parry
+1743366740, --Bow
+2650425026, --Thrown Weapon
+366253016, --Ministration
+613995491, --Disruption
+882983852, --Subjigation
+3587918036 --Ordination
+}
+priestRemovedWeapons = {
+2897193374, --Light Armor
+887279616, --Dagger
+1696217328, --Sword
+2292577688, --Great Sword
+2476073427, --Axe
+2954459351, --Great Axe
+1616998748, --Spear
+1653482350, --Great Spear
+3173504370, --Roundshield
+570458645, --Tower Shield
+3048574950, --Piercing
+1756482397, --Ranged
+1743366740, --Bow
+2650425026 --Thrown Weapon
+}
+mageRemovedWeapons = {
+2897193374, --Light Armor
+554333641, --Hammer
+1653482350, --Great Hammer
+1696217328, --Sword
+2292577688, --Great Sword
+2476073427, --Axe
+2954459351, --Great Axe
+1616998748, --Spear
+1653482350, --Great Spear
+3173504370, --Roundshield
+570458645, --Tower Shield
+3048574950, --Piercing
+1756482397, --Ranged
+1743366740, --Bow
+2650425026 --Thrown Weapon
+}
+scoutRemovedWeapons = {
+2292577688, --Great Sword
+2954459351, --Great Axe
+1616998748, --Spear
+1653482350, --Great Spear
+570458645, --Tower Shield
+366253016, --Ministration
+613995491, --Disruption
+882983852, --Subjigation
+3587918036 --Ordination
+}
+removedSkills = {
+1124719197, --Tactics/Warrior
+433335062, --Berserk/Berserker
+1209716810, --Protection/Guardian
+3856706740, --Brawl/Brawling
+2011726342, --Tranquility/Monk
+3067436248, --Physicality/Bruiser
+3809066846, --Faith/Crusader
+90523872, --Determined Faith/Paladin
+2741805322, --Determined Zeal/Shadowknight
+1311635100, --Melodies/Bard
+296246391, --Ballads/Troubador
+340921594, --Dirges/Dirge
+1514256692, --Skulldugery/Rogue
+2663054519, --Swashbuckling/Swashbuckler
+1519965519, --Banditry/Brigand
+3167106577, --Stalking/Predator
+1400160844, --Archery/Ranger
+2711101135, --Assassination/Assassin
+3341842907, --Theurgy/Cleric
+2581053277, --Regimens/Templar
+1829443087, --Inquisitions/Inquisitor
+3282420779, --Archegenesis/Druid
+1624274802, --Nature's Reckoning/Fury
+1040683335, --Nature's Refuge/Warden
+3343700951, --Talismans/Shaman
+3467160477, --Fetichisms/Mystic
+3191839982, --Vehemence/Defiler
+287643040, --Enchantments/Enchanter
+2898101972, --Hallucinations/Illusionist
+2950599749, --Protean/Coecerer
+2533124061, --Sorcery/Sorcerer
+2662430630, --Elemental Mastery/Wizard
+193411854, --Noctivagance/Warlock
+2120065377, --Legerdemain/Summoner
+2042842194, --Conjurations/Conjurer
+289471519, --Sepulchers/Necromancer
+1553857724, --Investigation
+3429135390, --Mystical Destruction
+2246237129, --Medium Armor
+241174330, --Heavy Armor
+3177806075, --Fists
+2608320658, --Kite Shield
+570458645, --Tower Shield
+540022425 --Parry
+}
+harvestingSkills = {
+1970131346, --Transmuting
+3659699625, --Mining
+688591146, --Foresting
+1048513601, --Gathering
+4158365743, --Trapping
+2319450178 --Fishing
+}
+
+function hailed(NPC, Spawn)
+ changeSkills(NPC, Spawn)
+end
+
+function changeSkills(NPC, Spawn)
+ local level = GetLevel(Spawn)*5
+ local class = GetClass(Spawn)
+ --FIGHTER
+ if class == 1 then -- fighter value
+ Say(NPC,"Starting Skill Check for Fighter")
+ RemoveSkill(Spawn, 2463145248) -- Inspirations/Priest
+ RemoveSkill(Spawn, 3820670534) -- Evocations/Mage
+ RemoveSkill(Spawn, 1921433074) -- Reconnaissance/Scout
+ RemoveSkill(Spawn, 2200201799) -- Disarm Trap
+
+ for k,v in ipairs(fighterSkills) do
+ SendMessage(Spawn, "Skill ID: " .. v .. ", Level: " .. level, "yellow")
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You have learned the " .. k .. " skill")
+ SendMessage(Spawn,"You have learned the " .. k .. " skill")
+ end
+ end
+ for k,v in ipairs(fighterWeapons) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v,1, level)
+ DisplayText(Spawn, 34, "You are now more proficient with a " .. k)
+ SendMessage(Spawn,"You are now more proficient with a " .. k)
+ end
+ end
+ for k,v in ipairs(fighterRemovedWeapons) do
+ RemoveSkill(Spawn, v)
+ end
+ --PRIEST
+ elseif class == 11 then -- priest value
+ Say(NPC,"Starting Skill Check for Priest")
+ RemoveSkill(Spawn, 1408356869) -- Martial/Fighter
+ RemoveSkill(Spawn, 3820670534) -- Evocations/Mage
+ RemoveSkill(Spawn, 1921433074) -- Reconnaissance/Scout
+ RemoveSkill(Spawn, 2200201799) -- Disarm Trap
+ for k,v in ipairs(priestSkills) do
+ SendMessage(Spawn, "Skill ID: " .. v .. ", Level: " .. level, "yellow")
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You have learned the " .. k .. " skill")
+ SendMessage(Spawn,"You have learned the " .. k .. " skill")
+ end
+ end
+ for k,v in ipairs(priestWeapons) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You are now more proficient with a " .. k)
+ SendMessage(Spawn,"You are now more proficient with a " .. k)
+ end
+ end
+ for k,v in ipairs(priestRemovedWeapons) do
+ RemoveSkill(Spawn, v)
+ end
+
+ --MAGE
+ elseif class == 21 then -- mage value
+ Say(NPC,"Starting Skill Check for Mage")
+ RemoveSkill(Spawn, 1921433074) -- Reconnaissance/Scout
+ RemoveSkill(Spawn, 1408356869) -- Martial/Fighter
+ RemoveSkill(Spawn, 2463145248) -- Inspirations/Priest
+ RemoveSkill(Spawn, 2200201799) -- Disarm Trap
+ for k,v in ipairs(mageSkills) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You have learned the " .. k .. " skill")
+ SendMessage(Spawn,"You have learned the " .. k .. " skill")
+ end
+ end
+ for k,v in ipairs(mageWeapons) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You are now more proficient with a " .. k)
+ SendMessage(Spawn,"You are now more proficient with a " .. k)
+ end
+ end
+ for k,v in ipairs(mageRemovedWeapons) do
+ RemoveSkill(Spawn, v)
+ end
+
+ --SCOUT
+ elseif class == 31 then -- scout value
+ Say(NPC,"Starting Skill Check for Scout")
+ RemoveSkill(Spawn, 1408356869) -- Martial/Fighter
+ RemoveSkill(Spawn, 2463145248) -- Inspirations/Priest
+ RemoveSkill(Spawn, 3820670534) -- Evocations/Mage
+ for k,v in ipairs(scoutSkills) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You have learned the " .. k .. " skill")
+ SendMessage(Spawn,"You have learned the " .. k .. " skill")
+ end
+ end
+ for k,v in ipairs(scoutWeapons) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v, 1, level)
+ DisplayText(Spawn, 34, "You are now more proficient with a " .. k)
+ SendMessage(Spawn,"You are now more proficient with a " .. k)
+ end
+ end
+ for k,v in ipairs(scoutRemovedWeapons) do
+ RemoveSkill(Spawn, v)
+ end
+ else
+ Say(NPC, "Classic class not detected. Stopping.")
+ end
+
+ --ADD HARVESTING & REMOVE SUBCLASSES
+ for k,v in ipairs(harvestingSkills) do
+ if not HasSkill(Spawn, v) then
+ AddSkill(Spawn, v,1,level)
+ end
+ end
+ for k,v in ipairs(removedSkills) do
+ RemoveSkill(Spawn, v)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/CombatModule.lua b/server/SpawnScripts/Generic/CombatModule.lua
new file mode 100755
index 000000000..c8d02c232
--- /dev/null
+++ b/server/SpawnScripts/Generic/CombatModule.lua
@@ -0,0 +1,272 @@
+--[[
+ Script Name : SpawnScripts/Generic/CombatModule.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.19 08:09:17
+ Script Purpose : Base Population Combat Common Features
+ :
+--]]
+
+GlobalDmgMod = 1.0 -- Global Damage Multiplier- make global adjustments to all NPC autoattack damage.
+globalStatMod = 1.0 -- Global Attribute Multiplier- make global adjustments to NPC attribute scores.
+
+
+function combatModule(NPC, Spawn)
+ level = GetLevel(NPC) -- NPC Level
+ difficulty = GetDifficulty(NPC) -- NPC Difficulty || Function in testing phase, default to 6 if necessary.
+ levelSwitch(NPC)
+ regen(NPC)
+ attributes(NPC)
+
+end
+
+--Determine damage function based on NPC level.
+function levelSwitch(NPC, Spawn)
+ if level <= 3 then
+ TierOneA(NPC)
+ elseif level >= 4 and level <= 5 then
+ TierOneB(NPC)
+ elseif level >= 6 and level <= 9 then
+ TierOneC(NPC)
+ elseif level >= 10 and level <= 15 then
+ TierTwoA(NPC)
+ elseif level >= 16 and level <= 19 then
+ TierTwoB(NPC)
+ elseif level >= 20 and level <= 24 then
+ TierThreeA(NPC)
+ elseif level >= 25 and level <= 29 then
+ TierThreeB(NPC)
+ end
+end
+
+
+
+-- Set attributes based on NPC level and difficulty
+function attributes(NPC, Spawn)
+ -- Calculate attributes
+ if level <= 4 then
+ baseStat = 19 else
+ baseStat = level + 15
+ end
+
+ local low = baseStat - 15 -- Difficulty 1-3 vvv
+ local four = baseStat - 10 -- Difficulty 4 vv
+ local five = baseStat - 5 -- Difficulty 5 v
+ local seven = baseStat + 10 -- Difficulty 7 ^
+ local eight = baseStat + 15 -- Difficulty 8 ^^
+ local nine = baseStat + 20 -- Difficulty 9 ^^^
+
+ lowStat = math.floor(low * globalStatMod)
+ fourStat = math.floor(four * globalStatMod)
+ fiveStat = math.floor(five * globalStatMod)
+ sixStat = math.floor(baseStat * globalStatMod)
+ sevenStat = math.floor(seven * globalStatMod)
+ eightStat = math.floor(eight * globalStatMod)
+ nineStat = math.floor(nine * globalStatMod)
+
+ -- Determine attribute by difficulty
+ if difficulty <= 3 then
+ finalStat = lowStat
+ elseif difficulty == 4 then
+ finalStat = fourStat
+ elseif difficulty == 5 then
+ finalStat = fiveStat
+ elseif difficulty == 6 then
+ finalStat = sixStat
+ elseif difficulty == 7 then
+ finalStat = sevenStat
+ elseif difficulty == 8 then
+ finalStat = eightStat
+ elseif difficulty == 9 then
+ finalStat = nineStat
+ end
+
+
+ SetInfoStructFloat(NPC, "str", finalStat)
+ SetStrBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "agi", finalStat)
+ SetAgiBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "sta", finalStat)
+ SetStaBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "intel", finalStat)
+ SetIntBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "wis", finalStat)
+ SetWisBase(NPC, finalStat)
+
+end
+
+
+
+--Health and power regeneration rates
+function regen(NPC, Spawn)
+
+ -- In-combat health regeneration
+ SetInfoStructUInt(NPC, "hp_regen_override", 1) -- Set to 0 to disable and allow the server to set the regen rate.
+ SetInfoStructSInt(NPC, "hp_regen", 0) -- Set Regen Amount. Default 0
+
+ -- In-combat power regeneration
+ SetInfoStructUInt(NPC, "pw_regen_override", 1) -- Set to 0 to disable and allow the server to set the regen rate.
+ SetInfoStructSInt(NPC, "pw_regen", 0) -- Set Regen Amount. Default 0
+
+end
+
+
+--Damage functions based on NPC level range.
+
+--Level 1-3
+function TierOneA(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10 -- Strength-based damage bonus for autoattack damage.
+ lowDmg = math.floor(0 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1) -- Enables override of server autoattack damage. Set to 0 to allow server to set damage.
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+end
+
+
+--Level 4-5
+function TierOneB(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10
+ if difficulty <=4 then --
+ lowDmg = math.floor(1 * GlobalDmgMod + dmgMod)
+ highDmg =math.floor(2 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(1 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(3 * GlobalDmgMod + dmgMod)
+ elseif difficulty >=6 and difficulty <=9 then
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(4 * GlobalDmgMod + dmgMod)
+ end
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+end
+
+
+--Level 6-9
+function TierOneC(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10
+ if difficulty <=4 then -- 1-3 dif 1-4
+ lowDmg = math.floor(1 * GlobalDmgMod + dmgMod)
+ highDmg =math.floor(3 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 5 then -- 2-4 dif 5
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(4 * GlobalDmgMod + dmgMod)
+ elseif difficulty ==6 then -- 2-7 damage- Dif 6
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(7 * GlobalDmgMod + dmgMod)
+ elseif difficulty >=7 then -- 2-7 damage- Dif 7+
+ lowDmg = math.floor(5 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(10 * GlobalDmgMod + dmgMod)
+ end
+
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+end
+
+
+--Level 10-15
+function TierTwoA(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10
+ if difficulty <=4 then
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg =math.floor(4 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(7 * GlobalDmgMod + dmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(6 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(15 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(8 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(17 * GlobalDmgMod + dmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(12 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + dmgMod)
+ end
+
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+end
+
+
+--Level 16-19
+function TierTwoB(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10
+ if difficulty <=4 then
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg =math.floor(7 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(6 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(15 * GlobalDmgMod + dmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(12 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(18 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(32 * GlobalDmgMod + dmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(25 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(55 * GlobalDmgMod + dmgMod)
+ end
+
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+
+end
+
+--Level 20-24
+function TierThreeA(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10
+ if difficulty <=4 then
+ lowDmg = math.floor(2 * GlobalDmgMod + dmgMod)
+ highDmg =math.floor(7 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(6 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(15 * GlobalDmgMod + dmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(12 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(18 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(32 * GlobalDmgMod + dmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(25 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(55 * GlobalDmgMod + dmgMod)
+ end
+
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+
+end
+
+--Level 25-29
+function TierThreeB(NPC, Spawn)
+ local dmgMod =GetStr(NPC)/10
+ if difficulty <=4 then
+ lowDmg = math.floor(6 * GlobalDmgMod + dmgMod)
+ highDmg =math.floor(15 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(12 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + dmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(20 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(35 * GlobalDmgMod + dmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(18 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(32 * GlobalDmgMod + dmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(35 * GlobalDmgMod + dmgMod)
+ highDmg = math.floor(75 * GlobalDmgMod + dmgMod)
+ end
+
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+
+end
+
+
diff --git a/server/SpawnScripts/Generic/EquipmentModule.lua b/server/SpawnScripts/Generic/EquipmentModule.lua
new file mode 100644
index 000000000..84e3544ea
--- /dev/null
+++ b/server/SpawnScripts/Generic/EquipmentModule.lua
@@ -0,0 +1,256 @@
+--[[
+ Script Name : SpawnScripts/Generic/EquipmentModule.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.08 05:01:52
+ Script Purpose : Equipment Appearance Presets for NPCModule
+ :
+--]]
+
+function RandomWeapons(NPC, Spawn) --randomize weapons based on class
+ local class = GetClass(NPC)
+ if class >= 1 and class <= 4 then
+ RandomFighterWeapons(NPC)
+ elseif class >= 5 and class <=7 then
+ RandomBrawlerWeapons(NPC)
+ elseif class >= 8 and class <= 10 then
+ RandomFighterWeapons(NPC)
+ elseif class >= 11 and class <= 20 then
+ RandomPriestWeapons(NPC)
+ elseif class >= 21 and class <= 30 then
+ RandomMageWeapons(NPC)
+ elseif class >= 31 and class <= 40 then
+ RandomScoutWeapons(NPC)
+ else
+ RandomFighterWeapons(NPC)
+ end
+end
+
+function RandomFighterWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,10)
+ if weapon == 1 then
+ SetEquipment(NPC, 0, 2228, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, 0, 2237, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, 0, 2240, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, 0, 2296, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 5 then
+ SetEquipment(NPC, 0, 2319, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 6 then
+ SetEquipment(NPC, 0, 2548, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 7 then
+ SetEquipment(NPC, 0, 3242, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 8 then
+ SetEquipment(NPC, 0, 2282, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 9 then
+ SetEquipment(NPC, 0, 2409, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 10 then
+ SetEquipment(NPC, 0, 2240, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function RandomPriestWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,6)
+ if weapon == 1 then
+ SetEquipment(NPC, 0, 3292, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, 0, 3843, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, 0, 2324, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, 0, 2287, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 5 then
+ SetEquipment(NPC, 0, 2516, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 6 then
+ SetEquipment(NPC, 0, 2396, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function RandomMageWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,4)
+ if weapon == 1 then
+ SetEquipment(NPC, 1, 3642, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 or weapon == 3 then
+ SetEquipment(NPC, 1, 2426, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, 1, 3675, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function RandomScoutWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,3)
+ if weapon == 1 then
+ SetEquipment(NPC, 0, 2264, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 2264, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, 0, 2312, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 2312, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, 0, 3286, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3286, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function RandomBrawlerWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,4)
+ if weapon == 1 then
+ SetEquipment(NPC, 0, 2536, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 2536, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, 0, 2534, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 2534, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, 0, 2274, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 2274, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, 0, 3290, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 1, 3290, 255, 255, 255, 255, 255, 255)
+ end
+end
+
+function OrcArmorCommon(NPC, Spawn)
+ RandomWeapons(NPC)
+ local mismatch = MakeRandomInt(1,5)
+ if mismatch == 1 then
+ SetEquipment(NPC, 7, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 1080, 255, 255, 255, 255, 255, 255)
+ elseif mismatch ==2 then
+ SetEquipment(NPC, 7, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 1080, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 1079, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 3 then
+ SetEquipment(NPC, 7, 1084, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 4 then
+ SetEquipment(NPC, 7, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 1080, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 2, 1083, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 1079, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 5 then
+ SetEquipment(NPC, 7, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 1080, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 1079, 255, 255, 255, 255, 255, 255)
+ end
+end
+
+function GhostOrcArmorCommon(NPC, Spawn)
+ local mismatch = MakeRandomInt(1,5)
+ if mismatch == 1 then
+ SetEquipment(NPC, 7, 3747, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 3744, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 3743, 255, 255, 255, 255, 255, 255)
+ elseif mismatch ==2 then
+ SetEquipment(NPC, 7, 3747, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 3744, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 3743, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 3742, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 3 then
+ SetEquipment(NPC, 7, 3747, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 4 then
+ SetEquipment(NPC, 7, 3747, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 3744, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 3743, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 2, 3746, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 3742, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 5 then
+ SetEquipment(NPC, 7, 3747, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 3743, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 3742, 255, 255, 255, 255, 255, 255)
+ end
+end
+
+function FreeportGuard(NPC, Spawn)
+ SetEquipment(NPC, 0, 2261, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 2, 932, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 928, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 4, 934, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 930, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 6, 931, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 933, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 929, 255, 255, 255, 255, 255, 255)
+end
+
+function QeynosGuard(NPC, Spawn)
+ SetEquipment(NPC, 0, 3245, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 2, 713, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 3, 709, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 4, 715, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 711, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 6, 712, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 714, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 710, 255, 255, 255, 255, 255, 255)
+end
+
+function OrcChainCommon(NPC, Spawn)
+ SetEquipment(NPC, 3, 875, 50, 50, 50, 50, 50, 50)
+ SetEquipment(NPC, 5, 877, 50, 50, 50, 50, 50, 50)
+ SetEquipment(NPC, 7, 880, 50, 50, 50, 50, 50, 50)
+ SetEquipment(NPC, 8, 876, 50, 50, 50, 50, 50, 50)
+end
+
+function TradesmanLow(NPC, Spawn)
+ local gender = GetGender(NPC)
+ if gender == 1 then
+ SetEquipment(NPC, 3, 1873, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 1874, 255, 255, 255, 255, 255, 255)
+ elseif gender == 2 then
+ SetEquipment(NPC, 3, 2507, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 2508, 255, 255, 255, 255, 255, 255)
+ end
+ SetEquipment(NPC, 8, 1000, 255, 255, 255, 255, 255, 255)
+end
+
+function Beggar(NPC, Spawn)
+ SetEquipment(NPC, 3, 5529, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 5530, 255, 255, 255, 255, 255, 255)
+end
+
+function DervishChain(NPC, Spawn)
+ RandomWeapons(NPC)
+ SetEquipment(NPC, 3, 867, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 869, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 6, 870, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 872, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 868, 255, 255, 255, 255, 255, 255)
+end
+
+function DervishLeather(NPC, Spawn)
+ RandomWeapons(NPC)
+ SetEquipment(NPC, 3, 1079, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 6, 1082, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 1080, 255, 255, 255, 255, 255, 255)
+end
+
+function DervishRobe(NPC, Spawn)
+ RandomWeapons(NPC)
+ SetEquipment(NPC, 3, 782, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 2, 791, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 6,424, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 790, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 470, 255, 255, 255, 255, 255, 255)
+end
+
+function DervishThug(NPC, Spawn)
+ RandomWeapons(NPC)
+ SetEquipment(NPC, 3, 859, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 5, 861, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 6, 862, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 7, 864, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, 8, 860, 255, 255, 255, 255, 255, 255)
+end
diff --git a/server/SpawnScripts/Generic/ExpelNonCitizen.lua b/server/SpawnScripts/Generic/ExpelNonCitizen.lua
index 6141e66ed..891e7fb87 100755
--- a/server/SpawnScripts/Generic/ExpelNonCitizen.lua
+++ b/server/SpawnScripts/Generic/ExpelNonCitizen.lua
@@ -5,11 +5,20 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
function NonCitizen(NPC,Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then--CLASS ADVANCEMENT QUEST CHECK
+ ClassCheck(NPC,Spawn)
+ end
+end
+
Qfaction = GetFactionAmount(Spawn,11)
FPfaction = GetFactionAmount(Spawn,12)
- local zone = GetZone(NPC)
+ local invul = IsInvulnerable(Spawn)
+
+ local zone = GetZone(NPC)
if GetZoneID(zone) >= 220 and GetZoneID(zone) <= 238 then -- clarifies which zone is designated EVIL or GOOD
GOOD = true
elseif GetZoneID(zone) == 207 then
@@ -28,21 +37,41 @@ function NonCitizen(NPC,Spawn)
EVIL = true
end
- if GOOD and GetFactionAmount(Spawn,11) >0 then
- if not HasCompletedQuest(Spawn,5718) and not HasCompletedQuest(Spawn,5719) and not HasCompletedQuest(Spawn,5720) and not HasCompletedQuest(Spawn,5721) and not HasCompletedQuest(Spawn,5722) and not HasCompletedQuest(Spawn,5723) then
+ if GOOD and GetFactionAmount(Spawn,11) >0 and invul == false then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and --CITIZENSHIP TRIALS
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723) then
+ if GetClass(Spawn) ==1 or GetClass(Spawn)==11 or GetClass(Spawn)==21 or GetClass(Spawn)==31 then --CLASS(Archetype) CHECK. THESE ARE POSSIBLE REFUGEES.
+
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1) -- Enables override of server autoattack damage. Set to 0 to allow server to set damage.
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 0)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 0)
+
Attack(NPC,Spawn)
AddTimer(NPC,500,"Expel",1,Spawn)
SendMessage(Spawn,"A guard has spotted you!","red")
PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
end
+ end
+ elseif GOOD and GetFactionAmount(Spawn,11)<1000 and invul == false then --NON CITIZENS
+ SetInfoStructUInt(NPC, "override_primary_weapon", 0) -- Enables override of server autoattack damage. Set to 0 to allow server to set damage.
+ Attack(NPC,Spawn)
+ AddTimer(NPC,500,"ExpelOtherFaction",1,Spawn)
+ SendPopUpMessage(Spawn,"A guard has spotted you!",250,0,0)
+ SendMessage(Spawn,"A guard has spotted you!","red")
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
end
end
function Expel(NPC,Spawn)
+ local invul = IsInvulnerable(Spawn)
if IsInCombat(NPC) then
AddTimer(NPC,500,"Expel",1,Spawn)
- if GetDistance(Spawn,NPC) <=6 then
+ if invul == false and GetDistance(Spawn,NPC) <=4 then
CastSpell(NPC,1225)
PlayAnimation(Spawn,11764)
ExpeltoHood(NPC,Spawn)
@@ -50,11 +79,45 @@ function Expel(NPC,Spawn)
SendPopUpMessage(Spawn,"Refugee! You are not allowed inside the walls of Qeynos!",250,0,0)
SendMessage(Spawn,"Refugee! You are not allowed inside the walls of Qeynos!","red")
PlaySound(Spawn,"sounds/ui/ui_duel_defeat.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
- SetHP(Spawn,SetMaxHP(Spawn))
+ End (NPC,Spawn)
+-- SetHP(Spawn,SetMaxHP(Spawn))
end
end
end
+function End (NPC,Spawn)
+ ClearHate(NPC, Spawn)
+ SetInCombat(Spawn, false)
+ SetInCombat(NPC, false)
+ ClearEncounter(NPC)
+ SetTarget(Spawn,nil)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 0) -- Enables override of server autoattack damage. Set to 0 to allow server to set damage.
+end
+
+
+function ExpelOtherFaction(NPC,Spawn)
+ local invul = IsInvulnerable(Spawn)
+ if IsInCombat(NPC) then
+ if invul == false and GetDistance(Spawn,NPC) <=5 then
+ CastSpell(NPC,1225)
+ PlayAnimation(Spawn,11764)
+ ExpeltoOutofCity(NPC,Spawn)
+ SetInvulnerable(Spawn)
+ SendPopUpMessage(Spawn,"You are not allowed inside the walls of Qeynos!",250,0,0)
+ SendMessage(Spawn,"You are not allowed inside the walls of Qeynos!","red")
+ PlaySound(Spawn,"sounds/ui/ui_duel_defeat.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SetHP(Spawn,SetMaxHP(Spawn))
+ End (NPC,Spawn)
+ end
+end
+end
+
+function ExpeltoOutofCity(NPC,Spawn)
+ ZoneRef = GetZone("Antonica")
+ Zone(ZoneRef,Spawn,-130.85, -15.10, -77.62, 137.28)
+end
+
+
function ExpeltoHood(NPC,Spawn)
local Race = GetRace(Spawn)
diff --git a/server/SpawnScripts/Generic/GenericEcologyVoiceOvers.lua b/server/SpawnScripts/Generic/GenericEcologyVoiceOvers.lua
index 8ec69a7b7..1e1ac08d8 100755
--- a/server/SpawnScripts/Generic/GenericEcologyVoiceOvers.lua
+++ b/server/SpawnScripts/Generic/GenericEcologyVoiceOvers.lua
@@ -200,7 +200,7 @@ function GenericEcologyHail(NPC, Spawn, faction)
if FPfaction <0 then
FactionChecking(NPC, Spawn, faction)
else
- local choice = math.random(1,5)
+ local choice = math.random(1,6)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/darkelf/darkelf_eco_evil_1_aoi_gf_e557f427.mp3", "Anyone who dares to disagree with me will feel the taste of my steel.", "threaten", 1814321919, 1558985390, Spawn)
@@ -210,6 +210,10 @@ function GenericEcologyHail(NPC, Spawn, faction)
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/darkelf/darkelf_eco_evil_1_hail_gf_269d3910.mp3", "How dare you speak to me as if I was nothing more than a dirty troll!", "glare", 708249483, 3464421673, Spawn)
elseif choice == 4 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/darkelf/darkelf_eco_evil_1_aoi_gf_eb029bed.mp3", "I am sickened by the lack of amenities within this city.", "flustered", 2205842657, 1362436730, Spawn)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_eb029bed.mp3", "I am sickened by the lack of amenities within this city.", "flustered", 140632112, 1000708438, Spawn)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_18ec7845.mp3", "Do you honestly believe I would speak with someone like you?", "boggle", 2993277341, 1897394040, Spawn)
end
end
end
@@ -458,23 +462,23 @@ function GenericEcologyHail(NPC, Spawn, faction)
else
local choice = math.random(1,9)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_aoi_gf_8d30932a.mp3", "May the gods keep thee. 'Tis a bessing to have Castleview Hamlet as our home in Qeynos.", "bow", 3522764394, 2182159483, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_aoi_gf_8d30932a.mp3", "May the gods keep thee. Tis a blessing to have Castleview Hamlet as our home in Qeynos.", "bow", 3522764394, 2182159483, Spawn)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_aoi_gf_bdbdb78e.mp3", "Curse the ill timed luck of it all! I had hoped thou had'th bring news of our missing families.", "shrug", 1153289100, 392994268, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_aoi_gf_bdbdb78e.mp3", " Curse the ill timed luck of it all! I had hoped thou bringeth news of our missing families.", "shrug", 1153289100, 392994268, Spawn)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_3c0848a6.mp3", "I thank thee for the kind hail. Goodmorrow to you, traveler.", "bye", 4059931003, 1290457989, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_3c0848a6.mp3", "I thank thee for the kind hail. Good morrow to you traveler!", "bye", 4059931003, 1290457989, Spawn)
elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_9ff4f18c.mp3", "Fare thee well, my brave adventurer! If thou hath any news of our kin, return to Castleview!", "curstey", 2304123366, 1172967267, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_9ff4f18c.mp3", "Fare thee well, my brave adventurer! If thou hath any news of our kin, return to Castleview!", "curstey", 2304123366, 1172967267, Spawn)
elseif choice == 5 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_a64f6eec.mp3", "What hast thou done? When one greets a daughter of Marr, a small bow is in order!", "boggle", 2184035287, 59673464, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_a64f6eec.mp3", "What hast thou done? When thou greets a Daughter of Marr, a small bow is in order.", "boggle", 2184035287, 59673464, Spawn)
elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_aaa0d7f3.mp3", "Mighty good then. How are't thou on this fine afternoond?", "hello", 725320917, 2360930144, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_aaa0d7f3.mp3", "Marr ye good den! How art thou on this fine afternoon?", "hello", 725320917, 2360930144, Spawn)
elseif choice == 7 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_c0864f03.mp3", "Now ye shall rejoyce'th within the taverns by night, but we shall not rest until the truth of our kin hath been discovered.", "happy", 1638938881, 2182528216, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_c0864f03.mp3", "Now, ye shall rejoiceth in the taverns by night! But we shall not rest until the truth of our kin hath been discovered!", "happy", 1638938881, 2182528216, Spawn)
elseif choice == 8 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_e4cf5b64.mp3", "How now, friend adventurer? Has't thou seen other daughters of Marr in the wilds?", "ponder", 2966512768, 1279748767, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_e4cf5b64.mp3", "How now, friend adventurer? Hast thou seen other Daughters of Marr in the wilds?", "ponder", 2966512768, 1279748767, Spawn)
elseif choice == 9 then
- PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_f56ada2a.mp3", "The queen calls all of us to service. We shall find our kin to serve her majesty.", "agree", 484194272, 4099511252, Spawn)
+ PlayFlavor(NPC, "voiceover/english/froglok_eco_good_1/ft/froglok/froglok_eco_good_1_hail_gf_f56ada2a.mp3", "The Queen calls all of us to service. We shall find our kin to serve her majesty.", "agree", 484194272, 4099511252, Spawn)
end
end
end
@@ -1029,7 +1033,7 @@ function GenericEcologyHail(NPC, Spawn, faction)
elseif choice == 8 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_hail_gm_faa98b82.mp3", "The Ratonga are here to teach us that not everything in nature has a purpose.", "sarcasm", 1619896826, 2577563009, Spawn)
elseif choice == 9 then
- PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_aoi_gf_c9f2b4f1.mp3", "Friendship is too costly around here.", "sigh", 1983387905, 3075550393, Spawn)
+ PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_aoi_gm_c3f1497b.mp3", "For Thule's sake! What's that horrible stench?", "stinky", 545875766, 140543200, Spawn)
elseif choice == 10 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_aoi_gm_38301159.mp3", "We can't help that! We're all mad here!", "crazy", 1508409788, 219596858, Spawn)
elseif choice == 11 then
@@ -1119,7 +1123,7 @@ function GenericEcologyHail(NPC, Spawn, faction)
elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_4424ae28.mp3", "How sweet my Tom is to leave such a gift at my doorstep.", "giggle", 206344530, 3671427567, Spawn)
elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_eabd8556.mp3", "I heard the Rotanga play it for fun.", "shrug", 1671177, 4253987454, Spawn)
+ PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_eabd8556.mp3", "I heard the Ratonga play it for fun.", "shrug", 1671177, 4253987454, Spawn)
elseif choice == 7 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_b155e999.mp3", "You won't see me near any of those fountains!", "no", 2380586558, 4131988901, Spawn)
elseif choice == 8 then
@@ -1312,7 +1316,7 @@ function GenericEcologyHail(NPC, Spawn, faction)
elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_67432087.mp3", "We must remain steady against the influence of evil. Only with perseverance will Qeynos survive!", "shakefist", 927768431, 1576503790, Spawn)
elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_646dc5ff.mp3", "I've found that the right ammount of patients and enthusiasm can open almost any door.", "agree", 1063360943, 3481586683, Spawn)
+ PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_646dc5ff.mp3", "I've found that the right amount of patience and enthusiasm can open almost any door.", "agree", 1063360943, 3481586683, Spawn)
elseif choice == 7 then
PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_414392d4.mp3", "As with all relationships in life, sometimes desire can lead to misfortune. I strive to temper love and discipline.", "ponder", 2120229696, 432481455, Spawn)
elseif choice == 8 then
@@ -1430,12 +1434,12 @@ function GenericEcology2Hail(NPC, Spawn, faction)
if FPfaction <0 then
FactionChecking(NPC, Spawn, faction)
else
- local choice = math.random(1,8)
+ local choice = math.random(1,6)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_eb029bed.mp3", "I am sickened by the lack of amenities within this city.", "flustered", 140632112, 1000708438, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_7fee68f8.mp3", "Everyone knows the Teir'Dal are the true power within Freeport.", "lookaway", 3768775503, 2939885824, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_18ec7845.mp3", "Do you honestly believe I would speak with someone like you?", "boggle", 2993277341, 1897394040, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_aoi_gf_e9678442.mp3", "You may thank me now for gracing you with my presence.", "royalwave", 362766636, 249197304, Spawn, 0)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_aoi_gf_e9678442.mp3", "You may thank me now for gracing you with my presence.", "nod", 362766636, 249197304, Spawn)
elseif choice == 4 then
@@ -1444,10 +1448,6 @@ function GenericEcology2Hail(NPC, Spawn, faction)
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_36e1a774.mp3", "Poisoning is always an effective way of winning a debate.", "wink", 84926788, 876892580, Spawn, 0)
elseif choice == 6 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_8a6fa526.mp3", "Who do those Iksar think they are? There will be a reckoning one day, I swear.", "shakefist", 3978923373, 3424693067, Spawn, 0)
- elseif choice == 7 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_aoi_gf_e9678442.mp3", "You may thank me now for gracing you with my presence.", "royalwave", 362766636, 249197304, Spawn, 0)
- elseif choice == 8 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_7fee68f8.mp3", "Everyone knows the Teir'Dal are the true power within Freeport.", "lookaway", 3768775503, 2939885824, Spawn, 0)
end
end
end
@@ -1880,6 +1880,8 @@ function GenericRaceCheckHail(NPC, Spawn, faction)
local zone = GetZone(NPC)
if GetZoneID(zone) >= 220 and GetZoneID(zone) <= 238 then
GOOD = true
+ elseif GetZoneID(zone) == 12 then
+ GOOD = true
elseif GetZoneID(zone) == 207 then
GOOD = true
elseif GetZoneID(zone) >= 195 and GetZoneID(zone) <= 198 then
@@ -2568,6 +2570,8 @@ function GenericRaceCheckHail(NPC, Spawn, faction)
PlayFlavor(NPC, "", "I've never met a dwarf before. Is it true they're stupid? ", "stare", 0, 0, Spawn)
elseif spawnRace == ERUDITE then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_race_evil/ft/eco/evil/halfelf_eco_race_evil_erudite_gf_ba79a909.mp3", "Good day. Hope you're not planning any experiments around here today.", "hello", 324880456, 63443987, Spawn)
+ elseif spawnRace == GNOME then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_race_good/ft/eco/good/halfelf_eco_race_good_gnome_gf_e91c924a.mp3", "If I wanted to build something, I'd ask you.", "no", 4236848712, 1210106222, Spawn)
elseif spawnRace == IKSAR then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_race_evil/ft/eco/evil/halfelf_eco_race_evil_iksar_gf_a25f2702.mp3", "Okay, scales. I don't need luggage right now.", "no", 3274806092, 49060946, Spawn)
elseif spawnRace == OGRE then
@@ -2796,7 +2800,7 @@ function GenericRaceCheckHail(NPC, Spawn, faction)
if check == 1 then
PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_highelf_gf_601050b5.mp3", "May Tunare's blessings be with you and yours.", "hello", 781331093, 1715342825, Spawn)
elseif check == 2 then
- PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_highelf_gf_b32f3d7a.mp3", "I am pleased to see other Koad'Dal trying to keep up with this wretched neighborhood.", "agree", 235834078, 3543793461, Spawn)
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_highelf_gf_b32f3d7a.mp3", "I am pleased to see other Koad'Dal trying to keep up with this wretched neighborhood.", "agree", 235834078, 2649903486, Spawn)
elseif check == 3 then
PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_status_gf_1a72199d.mp3", "You're a credit to all Koad'Dal. With your example, Qeynos will see the Koad'Dal as true born leaders.", "thank", 2790557627, 1438660086, Spawn)
elseif check == 4 then
@@ -3604,7 +3608,7 @@ if race >= 0 and race <= 18 and gender >= 1 and gender <= 2 then -- verif
CalloutTimeCheck = true
FaceTarget(NPC,Spawn)
AddTimer(NPC,30000,"ResetCalloutTimer")
- local choice = math.random(1,5)
+ local choice = math.random(1,6)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/darkelf/darkelf_eco_evil_1_aoi_gf_e557f427.mp3", "Anyone who dares to disagree with me will feel the taste of my steel.", "threaten", 1814321919, 1558985390)
@@ -3614,6 +3618,10 @@ if race >= 0 and race <= 18 and gender >= 1 and gender <= 2 then -- verif
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/darkelf/darkelf_eco_evil_1_hail_gf_269d3910.mp3", "How dare you speak to me as if I was nothing more than a dirty troll!", "glare", 708249483, 3464421673)
elseif choice == 4 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/darkelf/darkelf_eco_evil_1_aoi_gf_eb029bed.mp3", "I am sickened by the lack of amenities within this city.", "flustered", 2205842657, 1362436730)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_eb029bed.mp3", "I am sickened by the lack of amenities within this city.", "flustered", 140632112, 1000708438)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_18ec7845.mp3", "Do you honestly believe I would speak with someone like you?", "boggle", 2993277341, 1897394040)
end
end
end
@@ -4669,7 +4677,7 @@ if race >= 0 and race <= 18 and gender >= 1 and gender <= 2 then -- verif
elseif choice == 8 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_hail_gf_164ffd98.mp3", "I can purr my way out of anything.", "wink", 4263608089, 504552247)
elseif choice == 9 then
- PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_aoi_gf_c9f2b4f1.mp3", "Friendship is too costly around here.", "sigh", 1983387905, 3075550393)
+ PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_aoi_gm_c3f1497b.mp3", "For Thule's sake! What's that horrible stench?", "stinky", 545875766, 140543200)
elseif choice == 10 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_evil_1/ft/kerran/kerran_eco_evil_1_aoi_gm_38301159.mp3", "We can't help that! We're all mad here!", "crazy", 1508409788, 219596858)
elseif choice == 11 then
@@ -4793,7 +4801,7 @@ if race >= 0 and race <= 18 and gender >= 1 and gender <= 2 then -- verif
elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_4424ae28.mp3", "How sweet my Tom is to leave such a gift at my doorstep.", "scheme", 206344530, 3671427567)
elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_eabd8556.mp3", "I heard the Rotanga play it for fun.", "shrug", 1671177, 4253987454)
+ PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_eabd8556.mp3", "I heard the Ratonga play it for fun.", "shrug", 1671177, 4253987454)
elseif choice == 7 then
PlayFlavor(NPC, "voiceover/english/kerran_eco_good_1/ft/kerran/kerran_eco_good_1_hail_gf_b155e999.mp3", "You won't see me near any of those fountains!", "no", 2380586558, 4131988901)
elseif choice == 8 then
@@ -5050,7 +5058,7 @@ if race >= 0 and race <= 18 and gender >= 1 and gender <= 2 then -- verif
elseif choice == 5 then
PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_67432087.mp3", "We must remain steady against the influence of evil. Only with perseverance will Qeynos survive!", "shakefist", 927768431, 1576503790)
elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_646dc5ff.mp3", "I've found that the right ammount of patients and enthusiasm can open almost any door.", "agree", 1063360943, 3481586683)
+ PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_646dc5ff.mp3", "I've found that the right amount of patience and enthusiasm can open almost any door.", "agree", 1063360943, 3481586683)
elseif choice == 7 then
PlayFlavor(NPC, "voiceover/english/woodelf_eco_good_1/ft/woodelf/woodelf_eco_good_1_hail_gf_414392d4.mp3", "As with all relationships in life, sometimes desire can lead to misfortune. I strive to temper love and discipline.", "ponder", 2120229696, 432481455)
elseif choice == 8 then
@@ -5197,12 +5205,12 @@ function GenericEcology2Callout(NPC, Spawn, faction)
CalloutTimeCheck = true
FaceTarget(NPC,Spawn)
AddTimer(NPC,30000,"ResetCalloutTimer")
- local choice = math.random(1,8)
+ local choice = math.random(1,6)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_eb029bed.mp3", "I am sickened by the lack of amenities within this city.", "flustered", 140632112, 1000708438)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_8a6fa526.mp3", "Who do those Iksar think they are? There will be a reckoning one day, I swear.", "shakefist", 3978923373, 3424693067)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_2/ft/darkelf/darkelf_eco_evil_2_hail_gf_18ec7845.mp3", "Do you honestly believe I would speak with someone like you?", "boggle", 2993277341, 1897394040)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_7fee68f8.mp3", "Everyone knows the Teir'Dal are the true power within Freeport.", "lookaway", 3768775503, 2939885824)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_aoi_gf_e9678442.mp3", "You may thank me now for gracing you with my presence.", "nod", 362766636, 249197304)
elseif choice == 4 then
@@ -5211,10 +5219,6 @@ function GenericEcology2Callout(NPC, Spawn, faction)
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_36e1a774.mp3", "Poisoning is always an effective way of winning a debate.", "wink", 84926788, 876892580)
elseif choice == 6 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_aoi_gf_e9678442.mp3", "You may thank me now for gracing you with my presence.", "royalwave", 362766636, 249197304)
- elseif choice == 7 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_8a6fa526.mp3", "Who do those Iksar think they are? There will be a reckoning one day, I swear.", "shakefist", 3978923373, 3424693067)
- elseif choice == 8 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_hail_gf_7fee68f8.mp3", "Everyone knows the Teir'Dal are the true power within Freeport.", "lookaway", 3768775503, 2939885824)
end
end
end
@@ -6806,7 +6810,7 @@ function GenericRaceCheckCallout(NPC, Spawn, faction)
if check == 1 then
PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_highelf_gf_601050b5.mp3", "May Tunare's blessings be with you and yours.", "hello", 781331093, 1715342825)
elseif check == 2 then
- PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_highelf_gf_b32f3d7a.mp3", "I am pleased to see other Koad'Dal trying to keep up with this wretched neighborhood.", "agree", 235834078, 3543793461)
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_highelf_gf_b32f3d7a.mp3", "I am pleased to see other Koad'Dal trying to keep up with this wretched neighborhood.", "agree", 235834078, 2649903486)
elseif check == 3 then
PlayFlavor(NPC, "voiceover/english/highelf_eco_race_good/ft/eco/good/highelf_eco_race_good_status_gf_1a72199d.mp3", "You're a credit to all Koad'Dal. With your example, Qeynos will see the Koad'Dal as true born leaders.", "thank", 2790557627, 1438660086)
elseif check == 4 then
@@ -7887,13 +7891,15 @@ function FactionChecking(NPC, Spawn, faction)
elseif gender == FEMALE then
if EVIL then
- local choice = math.random(1,2)
+ local choice = math.random(1,3)
if choice == 1 then
PlayFlavor(NPC, "", "", "cutthroat", 0, 0, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/halfelf_eco_evil_2/ft/halfelf/halfelf_eco_evil_2_notcitizen_gf_7a9317b2.mp3", "Crawl back into the sewers, scum!", "point", 1416362062, 802909289, Spawn, 0)
end
- elseif GOOD then
+ elseif GOOD then
local choice = math.random(1,5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/halfelf/halfelf_eco_good_1_notcitizen_gf_8236a789.mp3", "Remove yourself from my presence, outsider.", "glare", 3415896885, 3160710397, Spawn, 0)
@@ -8677,11 +8683,13 @@ function FactionCheckingCallout(NPC, Spawn, faction)
elseif gender == FEMALE then
if EVIL then
- local choice = math.random(1,2)
+ local choice = math.random(1,3)
if choice == 1 then
PlayFlavor(NPC, "", "", "cutthroat", 0, 0)
elseif choice == 2 then
PlayFlavor(NPC, "", "", "glare", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/halfelf_eco_evil_2/ft/halfelf/halfelf_eco_evil_2_notcitizen_gf_7a9317b2.mp3", "Crawl back into the sewers, scum!", "point", 1416362062, 802909289)
end
elseif GOOD then
local choice = math.random(1,5)
@@ -9280,21 +9288,34 @@ function GenericDrunkHail(NPC, Spawn, faction)
elseif race == HUMAN then
if gender == MALE then
- local choice = math.random(1,5)
+ local choice = MakeRandomInt(1,7)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_e4fde966.mp3", "I haven't that much to drink yet, I got here when... bah I forgot.", "no", 612325975, 4257910058, Spawn)
- elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_hail_gm_622bfa69.mp3", "What do you mean ye drank more than I did?", "boggle", 3046379177, 1648095152, Spawn)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_2b255210.mp3", "Ahhh ... quit your whinin'! I paid ya with my jokes and fine company.", "boggle", 2971571763, 3318817519, Spawn)
- elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_hail_gm_965fb709.mp3", "Uhhh... Oh, I don't feel so good!", "gutcramp", 3429145800, 4097790848, Spawn)
- elseif choice == 5 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_hail_gm_1631fc78.mp3", "Leave me be. I'm not cause'n any trouble. I'm NOT!", "heckno", 2355346119, 3462967833, Spawn)
-
- end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_e4fde966.mp3", "I haven't that much to drink yet, I got here when... bah I forgot.", "no", 612325975, 4257910058, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_a1d96f41.mp3", "My stein hasn't any legs to walk over and fill itself up.", "glare", 2656968471, 1396939792, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gm_153d5a3.mp3", "Let's have a drink together and forget that we ever met.", "hello", 2964980286, 4014491635, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_2b255210.mp3", "Ahhh ... quit your whinin'! I paid ya with my jokes and fine company.", "boggle", 2971571763, 3318817519, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_7f76ecc6.mp3", "Hurry up! My stomach's near dry thanks to ya.", "frustrated", 2014105974, 2128019974, Spawn, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_605d472a.mp3", "I could use another ale for the road anytime now.", "tapfoot", 3290510064, 443036239, Spawn, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC,"voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gm_b5bfa487.mp3","Look sir. I just had'one ale n' hour ago withh dinner.","no",1705294225,1483651602,Spawn)
+ end
elseif gender == FEMALE then
+ choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gf_153d5a3.mp3", "Let's have a drink together and forget that we ever met.", "happy", 698745754, 2682390289, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gf_b5bfa487.mp3", "Look sir, I had just one ale an hour ago with dinner.", "whome", 2226920057, 694300008, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_hail_gf_965fb709.mp3", "Oooh... I don't feel so good.", "gag", 1225424963, 2991477373, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gf_c874c635.mp3", "I know I shouldn't drink! Forgive me sir!", "wince", 718370281, 20784543, Spawn)
+ end
end
end
end
@@ -9358,20 +9379,36 @@ function GenericDrunkCallout(NPC, Spawn, faction)
end
elseif race == HUMAN then
if gender == MALE then
- local choice = math.random(1,4)
+ local choice = MakeRandomInt(1,7)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_e4fde966.mp3", "I haven't that much to drink yet, I got here when... bah I forgot.", "no", 612325975, 4257910058, Spawn)
- elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_a1d96f41.mp3", "My stein hasn't any legs to walk over and fill itself up.", "glare", 2656968471, 1396939792, Spawn)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_7f76ecc6.mp3", "Hurry up! My stomach's near dry thanks to ya.", "frustrated", 2014105974, 2128019974, Spawn)
- elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_7f76ecc6.mp3", "Hurry up! My stomach's near dry thanks to ya.", "frustrated", 2014105974, 2128019974, Spawn)
- end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_e4fde966.mp3", "I haven't that much to drink yet, I got here when... bah I forgot.", "no", 612325975, 4257910058, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_a1d96f41.mp3", "My stein hasn't any legs to walk over and fill itself up.", "glare", 2656968471, 1396939792, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gm_153d5a3.mp3", "Let's have a drink together and forget that we ever met.", "hello", 2964980286, 4014491635, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_bartender_gm_2b255210.mp3", "Ahhh ... quit your whinin'! I paid ya with my jokes and fine company.", "boggle", 2971571763, 3318817519, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_7f76ecc6.mp3", "Hurry up! My stomach's near dry thanks to ya.", "frustrated", 2014105974, 2128019974, Spawn, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_barmaid_gm_605d472a.mp3", "I could use another ale for the road anytime now.", "tapfoot", 3290510064, 443036239, Spawn, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC,"voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gm_b5bfa487.mp3","Look sir. I just had'one ale n' hour ago withh dinner.","no",1705294225,1483651602,Spawn)
+ end
elseif gender == FEMALE then
- end
+ choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gf_153d5a3.mp3", "Let's have a drink together and forget that we ever met.", "happy", 698745754, 2682390289, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gf_b5bfa487.mp3", "Look sir, I had just one ale an hour ago with dinner.", "whome", 2226920057, 694300008, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_hail_gf_965fb709.mp3", "Oooh... I don't feel so good.", "gag", 1225424963, 2991477373, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_drunk/ft/eco/evil/human_eco_evil_drunk_guard_gf_c874c635.mp3", "I know I shouldn't drink! Forgive me sir!", "wince", 718370281, 20784543, Spawn)
+ end
+ end
end
end
end
diff --git a/server/SpawnScripts/Generic/GenericGuardVoiceOvers.lua b/server/SpawnScripts/Generic/GenericGuardVoiceOvers.lua
index d60ce0431..4eae922bc 100755
--- a/server/SpawnScripts/Generic/GenericGuardVoiceOvers.lua
+++ b/server/SpawnScripts/Generic/GenericGuardVoiceOvers.lua
@@ -138,6 +138,19 @@ function GenericGuardHail(NPC, Spawn, Faction)
end
elseif race == HALF_ELF then
if gender == MALE then
+ if faction == 12 then -- Freeport Militia
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/guard/halfelf_guard_service_evil_1_hail_gm_7fa14d4.mp3", "Do not challenge my authority citizen. In Freeport, the Overlord's word is law!", "scold", 1754864091, 2519992839, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/guard/halfelf_guard_service_evil_1_hail_gm_870ae3cb.mp3", "The Overlord commands me to patrol this area, and so I must.", "tapfoot", 1380232703, 3690439064, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/guard/halfelf_guard_service_evil_1_hail_gm_edb196f8.mp3", "All praises to the Overlord. The Militia protects loyal citizens of Freeport.", "salute_freeport", 2179538941, 3128154335, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_evil_1/ft/service/guard/halfelf_guard_service_evil_1_hail_gm_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 3166142927, 721856003, Spawn, 0)
+ end
+ end
elseif gender == FEMALE then
end
elseif race == HALFLING then
@@ -188,7 +201,7 @@ function GenericGuardHail(NPC, Spawn, Faction)
end
elseif race == HUMAN then
if gender == MALE then
- if faction == 102 then -- Freeport Militia
+ if faction == 12 then -- Freeport Militia
local choice = math.random(1, 4)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gm_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 3265760930, 1055342916, Spawn)
@@ -212,7 +225,7 @@ function GenericGuardHail(NPC, Spawn, Faction)
end
end
elseif gender == FEMALE then
- if faction == 102 then -- Freeport Militia
+ if faction == 12 then -- Freeport Militia
local choice = math.random(1, 4)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gf_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 2697294413, 370291658, Spawn)
@@ -267,18 +280,30 @@ function GenericGuardHail(NPC, Spawn, Faction)
PlayFlavor(NPC, "voiceover/english/ogre_eco_evil_1/ft/service/guard/ogre_guard_service_evil_1_hail_gm_edb196f8.mp3", "All praises to the Overlord. The Militia protects loyal citizens of Freeport.", "salute_freeport", 2290537918, 776957565, Spawn)
end
elseif gender == FEMALE then
- local choice = math.random(1, 3)
+ local choice = math.random(1, 4)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/ogre_eco_evil_1/ft/service/guard/ogre_guard_service_evil_1_hail_gf_7fa14d4.mp3", "Do not challenge my authority citizen. In Freeport, the Overlord's word is law!", "scold", 2981239011, 830472688, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/ogre_eco_evil_1/ft/service/guard/ogre_guard_service_evil_1_hail_gf_e6d19328.mp3", "The Overlord commands me to work the night shift and so I must accept.", "tapfoot", 3190713491, 83008289, Spawn)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/ogre_eco_evil_1/ft/service/guard/ogre_guard_service_evil_1_hail_gf_edb196f8.mp3", "All praises to the Overlord. The Militia protects loyal citizens of Freeport.", "salute_freeport", 2650311659, 1056157406, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ogre_eco_evil_1/ft/service/guard/ogre_guard_service_evil_1_hail_gf_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 317902417, 868225324, Spawn)
end
end
elseif race == RATONGA then
if gender == MALE then
elseif gender == FEMALE then
+ local choice = math.random(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gf_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 2697294413, 370291658, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gf_7fa14d4.mp3", "Do not challenge my authority citizen. In Freeport, the Overlord's word is law!", "scold", 1888277290, 873721758, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gf_e6d19328.mp3", "The Overlord commands me to work the night shift and so I must accept.", "tapfoot", 3462302836, 3625333695, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/guard/human_guard_service_evil_1_hail_gf_edb196f8.mp3", "All praises to the Overlord. The Militia protects loyal citizens of Freeport.", "salute_freeport", 1662524531, 242648132, Spawn)
+ end
end
elseif race == TROLL then
if gender == MALE then
@@ -343,21 +368,22 @@ function aggro(NPC, Spawn, Faction)
if gender == MALE then
PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/guard/barbarian_guard_service_good_1_kill_gm_2b7f45ad.mp3", "For the glory of Qeynos!", "", 1804495775, 3807708128)
elseif gender == FEMALE then
- PlayFlavor(NPC, "", "For the glory of Qeynos!", "", 565962733, 3617633467, Spawn)
+ PlayFlavor(NPC, "", "For the glory of Qeynos!", "", 565962733, 3617633467)
end
elseif race == DARK_ELF then
if gender == MALE then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_kill_gm_1ec6eff4.mp3", "Death to the enemies of Lucan!", "", 4030922503, 1352663696, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_kill_gm_1ec6eff4.mp3", "Death to the enemies of Lucan!", "", 4030922503, 1352663696)
elseif gender == FEMALE then
local choice = math.random(1, 4)
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_kill_gf_1ec6eff4.mp3", "Death to the enemies of Lucan!", "", 4030922503, 1352663696, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_kill_gf_1ec6eff4.mp3", "Death to the enemies of Lucan!", "", 4030922503, 1352663696)
end
elseif race == DWARF then
if gender == MALE then
PlayFlavor(NPC, "voiceover/english/dwarf_eco_good_1/ft/service/guard/dwarf_guard_service_good_1_kill_gm_2b7f45ad.mp3", "For the glory of Qeynos!", "", 1964289468, 4158765460)
elseif gender == FEMALE then
+ PlayFlavor(NPC, "voiceover/english/dwarf_eco_good_1/ft/service/guard/dwarf_guard_service_good_1_kill_gf_2b7f45ad.mp3", "For the glory of Qeynos!", "", 1964289468, 4158765460)
end
@@ -365,11 +391,11 @@ function aggro(NPC, Spawn, Faction)
if gender == MALE then
local choice = math.random(1, 4)
local choice = math.random(1, 4)
- PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/service/guard/highelf_guard_service_good_1_hail_gm_76da37c9.mp3", "I hate working this shift! If the gnolls don't attack now, I may die of boredom.", "grumble", 3586563752, 1865874525, Spawn)
+ PlayFlavor(NPC, "", "For the glory of Qeynos!", "", 0, 0)
elseif gender == FEMALE then
local choice = math.random(1, 4)
- PlayFlavor(NPC, "", "For the glory of Qeynos!", "", 0, 0, Spawn)
+ PlayFlavor(NPC, "", "For the glory of Qeynos!", "", 0, 0)
end
elseif race == FROGLOK then
if gender == MALE then
@@ -377,6 +403,7 @@ function aggro(NPC, Spawn, Faction)
end
elseif race == GNOME then
if gender == MALE then
+ PlayFlavor(NPC, "voiceover/english/dwarf_eco_good_1/ft/service/guard/gnome_guard_service_good_1_kill_gm_2b7f45ad.mp3", "For the glory of Qeynos!", "", 1964289468, 4158765460)
elseif gender == FEMALE then
end
elseif race == HALF_ELF then
@@ -399,7 +426,7 @@ function aggro(NPC, Spawn, Faction)
end
elseif race == HUMAN then
if gender == MALE then
- if faction == 102 then -- Freeport Militia
+ if faction == 12 then -- Freeport Militia
PlayFlavor(NPC, "", "Death to the enemies of Lucan!", "", 0, 0, Spawn)
else
@@ -407,7 +434,7 @@ function aggro(NPC, Spawn, Faction)
end
elseif gender == FEMALE then
- if faction == 102 then -- Freeport Militia
+ if faction == 12 then -- Freeport Militia
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_kill_gf_1ec6eff4.mp3", "Death to the enemies of Lucan!", "", 4030922503, 1352663696, Spawn)
else
PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_kill_gf_2b7f45ad.mp3", "For the glory of Qeynos!", "", 2825851367, 3848266464, Spawn)
diff --git a/server/SpawnScripts/Generic/ImportantNoticeBoard.lua b/server/SpawnScripts/Generic/ImportantNoticeBoard.lua
new file mode 100755
index 000000000..3f5ec6e6a
--- /dev/null
+++ b/server/SpawnScripts/Generic/ImportantNoticeBoard.lua
@@ -0,0 +1,206 @@
+--[[
+ Script Name : SpawnScripts/Generic/ImportantNoticeBoard.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.18 11:11:22
+ Script Purpose : FACILITATES FAQ BOARDS
+ :
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Read' then
+ MainMenu(NPC,Spawn)
+end
+end
+
+function CloseConvo(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+end
+
+function MainMenu(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Discord ]", "Discord")
+ AddConversationOption(con, "[ Goal ]", "Goal")
+ AddConversationOption(con, "[ Server Status ]", "CurrentStatus")
+ AddConversationOption(con, "[ Content Status ]", "ContentStatus")
+ AddConversationOption(con, "[ Report a Bug? ]", "Bugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "This board contains FAQ and Status information about the EQ2EMU Content Development")
+end
+
+function Discord(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Goal ]", "Goal")
+ AddConversationOption(con, "[ Server Status ]", "CurrentStatus")
+ AddConversationOption(con, "[ Content Status ]", "ContentStatus")
+ AddConversationOption(con, "[ Report a Bug? ]", "Bugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "There is 1 EQ2EMU Discord server (EQ2EMU & EQ2PVP), but 2 playable EQ2EMU test servers in the production process\n\nZekLabs and ContentLabs\n\nBoth use the same Discord server.\n\n- Zeklabs handles hard coding / server stability.\n\n- ContentLabs handles most Content updates.\n\nBoth servers exchange data frequently to coordinate the best testing server experiences.\n\nChoose your test server accordingly.")
+ end
+
+ function Goal(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Discord ]", "Discord")
+ AddConversationOption(con, "[ Server Status ]", "CurrentStatus")
+ AddConversationOption(con, "[ Content Status ]", "ContentStatus")
+ AddConversationOption(con, "[ Report a Bug? ]", "Bugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Goal: The ability to take what is developed here and apply it to a custom server. Content across the EMU is focused from Classic to Altar of Malice (AoM) in various states. A future server oporator can take the EQ2EMU tools and apply their own rulesets with the content foundation here.\n\n Currently, the Altar of Malice (AOM) client AND Desert of Flames (DoF) haves had the most stability work completed, but other clients will still possibly work (at your own risk). BOTH stable clients are a work in progress. Please report bugs on the EMU Discord!")
+ end
+
+function CurrentStatus(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Goal ]", "Goal")
+ AddConversationOption(con, "[ Server Status ]", "CurrentStatus")
+ AddConversationOption(con, "[ Content Status ]", "ContentStatus")
+ AddConversationOption(con, "[ Report a Bug? ]", "Bugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Server Status: The EQ2EMU is in Pre-Alpha, meaning there are many areas with some work done but far from what is expected for the \'True Experience\'.\n\n NOTE: Character Stats are using the OLD system, where each stat is used by all characters (e.g. Scouts use Wisdom for resistance)\n\n Refer to the other portions on this board for Zone / Content specific information.")
+ end
+
+function ContentStatus(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Zones ]", "Zones")
+ AddConversationOption(con, "[ Combat ]", "Combat")
+ AddConversationOption(con, "[ Tradeskill ]", "Tradeskill")
+ AddConversationOption(con, "[ Quests ]","Quests")
+ AddConversationOption(con, "[ Player Housing ]","PlayerHouse")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Content Status: Content is broken into subcategories:\nZones\nCombat\nTadeskill\nQuests\nPlayer Housing.\n\n These are just basic content areas with general descriptions of their states.")
+end
+
+function Zones(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Zones ]", "Zones")
+ AddConversationOption(con, "[ Combat ]", "Combat")
+ AddConversationOption(con, "[ Tradeskill ]", "Tradeskill")
+ AddConversationOption(con, "[ Quests ]","Quests")
+ AddConversationOption(con, "[ Player Housing ]","PlayerHouse")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Zones: Classic Content zones have received the most attention.\n\n Isle of Refuge is nearly 90%\n\n Classic Qeynos and all of its \'hoods\' & dungeons are the most complete.\n\n Queen's Colony is nearly 90%,\n\n Outpost of the Overlord is roughly 80%.\n\n Freeport is roughly 50% complete with an Ecology pass still necessary.\n\n Frostfang Sea is mostly complete.\n\n Various other zones, such as Nek Castle, and Tier 5 raid zones have had unique attention.\n\n NOTE: EVERYTHING is a work in progress!")
+end
+
+function Combat(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Zones ]", "Zones")
+ AddConversationOption(con, "[ Combat ]", "Combat")
+ AddConversationOption(con, "[ Tradeskill ]", "Tradeskill")
+ AddConversationOption(con, "[ Quests ]","Quests")
+ AddConversationOption(con, "[ Player Housing ]","PlayerHouse")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Combat: Combat is under constant adjustment. Many areas still need attention, such as Heroic Opportunties, Rebuilding Classic spells, and balance passes. Resistance rates for spells and expected melee output need continual tweaking. The classic system has the fewest variables, and is currently the easiest to modify.\n\n NOTE: Character Stats are using the OLD system, where each stat is used by all characters (e.g. Scouts use Wisdom for resistance)")
+end
+
+function Tradeskill(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Zones ]", "Zones")
+ AddConversationOption(con, "[ Combat ]", "Combat")
+ AddConversationOption(con, "[ Tradeskill ]", "Tradeskill")
+ AddConversationOption(con, "[ Quests ]","Quests")
+ AddConversationOption(con, "[ Player Housing ]","PlayerHouse")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Tradeskill: Tradeskilling is not viable right now. (See Tradeskill Bugs for more)\n\nClassic era levels 1-9 recipes are in place with subcombines.\n\nAdvancement trainers in Freeport and Qeynos have been scripted and are ready once the systems have been updated.")
+end
+
+function Quests(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Zones ]", "Zones")
+ AddConversationOption(con, "[ Combat ]", "Combat")
+ AddConversationOption(con, "[ Tradeskill ]", "Tradeskill")
+ AddConversationOption(con, "[ Quests ]","Quests")
+ AddConversationOption(con, "[ Player Housing ]","PlayerHouse")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Quests: Thousands of quests have been rebuilt, many by hand. All Original Classic quests in Qeynos for T1 & T2 have been rebuilt, with the exception of faction writs and class training. Citizenship requirements are in place for Qeynos AND Freeport Refugees.")
+end
+
+function PlayerHouse(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Zones ]", "Zones")
+ AddConversationOption(con, "[ Combat ]", "Combat")
+ AddConversationOption(con, "[ Tradeskill ]", "Tradeskill")
+ AddConversationOption(con, "[ Quests ]","Quests")
+ AddConversationOption(con, "[ Player Housing ]","PlayerHouse")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Player Housing: A work in progress. Currently, you can purchase a home in the major cities, but placing furniture does not work entirely. Furniture placement needs attention. Wall and ceiling mounts are not functional.")
+end
+
+ function Bugs(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ Discord ]", "Discord")
+ AddConversationOption(con, "[ Goal ]", "Goal")
+ AddConversationOption(con, "[ Server Status ]", "CurrentStatus")
+ AddConversationOption(con, "[ Content Status ]", "ContentStatus")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Report Bugs:\n\nBug reporting is handled exclusively on the Discord Channels.\n\nPlease refer to [ Discord ] for more information.")
+ end
+ --[[
+function Bugs(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ General Bugs ]", "GeneralBugs")
+ AddConversationOption(con, "[ Combat Bugs ]", "CombatBugs")
+ AddConversationOption(con, "[ Quest Bugs ]", "QuesttBugs")
+ AddConversationOption(con, "[ Tradeskill Bugs ]", "TradeskillBugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Bugs: Post new Bugs on the EQ2EMU Discord channel! \n\n The following are some major bugs known to the EMU team. There are more, and please feel free to share them on Discord.")
+ end
+ ]]--
+function CombatBugs(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ General Bugs ]", "GeneralBugs")
+ AddConversationOption(con, "[ Combat Bugs ]", "CombatBugs")
+ AddConversationOption(con, "[ Quest Bugs ]", "QuesttBugs")
+ AddConversationOption(con, "[ Tradeskill Bugs ]", "TradeskillBugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Combat Bugs:\n\n -Class changes do not apply appropriate skills. Result can cause some equipment to be unusable.\n\n -In-Combat regen for NPCs has spikes after initiating combat.\n\n -Heroic Opportunity Mechanic needs extreme attention.\n\n -Agro mechanics occasionally happen through walls.\n\n -Encounter-lock & Yell systems are not implemented.\n\n -Breath meter and In-Combat runspeed need attention.\n\n -Fighting aquatic targets near shore needs attention.\n\n -Damage immunity mechanics are not currently functional.")
+ end
+
+function QuesttBugs(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ General Bugs ]", "GeneralBugs")
+ AddConversationOption(con, "[ Combat Bugs ]", "CombatBugs")
+ AddConversationOption(con, "[ Quest Bugs ]", "QuesttBugs")
+ AddConversationOption(con, "[ Tradeskill Bugs ]", "TradeskillBugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Quest Bugs:\n\n -Non-deletable quests can currently be deleted. Function needs implementation.\n\n -Multiple Quest Offer Windows can occur and causes content flow issues.\n\n -Updating Current Zone is not behaving appropriately.\n\n -Not all currently active quests can be completed. Feel free to report bugs on any quest you're offered. ")
+ end
+
+function TradeskillBugs(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ General Bugs ]", "GeneralBugs")
+ AddConversationOption(con, "[ Combat Bugs ]", "CombatBugs")
+ AddConversationOption(con, "[ Quest Bugs ]", "QuesttBugs")
+ AddConversationOption(con, "[ Tradeskill Bugs ]", "TradeskillBugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "Tradeskill Bugs: Currently Tradeskilling is not in a desired state, and a major work in progress. Classic era levels 1-9 recipes are in place with subcombines. Crafting animations are still needing attention.")
+ end
+
+ function GeneralBugs(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "[ Main Menu ]", "MainMenu")
+ AddConversationOption(con, "[ General Bugs ]", "GeneralBugs")
+ AddConversationOption(con, "[ Combat Bugs ]", "CombatBugs")
+ AddConversationOption(con, "[ Quest Bugs ]", "QuesttBugs")
+ AddConversationOption(con, "[ Tradeskill Bugs ]", "TradeskillBugs")
+ AddConversationOption(con, "[ Exit ]","CloseConvo")
+ StartDialogConversation(con, 1, NPC, Spawn, "General Bugs: - Banking system, from shared bank to stack management, needs attention.\n\n -Follow, Pet follow, and mob stacking are works in progress.\n\n -Waypoint system is very basic right now.\n\n -Location Point of Interest isn't completely implemented yet.\n\n -Achievements are not active.\n\n-Alternate Advancement & Diety systems are not implemented.")
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseBarbarian1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseBarbarian1.lua
new file mode 100755
index 000000000..f51ed83d7
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseBarbarian1.lua
@@ -0,0 +1,162 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseBarbarian1.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.27 06:04:35
+ Script Purpose : Base1 Barbarian Racial Combat VOs
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ local choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ local choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 3715495401, 2861752836)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_d2336620.mp3", "Your overconfidence will be your undoing.", "", 1735697087, 1551611219)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_ea4ba638.mp3", "Sentries, alarm!", "", 83822322, 1846685810)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_maoscout_gm_abf544b6.mp3", "Time to run, you sneaky coward!", "", 401121050, 1757713301)
+ end
+ else
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ local choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ local choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_d2336620.mp3", "You overconfidence will be your undoing.", "", 2263836674, 942538899)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_ea4ba638.mp3", "Sentries, alarm!", "", 3264181187, 3210126852)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 3417148270, 2109180100)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_maoscout_gf_abf544b6.mp3", "Time to run, you sneaky coward!", "", 195739451, 1913168121)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_3e24be0b.mp3", "Cover me while we regroup!", "", 144951462, 3922442401)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_steppes/ft/barbarian/barbarian_steppes_2_death_gm_60ab074d.mp3", "My clansmen will avenge me!", "", 891201418, 1562586894)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_death_gf_9f33cf68.mp3", "Don't break! Hold the line!", "", 4168139414, 1969505231)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_death_gf_747d38d7.mp3", "Don't fear death! There is no surrender!", "", 1668075339, 3492211420)
+ end
+ end
+end
+
+
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_halfhealth_gm_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 3033804277, 2302522141)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_halfhealth_gm_a04b8264.mp3", "Perhaps you're stronger than I thought!", "", 1156508542, 413023818)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_halfhealth_gm_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 4193910374, 3533989230) end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_3_halfhealth_gf_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 2527774659, 2542349358)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_halfhealth_gf_a04b8264.mp3", "Perhaps you're stronger than I thought!", "", 745602612, 2574365591)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_3_halfhealth_gf_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 2527774659, 2542349358, Spawn, 0) end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_155a84f0.mp3", "You fought well but not well enough!", "", 450019542, 4158631545)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_e707fef0.mp3", "Flee cowards, before I slaughter you all!", "", 3583801206, 1799910552)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_f87005b5.mp3", "Now you will have peace.", "", 3932457554, 2553847722)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_e707fef0.mp3", "Flee cowards, before I slaughter you all!", "", 1852613611, 2630125108)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_155a84f0.mp3", "You fought well but not well enough!", "", 1144735491, 2154607760)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_f87005b5.mp3", "Now you will have peace.", "", 2974774059, 665726799)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua
new file mode 100755
index 000000000..21102a328
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua
@@ -0,0 +1,222 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.28 06:04:50
+ Script Purpose : Base Darkelf Racial Combat VOs
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=1 and GetClass(Spawn)<=10 or GetClass(Spawn)>=21 and GetClass(Spawn)<=30 then
+ local choice = MakeRandomInt(1,7) --Mage/Fighter CHECK
+ else
+ local choice = MakeRandomInt(1,5)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_10fd87eb.mp3", "There is no escape for you now!", "", 2989643101, 2260454555)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_beacbb30.mp3", "I hope you put your affairs in order.", "", 799093996, 16617637)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_fe18133.mp3", "Look what strolled into the spider's web!", "", 4178015902, 2202039151)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_aggro_gm_10fd87eb.mp3", "There is no escape for you now!", "", 3427660043, 2534456197)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_aggro_gm_fe18133.mp3", "Look what strolled into the spider's web!", "", 1688336194, 2269151294)
+ elseif choice == 6 or 7 then
+ if GetClass(Spawn)>=1 and GetClass(Spawn)<=10 then--Fighter CHECK
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maofighter_gm_c01f2ef8.mp3", "Let's see how good of a fighter you really are!", "", 976101228, 853372931)
+ else--Mage CHECK
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maomage_gm_7c1c0586.mp3", "Your pathetic parlor tricks won't save you now, magician!", "", 2940784449, 2243650132)
+ end
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gf_10fd87eb.mp3", "There is no escape for you now!", "", 3641868496, 1960514853)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gf_fe18133.mp3", "Look what strolled into the spider's web!", "", 1570890577, 2869516555)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_aggro_gf_10fd87eb.mp3", "There is no escape for you now!", "", 3743520097, 2328340147)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_aggro_gf_fe18133.mp3", "Look what strolled into the spider's web!", "", 2639788240, 46489616)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_aggro_gf_fe18133.mp3", "Look what strolled into the spider's web!", "", 2332756549, 3562953667)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_25576197.mp3", "I will have vengeance!", "", 360053692, 4149753869)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2338278515, 1160150777)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gm_25576197.mp3", "I will have vengeance!", "", 1315021503, 378441917)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 4054713295, 2203944491)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gm_25576197.mp3", "I will have vengeance!", "", 433254383, 1749773166)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 1905250318, 2280015161)
+ end
+ else
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gf_25576197.mp3", "I will have vengeance!", "", 2208779791, 246336299)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gf_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2248940979, 3184577285)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gf_25576197.mp3", "I will have vengeance!", "", 378367578, 835613312)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gf_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2832376323, 444359174)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gf_25576197.mp3", "I will have vengeance!", "", 58514974, 479667048, Spawn)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gf_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 291851398, 546843337)
+ end
+ end
+ end
+--end
+
+
+function FifteenCall(NPC,Player)
+if IsInCombat(NPC)==true and IsAlive(NPC) == true and math.random(0,100)<=33 then
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_cm_4e66222a.mp3", "You cannot deny the power of hate!", "", 2308305258, 1715309735)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_316a6c63.mp3", "I crave your suffering!", "", 3367682978, 4121942691)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_6806b443.mp3", "You are no match for the Teir'Dal!", "", 2992438842, 2162693039)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_700b6151.mp3", "A feeble attempt from a worthless opponent.", "", 943969253, 2337029939)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_a38dc90c.mp3", "Close in until they can't breathe!", "", 1646052354, 1989688436)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_mm_4832fde6.mp3", "Now, prepare to be eviscerated!", "", 1640233154, 431623172)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gf_a38dc90c.mp3", "Close in until they can't breathe!", "", 2932951909, 3358869262)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gf_700b6151.mp3", "A feeble attempt from a worthless opponent.", "", 943969253, 2337029939, Spawn) --DOESN"T WORK (needs Key)
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,15000,"FifteenCall")
+ end
+end
+end
+end
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_577ab333.mp3", "You'll pay for that one, peon!", "", 1420508530, 39058961)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_9e244d19.mp3", "How dare you!", "", 3305445355, 1846155898)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_halfhealth_gf_9e244d19.mp3", "How dare you!", "", 2263865273, 2956956838)
+ end
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_halfhealth_gf_9e244d19.mp3", "How dare you!", "", 2263865273, 2956956838)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gf_577ab333.mp3", "You'll pay for that one, peon!", "", 2534123849, 501758946)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gf_9e244d19.mp3", "How dare you!", "", 2905660023, 2043697886)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_halfhealth_gm_577ab333.mp3", "You'll pay for that one, peon!", "", 475204402, 2998439968)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_halfhealth_gm_9e244d19.mp3", "How dare you!", "", 2287743179, 1322949627)
+ end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_dff26fa.mp3", "It is a shame we must end it this way ... I could have used you.", "", 1363661737, 942201815)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then --NO FEMALE Darkelf Victory VOs
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_dff26fa.mp3", "It is a shame we must end it this way ... I could have used you.", "", 1363661737, 942201815)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1.lua
new file mode 100755
index 000000000..f3739ae65
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1.lua
@@ -0,0 +1,7 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 11:11:00
+ Script Purpose :
+ :
+--]]
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1_Male.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1_Male.lua
new file mode 100755
index 000000000..b136bb2be
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1_Male.lua
@@ -0,0 +1,143 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseDarkelf1_Male.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.15 12:11:57
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_garbled_gm_8dd636c1.mp3", "Pashtita Nu orlek va tualic zefdat", "", 983323899, 3112871522, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_garbled_gm_810a3ce3.mp3", "Ardlelah kovactic ozermav klebitaz", "", 1130393437, 2011449714, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_garbled_gm_fab027b8.mp3", "Hach bahr neh jadh osh agh", "", 1055587810, 93253246, Spawn, 2)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_beacbb30.mp3", "I hope you put your affairs in order.", "", 799093996, 16617637, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_fe18133.mp3", "Look what strolled into the spider's web!", "", 4178015902, 2202039151, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_10fd87eb.mp3", "There is no escape for you now!", "", 2989643101, 2260454555, Spawn, 2)
+ end
+end
+end
+end
+
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2338278515, 1160150777, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_25576197.mp3", "I will have vengeance!", "", 360053692, 4149753869, Spawn, 2)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_a38dc90c.mp3", "Close in until they can't breathe!", "", 1646052354, 1989688436, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_cm_4e66222a.mp3", "You cannot deny the power of hate!", "", 2308305258, 1715309735, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_316a6c63.mp3", "I crave your suffering!", "", 3367682978, 4121942691, Spawn, 2)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_mm_4832fde6.mp3", "Now, prepare to be eviscerated!", "", 1640233154, 431623172, Spawn, 2)
+ elseif choice == 5 then
+ if GetClass(Spawn)<=21 and GetClass(Spawn)>=30 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maomage_gm_7c1c0586.mp3", "Your pathetic parlor tricks won't save you now, magician!", "", 2940784449, 2243650132, Spawn, 2)
+ elseif GetClass(Spawn)<=1 and GetClass(Spawn)>=10 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maofighter_gm_c01f2ef8.mp3", "Let's see how good of a fighter you really are!", "", 976101228, 853372931, Spawn, 2)
+ else
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_cm_4e66222a.mp3", "You cannot deny the power of hate!", "", 2308305258, 1715309735, Spawn, 2)
+ end
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_700b6151.mp3", "A feeble attempt from a worthless opponent.", "", 943969253, 2337029939, Spawn, 2)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+function healthchanged(NPC, Player)
+ if GetTempVariable(NPC, "CalloutTimer") == "false" and IsPlayer(Player) and IsAlive(NPC)==true then
+ if GetTempVariable(NPC, "HealthCallout") == "false" then
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.55 and GetHP(NPC) > GetMaxHP(NPC) * 0.45 then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ AddTimer(NPC,12500,"HealthReset")
+ if not HasLanguage(Spawn,2 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_9e244d19.mp3", "How dare you!", "", 3305445355, 1846155898, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_577ab333.mp3", "You'll pay for that one, peon!", "", 1420508530, 39058961, Spawn, 2)
+ end
+ end
+ end
+end
+end
+end
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,20 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_dff26fa.mp3", "It is a shame we must end it this way ... I could have used you.", "", 1363661737, 942201815, Spawn, 2)
+ end
+ end
+end
+
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseDwarf1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseDwarf1.lua
new file mode 100755
index 000000000..f73378466
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseDwarf1.lua
@@ -0,0 +1,128 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseDwarf1.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.26 11:05:07
+ Script Purpose : Base Dwarf Racial Callouts
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_23b35126.mp3", "Where do ya think you're going?", "", 706272128, 909565004)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_9de55a3e.mp3", "There they are! Let's get em!", "", 3246206943, 366784514)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_ab9057d3.mp3", "Looking for me? ", "", 438949611, 3910736957)
+ end
+ else
+ if GetClass(Spawn)>=1 and GetClass(Spawn)<=10 then
+ choice = MakeRandomInt(1,4) --Fighter CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gf_ab9057d3.mp3", "Looking for me? ", "", 407706048, 337475746)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gf_be4f625e.mp3", "Where do ya think you're going?", "", 152508601, 1517122703)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gf_d29563c7.mp3", "There they are! Let's get em!", "", 995196475, 1619899594)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_maofighter_gf_428f2c06.mp3", "You, back up there! I'm taking the warrior!", "", 1284306998, 1476787670)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_death_gm_bac4e4e8.mp3", "You'll never take me alive!", "", 3841822806, 1060375787, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_death_gm_e462fcd1.mp3", "Go on now, I'll hold them!", "", 4022696973, 1224761357, Spawn, 0)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_death_gf_e462fcd1.mp3", "Go on now, I'll hold them!", "", 1183447615, 1679392141, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_death_gf_e462fcd1.mp3", "Go on now, I'll hold them!", "", 1183447615, 1679392141, Spawn, 0)
+ end
+ end
+ end
+--end
+
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gm_4a1ceaef.mp3", "Ha! I'm not done yet. Get back up!", "", 458619926, 239663782, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gm_d6c773c7.mp3", "I didn't think I hit em that hard.", "", 3680771732, 663911723, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gm_ecd7fa6e.mp3", "An ale for the fallen!", "", 99121645, 2553343776, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gf_4a1ceaef.mp3", "Ha! I'm not done yet. Get back up!", "", 1335528281, 2889456217, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gf_d6c773c7.mp3", "I didn't think I hit em that hard.", "", 4016088326, 632010394, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gf_ecd7fa6e.mp3", "An ale for the fallen!", "", 3223559996, 2677275600, Spawn)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua
new file mode 100755
index 000000000..e97d52ced
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua
@@ -0,0 +1,173 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.27 03:05:33
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+local Barbarian = 0
+local DarkElf = 1
+local Dwarf = 2
+local Erudite = 3
+local Froglok = 4
+local Gnome = 5
+local HalfElf = 6
+local Halfling = 7
+local HighElf = 8
+local Human = 9
+local Iksar = 10
+local Kerra = 11
+local Ogre = 12
+local Ratonga = 13
+local Troll = 14
+local WoodElf = 15
+
+function aggro(NPC,Spawn)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "HealthCallout", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gm_3e2a680d.mp3", "You cannot run from death, mortal!", "", 3726501132, 2641272181)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gm_11cb6bf8.mp3", "Mortal agony is nothing compared to the torment that awaits you!", "", 2544751499, 3488336081)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gm_8a0dd99d.mp3", "I will show you the true pain of death!", "", 2563182730, 2699265972)
+ end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gf_11cb6bf8.mp3", "Mortal agony is nothing compared to the torment that awaits you!", "", 1709305523, 785917379)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gf_8a0dd99d.mp3", "I will show you the true pain of death!", "", 1781892618, 4026020917)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_aggro_gf_3e2a680d.mp3", "You cannot run from death, mortal!", "", 351069702, 1435784652)
+ end
+ end
+ end
+end
+
+function FifteenCall(NPC,Spawn)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if GetGender(NPC) ==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_everyfifteenseconds_gm_57b99cd6.mp3", "Eternal sleep is at hand.", "", 1119398838, 1604535949)
+ elseif choice == 2 then
+ if GetClass(Spawn) >=1 and GetClass(Spawn)<=11 or GetClass(Spawn) >=21 and GetClass(Spawn)<=30 then
+ if GetClass(Spawn) >=1 and GetClass(Spawn)<=11 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_maofighter_gm_fccb4e4.mp3", "Your strength will not fend off death!","" ,3954285821, 1661926535)
+ elseif GetClass(Spawn) >=21 and GetClass(Spawn)<=30 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_maomage_gm_8ab05a8f.mp3", "The dead do not fear your magic.", "", 2363203300, 1086897009)
+ end
+ end
+ else
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Spawn)
+ end
+end
+end
+
+
+function death(NPC,Spawn)
+if CalloutTimer== false then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_death_gm_49b06ac1.mp3", "You cannot kill what is already dead!", "", 2840452858, 3381399753, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_death_gm_18bd9c56.mp3", "You will see us again in your nightmares!", "", 3496984483, 236189449, Spawn, 0)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_death_gf_49b06ac1.mp3", "You cannot kill what is already dead!", "", 3015653280, 2452981919, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_death_gf_18bd9c56.mp3", "You will see us again in your nightmares!", "", 925894256, 166843390, Spawn, 0)
+ end
+ end
+ end
+end
+
+
+
+function healthchanged(NPC, Spawn)
+if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" and GetTempVariable(NPC, "HealthCallout")== "false" then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ AddTimer(NPC,9000,"ResetTimer")
+ AddTimer(NPC,9000,"HealthReset")
+ if GetGender(NPC)==1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_halfhealth_gf_4c18f3ce.mp3", "Your struggle is for naught!", "", 1689672062, 2512623281)
+ else
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_halfhealth_gm_4c18f3ce.mp3", "Your struggle is for naught!", "", 1816370688, 1982413936)
+ end
+ end
+end
+end
+
+
+function victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_human_base_1/ft/ghost/ghost_human_base_1_1_victory_gm_79236cb9.mp3", "It was too late. They have met our fate.", "", 869850080, 2857504352, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_victory_gm_3f0a2355.mp3", "Death is only the beginning!", "", 468059547, 3073125588)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_victory_gf_20212485.mp3", "", "", 700890837, 3828169591)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ghost_base_1/ft/ghost/ghost_base_1_1_victory_gf_3f0a2355.mp3", "Death is only the beginning!", "", 1504821242, 3900153298)
+ end
+ end
+end
+
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua
index df4a0a55b..e66f3977e 100755
--- a/server/SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua
@@ -35,7 +35,7 @@ end
function aggro(NPC,Player)
AddTimer(NPC,math.random(14000,31000),"FifteenCall")
SetTempVariable(NPC, "CalloutTimer", "false")
-if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=75 and IsPlayer(Player) then
SetTempVariable(NPC, "CalloutTimer", "true")
AddTimer(NPC,10000,"ResetTimer")
if not HasLanguage(Player,18 )then
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua
index 36d797798..1874221c1 100755
--- a/server/SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua
@@ -2,7 +2,7 @@
Script Name : SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua
Script Author : Dorbin
Script Date : 2022.09.28 07:09:37
- Script Purpose :
+ Script Purpose : Base Goblin calloutsvs
:
--]]
local HealthCallout = false --REDUCES Half-Health Spam
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseHalfElf1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseHalfElf1.lua
new file mode 100755
index 000000000..6e685e45e
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseHalfElf1.lua
@@ -0,0 +1,151 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseHalfElf1.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.28 05:04:35
+ Script Purpose : Base 1 Racial Halfelf Combat VOs
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=21 and GetClass(Spawn)<=30 then
+ local choice = MakeRandomInt(1,3) --MAGE CHECK
+ else
+ local choice = MakeRandomInt(1,2)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_12fbaefb.mp3", "Destroy the invader!", "", 489857902, 941763715, Spawn, 0)
+ elseif choice == 3 then
+PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_maomage_gm_96692f88.mp3", "Distract the magician or we'll all die!", "", 3332270247, 2351356263, Spawn) end
+ else
+-- if GetClass(Spawn)>=21 and GetClass(Spawn)<=32 then
+-- local choice = MakeRandomInt(1,3) --MAGE CHECK (MISSING VO)
+-- else
+ local choice = MakeRandomInt(1,2)
+ -- end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_12fbaefb.mp3", "Destroy the invader!", "", 1313233821, 723410897, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_a68f64b6.mp3", "Alarm! Alarm!", "", 1220383018, 2962002142, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_maoscout_gf_abf544b6.mp3", "Time to run, you sneaky coward!", "", 195739451, 1913168121)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_1a659852.mp3", "We must withdraw before we all die!", "", 3147364973, 1341536758, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn, 0)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_1a659852.mp3", "We must withdraw before we all die!", "", 2249500792, 2154633904, Spawn, 0)
+ end
+ end
+end
+
+
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 1009191098, 3016339818, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e48659f9.mp3", "Now, that really hurt!", "", 241651222, 476491397, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 743699854, 1906875496, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e48659f9.mp3", "Now, that really hurt!", "", 413378164, 719939114, Spawn)
+ end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012, Spawn)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua
new file mode 100755
index 000000000..b2d626f89
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua
@@ -0,0 +1,154 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.26 08:04:45
+ Script Purpose : Base Racial Human VOs
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_maoscout_gm_d55d2935.mp3", "Use caution, they may have scouts!", "", 2353461553, 1453902220)
+ end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_583690dc.mp3", "Summon help! We have invaders!", "", 1598905349, 2204481929)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 3593389433, 3838830228)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_a30c4f9d.mp3", "To arms!", "", 2291750057, 1030180613)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_3e24be0b.mp3", "Cover me while we regroup!", "", 144951462, 3922442401)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_7612214f.mp3", "All hands retreat!", "", 3033325782, 1103449586)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_death_gf_3e24be0b.mp3", "Cover me while we regroup!", "", 3876965132, 3906042379)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_death_gf_7612214f.mp3", "All hands retreat!", "", 3620177897, 757784861)
+ end
+ end
+ end
+--end
+
+
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_1babf022.mp3", "Is that all you have?", "", 170267964, 1158805306)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_8529e507.mp3", "I can't hold them forever!", "", 644448824, 755050547)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_8529e507.mp3", "I can't hold them forever!", "", 3371581229, 792393228)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_1babf022.mp3", "Is that all you have?", "", 2979351329, 4050238683)
+ end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_153f12ff.mp3", "One down!", "", 3009518664, 4140389760)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_4553e1e0.mp3", "Flee now or meet this one's fate.", "", 3032162747, 1359206304)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_ec0cd85a.mp3", "I hope they're all this easy.", "", 2687289628, 2303639320)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua
new file mode 100755
index 000000000..9bd302773
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua
@@ -0,0 +1,159 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 03:11:13
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_maoscout_gm_d55d2935.mp3", "Use caution, they may have scouts!", "", 2353461553, 1453902220)
+ end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_aggro_gf_d4cfd470.mp3", "Feel the might of Rallos!", "", 760635308, 455953200)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ogre_eco_evil_2/ft/ogre/ogre_eco_evil_2_aoi_gf_d70efe42.mp3", "Revel in the bloodshed.", "", 3553897837, 3037866776)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_battle_gf_fa6b8296.mp3", "They cannot match our strength. Charge!", "", 3818976104, 1332551759)
+ end
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gm_4be2fecc.mp3", "You may win the battle, but the war is far from over!", "", 9065845, 102503565, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gm_258f0139.mp3", "Do not surrender to the invaders!", "", 703053605, 1971945197, Spawn, 0)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gf_258f0139.mp3", "Do not surrender to the invaders!", "", 928337336, 4254092896, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gf_4be2fecc.mp3", "You may win the battle, but the war is far from over!", "", 3327742171, 2045821391, Spawn, 0)
+ end
+ end
+ end
+--end
+
+
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_halfhealth_gm_5a6c112c.mp3", "Agggggh! There is no pain only death and failure!", "", 2051650869, 1276361533, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_halfhealth_gm_581c2926.mp3", "You'll pay for that!", "", 2366218696, 2114997045, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_halfhealth_gm_1ad2d46f.mp3", "Your petty weapons are no match for me!", "", 2269900119, 3290320421, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_halfhealth_gm_aff2b15d.mp3", "Now I'm really angry!", "", 1599348947, 4096819162, Spawn, 0)
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_halfhealth_gf_1ad2d46f.mp3", "Your petty weapons are no match for me!", "", 2285469219, 3359769172, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_halfhealth_gf_1ad2d46f.mp3", "Your petty weapons are no match for me!", "", 2285469219, 3359769172, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_halfhealth_gf_aff2b15d.mp3", "Now I'm really angry!", "", 3362643729, 1907494922, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_halfhealth_gf_581c2926.mp3", "You'll pay for that!", "", 480032723, 3225416629, Spawn, 0)
+ end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_victory_gm_1de29528.mp3", "Death was your only escape from me, coward!", "", 3626940960, 2890932770, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gm_4be2fecc.mp3", "You may win the battle, but the war is far from over!", "", 9065845, 102503565, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_victory_gf_90f4b426.mp3", "Forward! Leave no survivors!", "", 1746137281, 1712355529, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_victory_gf_1c683d69.mp3", "Leave the carcasses to rot!", "", 1941316513, 697971111, Spawn, 0)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua
new file mode 100644
index 000000000..3c7602475
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua
@@ -0,0 +1,146 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua
+ Script Author : dorbin
+ Script Date : 2024.01.05 01:01:43
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+ function aggro(NPC,Spawn)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and MakeRandomInt(0,100) <=33 and IsPlayer(Spawn) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_aggro_gm_4af7a99.mp3", "You're not as sneaky as you thought.", "", 1683997219, 1178080164)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_aggro_gm_7c145a1f.mp3", "Sees us, did we? Must not let you talk then.", "", 1928944506, 4197211546)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_aggro_gm_ce5970ec.mp3", "Startle us, you did! We'll remedy that.", "", 3710022769, 1084825101)
+ end
+ else
+ choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_aggro_gf_ce5970ec.mp3", "Startle us, you did! We'll remedy that.", "", 3905874632, 4086824059)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_aggro_gf_7c145a1f.mp3", "Sees us, did we? Must not let you talk then.", "", 2661963919, 697614069)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_aggro_gf_4af7a99.mp3", "You're not as sneaky as you thought.", "", 1898398655, 853136085)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_2/ft/ratonga/ratonga_base_2_1_aggro_gf_a3d8a506.mp3", "Not very nice of you to be all sneaky.", "", 2210593426, 1217099089, Spawn, 0)
+ end
+end
+end
+end
+
+
+
+function death(NPC,Spawn)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_death_gm_e9ba5c44.mp3", "Flee and take care of them later.", "", 2862575499, 3074650652)
+ elseif choice == 2 then
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Ow...OWww!", "", 0, 0)
+ else
+ PlayFlavor(NPC, "", "This is the end... for meess...", "", 0, 0)
+ end
+ end
+ end
+end
+
+
+
+function healthchanged(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer") == "false" and IsPlayer(Player) and IsAlive(NPC)==true then
+ if GetTempVariable(NPC, "HealthCallout") == "false" then
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.55 and GetHP(NPC) > GetMaxHP(NPC) * 0.45 then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ AddTimer(NPC,12500,"HealthReset")
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_halfhealth_gm_a2ace12c.mp3", "Don't hurt us! We're no threat to your mightiness.", "", 3593075606, 2907318102)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_halfhealth_gm_9c7df7ea.mp3", "That patch of fur will never grow back, you know.", "", 2241929269, 2874755723)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_halfhealth_gf_a2ace12c.mp3", "Don't hurt us! We're no threat to your mightiness.", "", 1631608737, 385456101)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_halfhealth_gf_9c7df7ea.mp3", "That patch of fur will never grow back, you know.", "", 4146309857, 1135607887)
+ end
+ end
+ end
+end
+end
+end
+
+function victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gm_935883a.mp3", "Shhh ... shhh ... it's ok ... shhh ...shhh. Stop fighting it...", "", 1459182295, 1340643629)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gm_732f23e7.mp3", "The dead tell no tales", "", 636430623, 2715556056)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gm_15e8fc93.mp3","One less worry in my life!",4116602987,3804155045)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gf_935883a.mp3", "Shhh ... shhh ... it's ok ... shhh ...shhh. Stop fighting it...", "", 1459182295, 1340643629)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gf_732f23e7.mp3", "The dead tell no tales", "", 636430623, 2715556056)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua
index d3aa3e90b..5513f0a6b 100755
--- a/server/SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua
@@ -101,14 +101,18 @@ if IsInCombat(NPC)==true and IsAlive(NPC) == true and math.random(0,100)<=25 the
PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_battle_gm_885bb802.mp3", "Your skin will make a nice rug.", "", 1438966168, 4203435659)
end
else
- PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_battle_gf_ee1e1a8.mp3", "Blood bath!", "", 3988277815, 18269010)
- end
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_battle_gf_ee1e1a8.mp3", "Blood bath!", "", 3988277815, 18269010)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_battle_mf_7ec83f83.mp3", "Meat better if you thwack it a few times.", "", 2708504622, 611837925)
+ end
if IsAlive(NPC)then
AddTimer(NPC,15000,"FifteenCall")
end
end
end
-
+end
function healthchanged(NPC, Spawn)
--[[ if CalloutTimer == false then
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BaseZombie1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BaseZombie1.lua
new file mode 100755
index 000000000..d677e7cae
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BaseZombie1.lua
@@ -0,0 +1,106 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BaseZombie1.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:47
+ Script Purpose :
+ :
+--]]
+
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_aggro_gm_ed97b327.mp3", "I will slowly strip the fleshy tissue from your body!", "", 3093455157, 448746789, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_aggro_gm_7562a2d8.mp3", "Now you've made me hungry!", "", 2457939212, 807289510, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_aggro_gm_f9016be9.mp3", "Why do you pester me?", "", 2204405446, 1306718710, Spawn, 0)
+ end
+end
+
+
+
+function death(NPC,Spawn)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Spawn) then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_death_gm_295360a5.mp3", "Feed on the fallen after we are victorious.", "", 3693073203, 1294287468, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_death_gm_f086e41b.mp3", "You cannot stop us all!", "", 1972347388, 3291104853, Spawn)
+ end
+ end
+end
+
+
+
+function healthchanged(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer") == "false" and IsPlayer(Spawn) then
+ if GetTempVariable(NPC, "HealthCallout") == "false" then
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.55 then
+ if GetHP(NPC) > GetMaxHP(NPC) * 0.45 then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ AddTimer(NPC,12500,"HealthReset")
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_halfhealth_gm_4d9fe331.mp3", "What you do to me, I will double on to you!", "", 3966548503, 4041708379, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_halfhealth_gm_e51a0853.mp3", "I feel no pain!", "", 4045005655, 88734265, Spawn)
+ end
+ end
+ end
+ end
+end
+end
+
+
+function victory(NPC,Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/zombie_base_1/ft/zombie/zombie_base_1_1_victory_gm_c6b1a91.mp3", "Wonderful bounty of flesh!", "", 1214200232, 3299404629, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/zombie_hands_of_tseralith/ft/zombie/zombie_hands_of_tseralith_1_victory_gm_4a268630.mp3", "Your death brings me strength.", "", 2621974641, 301635725, Spawn)
+end
+end
+
+
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua b/server/SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua
new file mode 100755
index 000000000..952895d80
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua
@@ -0,0 +1,131 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.01 01:12:00
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gm_21432a6a.mp3", "TravaHAS merallund kBORrten illanya", "", 1178396737, 3396757213, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 3849408454, 1757211832, Player, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gm_bc265d9b.mp3", "EeeSIP qweek MEEerallow neep", "", 1253151944, 2827076804, Player, 26)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 1953495633, 901796916, Player, 26)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gf_21432a6a.mp3", "TravaHAS merallund kBORrten illanya", "", 3484386885, 1475086391, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gf_5a81ec49.mp3", "Hekveten plava SU klina", "", 3639926873, 1002267878, Player, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_darkblades/ft/ratonga/ratonga_darkblades_1_garbled_gf_5a81ec49.mp3", "Hekveten plava SU klina", "", 4282746773, 1025120966, Player, 26)
+ end
+end
+end
+
+ function aggro(NPC,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,26 )then
+ Garbled(NPC,Player)
+ else
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_aggro_gm_ad7530c0.mp3", "Kill the intruder!", "", 2219487268, 4134058791, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_aggro_gm_b7a71d5b.mp3", "Blind its eyes!", "", 1105207049, 1634151428, Player, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_aggro_gm_a33765b3.mp3", "The Black Magus rule the Sprawl!", "", 1461049897, 1751771993, Player, 26)
+
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_aggro_gf_ad7530c0.mp3", "Kill the intruder!", "", 671062994, 1658163041, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_aggro_gf_a33765b3.mp3", "The Black Magus rule the Sprawl!", "", 1848525428, 1274115535, Player, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_aggro_gf_b7a71d5b.mp3", "Blind its eyes!", "", 2430948603, 4141201947, Player, 26)
+ end
+end
+end
+end
+end
+
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,26 )then
+ Garbled(NPC,Player)
+ else
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_death_gm_46ba8472.mp3", "That was just a runt!", "", 2089979278, 2314600701, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_darkblades/ft/ratonga/ratonga_darkblades_1_death_gm_e7600f72.mp3", "Now who will pick the locks?!", "", 2755004589, 1076685336, Player, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_death_gm_5a5e2dda.mp3", "This doesn't look so good.", "", 1114919917, 808862085, Player, 26)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_darkblades/ft/ratonga/ratonga_darkblades_2_death_gf_e7600f72.mp3", "Now who will pick the locks?!", "", 253904273, 1976320729, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_darkblades/ft/ratonga/ratonga_darkblades_2_death_gf_497acee7.mp3", "That just improves my cut of the loot!", "", 1920882673, 458148245, Player, 26)
+
+ end
+ end
+ end
+end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,26 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,26 )then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gm_935883a.mp3", "Shhh ... shhh ... it's ok ... shhh ...shhh. Stop fighting it...", "", 1459182295, 1340643629, Player, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gm_732f23e7.mp3", "The dead tell no tales", "", 636430623, 2715556056, Player, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gm_15e8fc93.mp3", "One less worry in my life!", "", 4116602987, 3804155045, Player,26)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gf_732f23e7.mp3", "The dead tell no tales", "", 1062202875, 1393213249, Player,26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_base_1/ft/ratonga/ratonga_base_1_1_victory_gf_935883a.mp3", "Shhh ... shhh ... it's ok ... shhh ...shhh. Stop fighting it...", "", 1459182295, 1340643629, Player, 26)
+
+ end
+ end
+ end
+end
+
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua b/server/SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua
new file mode 100755
index 000000000..bfc9341e1
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua
@@ -0,0 +1,225 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BloodSabers.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.13 03:09:24
+ Script Purpose :
+ :
+--]]
+function Garbled(NPC,Spawn)
+if GetGender(NPC) ==2 then
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gf_5c77ba46.mp3", "Chee ava kirAH tay!", "", 4059494475, 924700666, Spawn, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 1940215504, 447502824, Spawn, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gf_bc265d9b.mp3", "EeeSIP qweek MEEerallow neep", "", 1297314416, 2158933523, Spawn, 26)
+ end
+else
+ local choice = MakeRandomInt(1,7)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 2175556278, 29227183, Spawn, 26)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 1940215504, 447502824, Spawn, 26)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_bc265d9b.mp3", "EeeSIP qweek MEEerallow neep", "", 148555474, 1278831922, Spawn, 26)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 3536439879, 1109691272, Spawn, 26)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 806743894, 496586204, Spawn, 26)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_21432a6a.mp3", "TravaHAS merallund kBORrten illanya", "", 1269733907, 434806140, Spawn, 26)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_bc265d9b.mp3", "EeeSIP qweek MEEerallow neep", "", 3300712812, 2803842116, Spawn, 26)
+end
+end
+end
+
+--[[
+ function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=1 and GetClass(Spawn)<=10 or GetClass(Spawn)>=21 and GetClass(Spawn)<=30 then
+ local choice = MakeRandomInt(1,7) --Mage/Fighter CHECK
+ else
+ local choice = MakeRandomInt(1,5)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_10fd87eb.mp3", "There is no escape for you now!", "", 2989643101, 2260454555)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_beacbb30.mp3", "I hope you put your affairs in order.", "", 799093996, 16617637)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_fe18133.mp3", "Look what strolled into the spider's web!", "", 4178015902, 2202039151)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_aggro_gm_10fd87eb.mp3", "There is no escape for you now!", "", 3427660043, 2534456197)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_aggro_gm_fe18133.mp3", "Look what strolled into the spider's web!", "", 1688336194, 2269151294)
+ elseif choice == 6 or 7 then
+ if GetClass(Spawn)>=1 and GetClass(Spawn)<=10 then--Fighter CHECK
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maofighter_gm_c01f2ef8.mp3", "Let's see how good of a fighter you really are!", "", 976101228, 853372931)
+ else--Mage CHECK
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maomage_gm_7c1c0586.mp3", "Your pathetic parlor tricks won't save you now, magician!", "", 2940784449, 2243650132)
+ end
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gf_10fd87eb.mp3", "There is no escape for you now!", "", 3641868496, 1960514853)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gf_fe18133.mp3", "Look what strolled into the spider's web!", "", 1570890577, 2869516555)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_aggro_gf_10fd87eb.mp3", "There is no escape for you now!", "", 3743520097, 2328340147)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_aggro_gf_fe18133.mp3", "Look what strolled into the spider's web!", "", 2639788240, 46489616)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_aggro_gf_fe18133.mp3", "Look what strolled into the spider's web!", "", 2332756549, 3562953667)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--[[
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_25576197.mp3", "I will have vengeance!", "", 360053692, 4149753869)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2338278515, 1160150777)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gm_25576197.mp3", "I will have vengeance!", "", 1315021503, 378441917)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 4054713295, 2203944491)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gm_25576197.mp3", "I will have vengeance!", "", 433254383, 1749773166)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 1905250318, 2280015161)
+ end
+ else
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gf_25576197.mp3", "I will have vengeance!", "", 2208779791, 246336299)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gf_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2248940979, 3184577285)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gf_25576197.mp3", "I will have vengeance!", "", 378367578, 835613312)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_death_gf_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2832376323, 444359174)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gf_25576197.mp3", "I will have vengeance!", "", 58514974, 479667048, Spawn)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_death_gf_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 291851398, 546843337)
+ end
+ end
+ end
+--end
+
+
+function FifteenCall(NPC,Player)
+if IsInCombat(NPC)==true and IsAlive(NPC) == true and math.random(0,100)<=33 then
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--[[
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_cm_4e66222a.mp3", "You cannot deny the power of hate!", "", 2308305258, 1715309735)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_316a6c63.mp3", "I crave your suffering!", "", 3367682978, 4121942691)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_6806b443.mp3", "You are no match for the Teir'Dal!", "", 2992438842, 2162693039)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_700b6151.mp3", "A feeble attempt from a worthless opponent.", "", 943969253, 2337029939)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_a38dc90c.mp3", "Close in until they can't breathe!", "", 1646052354, 1989688436)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_mm_4832fde6.mp3", "Now, prepare to be eviscerated!", "", 1640233154, 431623172)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gf_a38dc90c.mp3", "Close in until they can't breathe!", "", 2932951909, 3358869262)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gf_700b6151.mp3", "A feeble attempt from a worthless opponent.", "", 943969253, 2337029939, Spawn) --DOESN"T WORK (needs Key)
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,15000,"FifteenCall")
+ end
+end
+end
+end
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--[[
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_577ab333.mp3", "You'll pay for that one, peon!", "", 1420508530, 39058961)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_9e244d19.mp3", "How dare you!", "", 3305445355, 1846155898)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_halfhealth_gf_9e244d19.mp3", "How dare you!", "", 2263865273, 2956956838)
+ end
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_2_halfhealth_gf_9e244d19.mp3", "How dare you!", "", 2263865273, 2956956838)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gf_577ab333.mp3", "You'll pay for that one, peon!", "", 2534123849, 501758946)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gf_9e244d19.mp3", "How dare you!", "", 2905660023, 2043697886)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_halfhealth_gm_577ab333.mp3", "You'll pay for that one, peon!", "", 475204402, 2998439968)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_1/ft/darkelf/darkelf_base_1_3_halfhealth_gm_9e244d19.mp3", "How dare you!", "", 2287743179, 1322949627)
+ end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--[[
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_dff26fa.mp3", "It is a shame we must end it this way ... I could have used you.", "", 1363661737, 942201815)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then --NO FEMALE Darkelf Victory VOs
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_dff26fa.mp3", "It is a shame we must end it this way ... I could have used you.", "", 1363661737, 942201815)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end]]--
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua b/server/SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua
new file mode 100755
index 000000000..45db591c8
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua
@@ -0,0 +1,111 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.05 06:07:11
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_d552223c.mp3", "GEKKKKnoh! Ezzrrt sha kemm.", "", 1083788244, 2181690295, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_95912cdc.mp3", "Harkt brecht ogglot kressht", "", 1749294695, 2575234394, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_73b2c225.mp3", "Gretz kagh lotgg vep nabrecht", "", 3140410719, 1155418716, Player, 17)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_cd184493.mp3", "Purzt gort NARGAAAAA!!! Durzog carb!", "", 2698130766, 658534720, Player, 17)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7be96fc0.mp3", "Help! Intruders are here to kill us all.", "", 3649123076, 3496691517, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_58aa3cd6.mp3", "Everyone, over here. Kill them and take their boots!", "", 434487644, 2328686578, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7afa7bb1.mp3", "Perfect! This one has some nice things.", "", 3642130783, 1736257146, Player, 17)
+ end
+end
+end
+end
+
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_e08325ae.mp3", "Quick, get them off me!", "", 244259445, 3279788307, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_145827a4.mp3", "Help! I can't feel my arm.", "", 2498804724, 1519811140, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_77dcb788.mp3", "Uh ohhhhhhhhh!", "", 422612512, 3900776578, Player, 17)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_battle_m_15e66010.mp3", "I think we should just run!", "", 1889420114, 3820789621, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_battle_m_bed76d51.mp3", "Fall over and they'll think we're dead.", "", 2824708625, 2715771581, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_battle_21272d14.mp3", "Can anyone understand what they're saying?", "", 3815828677, 3690188091, Player, 17)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,17 )then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_victory_cebb45a9.mp3", "Look, I killed one! I killed one!", "", 1939874871, 624844821, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_victory_bfb0a7a3.mp3", "All of this stuff is mine!", "", 4284515986, 2571034270, Player, 17)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua b/server/SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua
new file mode 100755
index 000000000..8c7ba9339
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua
@@ -0,0 +1,139 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/Dark_Coven.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.26 12:04:11
+ Script Purpose :
+ :
+--]]
+
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+
+function aggro(NPC,Spawn)
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_dark_coven/ft/human/human_dark_coven_1_aggro_gm_949dc856.mp3", "Our plans do not include you!", "", 405839630, 785819215)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_dark_coven/ft/human/human_dark_coven_1_aggro_gm_a60cf2ef.mp3", "We will not allow your meddlesome ways to continue.", "", 450486378, 3835111883)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_aggro_gf_949dc856.mp3", "Our plans do not include you!", "", 3085098101, 2051124081)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_aggro_gf_a60cf2ef.mp3", "We will not allow your meddlesome ways to continue.", "", 4234607165, 2760526135)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_aggro_gf_45499fb0.mp3", "What? Who dares to disrupt the Dark Coven?", "", 1379384971, 1110995776)
+ end
+ AddTimer(NPC,15000,"FifteenCall")
+end
+end
+
+
+
+
+function death(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_dark_coven/ft/human/human_dark_coven_1_death_gm_3cf819de.mp3", "I hope that doesn't happen to me!", "", 2189708975, 2914511928)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_dark_coven/ft/human/human_dark_coven_1_death_gm_f91e0887.mp3", "Thule's blood! You'll pay for that!", "", 3536447254, 3337139055)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_death_gf_f91e0887.mp3", "Thule's blood! You'll pay for that!", "", 2051236772, 852294244)
+ else
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_death_gf_3cf819de.mp3", "I hope that doesn't happen to me!", "", 934100362, 1666973583)
+ end
+ end
+ end
+--end
+
+
+function healthchanged(NPC, Spawn)
+--[[ if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if HealthCallout == false then
+ if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if GetGender(NPC)==1 then
+ --MISSING
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_halfhealth_gf_9104e3c1.mp3", "Oh drat. I hate the reincarnation process!", "", 4015796652, 3375474478)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_dark_coven/ft/human/human_dark_coven_1_halfhealth_gf_c2957367.mp3", "Noooo! I'm melting!", "heart", 4150698035, 4276254786)
+ end
+ end
+ end
+end
+end
+
+--end
+
+function victory(NPC,Spawn)
+ --[[if CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,7000,"ResetTimer")]]--
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_1babf022.mp3", "Is that all you have?", "", 170267964, 1158805306)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_aggro_gm_da8c1c5d.mp3", "You angered the spirits of the woods for the last time.", "", 3652855832, 3722520538) end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_dreadnaught/ft/barbarian/barbarian_dreadnaught_1_victory_gf_e6d7960e.mp3", "You didn't stand a chance!", "", 3255267278, 1071089122)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_f87005b5.mp3", "Now you will have peace!", "", 2974774059, 665726799)
+ end
+ end
+end
+--end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ CalloutTimer = false
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ HealthCallout = false
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua b/server/SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua
index 07fa977d4..8f704c860 100755
--- a/server/SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua
+++ b/server/SpawnScripts/Generic/MonsterCallouts/DarkpawGnoll1.lua
@@ -37,7 +37,8 @@ function Garbled(NPC,Spawn)
end
function aggro(NPC,Spawn)
- if not HasLanguage(Spawn,18 )then
+ if IsPlayer(Spawn)==true then
+ if not HasLanguage(Spawn,18 )and IsPlayer(Spawn)==true then
Garbled(NPC,Spawn)
else
local choice = MakeRandomInt(1,11)
@@ -71,13 +72,15 @@ end
AddTimer(NPC,15000,"FifteenCall")
end
end
-
+end
-- Doesn't Work PlayFlavor(NPC, "voiceover/english/optional5/gnoll_base_2/ft/gnoll/gnoll_base_2_1_aggro_959e4683.mp3", "Intruder!", "", 1672215946, 3521592402, Spawn, 18)
function death(NPC,Spawn)
if math.random(0,100)<=75 then
- if not HasLanguage(Spawn,18 )then
+ if IsPlayer(Spawn)==true then
+
+ if not HasLanguage(Spawn,18 ) then
Garbled(NPC,Spawn)
else
local choice = MakeRandomInt(1,9)
@@ -104,16 +107,18 @@ function death(NPC,Spawn)
end
end
end
+end
-- DOES NOT WORK PlayFlavor(NPC, "voiceover/english/optional5/gnoll_base_2/ft/gnoll/gnoll_base_2_1_death_7cbd3c71.mp3", "I'll rip your throat open!", "", 134141978, 4165685331, Spawn, 18)
-function FifteenCall(NPC,Player)
+function FifteenCall(NPC,Spawn)
+ if IsPlayer(Spawn)==true then
if IsInCombat(NPC)==true then
if IsAlive(NPC) then
if IsInCombat(NPC)==true then
if math.random(0,100)<=60 then
- if not HasLanguage(Player,18 )then
- Garbled(NPC,Player)
+ if not HasLanguage(Spawn,18 )and IsPlayer(Spawn)==true then
+ Garbled(NPC,Spawn)
else
local choice = MakeRandomInt(1,4)
if choice == 1 then
@@ -133,14 +138,16 @@ end
end
end
end
+end
function healthchanged(NPC, Spawn)
+ if IsPlayer(Spawn)==true then
if HealthCallout == false then
if GetHP(NPC) < GetMaxHP(NPC) * 0.55 then
if GetHP(NPC) > GetMaxHP(NPC) * 0.45 then
HealthCallout = true
AddTimer(NPC,10000,"HealthReset")
- if not HasLanguage(Spawn,18 )then
+ if not HasLanguage(Spawn,18 )and IsPlayer(Spawn)==true then
Garbled(NPC,Spawn)
else
local choice = MakeRandomInt(1,4)
@@ -162,6 +169,7 @@ function healthchanged(NPC, Spawn)
end
end
end
+end
function HealthReset (NPC)
HealthCallout = false
@@ -169,7 +177,8 @@ end
function victory(NPC,Spawn)
- if HasLanguage(Spawn,18 )then
+ if IsPlayer(Spawn)==true then
+ if HasLanguage(Spawn,18 )and IsPlayer(Spawn)==true then
local choice = MakeRandomInt(1,3)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/gnoll_base_1/ft/gnoll/gnoll_base_1_3_victory_e4520926.mp3", "Packmate not happy with scrawny catch.", "", 1321865956, 173648139, Spawn, 18)
@@ -179,4 +188,5 @@ function victory(NPC,Spawn)
PlayFlavor(NPC, "voiceover/english/gnoll_darkpaw/ft/gnoll/gnoll_darkpaw_1_victory_d9fbe894.mp3", "That was easy! Next!", "", 1732578964, 1761133947, Spawn, 18)
end
end
+end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua b/server/SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua
new file mode 100755
index 000000000..a68c419c2
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua
@@ -0,0 +1,122 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/ForestersAntonica.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.30 12:04:20
+ Script Purpose : Farmers and Foresters in Antonica( and Beyond) Combat VOs
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+--AGGRO CHECK --
+
+function aggro(NPC,Spawn) --RACE CHECK
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "HealthCallout", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_aggro_gm_da8c1c5d.mp3", "You angered the spirits of the woods for the last time.", "", 3652855832, 3722520538)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_aggro_gm_94a32cfd.mp3", "You will not despoil our sacred forest!", "", 1192082212, 2703953780)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_aggro_gf_fb18860.mp3", "The wisdom of the woods is not for you!", "", 114509927, 2469036691)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_aggro_gf_da8c1c5d.mp3", "You angered the spirits of the woods for the last time.", "", 3419069517, 4183032814)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_aggro_gf_94a32cfd.mp3", "You will not despoil our sacred forest!", "", 603052244, 1007102278)
+ end
+end
+end
+end
+
+
+-- DEATH CHECK --
+
+function death(NPC,Spawn) --RACE CHECK
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_death_gm_c8e6f923.mp3", "My friend may have fallen like a rotten tree but I will not.", "", 1442503118, 3414327424, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_death_gm_3b153248.mp3", "You cannot kill us all, despoiler!", "", 321437922, 3533387413, Spawn, 0)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_death_gf_c8e6f923.mp3", "My friend may have fallen like a rotten tree but I will not.", "", 4216402375, 1354432516, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_death_gf_3b153248.mp3", "You cannot kill us all, despoiler!", "", 3926164437, 4058895580, Spawn, 0)
+ end
+ end
+end
+end
+
+-- HealthChange CHECK --
+
+function healthchanged(NPC,Spawn) --RACE CHECK
+if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" and GetTempVariable(NPC, "HealthCallout")== "false" then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ AddTimer(NPC,9000,"HealthReset")
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_halfhealth_gm_3b5012e4.mp3", "Is this sap seeping from my skin?", "", 3378401909, 2016168772)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_halfhealth_gm_6a01659b.mp3", "You will not fell me like some lumberjack!", "", 3082129005, 2882113499)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_foresters/ft/human/human_foresters_1_battle_gm_df824c1b.mp3", "I'm more frightening than the dark woods.", "", 3188821257, 3608290528)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_8529e507.mp3", "I can't hold them forever!", "", 3371581229, 792393228)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_1babf022.mp3", "Is that all you have?", "", 2979351329, 4050238683)
+ end
+ end
+ end
+end
+end
+
+-- Victory CHECK --
+
+
+function victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_153f12ff.mp3", "One down!", "", 3009518664, 4140389760)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_4553e1e0.mp3", "Flee now or meet this one's fate.", "", 3032162747, 1359206304)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_ec0cd85a.mp3", "I hope they're all this easy.", "", 2687289628, 2303639320)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua b/server/SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua
new file mode 100755
index 000000000..13c4c4713
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua
@@ -0,0 +1,346 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.01 05:12:33
+ Script Purpose : Giantslayer VOs between barbarian, ogre, and troll. Missing MANY VOs. Replaced most with generic racial VOs/Muted Playflavors.
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+local Ogre = 12
+local Troll = 14
+local Barbarian = 0
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+if GetRace(NPC) == Barbarian then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_steppes/ft/barbarian/barbarian_steppes_1_garbled_gm_1d4e2601.mp3", "Zergen oer steb liteit", "", 1881495348, 2631084324, Spawn,1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_steppes/ft/barbarian/barbarian_steppes_1_garbled_gm_b0cb46d4.mp3", "Neit te geb ruiken, wat weg hout u hetten", "", 1338663568, 2860304215, Spawn,1)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_steppes/ft/barbarian/barbarian_steppes_1_garbled_gm_b80c3123.mp3", "Asfkher van baed rijs prakti kjen ", "", 1248648431, 1559755809, Spawn,1)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_steppes/ft/barbarian/barbarian_steppes_1_garbled_gm_f1b9e87a.mp3", "Uf envoudig een van uw gekozen en enkel geven om Vensters", "", 3095091783, 3153428791, Spawn,1)
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_garbled_gf_39fa44a4.mp3", "Voor van de hebben verktozen um venester ", "", 1454634641, 3478787440, Spawn, 1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_garbled_gf_1d4e2601.mp3", "Zergen oer steb liteit", "", 3787818080, 297930332, Spawn, 1)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_garbled_gf_b0cb46d4.mp3", "Neit te geb ruiken, wat weg hout u hetten", "", 2958929129, 2080811104, Spawn, 1)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_garbled_gf_411c42c0.mp3", "Markt om de teg enges teld ek westiae te stellen. ", "", 3699684343, 1809069007, Spawn, 1)
+ end
+ end
+elseif GetRace(NPC) == Ogre then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_dervish/ft/ogre/ogre_dervish_2_garbled_gm_4e36e011.mp3", "Dorsht kro venab modat sed", "", 3845588707, 2500883879, Spawn,14)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ogre_dervish/ft/ogre/ogre_dervish_1_garbled_gm_2e858451.mp3", "Borod groda sud med ka", "", 3026340298, 870128273, Spawn,14)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ogre_dervish/ft/ogre/ogre_dervish_1_garbled_gm_7d0991b7.mp3", "Hurth mroth beheda graben deleth", "", 2073169291, 2543219571, Spawn,14)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_dervish/ft/ogre/ogre_dervish_2_garbled_gm_2e858451.mp3", "Borod groda sud med ka", "", 2573547747, 2195246695, Spawn,14)
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/ogre_dervish/ft/ogre/ogre_dervish_1_garbled_gf_bef20a0a.mp3", "Grada ulgar boi hemar", "", 2699004920, 560903809, Spawn,14)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ogre_dervish/ft/ogre/ogre_dervish_1_garbled_gf_7d0991b7.mp3", "Hurth mroth beheda graben deleth", "", 2981299879, 1969453091, Spawn,14)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_dervish/ft/ogre/ogre_dervish_2_garbled_gf_2e858451.mp3", "Borod groda sud med ka", "", 2001985676, 3233914404, Spawn,14)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_dervish/ft/ogre/ogre_dervish_2_garbled_gf_7d0991b7.mp3", "Hurth mroth beheda graben deleth", "", 2347032592, 631248646, Spawn,14)
+ end
+ end
+elseif GetRace(NPC) == Troll then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_318f674b.mp3", "Erch bosta pankan toost", "", 2846330309, 4155347396, Spawn,15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_43bed989.mp3", "Habat zopft hach'te glarst", "", 2701453259, 3347954170, Spawn,15)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_a1a1512f.mp3", "Tastke blatsa zurtek nyt", "", 3824904925, 121650296, Spawn,15)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_c4c81df1.mp3", "Pazzkkan gracht glizt kep", "", 1821063853, 3495000701, Spawn,15)
+ end
+ else -- FEMALE (These are male troll VOs for now)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_318f674b.mp3", "Erch bosta pankan toost", "", 2846330309, 4155347396, Spawn,15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_43bed989.mp3", "Habat zopft hach'te glarst", "", 2701453259, 3347954170, Spawn,15)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_a1a1512f.mp3", "Tastke blatsa zurtek nyt", "", 3824904925, 121650296, Spawn,15)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional2/troll/ft/troll/troll_eco_garble_garbled_gm_c4c81df1.mp3", "Pazzkkan gracht glizt kep", "", 1821063853, 3495000701, Spawn,15)
+ end
+ end
+end
+end
+
+ function aggro(NPC,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+if GetRace(NPC) == Barbarian then
+ if not HasLanguage(Player,1)then
+ Garbled(NPC,Player)
+ else
+ aggroCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Ogre then
+ if not HasLanguage(Player,14)then
+ Garbled(NPC,Player)
+ else
+ aggroCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Troll then
+ if not HasLanguage(Player,15)then
+ Garbled(NPC,Player)
+ else
+ aggroCall(NPC,Player)
+ end
+end
+end
+end
+
+ function aggroCall(NPC,Player)
+if GetRace(NPC) == Barbarian then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 3715495401, 2861752836, Spawn, 1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_d2336620.mp3", "Your overconfidence will be your undoing.", "", 1735697087, 1551611219, Spawn, 1)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_2/ft/barbarian/barbarian_base_2_1_halfhealth_gm_e4144b42.mp3", "A true warrior feels no pain!", "", 3699343440, 1584591854, Spawn,1)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_aggro_gm_e5dbdc37.mp3", "There's no escaping my might!", "", 548778638, 825995484, Spawn, 1)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_aggro_gf_e5dbdc37.mp3", "There's no escaping my might!", "", 548778638, 825995484, Spawn, 1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_aggro_gf_aaaf35f7.mp3", "This battle will be the end of you!", "", 4178539814, 2861843546, Spawn, 1)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_d2336620.mp3", "Your overconfidence will be your undoing.", "", 2263836674, 942538899, Spawn,1)
+ end
+ end
+elseif GetRace(NPC) == Ogre then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ogre_giantslayer/ft/ogre/ogre_giantslayer_1_aggro_gm_e34983fd.mp3", "You messed with the wrong guy!", "", 2373153509, 3768633177, Spawn, 14)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307, Spawn, 14)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443, Spawn, 14)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/ogre_giantslayer/ft/ogre/ogre_giantslayer_1_aggro_gf_4cd8a067.mp3", "I'm gonna squosh you!", "", 3161832271, 3643573572, Spawn, 14)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_aggro_gf_d4cfd470.mp3", "Feel the might of Rallos!", "", 760635308, 455953200, Spawn,14)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_battle_gf_fa6b8296.mp3", "They cannot match our strength. Charge!", "", 3818976104, 1332551759, Spawn,14)
+ end
+ end
+elseif GetRace(NPC) == Troll then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_aggro_gm_b7e0b3a.mp3", "Me going to eat your kidney first.", "", 3664886715, 2450110061,15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_giantslayer/ft/troll/troll_giantslayer_2_aggro_gm_c0dad131.mp3", "Giantslayer power!", "", 976922385, 2649690552, Spawn, 15)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_aggro_gm_f06d6bb9.mp3", "Not nice to interrupt dinner.", "", 573837171, 4255493444,15)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_giantslayer/ft/troll/troll_giantslayer_2_aggro_gf_c0dad131.mp3", "Giantslayer power!", "", 976922385, 2649690552, Spawn, 15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_aggro_gf_b7e0b3a.mp3", "Me going to eat your kidney first.", "", 750980753, 3740010516, Spawn,15)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_2/ft/troll/troll_base_2_1_aggro_gf_62fd0e82.mp3", "What smells so good?", "", 3335229907, 713747453, Spawn,15)
+ end
+ end
+end
+end
+
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if MakeRandomInt(0,100)<=35 then
+if GetRace(NPC) == Barbarian then
+ if not HasLanguage(Player,1)then
+ Garbled(NPC,Player)
+ else
+ DeathCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Ogre then
+ if not HasLanguage(Player,14)then
+ Garbled(NPC,Player)
+ else
+ DeathCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Troll then
+ if not HasLanguage(Player,15)then
+ Garbled(NPC,Player)
+ else
+ DeathCall(NPC,Player)
+ end
+end
+end
+end
+end
+
+ function DeathCall(NPC,Player)
+if GetRace(NPC) == Barbarian then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_death_gm_c6234231.mp3", "No! I can't be defeated! Not by you!", "", 0, 0, Spawn, 1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_death_gm_438c5129.mp3", "The Giantslayers will avenge me!", "", 0, 0, Spawn, 1)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_death_gf_c6234231.mp3", "No! I can't be defeated! Not by you!", "", 218778824, 3585845916, Spawn, 1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/barbarian_giantslayer/ft/barbarian/barbarian_giantslayer_1_death_gf_438c5129.mp3", "The Giantslayers will avenge me!", "", 3264229264, 1027961998, Spawn, 1)
+ end
+ end
+elseif GetRace(NPC) == Ogre then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gm_4be2fecc.mp3", "You may win the battle, but the war is far from over!", "", 9065845, 102503565, Spawn, 14)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gm_258f0139.mp3", "Do not surrender to the invaders!", "", 703053605, 1971945197, Spawn, 14)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gf_258f0139.mp3", "Do not surrender to the invaders!", "", 928337336, 4254092896, Spawn, 14)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/ogre_base_2/ft/ogre/ogre_base_2_1_death_gf_4be2fecc.mp3", "You may win the battle, but the war is far from over!", "", 3327742171, 2045821391, Spawn, 14)
+ end
+ end
+elseif GetRace(NPC) == Troll then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_death_gm_e8c02d1e.mp3", "Feel kinda sleepy. Whacha do to me?", "", 3298938103, 1410551282, Spawn,15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_death_gm_e1755f3f.mp3", "Come back you coward! I'm not dead yet.", "", 86111608, 3954832486, Spawn,15)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_giantslayer/ft/troll/troll_giantslayer_2_death_gf_2caf3bcf.mp3", "No! Giantslayers never die!", "", 3123046582, 684022532, Spawn, 15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_death_gf_e8c02d1e.mp3", "Feel kinda sleepy. Whacha do to me?", "", 3447489483, 413641560, Spawn,15)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_death_gf_e1755f3f.mp3", "Come back you coward! I'm not dead yet.", "", 695536554, 1919499087, Spawn,15)
+ end
+ end
+end
+end
+
+
+
+
+function victory(NPC,Player)
+if GetRace(NPC) == Barbarian then
+ if not HasLanguage(Player,1)then
+ Garbled(NPC,Player)
+ else
+ VictoryCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Ogre then
+ if not HasLanguage(Player,14)then
+ Garbled(NPC,Player)
+ else
+ VictoryCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Troll then
+ if not HasLanguage(Player,15)then
+ Garbled(NPC,Player)
+ else
+ VictoryCall(NPC,Player)
+ end
+end
+end
+
+function VictoryCall(NPC,Player)
+if GetRace(NPC) == Barbarian then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_e707fef0.mp3", "Flee cowards, before I slaughter you all!", "", 3583801206, 1799910552, Spawn,1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_f87005b5.mp3", "Now you will have peace.", "", 3932457554, 2553847722, Spawn,1)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_155a84f0.mp3", "You fought well but not well enough!", "", 1144735491, 2154607760, Spawn,1)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_f87005b5.mp3", "Now you will have peace.", "", 2974774059, 665726799, Spawn,1)
+ end
+ end
+elseif GetRace(NPC) == Ogre then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_ec0cd85a.mp3", "I hope they're all this easy.", "", 2687289628, 2303639320, Spawn,14)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_153f12ff.mp3", "One down!", "", 3009518664, 4140389760, Spawn,14)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_victory_gf_1c683d69.mp3", "Leave the carcasses to rot!", "", 1941316513, 697971111, Spawn,14)
+ else
+ PlayFlavor(NPC, "voiceover/english/ogre_base_1/ft/ogre/ogre_base_1_1_victory_gf_90f4b426.mp3", "Forward! Leave no survivors!", "", 1746137281, 1712355529, Spawn,14)
+ end
+ end
+elseif GetRace(NPC) == Troll then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_victory_gm_ae6d66e3.mp3", "Teach you to mess with the best.", "", 927528340, Spawn, 2751002174,15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_halfhealth_gm_aa145f4d.mp3", "Neat, that'll leave a pretty scar", "", 675684950, Spawn, 4088135432,15)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_victory_gf_ae6d66e3.mp3", "Teach you to mess with the best.", "", 2175921460, Spawn, 357738989,15)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/troll_base_1/ft/troll/troll_base_1_1_battle_gf_ee1e1a8.mp3", "Blood bath!", "", 3988277815, Spawn, 18269010,15)
+ end
+ end
+end
+end
+
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua b/server/SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua
new file mode 100755
index 000000000..d3b7e2c3f
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua
@@ -0,0 +1,186 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.05 05:12:41
+ Script Purpose : Fabricated Guttersnipe callouts. VO file names posted, but keys are missing.
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if GetGender(NPC)==1 then --Male
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_aggro_gm_263c2013.mp3", "The Guttersnipes have no use for you! Die!","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_aggro_gm_2ef17f7.mp3", "Time for you to get out of Guttersnipe territory!", "", 0, 0, Player)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_aggro_gm_5d327d21.mp3", "Is that coins I hear? Time to pay up!", 0, 0, Player)
+ elseif choice == 4 then
+ AgroRaceCheck(NPC,Player)
+ end
+ else--Female
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_aggro_gf_263c2013.mp3", "The Guttersnipes have no use for you! Die!","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_aggro_gf_2ef17f7.mp3", "Time for you to get out of Guttersnipe territory!", "", 0, 0, Player)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_aggro_gf_5d327d21.mp3", "Our turf, our rules! Get'm!", 0, 0, Player)
+ elseif choice == 4 then
+ AgroRaceCheck(NPC,Player)
+ end
+ end
+end
+end
+
+
+function AgroRaceCheck(NPC,Player)
+ if GetGender(NPC)==1 then --Male
+ if GetClass(Player) <=0 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_maofighter_gm_21745cca.mp3", "This one looks like they can take a hit. I've got this!","", 0, 0)
+ elseif GetClass(Player) <=11 and GetClass(Player) >=20 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_maopriest_gm_6f5de.mp3", "We don't have time for your priestly nonsense!", "", 0, 0)
+ elseif GetClass(Player) <=21 and GetClass(Player) >=30 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_maomage_gm_8c02387d.mp3", "Get'm! Don't let them cast anything!", 0, 0)
+ elseif GetClass(Player) <=31 and GetClass(Player) then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_maoscout_gm_620be740", "Hit them quick! Before this sneaky one gets away!", 0, 0)
+ end
+ else--Female
+ if GetClass(Player) <=0 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_maofighter_gf_21745cca.mp3", "You lookin' for a fight, fighter? Come get some!","", 0, 0)
+ elseif GetClass(Player) <=11 and GetClass(Player) >=20 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_maopriest_gf_6f5de.mp3", "I'll cut you down before you can heal anyone, preist!", "", 0, 0)
+ elseif GetClass(Player) <=21 and GetClass(Player) >=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_maomage_gf_8c02387d.mp3", "I'll shank you before you cast amy more spells, mage!", 0, 0)
+ elseif GetClass(Player) <=31 and GetClass(Player) then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_maoscout_gf_620be740", "What's this? Scoutting our turf? Time to die!", 0, 0)
+ end
+ end
+end
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if GetGender(NPC)==1 then --Male
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_death_gm_41191517", "What a waste, that was one good Guttersnipe...","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_death_gm_fc5cfc9f.mp3", "I joined... for protection...from this...", "", 0, 0, Player)
+ end
+ else--Female
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_death_gf_41191517.mp3", "What a waste, that was one good Guttersnipe...","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_death_gf_fc5cfc9f.mp3", "I thought... there would be backup...", "", 0, 0, Player)
+
+ end
+ end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if GetGender(NPC)==1 then --Male
+ local choice = MakeRandomInt(1,11)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_cm_13cb812d.mp3", "You could never measure up to a Guttersnipe!","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_cm_9b9cbaba.mp3", "Stab'm! Stab! Stab! Stab!!", "", 0, 0, Player)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_cm_f0570dba.mp3", "Rough them up! I think I hear a coin purse!", 0, 0, Player)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gm_1a61cf6b.mp3", "Oh, you think you're so tough?!", 0, 0, Player)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gm_52579c2b", "Drop dead already! I've got a wager on your head!", 0, 0, Player)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gm_9e75bb4f.mp3", "You ever wonder what it feels like to die? Well, get ready for it!", 0, 0, Player)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gm_b9dbfd6c.mp3", "Our gang will cut you down!", 0, 0, Player)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gm_fdde8d5a.mp3", "Guttersnipes forever!!", 0, 0, Player)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_mm_1efc08d3.mp3", "Was that really a good idea?", 0, 0, Player)
+ elseif choice == 10 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_mm_e5317b7b.mp3", "Wow, you're a lot uglier up close!", 0, 0, Player)
+ elseif choice == 11 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_battle_mm_e9302d38.mp3", "Now, why did you do that? I guess you have a death wish!", 0, 0, Player)
+ end
+ else--Female
+ local choice = MakeRandomInt(1,11)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_cf_13cb812d.mp3", "You could never measure up to a Guttersnipe!","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_cf_9b9cbaba.mp3", "The Sprawl belongs to us!", "", 0, 0, Player)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_cf_f0570dba.mp3", "Rough them up! I think I hear a coin purse!", 0, 0, Player)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gf_1a61cf6b.mp3", "Oh, you think you're so tough?!", 0, 0, Player)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gf_52579c2b", "Drop dead already! I've got a wager on your head!", 0, 0, Player)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gf_9e75bb4f.mp3", "Our gang has no place for the likes of you!", 0, 0, Player)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gf_b9dbfd6c.mp3", "Your ear would look great on a necklace. Give it here!", 0, 0, Player)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_gf_fdde8d5a.mp3", "Guttersnipes forever!!", 0, 0, Player)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_mf_1efc08d3.mp3", "Was that really a good idea?", 0, 0, Player)
+ elseif choice == 10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_mf_e5317b7b.mp3", "Wow, you're a lot uglier up close!", 0, 0, Player)
+ elseif choice == 11 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_battle_mf_e9302d38.mp3", "Now, why did you do that? I guess you have a death wish!", 0, 0, Player)
+ end
+ end
+ end
+
+ if IsAlive(NPC)then
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+if IsPlayer(Player) then
+ if GetGender(NPC)==1 then --Male
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_victory_gm_348b23fd", "I call dibs on their stuff!","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_victory_gm_85bbc93f.mp3", "Shouldn't have messed with us! Now you're dead!", "", 0, 0, Player)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_guttersnipe/ft/human/human_guttersnipe_1_victory_gm_97725909", "Chalk up another win for the Guttersnipes!", "", 0, 0, Player)
+ end
+ else--Female
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_victory_gf_348b23fd", "I call dibs on their stuff!","", 0, 0, Player)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_victory_gf_85bbc93f.mp3", "Shouldn't have messed with us! Now you're dead!", "", 0, 0, Player)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_guttersnipe/ft/human/human_guttersnipe_1_victory_gf_97725909", "Chalk up another win for the Guttersnipes!", "", 0, 0, Player)
+ end
+ end
+end
+end
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua b/server/SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua
new file mode 100755
index 000000000..af82192ac
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua
@@ -0,0 +1,433 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/HighwaymanAntonica.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.29 12:04:03
+ Script Purpose : Antonica Highwayman VOs that does Spawn Race & Gender Check for correct use -- Barbarian, Halfelf, Human
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+--AGGRO CHECK --
+
+function aggro(NPC,Spawn) --RACE CHECK
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "HealthCallout", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,7000,"ResetTimer")
+ Race= GetRace(NPC)
+ Model = GetModelType(NPC)
+if Model >= 1462 and Model <= 1471 then
+Barb_aggro(NPC,Spawn)
+elseif Model ==78 or Model == 79 then
+HfE_aggro(NPC,Spawn)
+elseif Model ==132 or Model == 134 then
+Hum_aggro(NPC,Spawn)
+else
+end
+end
+end
+
+--[[if Race == 0 then
+Barb_aggro(NPC,Spawn)
+elseif Race ==6 then
+HfE_aggro(NPC,Spawn)
+elseif Race==9 then
+Hum_aggro(NPC,Spawn)
+else
+end
+end
+end ]]--
+
+function Barb_aggro(NPC,Spawn)
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 3715495401, 2861752836)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_d2336620.mp3", "Your overconfidence will be your undoing.", "", 1735697087, 1551611219)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gm_ea4ba638.mp3", "Sentries, alarm!", "", 83822322, 1846685810)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_maoscout_gm_abf544b6.mp3", "Time to run, you sneaky coward!", "", 401121050, 1757713301)
+ end
+ else
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_d2336620.mp3", "You overconfidence will be your undoing.", "", 2263836674, 942538899)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_ea4ba638.mp3", "Sentries, alarm!", "", 3264181187, 3210126852)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_394a7fe3.mp3", "Not sneaky enough to get past me.", "", 3417148270, 2109180100)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_maoscout_gf_abf544b6.mp3", "Time to run, you sneaky coward!", "", 195739451, 1913168121)
+ end
+end
+end
+
+function HfE_aggro(NPC,Spawn)
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=21 and GetClass(Spawn)<=30 then
+ choice = MakeRandomInt(1,3) --MAGE CHECK
+ else
+ choice = MakeRandomInt(1,2)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_12fbaefb.mp3", "Destroy the invader!", "", 489857902, 941763715)
+ elseif choice == 3 then
+PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_maomage_gm_96692f88.mp3", "Distract the magician or we'll all die!", "", 3332270247, 2351356263)
+end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_12fbaefb.mp3", "Destroy the invader!", "", 1313233821, 723410897)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_a68f64b6.mp3", "Alarm! Alarm!", "", 1220383018, 2962002142)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_13a3055.mp3", "Summon help, intruders have arrived!", "", 3324527452, 2122161878)
+ end
+end
+end
+
+function Hum_aggro(NPC,Spawn)
+ AddTimer(NPC,7000,"ResetTimer")
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=31 and GetClass(Spawn)<=42 then
+ choice = MakeRandomInt(1,4) --SCOUT CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a30c4f9d.mp3", "To arms!", "", 1238020980, 748146443)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_583690dc.mp3", "Summon help! We have invaders!", "", 3340212225, 279643307)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_maoscout_gm_d55d2935.mp3", "Use caution, they may have scouts!", "", 2353461553, 1453902220)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_583690dc.mp3", "Summon help! We have invaders!", "", 1598905349, 2204481929)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 3593389433, 3838830228)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_aggro_gf_a30c4f9d.mp3", "To arms!", "", 2291750057, 1030180613)
+ end
+end
+end
+
+
+
+-- DEATH CHECK --
+
+function death(NPC,Spawn) --RACE CHECK
+ Model = GetModelType(NPC)
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+if Model >= 1462 and Model <= 1471 then
+Barb_death(NPC,Spawn)
+elseif Model ==78 or Model == 79 then
+HfE_death(NPC,Spawn)
+elseif Model ==132 or Model == 134 then
+Hum_death(NPC,Spawn)
+else
+end
+end
+end
+
+
+
+--[[ Race= GetRace(NPC)
+ if Race == 0 then
+Barb_death(NPC,Spawn)
+elseif Race ==6 then
+HfE_death(NPC,Spawn)
+elseif Race==9 then
+Hum_death(NPC,Spawn)
+else
+end
+end
+end]]--
+
+function Barb_death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_3e24be0b.mp3", "Cover me while we regroup!", "", 144951462, 3922442401)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_steppes/ft/barbarian/barbarian_steppes_2_death_gm_60ab074d.mp3", "My clansmen will avenge me!", "", 891201418, 1562586894)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_death_gf_9f33cf68.mp3", "Don't break! Hold the line!", "", 4168139414, 1969505231)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_death_gf_747d38d7.mp3", "Don't fear death! There is no surrender!", "", 1668075339, 3492211420)
+ end
+ end
+end
+
+
+function HfE_death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_1a659852.mp3", "We must withdraw before we all die!", "", 3147364973, 1341536758, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn, 0)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_1a659852.mp3", "We must withdraw before we all die!", "", 2249500792, 2154633904, Spawn, 0)
+ end
+ end
+end
+
+
+function Hum_death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_3e24be0b.mp3", "Cover me while we regroup!", "", 144951462, 3922442401)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_death_gm_7612214f.mp3", "All hands retreat!", "", 3033325782, 1103449586)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_death_gf_3e24be0b.mp3", "Cover me while we regroup!", "", 3876965132, 3906042379)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_death_gf_7612214f.mp3", "All hands retreat!", "", 3620177897, 757784861)
+ end
+ end
+ end
+
+
+-- HealthChange CHECK --
+
+function healthchanged(NPC,Spawn) --RACE CHECK
+ Model = GetModelType(NPC)
+if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" and GetTempVariable(NPC, "HealthCallout")== "false" then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ AddTimer(NPC,9000,"ResetTimer")
+ AddTimer(NPC,9000,"HealthReset")
+ if Model >= 1462 and Model <= 1471 then
+ Barb_healthchanged(NPC,Spawn)
+ elseif Model ==78 or Model == 79 then
+ HfE_healthchanged(NPC,Spawn)
+ elseif Model ==132 or Model == 134 then
+ Hum_healthchanged(NPC,Spawn)
+ else
+ end
+ end
+end
+
+--[[ Race= GetRace(NPC)
+ if Race == 0 then
+ Barb_healthchanged(NPC,Spawn)
+ elseif Race ==6 then
+ HfE_healthchanged(NPC,Spawn)
+ elseif Race==9 then
+ Hum_healthchanged(NPC,Spawn)
+ else
+ end
+ end
+end]]--
+end
+
+function Barb_healthchanged(NPC, Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_halfhealth_gm_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 3033804277, 2302522141)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_halfhealth_gm_a04b8264.mp3", "Perhaps you're stronger than I thought!", "", 1156508542, 413023818)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_halfhealth_gm_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 4193910374, 3533989230) end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_3_halfhealth_gf_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 2527774659, 2542349358)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_2_halfhealth_gf_a04b8264.mp3", "Perhaps you're stronger than I thought!", "", 745602612, 2574365591)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_3_halfhealth_gf_267aa673.mp3", "Send for reinforcements! Their warriors are skilled.", "", 2527774659, 2542349358, Spawn, 0) end
+ end
+end
+
+
+function HfE_healthchanged(NPC, Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 1009191098, 3016339818, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e48659f9.mp3", "Now, that really hurt!", "", 241651222, 476491397, Spawn)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 743699854, 1906875496, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e48659f9.mp3", "Now, that really hurt!", "", 413378164, 719939114, Spawn)
+ end
+ end
+
+end
+
+
+function Hum_healthchanged(NPC, Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_1babf022.mp3", "Is that all you have?", "", 170267964, 1158805306)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_8529e507.mp3", "I can't hold them forever!", "", 644448824, 755050547)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_8529e507.mp3", "I can't hold them forever!", "", 3371581229, 792393228)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_1babf022.mp3", "Is that all you have?", "", 2979351329, 4050238683)
+ end
+ end
+end
+
+
+
+-- Victory CHECK --
+
+function victory(NPC,Spawn) --RACE CHECK
+ Model = GetModelType(NPC)
+if Model >= 1462 and Model <= 1471 then
+Barb_victory(NPC,Spawn)
+elseif Model ==78 or Model == 79 then
+HfE_victory(NPC,Spawn)
+elseif Model ==132 or Model == 134 then
+Hum_victory(NPC,Spawn)
+else
+end
+
+--[[ Race= GetRace(NPC)
+ if Race == 0 then
+Barb_victory(NPC,Spawn)
+elseif Race ==6 then
+HfE_victory(NPC,Spawn)
+elseif Race==9 then
+Hum_victory(NPC,Spawn)
+else
+end]]--
+end
+
+
+function Barb_victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_155a84f0.mp3", "You fought well but not well enough!", "", 450019542, 4158631545)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_e707fef0.mp3", "Flee cowards, before I slaughter you all!", "", 3583801206, 1799910552)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gm_f87005b5.mp3", "Now you will have peace.", "", 3932457554, 2553847722)
+ end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_e707fef0.mp3", "Flee cowards, before I slaughter you all!", "", 1852613611, 2630125108)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_155a84f0.mp3", "You fought well but not well enough!", "", 1144735491, 2154607760)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_f87005b5.mp3", "Now you will have peace.", "", 2974774059, 665726799)
+ end
+ end
+end
+
+function HfE_victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305, Spawn)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012, Spawn)
+ end
+ end
+end
+
+function Hum_victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_153f12ff.mp3", "One down!", "", 3009518664, 4140389760)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_4553e1e0.mp3", "Flee now or meet this one's fate.", "", 3032162747, 1359206304)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_ec0cd85a.mp3", "I hope they're all this easy.", "", 2687289628, 2303639320)
+ end
+ else
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua b/server/SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua
new file mode 100755
index 000000000..2f5f48aa2
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua
@@ -0,0 +1,129 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.05 06:07:27
+ Script Purpose :
+ :
+--]]
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_d552223c.mp3", "GEKKKKnoh! Ezzrrt sha kemm.", "", 1083788244, 2181690295, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_95912cdc.mp3", "Harkt brecht ogglot kressht", "", 1749294695, 2575234394, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_73b2c225.mp3", "Gretz kagh lotgg vep nabrecht", "", 3140410719, 1155418716, Player, 17)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_cd184493.mp3", "Purzt gort NARGAAAAA!!! Durzog carb!", "", 2698130766, 658534720, Player, 17)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and MakeRandomInt(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_2d2ccd12.mp3", "Incoming! Summon the warriors.", "", 3730616476, 4212115469, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_478609c4.mp3", "This must be my lucky day.", "", 1552928496, 830976152, Player, 17)
+ elseif choice == 3 then
+ if GetClass(Player) <=1 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_maofighter_42d206ef.mp3", "Kill the ugly one! He has the most armor!", "", 1385896447, 1033709680, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7afa7bb1.mp3", "Perfect! This one has some nice things.", "", 3642130783, 1736257146, Player, 17)
+ end
+end
+end
+end
+end
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=50 then
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_death_f7b415bf.mp3", "Run for your life!", "", 1229175170, 4046634541, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_death_937a01b8.mp3", "I can't see! Where are they?", "", 1920179873, 1406566187, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_77dcb788.mp3", "Uh ohhhhhhhhh!", "", 422612512, 3900776578, Player, 17)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_9bab0561.mp3", "Wait, where is my book?", "", 3815705437, 2144969522, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 2 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_dc33f5e9.mp3", "Does anybody have an extra fire beetle eye? ...Never mind.", "", 88571247, 1912603138, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 3 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_f79b266b.mp3", "Help! I only know one spell!", "", 2648192261, 1154758802, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c234f7ec.mp3", "We don't need reinforcements. Attack!", "", 3931748607, 200204217, Player, 17)
+ end
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_22527607.mp3", "Get em! Get em! Get em!", "", 2020932501, 2692113351, Player, 17)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_27011747.mp3", "Who cares if they're stronger, we're orcs!", "", 769549584, 170271605, Player, 17)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,17 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_4a834d11.mp3", "I killed one?", "", 494264984, 880425961, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_5ec9f9e2.mp3", "Keep fighting while I get these boots!", "", 1910539619, 2233613105, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_82b00e31.mp3", "I must have scared them to Death.", "", 4172718711, 2353147238, Player, 17)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua b/server/SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua
new file mode 100644
index 000000000..065e3182a
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua
@@ -0,0 +1,145 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua
+ Script Author : dorbin
+ Script Date : 2024.01.06 01:01:11
+ Script Purpose : Gnome Pipefitters in Thieves' Way. Tone is set in the spawn's scripts.
+ :
+--]]
+
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ if Tone == 3 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_garbled_gm_cbfe503a.mp3", "Krizz barawvitt zizzer zazz", "", 1311390031, 3718535895, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_garbled_gm_5accc312.mp3", "Kkbttk dwwyn zazu vitth", "", 3563887583, 849189009, Spawn, 6)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_garbled_gm_d0507054.mp3", "Qwizt viitt als zazra", "", 125702831, 2368179887, Spawn,6)
+ end
+ elseif Tone == 2 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/gnome_pipefitters/ft/gnome/gnome_pipefitters_2_garbled_gm_cbfe503a.mp3", "Krizz barawvitt zizzer zazz", "", 4099688689, 1852050375, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_garbled_gm_5accc312.mp3", "Kkbttk dwwyn zazu vitth", "", 3563887583, 849189009, Spawn, 6)
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_garbled_gm_cbfe503a.mp3", "Krizz barawvitt zizzer zazz", "", 2689241953, 2133974294, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_garbled_gm_9833761f.mp3", "Zibbik niflik rul brun Dars atatien delvazra", "", 3533046903, 1779396904, Spawn, 6)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_garbled_gm_5accc312.mp3", "Kkbttk dwwyn zazu vitth", "", 1894926357, 2259928649, Spawn, 6)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_garbled_gm_d0507054.mp3", "Qwizt viitt als zazra", "", 4004332255, 385334874, Spawn,6)
+ end
+ end
+end
+
+ function aggro(NPC,Player)
+ Tone = MakeRandomInt(1,3)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=76 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,6 )then
+ Garbled(NPC,Player)
+ else
+ if Tone == 3 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_aggro_gm_577aa112.mp3", "Get the guards, quickly!", "", 2073183915, 4258412657, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_aggro_gm_89c9f643.mp3", "Hey! You're not in the union.", "", 499383697, 2098729593, Spawn, 6)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_aggro_gm_fca839e0.mp3", "Summon all the members. I'll deal with the intruders.", "", 2317475307, 1370622772, Spawn, 6)
+
+ end
+ elseif Tone == 2 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/gnome_pipefitters/ft/gnome/gnome_pipefitters_2_aggro_gm_fca839e0.mp3", "Summon all the members. I'll deal with the intruders.", "", 1342527378, 3527012719, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/gnome_pipefitters/ft/gnome/gnome_pipefitters_2_aggro_gm_89c9f643.mp3", "Hey! You're not in the union.", "", 4277677999, 1273643951, Spawn, 6)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_aggro_gm_577aa112.mp3", "Get the guards, quickly!", "", 2073183915, 4258412657, Spawn, 6)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_aggro_gm_89c9f643.mp3", "Hey! You're not in the union.", "", 174808905, 4153490078, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_aggro_gm_577aa112.mp3", "Get the guards, quickly!", "", 1534621506, 2574895839, Spawn, 6)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_aggro_gm_fca839e0.mp3", "Summon all the members. I'll deal with the intruders.", "", 2175044611, 705364449, Spawn, 6)
+ end
+ end
+end
+end
+end
+
+
+function death(NPC,Player)
+ Tone = MakeRandomInt(1,3)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=55 then
+ if not HasLanguage(Player,6)then
+ Garbled(NPC,Player)
+ else
+ if Tone == 3 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_death_gm_107df143.mp3", "No fair! They have better weapons.", "", 913939495, 772449547, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/gnome_pipefitters/ft/gnome/gnome_pipefitters_2_death_gm_6837d1aa.mp3", "Run away before we all die!", "", 2002248430, 1289200629, Spawn, 6)
+ end
+ elseif Tone == 2 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/gnome_pipefitters/ft/gnome/gnome_pipefitters_2_death_gm_107df143.mp3", "No fair! They have better weapons.", "", 86520834, 1572132731, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/gnome_pipefitters/ft/gnome/gnome_pipefitters_2_death_gm_6837d1aa.mp3", "Run away before we all die!", "", 2002248430, 1289200629, Spawn, 6)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_death_gm_107df143.mp3", "No fair! They have better weapons.", "", 1159166676, 1657447898, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/gnome_pipefitters/ft/gnome/gnome_pipefitters_1_death_gm_6837d1aa.mp3", "Run away before we all die!", "", 1128285167, 1552149555, Spawn, 6)
+ end
+ end
+ end
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,6 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,6 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_Victory_gm_cbfe503a.mp3", "Strike that as another win for the Union!", "", 0, 0, Spawn, 6)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_Victory_gm_cbfe503a.mp3", "Haha! That will teach you to mess with my work!", "", 0, 0, Spawn, 6)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/gnome_pipefitters/ft/gnome/gnome_pipefitters_3_Victory_gm_cbfe503a.mp3", "Good... One step closer to my lunch break.", "", 0, 0, Spawn, 6)
+ end
+ end
+end
+
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua b/server/SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua
new file mode 100755
index 000000000..21e363f54
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua
@@ -0,0 +1,208 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.02 11:12:56
+ Script Purpose : Missing most VOs from this collection. Still need base halfling and woodelf for both genders.
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+local Dwarf = 2
+local Halfling = 7
+local Woodelf = 15
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+if GetRace(NPC) == Dwarf then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_qeynos_agitators/ft/dwarf/dwarf_qeynos_agitators_1_garbled_gm_b129f218.mp3", "Let me clear my throat so you can understand.", "", 1491391518, 212658016, Spawn,3)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/barbarian/barbarian_eco_good_1_garbled_gm_1cfda4cd.mp3", "I wonder, do I owe you any coin? I sure hope not!", "", 2853459229, 77062894, Spawn,3)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/barbarian/barbarian_eco_good_1_garbled_gm_51f68cb4.mp3", "The look of your face annoys me! Shove off!", "", 2398080559, 940422767, Spawn,3)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/barbarian/barbarian_eco_good_1_garbled_gm_6360be2b.mp3", "Giving you the cold shoulder this way is great.", "", 263596632, 1162455231, Spawn,3)
+ end
+ else
+ local choice = MakeRandomInt(1,4)-- FEMALE
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf/ft/dwarf/dwarf_eco_garble_garbled_gf_80515f2f.mp3", "I wonder, do I owe you any coin? I sure hope not!", "", 956006367, 3976653265, Spawn,3)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf/ft/dwarf/dwarf_eco_garble_garbled_gf_89b5cec2.mp3", "I dont like the look of your face! Off with you!", "", 1376862084, 1663916600, Spawn,3)
+ elseif choice ==3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf/ft/dwarf/dwarf_eco_garble_garbled_gf_9729edda.mp3", "Giving you the cold shoulder this way is great.", "", 1602667253, 1907098372, Spawn,3)
+ elseif choice ==4 then
+ PlayFlavor(NPC, "voiceover/english/dwarf/ft/dwarf/dwarf_eco_garble_garbled_gf_cb1a6fa8.mp3", "Could really go for a tall pint... and you dont have one.", "", 4293920139, 1771029099, Spawn,3)
+ end
+ end
+elseif GetRace(NPC) == Halfling then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfling_corrupted/ft/halfling/halfling_corrupted_1_garbled_gm_43769f72.mp3", "Hilee salee lalow madow", "", 1546052685, 4072580842, Spawn,8)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfling_crazed/ft/halfling/halfling_crazed_1_garbled_gm_54e55451.mp3", "Lilleee mabee tarrah roo sakdooo", "", 2087702128, 2642872371, Spawn,8)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfling_crazed/ft/halfling/halfling_crazed_1_garbled_gm_7b0d27d5.mp3", "Rumtum tugger sah bim lugger", "", 3679068852, 490576745, Spawn,8)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/halfling_crazed/ft/halfling/halfling_crazed_1_garbled_gm_823f1021.mp3", "Jum tum ribbyflum! Slipper chipper tip tip bipper!", "", 374813993, 4058118752, Spawn,8)
+ end
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/halfling_corrupted/ft/halfling/halfling_corrupted_1_garbled_gf_54e55451.mp3", "Lilleee mabee tarrah roo sakdooo", "", 3766403918, 1171422621, Spawn,8)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfling_base_1/ft/halfling/halfling_base_1_1_garbled_gf_823f1021.mp3", "garbled text not to be translated", "", 3051197299, 2401133915, Spawn,8)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfling_corrupted/ft/halfling/halfling_corrupted_1_garbled_gf_7b0d27d5.mp3", "Rumtum tugger sah bim lugger", "", 34036833, 3802622885, Spawn,8)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/halfling_corrupted/ft/halfling/halfling_corrupted_1_garbled_gf_823f1021.mp3", "Jum tum ribbyflum! Slipper chipper tip tip bipper!", "", 1303270959, 3751358873, Spawn,8)
+ end
+ end
+elseif GetRace(NPC) == Woodelf then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/woodelf_forrest_wardens/ft/woodelf/woodelf_forrest_wardens_1_garbled_gm_f197012c.mp3", "Molokeeenakah watroo olozamm", "", 2097905045, 1612835219, Spawn, 16)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/woodelf_forrest_wardens/ft/woodelf/woodelf_forrest_wardens_1_garbled_gm_8a0bc5f8.mp3", "Kaamahaneah queeeola chi sa", "", 1811305493, 2624435147, Spawn, 16)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/woodelf_forrest_wardens/ft/woodelf/woodelf_forrest_wardens_1_garbled_gm_1b979d55.mp3", "Aleeda merende wovesta", "", 2513619643, 1543099294, Spawn, 16)
+ end
+ else -- FEMALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/highelf_base_1/ft/highelf/highelf_base_1_1_garbled_gf_fde7b8f7.mp3", "Kaamahaneah queeeola chi sa", "", 595061935, 2035542297, Spawn, 16)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/highelf_base_1/ft/highelf/highelf_base_1_1_garbled_gf_755db2c3.mp3", "Aleeda merende wovesta", "", 1930935604, 3692814157, Spawn, 16)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/highelf_base_1/ft/highelf/highelf_base_1_1_garbled_gf_d396c4fc.mp3", "Molokeeenakah watroo olozamm", "", 1717100103, 894236173, Spawn, 16)
+ end
+ end
+end
+end
+
+ function aggro(NPC,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=33 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+if GetRace(NPC) == Dwarf then
+ if not HasLanguage(Player,3)then
+ Garbled(NPC,Player)
+ else
+ aggroCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Halfling then
+ if not HasLanguage(Player,8)then
+ Garbled(NPC,Player)
+ else
+ aggroCall(NPC,Player)
+ end
+elseif GetRace(NPC) == Woodelf then
+ if not HasLanguage(Player,16)then
+ Garbled(NPC,Player)
+ else
+ aggroCall(NPC,Player)
+ end
+end
+end
+end
+
+ function aggroCall(NPC,Player)
+if GetRace(NPC) == Dwarf then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_23b35126.mp3", "Where do ya think you're going?", "", 706272128, 909565004, Spawn, 3)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_9de55a3e.mp3", "There they are! Let's get em!", "", 3246206943, 366784514, Spawn, 3)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_ab9057d3.mp3", "Looking for me? ", "", 438949611, 3910736957, Spawn, 3)
+ end
+ else
+ if GetClass(Spawn)>=1 and GetClass(Spawn)<=10 then
+ choice = MakeRandomInt(1,4) --Fighter CHECK
+ else
+ choice = MakeRandomInt(1,3)
+ end
+ if choice == 1 then -- FEMALE
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gf_ab9057d3.mp3", "Looking for me? ", "", 407706048, 337475746, Spawn, 3)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gf_be4f625e.mp3", "Where do ya think you're going?", "", 152508601, 1517122703, Spawn, 3)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gf_d29563c7.mp3", "There they are! Let's get em!", "", 995196475, 1619899594, Spawn, 3)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_maofighter_gf_428f2c06.mp3", "You, back up there! I'm taking the warrior!", "", 1284306998, 1476787670, Spawn, 3)
+ end
+ end
+elseif GetRace(NPC) == Halfling then
+ if GetGender(NPC) ==1 then -- MALE
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfling_base_1/ft/halfling/halfling_base_1_1_aggro_gm_7b251faa.mp3", "Try to sneak into my home, will ya!", "", 100218096, 392363658, Spawn,8)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/halfling_corrupted/ft/halfling/halfling_corrupted_2_aggro_gm_3c9b103f.mp3", "Destroy the invaders!", "", 1579115349, 1024832768, Spawn,8)
+ end
+ else --No Female
+
+ end
+elseif GetRace(NPC) == Woodelf then
+ if GetGender(NPC) ==1 then -- MALE
+
+ else
+
+ end
+end
+end
+
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if MakeRandomInt(0,100)<=35 then
+if GetRace(NPC) == Dwarf then
+ if not HasLanguage(Player,3)then
+ Garbled(NPC,Player)
+ else
+ end
+elseif GetRace(NPC) == Halfling then
+ if not HasLanguage(Player,8)then
+ Garbled(NPC,Player)
+ else
+ end
+elseif GetRace(NPC) == Woodelf then
+ if not HasLanguage(Player,16)then
+ Garbled(NPC,Player)
+ else
+ end
+end
+end
+end
+end
+
+function victory(NPC,Player)
+if GetRace(NPC) == Dwarf then
+ if not HasLanguage(Player,3)then
+ Garbled(NPC,Player)
+ else
+ end
+elseif GetRace(NPC) == Halfling then
+ if not HasLanguage(Player,8)then
+ Garbled(NPC,Player)
+ else
+ end
+elseif GetRace(NPC) == Woodelf then
+ if not HasLanguage(Player,16)then
+ Garbled(NPC,Player)
+ else
+ end
+end
+end
+
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua b/server/SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua
new file mode 100755
index 000000000..d63d0a83e
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua
@@ -0,0 +1,301 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua
+ Script Author : Dorbin
+ Script Date : 2023.04.30 12:04:56
+ Script Purpose : Windstalker Village Combat VOs - Antonica Primarily
+ :
+--]]
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+
+
+local FIGHTER = 1
+local WARRIOR =2
+local GUARDIAN= 3
+local BERSERKER = 4
+local BRAWLER = 5
+local MONK = 6
+local BRUISER= 7
+local CRUSADER = 8
+local SHADOWKNIGHT = 9
+local PALADIN = 10
+
+
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+--AGGRO CHECK --
+
+function aggro(NPC,Spawn) --RACE CHECK
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "HealthCallout", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,7000,"ResetTimer")
+ local Race= GetRace(NPC)
+ if Race == 6 then
+HfE_aggro(NPC,Spawn)
+elseif Race==9 then
+Hum_aggro(NPC,Spawn)
+else
+end
+end
+end
+
+
+
+function HfE_aggro(NPC,Spawn)
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ if GetClass(Spawn)>=21 and GetClass(Spawn)<=30 then
+ Pick = MakeRandomInt(1,3) --MAGE CHECK
+ else
+ Pick = MakeRandomInt(1,2)
+ end
+ if Pick == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_13a3055.mp3", "Summon help, intruders have arrived!", "", 262436067, 4127133618)
+ elseif Pick == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gm_12fbaefb.mp3", "Destroy the invader!", "", 489857902, 941763715)
+ elseif Pick == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_maomage_gm_96692f88.mp3", "Distract the magician or we'll all die!", "", 3332270247, 2351356263)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_12fbaefb.mp3", "Destroy the invader!", "", 1313233821, 723410897)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_a68f64b6.mp3", "Alarm! Alarm!", "", 1220383018, 2962002142)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_aggro_gf_13a3055.mp3", "Summon help, intruders have arrived!", "", 3324527452, 2122161878)
+ end
+end
+end
+
+function Hum_aggro(NPC,Spawn)
+ if GetGender(NPC)==1 then --GENDER CHECK. 1==Male
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_windstalkers/ft/human/human_windstalkers_1_aggro_gm_a6d0b787.mp3", "The bears told me to kill you!", "", 536396117, 2147228574)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_windstalkers/ft/human/human_windstalkers_1_aggro_gm_dccb12e.mp3", "Now it's time to die, little rabbit!", "", 3249519066, 4146206338)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_windstalkers/ft/human/human_windstalkers_1_aggro_gm_b11fb649.mp3", "The animals scream for vengeance!", "", 268719394, 2417421394)
+ end
+ else
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_aggro_gf_a6d0b787.mp3", "The bears told me to kill you!", "", 2136224796, 3415208051)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_aggro_gf_b11fb649.mp3", "The animals scream for vengeance!", "", 1171613527, 934412679)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_aggro_gf_dccb12e.mp3", "Now it's time to die, little rabbit!", "", 2799492103, 2525496836)
+ end
+end
+end
+
+
+
+-- DEATH CHECK --
+
+function death(NPC,Spawn) --RACE CHECK
+if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ Race= GetRace(NPC)
+ if Race == 6 then
+HfE_death(NPC,Spawn)
+elseif Race==9 then
+Hum_death(NPC,Spawn)
+else
+end
+end
+end
+
+
+function HfE_death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_1a659852.mp3", "We must withdraw before we all die!", "", 3147364973, 1341536758)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_1a659852.mp3", "We must withdraw before we all die!", "", 2249500792, 2154633904)
+ end
+ end
+end
+
+
+function Hum_death(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_windstalkers/ft/human/human_windstalkers_1_death_gm_7fc8a992.mp3", "My companion will be reborn as an animal and hunt you down!", "", 4095950768, 2638720474)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_windstalkers/ft/human/human_windstalkers_1_death_gm_15f1c518.mp3", "The wolves will howl in remembrance of the fallen.", "", 438946486, 1503863875)
+ end
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_death_gf_7fc8a992.mp3", "My companion will be reborn as an animal and hunt you down!", "", 3241674347, 112875582)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_death_gf_15f1c518.mp3", "The wolves will howl in remembrance of the fallen.", "", 1738757569, 154731502)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_aggro_gf_b11fb649.mp3", "The animals scream for vengeance!", "", 1171613527, 934412679)
+ end
+ end
+ end
+
+-- Battle Cry Call (Female Human Only)
+
+function FifteenCall(NPC,Spawn)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_battle_gf_7ad3a09.mp3", "Can't you hear the animals screaming?", "", 959773922, 3663023157)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_windstalkers/ft/human/human_windstalkers_1_battle_gf_d1f33b41.mp3", "Pay for your crimes against nature's creatures.", "", 3824659479, 1994519243)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Spawn)
+ end
+end
+
+
+
+-- HealthChange CHECK --
+
+function healthchanged(NPC,Spawn) --RACE CHECK
+if GetHP(NPC) <= GetMaxHP(NPC) * 0.55 and GetHP(NPC) >= GetMaxHP(NPC) * 0.45 then
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Spawn)and GetTempVariable(NPC, "CalloutTimer")== "false" and GetTempVariable(NPC, "HealthCallout")== "false" then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ AddTimer(NPC,9000,"HealthReset")
+ local Race= GetRace(NPC)
+ if Race == 6 then
+ HfE_healthchanged(NPC,Spawn)
+ elseif Race==9 then
+ Hum_healthchanged(NPC,Spawn)
+ else
+ end
+ end
+end
+end
+
+
+function HfE_healthchanged(NPC, Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 1009191098, 3016339818, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gm_e48659f9.mp3", "Now, that really hurt!", "", 241651222, 476491397, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e0686420.mp3", "Well, it seems you have some martial arts skills.", "", 743699854, 1906875496, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_halfhealth_gf_e48659f9.mp3", "Now, that really hurt!", "", 413378164, 719939114, Spawn)
+ end
+ end
+
+end
+
+
+function Hum_healthchanged(NPC, Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_windstalkers/ft/human/human_windstalkers_1_death_gm_15f1c518.mp3", "The wolves will howl in remembrance of the fallen.", "", 438946486, 1503863875, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_8529e507.mp3", "I can't hold them forever!", "", 644448824, 755050547)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_8529e507.mp3", "I can't hold them forever!", "", 3371581229, 792393228)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_halfhealth_gf_1babf022.mp3", "Is that all you have?", "", 2979351329, 4050238683)
+ end
+ end
+end
+
+
+
+-- Victory CHECK --
+
+function victory(NPC,Spawn) --RACE CHECK
+ Race= GetRace(NPC)
+ if Race == 6 then
+HfE_victory(NPC,Spawn)
+elseif Race==9 then
+Hum_victory(NPC,Spawn)
+else
+end
+end
+
+function HfE_victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012)
+ end
+ end
+end
+
+function Hum_victory(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_153f12ff.mp3", "One down!", "", 3009518664, 4140389760)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_4553e1e0.mp3", "Flee now or meet this one's fate.", "", 3032162747, 1359206304)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_victory_gm_ec0cd85a.mp3", "I hope they're all this easy.", "", 2687289628, 2303639320)
+ end
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_6f459088.mp3", "Flee now or meet this one's fate.", "", 290765367, 473549337)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/human_base_1/ft/human/human_base_1_1_victory_gf_ec0cd85a.mp3", "I hope they're all this easy.", "", 1073758360, 3342649012)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function HealthReset (NPC) --SO HALF HEALTH DOESN'T SPAM
+ SetTempVariable(NPC, "HealthCallout", "false")
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/MonsterCallouts/WitherstrawScarecrows.lua b/server/SpawnScripts/Generic/MonsterCallouts/WitherstrawScarecrows.lua
new file mode 100755
index 000000000..431bc42f4
--- /dev/null
+++ b/server/SpawnScripts/Generic/MonsterCallouts/WitherstrawScarecrows.lua
@@ -0,0 +1,120 @@
+--[[
+ Script Name : SpawnScripts/Generic/MonsterCallouts/WitherstrawScarecrows.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.27 12:05:30
+ Script Purpose :
+ :
+--]]
+local HealthCallout = false
+local MAGE = 21
+local SORCERER = 22
+local WIZARD = 23
+local WARLOCK = 24
+local ENCHANTER = 25
+local ILLUSIONIST = 26
+local COERCER = 27
+local SUMMONER = 28
+local CONJUROR = 29
+local NECROMANCER = 30
+
+
+
+function Garbled(NPC,Spawn)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/scarecrow_witherstraw/ft/scarecrow/scarecrow_witherstraw_1_garbled_71321a1c.mp3", "Wallaassss kitss zooomasss shif", "", 1143169283, 2445607944, Spawn, 21)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/scarecrow_witherstraw/ft/scarecrow/scarecrow_witherstraw_1_garbled_bb9b62e6.mp3", "Harrssst sssstookesss heessst.", "", 1671834508, 3012005345, Spawn, 21)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/scarecrow_witherstraw/ft/scarecrow/scarecrow_witherstraw_1_garbled_cbb3485b.mp3", "Shisss mellissart perraassalk!", "", 347914344, 1665747235, Spawn, 21)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/scarecrow_witherstraw/ft/scarecrow/scarecrow_witherstraw_1_garbled_bdd71a65.mp3", "Sisssssharrrr oookmessss jetssss", "", 1391840565, 1188489177, Spawn, 21)
+ end
+end
+
+ function aggro(NPC,Spawn)
+ if IsPlayer(Spawn)==true then
+ if not HasLanguage(Spawn,21 )and IsPlayer(Spawn)==true then
+ Garbled(NPC,Spawn)
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/halfling_corrupted/ft/halfling/halfling_corrupted_2_battle_gm_b1fd0396.mp3", "We were once like you.", "", 3752287071, 136628031, Spawn, 21)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/halfling_corrupted/ft/halfling/halfling_corrupted_2_aggro_gm_3c9b103f.mp3", "Destroy the invaders!", "", 1579115349, 1024832768, Spawn, 21)
+ end
+ end
+end
+end
+
+
+function death(NPC,Spawn)
+ if math.random(0,100)<=75 then
+ if IsPlayer(Spawn)==true then
+
+ if not HasLanguage(Spawn,21 ) then
+ Garbled(NPC,Spawn)
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/scarecrow_witherstraw/ft/scarecrow/scarecrow_witherstraw_1_death_3e53153d.mp3", "Clean that up right now!", "", 2052052230, 3977423066, Spawn, 21)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/scarecrow_witherstraw/ft/scarecrow/scarecrow_witherstraw_1_death_4e81dcfa.mp3", "Now who will keep the birds away?", "", 374305807, 2668085630, Spawn, 21)
+ end
+ end
+end
+end
+end
+
+
+
+--[[function healthchanged(NPC, Spawn)
+ if IsPlayer(Spawn)==true then
+ if HealthCallout == false then
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.55 then
+ if GetHP(NPC) > GetMaxHP(NPC) * 0.45 then
+ HealthCallout = true
+ AddTimer(NPC,10000,"HealthReset")
+ if not HasLanguage(Spawn,21 )and IsPlayer(Spawn)==true then
+ Garbled(NPC,Spawn)
+ else
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/gnoll_base_1/ft/gnoll/gnoll_base_1_3_halfhealth_d093de2d.mp3", "Yip yip yip!", "", 166674284, 1395857397, Spawn, 18)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/gnoll_darkpaw/ft/gnoll/gnoll_darkpaw_3_halfhealth_50cceadf.mp3", "Uhhhh... I think I go now!", "", 4127070268, 185913289, Spawn, 18)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/gnoll_darkpaw/ft/gnoll/gnoll_darkpaw_1_halfhealth_aff2b15d.mp3", "Now I'm really angry!", "", 1156319723, 267275011, Spawn, 18)
+ elseif choice == 4 then
+ if GetClass(Spawn)== WIZARD or GetClass(Spawn)== WARLOCK or GetClass(Spawn)== ILLUSIONIST or GetClass(Spawn)== COERCER or GetClass(Spawn)== NECROMANCER or GetClass(Spawn)== CONJUROR or GetClass(Spawn)== MAGE or GetClass(Spawn)== ENCHANTER or GetClass(Spawn)== SUMMONER or GetClass(Spawn)== SORCERER then
+ PlayFlavor(NPC, "voiceover/english/gnoll_base_1/ft/gnoll/gnoll_base_1_3_maomage_8fb8565d.mp3", "Yip! Watch out for their magic!", "", 1674162517, 4259121980, Spawn, 18)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional5/gnoll_base_2/ft/gnoll/gnoll_base_2_1_battle_m_5c7913bb.mp3", "Bah! You smell horrible!", "", 687847219, 3365844906, Spawn, 18)
+ end
+ end
+ end
+ end
+end
+end
+end
+end]]--
+
+function HealthReset (NPC)
+ HealthCallout = false
+end
+
+
+function victory(NPC,Spawn)
+ if IsPlayer(Spawn)==true then
+ if HasLanguage(Spawn,21 )and IsPlayer(Spawn)==true then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional5/halfling_corrupted/ft/halfling/halfling_corrupted_2_aggro_gm_1580b351.mp3", "I must obey.", "", 1087573420, 743350754, Spawn, 21)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/halfling_crazed/ft/halfling/halfling_crazed_1_aggro_gm_3926b546.mp3", "There is fresh blood among us!", "", 160123219, 680011315, Spawn, 21)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/succubus_reaper_horde/ft/succubus/succubus_reaper_horde_1_death_1f44697b.mp3", "You will suffer the ultimate in torture for that!", "", 2010056742, 2525379709, Spawn, 21)
+ end
+end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/NPCModule.lua b/server/SpawnScripts/Generic/NPCModule.lua
new file mode 100755
index 000000000..9d8883a26
--- /dev/null
+++ b/server/SpawnScripts/Generic/NPCModule.lua
@@ -0,0 +1,1023 @@
+--[[
+ Script Name : SpawnScripts/Generic/NPCModule.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.20 08:11:41
+ Script Purpose : NPC Statistics Control Script- In Development
+ : Supersedes CombatModule.lua
+--]]
+require "SpawnScripts/Generic/EquipmentModule"
+
+GlobalDmgMod = 1.0 -- Global Damage Multiplier- make global adjustments to all NPC autoattack damage.
+GlobalStatMod = 1.0 -- Global Attribute Multiplier- make global adjustments to NPC attribute scores.
+GlobalHPMod = 1.0 -- Global Hit Point Multiplier
+GlobalPowerMod = 1.0 -- Global Power Pool Multiplier
+
+function NPCModule(NPC, Spawn)
+ level = GetLevel(NPC) -- NPC Level
+ difficulty = GetDifficulty(NPC) -- NPC Difficulty
+ MeleeDmgMod = GetStr(NPC) / 10 -- Determines strength bonus to auttoattack damage.
+
+ --Included functions. Comment out a function to disable.
+ Attributes(NPC, Spawn) -- Determines basic stats of the NPC(str, agi, sta, int, wis)
+ AutoAttack(NPC, Spawn) -- Determines the NPC's tier for the purposes of autoattack damage.
+ Regen(NPC, Spawn) -- Sets NPC's health and/or power regeneration rates or disables regeneration entirely.
+ HealthPower(NPC, Spawn) -- Calculates NPC's based on level and difficulty.
+ --Heroic(NPC, Spawn) -- Detects if an NPC should be flagged as heroic and sets the heroic flag accordingly.
+ AddTimer(NPC, 25, "Heroic")
+ AddTimer(NPC, 1000, "Heroic") -- Redundant heroic check to compensate for server lag when using developer commands to reload spawns.
+
+end
+
+--Determine damage function based on NPC level.
+function AutoAttack(NPC, Spawn)
+ if level <= 3 then
+ TierOneA(NPC)
+ elseif level >= 4 and level <= 5 then
+ TierOneB(NPC)
+ elseif level >= 6 and level <= 9 then
+ TierOneC(NPC)
+ elseif level >= 10 and level <= 15 then
+ TierTwoA(NPC)
+ elseif level >= 16 and level <= 19 then
+ TierTwoB(NPC)
+ elseif level >= 20 and level <= 24 then
+ TierThreeA(NPC)
+ elseif level >= 25 and level <= 29 then
+ TierThreeB(NPC)
+ end
+end
+
+-- Set attributes based on NPC level and difficulty
+function Attributes(NPC, Spawn)
+ -- Calculate attributes
+ if level <= 4 then
+ baseStat = 19 else
+ baseStat = level + 15
+ end
+
+ local low = baseStat - 15 -- Difficulty 1-3 vvv
+ local four = baseStat - 10 -- Difficulty 4 vv
+ local five = baseStat - 5 -- Difficulty 5 v
+ local seven = baseStat + 10 -- Difficulty 7 ^
+ local eight = baseStat + 15 -- Difficulty 8 ^^
+ local nine = baseStat + 20 -- Difficulty 9 ^^^
+
+ lowStat = math.floor(low * GlobalStatMod)
+ fourStat = math.floor(four * GlobalStatMod)
+ fiveStat = math.floor(five * GlobalStatMod)
+ sixStat = math.floor(baseStat * GlobalStatMod)
+ sevenStat = math.floor(seven * GlobalStatMod)
+ eightStat = math.floor(eight * GlobalStatMod)
+ nineStat = math.floor(nine * GlobalStatMod)
+
+ -- Determine attribute by difficulty
+ if difficulty <= 3 then
+ finalStat = lowStat
+ elseif difficulty == 4 then
+ finalStat = fourStat
+ elseif difficulty == 5 then
+ finalStat = fiveStat
+ elseif difficulty == 6 then
+ finalStat = sixStat
+ elseif difficulty == 7 then
+ finalStat = sevenStat
+ elseif difficulty == 8 then
+ finalStat = eightStat
+ elseif difficulty == 9 then
+ finalStat = nineStat
+ end
+
+ SetInfoStructFloat(NPC, "str", finalStat)
+ SetStrBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "agi", finalStat)
+ SetAgiBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "sta", finalStat)
+ SetStaBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "intel", finalStat)
+ SetIntBase(NPC, finalStat)
+ SetInfoStructFloat(NPC, "wis", finalStat)
+ SetWisBase(NPC, finalStat)
+
+end
+
+--Health and power regeneration rates
+function Regen(NPC, Spawn)
+
+ -- In-combat health regeneration
+ SetInfoStructUInt(NPC, "hp_regen_override", 1) -- Set to 0 to disable and allow the server to set the regen rate.
+ SetInfoStructSInt(NPC, "hp_regen", 0) -- Set Regen Amount. Default 0
+
+ -- In-combat power regeneration
+ SetInfoStructUInt(NPC, "pw_regen_override", 1) -- Set to 0 to disable and allow the server to set the regen rate.
+ SetInfoStructSInt(NPC, "pw_regen", 0) -- Set Regen Amount. Default 0
+
+end
+
+--Damage functions based on NPC level range.
+--Level 1-3
+function TierOneA(NPC, Spawn)
+ lowDmg = math.floor(0 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ damage(NPC)
+end
+
+--Level 4-5
+function TierOneB(NPC, Spawn)
+ if difficulty <=4 then --
+ lowDmg = math.floor(1 * GlobalDmgMod + MeleeDmgMod)
+ highDmg =math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(1 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(3 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty >=6 and difficulty <=9 then
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(4 * GlobalDmgMod + MeleeDmgMod)
+ end
+ damage(NPC)
+end
+
+--Level 6-9
+function TierOneC(NPC, Spawn)
+ if difficulty <=4 then -- 1-3 dif 1-4
+ lowDmg = math.floor(1 * GlobalDmgMod + MeleeDmgMod)
+ highDmg =math.floor(3 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 5 then -- 2-4 dif 5MeleeDmgMod
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(4 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty ==6 then -- 2-7 damage- Dif 6
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(7 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty >=7 then -- 2-7 damage- Dif 7+
+ lowDmg = math.floor(5 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(10 * GlobalDmgMod + MeleeDmgMod)
+ end
+ damage(NPC)
+end
+
+--Level 10-15
+function TierTwoA(NPC, Spawn)
+ if difficulty <=4 then
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg =math.floor(4 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(7 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(6 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(15 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(8 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(17 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(12 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + MeleeDmgMod)
+ end
+ damage(NPC)
+end
+
+--Level 16-19
+function TierTwoB(NPC, Spawn)
+ if difficulty <=4 then
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg =math.floor(7 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(6 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(15 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(12 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(18 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(32 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(25 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(55 * GlobalDmgMod + MeleeDmgMod)
+ end
+ damage(NPC)
+end
+
+--Level 20-24
+function TierThreeA(NPC, Spawn)
+ if difficulty <=4 then
+ lowDmg = math.floor(2 * GlobalDmgMod + MeleeDmgMod)
+ highDmg =math.floor(7 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(6 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(15 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(12 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(18 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(32 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(25 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(55 * GlobalDmgMod + MeleeDmgMod)
+ end
+ damage(NPC)
+end
+
+--Level 25-29
+function TierThreeB(NPC, Spawn)
+ if difficulty <=4 then
+ lowDmg = math.floor(6 * GlobalDmgMod + MeleeDmgMod)
+ highDmg =math.floor(15 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 5 then
+ lowDmg = math.floor(12 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(24 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty ==6 then
+ lowDmg = math.floor(20 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(35 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty == 7 then
+ lowDmg = math.floor(18 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(32 * GlobalDmgMod + MeleeDmgMod)
+ elseif difficulty >= 8 then
+ lowDmg = math.floor(35 * GlobalDmgMod + MeleeDmgMod)
+ highDmg = math.floor(75 * GlobalDmgMod + MeleeDmgMod)
+ end
+ damage(NPC)
+end
+
+--Autoattack damage override function.
+function damage(NPC, Spawn)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1) --Set to 1 enables override for autoattack damage. Set to 0 to allow server to set damage.
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", lowDmg)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", highDmg)
+end
+
+--Calculate Hitpoints and Power
+function HealthPower(NPC, Spawn)
+
+ -- Calculate multipliers based on difficulty tier
+ if difficulty == 1 then
+ HPMod = 0.20
+ PWMod = 0.20
+ elseif difficulty == 2 then
+ HPMod = 0.25
+ PWMod = 0.25
+ elseif difficulty == 3 then
+ HPMod = 0.35
+ PWMod = 0.35
+ elseif difficulty == 4 then
+ HPMod = 0.45
+ PWMod = 0.45
+ elseif difficulty == 5 then
+ HPMod = 0.66
+ PWMod = 0.66
+ elseif difficulty == 6 then
+ HPMod = 1.0
+ PWMod = 1.0
+ elseif difficulty == 7 then
+ HPMod = 1.45
+ PWMod = 1.45
+ elseif difficulty == 8 then
+ HPMod = 2.2
+ PWMod = 2.2
+ elseif difficulty == 9 then
+ HPMod = 3.25
+ PWMod = 3.25
+ end
+
+ --Calculate hitpoints and power based on level and difficuty
+ if level == 1 then
+ hp = 30 * HPMod * GlobalHPMod
+ pw = 25 * PWMod * GlobalPowerMod
+ elseif level == 2 then
+ hp = 45 * HPMod * GlobalHPMod
+ pw = 35 * PWMod * GlobalPowerMod
+ elseif level == 3 then
+ hp = 75 * HPMod * GlobalHPMod
+ pw = 45 * PWMod * GlobalPowerMod
+ elseif level == 4 then
+ hp = 110 * HPMod * GlobalHPMod
+ pw = 55 * PWMod * GlobalPowerMod
+ elseif level == 5 then
+ hp = 130 * HPMod * GlobalHPMod
+ pw = 65 * PWMod * GlobalPowerMod
+ elseif level == 6 then
+ hp = 150 * HPMod * GlobalHPMod
+ pw = 80 * PWMod * GlobalPowerMod
+ elseif level == 7 then
+ hp = 200 * HPMod * GlobalHPMod
+ pw = 90 * PWMod * GlobalPowerMod
+ elseif level == 8 then
+ hp = 240 * HPMod * GlobalHPMod
+ pw = 100* PWMod * GlobalPowerMod
+ elseif level == 9 then
+ hp = 275 * HPMod * GlobalHPMod
+ pw = 110 * PWMod * GlobalPowerMod
+ elseif level == 10 then
+ hp = 370 * HPMod * GlobalHPMod
+ pw = 130 * PWMod * GlobalPowerMod
+ elseif level == 11 then
+ hp = 430 * HPMod * GlobalHPMod
+ pw = 160 * PWMod * GlobalPowerMod
+ elseif level == 12 then
+ hp = 550 * HPMod * GlobalHPMod
+ pw = 185 * PWMod * GlobalPowerMod
+ elseif level == 13 then
+ hp = 680 * HPMod * GlobalHPMod
+ pw = 205 * PWMod * GlobalPowerMod
+ elseif level == 14 then
+ hp = 795 * HPMod * GlobalHPMod
+ pw = 240 * PWMod * GlobalPowerMod
+ elseif level == 15 then
+ hp = 920 * HPMod * GlobalHPMod
+ pw = 270 * PWMod * GlobalPowerMod
+ elseif level == 16 then
+ hp = 1045 * HPMod * GlobalHPMod
+ pw = 310 * PWMod * GlobalPowerMod
+ elseif level == 17 then
+ hp = 1180 * HPMod * GlobalHPMod
+ pw = 360 * PWMod * GlobalPowerMod
+ elseif level == 18 then
+ hp = 1290 * HPMod * GlobalHPMod
+ pw = 410 * PWMod * GlobalPowerMod
+ elseif level == 19 then
+ hp = 1440 * HPMod * GlobalHPMod
+ pw = 425 * PWMod * GlobalPowerMod
+ elseif level == 20 then
+ hp = 1930 * HPMod * GlobalHPMod
+ pw = 475 * PWMod * GlobalPowerMod
+ elseif level == 21 then
+ hp = 2120 * HPMod * GlobalHPMod
+ pw = 500 * PWMod * GlobalPowerMod
+ elseif level == 22 then
+ hp = 2355 * HPMod * GlobalHPMod
+ pw = 545 * PWMod * GlobalPowerMod
+ elseif level == 23 then
+ hp = 2595 * HPMod * GlobalHPMod
+ pw = 575 * PWMod * GlobalPowerMod
+ elseif level == 24 then
+ hp = 2840 * HPMod * GlobalHPMod
+ pw = 620 * PWMod * GlobalPowerMod
+ elseif level == 25 then
+ hp = 3080 * HPMod * GlobalHPMod
+ pw = 670 * PWMod * GlobalPowerMod
+ elseif level == 26 then
+ hp = 3340 * HPMod * GlobalHPMod
+ pw = 700 * PWMod * GlobalPowerMod
+ elseif level == 27 then
+ hp = 3600 * HPMod * GlobalHPMod
+ pw = 755 * PWMod * GlobalPowerMod
+ elseif level == 28 then
+ hp = 3820 * HPMod * GlobalHPMod
+ pw = 795 * PWMod * GlobalPowerMod
+ elseif level == 29 then
+ hp = 4240 * HPMod * GlobalHPMod
+ pw = 835 * PWMod * GlobalPowerMod
+ else
+ hp = 5000 * HPMod * GlobalHPMod --temp values
+ pw = 900 * PWMod * GlobalPowerMod -- temp values
+ end
+
+ SetMaxHP(NPC, math.floor(hp))
+ ModifyHP(NPC, math.floor(hp))
+ SetMaxPower(NPC, math.floor(pw))
+ ModifyPower(NPC, math.floor(pw))
+
+end
+
+--Automatically set heroic flags based on specified criteria
+function Heroic(NPC, Spawn)
+ local group = GetGroup(NPC)
+
+ if group ~= nil then
+ local groupsize = #group
+ if groupsize > 1 then
+ SpawnSet(NPC, "heroic", 1)
+ end
+ end
+
+ if difficulty == 8 or difficulty == 9 then
+ SpawnSet(NPC, "heroic", 1)
+ end
+
+end
+
+
+-- OPTIONAL COSMETIC FUNCTIONS--
+
+--Race functions for DoF compatibility. These are called independently in the NPC's spawn function.
+function dwarf(NPC, Spawn)
+ SpawnSet(NPC,"race",2)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",109)
+ else
+ SpawnSet(NPC,"model_type",110)
+ end
+
+ hair(NPC)
+end
+
+function froglok(NPC, Spawn)
+ SpawnSet(NPC,"race",4)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",76)
+ else
+ SpawnSet(NPC,"model_type",77)
+ end
+
+ hair(NPC)
+end
+
+function halfling(NPC, Spawn)
+ local hair = MakeRandomInt(1,2)
+ SpawnSet(NPC,"race",7)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",107)
+ else
+ SpawnSet(NPC,"model_type",108)
+ end
+
+ if hair == 1 then
+ SpawnSet(NPC, "hair_type", MakeRandomInt(1125,1128))
+ else
+ SpawnSet(NPC, "hair_type", MakeRandomInt(1133,1139))
+ end
+ haircolor(NPC)
+
+end
+
+function highelf(NPC, Spawn)
+ SpawnSet(NPC,"race",8)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",135)
+ else
+ SpawnSet(NPC,"model_type",136)
+ end
+
+ hair(NPC)
+end
+
+function woodelf(NPC, Spawn)
+ SpawnSet(NPC,"race",15)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",113)
+ else
+ SpawnSet(NPC,"model_type",114)
+ end
+
+ SpawnSet(NPC, "hair_type", MakeRandomInt(1133, 1139))
+ haircolor(NPC)
+end
+
+function barbarian(NPC, Spawn)
+ local hair = MakeRandomInt(1,2)
+ SpawnSet(NPC,"race",0)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",111)
+ else
+ SpawnSet(NPC,"model_type",112)
+ end
+
+ if hair == 1 then
+ SpawnSet(NPC, "hair_type", MakeRandomInt(1125,1128))
+ else
+ SpawnSet(NPC, "hair_type", MakeRandomInt(1133,1139))
+ end
+ haircolor(NPC)
+end
+
+function erudite(NPC, Spawn)
+ SpawnSet(NPC,"race",3)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",120)
+ else
+ SpawnSet(NPC,"model_type",119)
+ end
+
+ hair(NPC)
+end
+
+function gnome(NPC, Spawn)
+ SpawnSet(NPC,"race",5)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",122)
+ else
+ SpawnSet(NPC,"model_type",121)
+ end
+
+ hair(NPC)
+end
+
+function halfelf(NPC, Spawn)
+ SpawnSet(NPC,"race",6)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",79)
+ else
+ SpawnSet(NPC,"model_type",78)
+ end
+
+ hair(NPC)
+end
+
+function human(NPC, Spawn)
+ SpawnSet(NPC,"race",9)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",132)
+ else
+ SpawnSet(NPC,"model_type",134)
+ end
+
+ hair(NPC)
+end
+
+function kerra(NPC, Spawn)
+ SpawnSet(NPC,"race",11)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",81)
+ else
+ SpawnSet(NPC,"model_type",82)
+ end
+
+ hair(NPC)
+end
+
+function darkelf(NPC, Spawn)
+ SpawnSet(NPC,"race",1)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",116)
+ else
+ SpawnSet(NPC,"model_type",115)
+ end
+
+ hair(NPC)
+ DarkElfHairColor(NPC, Spawn)
+end
+
+function iksar(NPC, Spawn)
+ SpawnSet(NPC,"race",10)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",104)
+ else
+ SpawnSet(NPC,"model_type",103)
+ end
+
+ hair(NPC)
+end
+
+function ogre(NPC, Spawn)
+ SpawnSet(NPC,"race",12)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",123)
+ else
+ SpawnSet(NPC,"model_type",124)
+ end
+
+ hair(NPC)
+end
+
+function ratonga(NPC, Spawn)
+ SpawnSet(NPC,"race",13)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",54)
+ else
+ SpawnSet(NPC,"model_type",53)
+ end
+
+ hair(NPC)
+end
+
+function troll(NPC, Spawn)
+ SpawnSet(NPC,"race",14)
+
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",105)
+ else
+ SpawnSet(NPC,"model_type",106)
+ end
+
+ hair(NPC)
+
+end
+
+-- Classic Orcs
+function Deathfist(NPC, Spawn)
+ SpawnSet(NPC,"model_type",137)
+ SpawnSet(NPC, "race", 20)
+ SpawnSet(NPC, "faction", 119)
+end
+
+function Bloodskull(NPC, Spawn)
+ SpawnSet(NPC,"model_type",137)
+ SpawnSet(NPC, "race", 20)
+ SpawnSet(NPC, "faction", 120)
+ SpawnSet(NPC, "skin_color", "50 60 50")
+ SpawnSet(NPC, "eye_color", "98 63 28")
+end
+
+function Brokentusk(NPC, Spawn)
+ SpawnSet(NPC,"model_type",137)
+ SpawnSet(NPC, "race", 20)
+ SpawnSet(NPC, "faction", 367)
+ SpawnSet(NPC, "skin_color", "110 75 75")
+ SpawnSet(NPC, "eye_color", "98 63 28")
+end
+
+function Lonetusk(NPC, Spawn)
+ SpawnSet(NPC,"model_type",137)
+ SpawnSet(NPC, "race", 20)
+ SpawnSet(NPC, "faction", 366)
+ SpawnSet(NPC, "skin_color", "92 52 52")
+ SpawnSet(NPC, "eye_color", "98 63 28")
+end
+
+function Ree(NPC, Spawn)
+ SpawnSet(NPC,"model_type",137)
+ SpawnSet(NPC, "race", 20)
+ SpawnSet(NPC, "faction", 121)
+end
+
+-- DoF compatible hair functions
+function hair(NPC, Spawn)
+ SpawnSet(NPC, "hair_type", MakeRandomInt(1125, 1139))
+ if GetRace(NPC)==1 then --Darkelf
+ DarkElfHairColor(NPC, Spawn)
+ else
+ haircolor(NPC)
+ end
+end
+
+function haircolor(NPC, Spawn)
+ local color = MakeRandomInt(1,5)
+ if color == 1 then
+ SpawnSet(NPC, "hair_type_color", "102 36 18")
+ SpawnSet(NPC, "hair_type_highlight_color", "138 129 121")
+ SpawnSet(NPC, "hair_face_color", "102 36 18")
+ SpawnSet(NPC, "hair_face_highlight_color", "138 129 121")
+ elseif color == 2 then
+ SpawnSet(NPC, "hair_type_color", "218 187 120")
+ SpawnSet(NPC, "hair_type_highlight_color", "114 65 4")
+ SpawnSet(NPC, "hair_face_color", "218 187 120")
+ SpawnSet(NPC, "hair_face_highlight_color", "114 65 4")
+ elseif color == 3 then
+ SpawnSet(NPC, "hair_type_color", "51 18 8")
+ SpawnSet(NPC, "hair_type_highlight_color", "60 59 55")
+ SpawnSet(NPC, "hair_face_color", "51 18 8")
+ SpawnSet(NPC, "hair_face_highlight_color", "60 59 55")
+ elseif color == 4 then
+ SpawnSet(NPC, "hair_type_color", "5 5 10")
+ SpawnSet(NPC, "hair_type_highlight_color", "5 5 10")
+ SpawnSet(NPC, "hair_face_color", "5 5 10")
+ SpawnSet(NPC, "hair_face_highlight_color", "5 5 10")
+ elseif color == 5 then
+ SpawnSet(NPC, "hair_type_color", "230 230 230")
+ SpawnSet(NPC, "hair_type_highlight_color", "154 147 81")
+ SpawnSet(NPC, "hair_face_color", "230 230 230")
+ SpawnSet(NPC, "hair_face_highlight_color", "154 147 81")
+ end
+end
+
+function DarkElfHairColor(NPC, Spawn)
+ local color = MakeRandomInt(1,5)
+ if color == 1 then
+ SpawnSet(NPC, "hair_type_color", "183 177 183")
+ SpawnSet(NPC, "hair_type_highlight_color", "84 32 14")
+ SpawnSet(NPC, "hair_face_color", "183 177 183")
+ SpawnSet(NPC, "hair_face_highlight_color", "84 32 14")
+ elseif color == 2 then
+ SpawnSet(NPC, "hair_type_color", "170 191 191")
+ SpawnSet(NPC, "hair_type_highlight_color", "84 32 4")
+ SpawnSet(NPC, "hair_face_color", "170 191 191")
+ SpawnSet(NPC, "hair_face_highlight_color", "84 32 4")
+ elseif color == 3 then
+ SpawnSet(NPC, "hair_type_color", "179 173 194")
+ SpawnSet(NPC, "hair_type_highlight_color", "198 184 78")
+ SpawnSet(NPC, "hair_face_color", "179 173 194")
+ SpawnSet(NPC, "hair_face_highlight_color", "198 184 78")
+ elseif color == 4 then
+ SpawnSet(NPC, "hair_type_color", "219 244 244")
+ SpawnSet(NPC, "hair_type_highlight_color", "105 103 97")
+ SpawnSet(NPC, "hair_face_color", "219 244 244")
+ SpawnSet(NPC, "hair_face_highlight_color", "105 103 97")
+ elseif color == 5 then
+ SpawnSet(NPC, "hair_type_color", "139 122 138")
+ SpawnSet(NPC, "hair_type_highlight_color", "105 103 97")
+ SpawnSet(NPC, "hair_face_color", "139 122 138")
+ SpawnSet(NPC, "hair_face_highlight_color", "105 103 97")
+ end
+end
+
+
+--Idle Animation Packages: Call the function in the main spawn function of the spawn script.
+
+function IdleAggressive(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","threaten",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdleAggressive")
+end
+
+function IdleAlert(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","peer",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","listen",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdleAlert")
+end
+
+function IdleMischief(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","moon",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","neener",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","giggle",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","dance",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","heartattack",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdleMischief")
+end
+
+function IdleBored(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","stretch",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","stare",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdleBored")
+end
+
+function IdlePlayful(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","dance",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","flirt",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","smile",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","thumbsup",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","yeah",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdlePlayful")
+end
+
+function IdleSad(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","sad",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","pout",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","sulk",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","cry",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdleSad")
+end
+
+function IdleSneaky(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","smirk",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","whome",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","beckon",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","cutthroat",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdleSneaky")
+end
+
+function IdlePriest(NPC)
+ if IsInCombat(NPC) == false then
+ choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ CastSpell(NPC, 110002, 5, NPC)
+ elseif choice == 2 then
+ CastSpell(NPC, 110003, 5, NPC)
+ PlayFlavor(NPC,"","","yawn",0,0)
+-- PlayAnimation(NPC, 891)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+-- PlayAnimation(NPC, 713)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+-- PlayAnimation(NPC, 553)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"IdlePriest")
+
+end
+
+function IdleAngry(NPC)
+ if IsInCombat(NPC) == false then
+ choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","frustrated",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","curse",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","scold",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","shakefist",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ end
+
+end
+ AddTimer(NPC,MakeRandomInt(7000,10000),"IdleAngry")
+end
+
+function IdleBeggar(NPC)
+ if IsInCombat(NPC) == false then
+ choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","beg",0,0)
+-- PlayAnimation(NPC, 310)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","peer",0,0)
+-- PlayAnimation(NPC, 411)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+-- PlayAnimation(NPC, 891)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+-- PlayAnimation(NPC, 713)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+-- PlayAnimation(NPC, 553)
+ end
+ end
+ AddTimer(NPC,MakeRandomInt(10000,15000),"IdleBeggar")
+end
+
+function IdleTinker(NPC)
+ if IsInCombat(NPC) == false then
+ choice = MakeRandomInt(1,7)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","confused",0,0)
+-- PlayAnimation(NPC, 310)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","yes",0,0)
+-- PlayAnimation(NPC, 411)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","boggle",0,0)
+-- PlayAnimation(NPC, 891)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+-- PlayAnimation(NPC, 713)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+-- PlayAnimation(NPC, 553)
+ elseif choice == 6 then
+ PlayFlavor(NPC,"","","doh",0,0)
+-- PlayAnimation(NPC, 553)
+ elseif choice == 7 then
+ PlayFlavor(NPC,"","","crazy",0,0)
+-- PlayAnimation(NPC, 553)
+ end
+ end
+ AddTimer(NPC,MakeRandomInt(8000,13000),"IdleTinker")
+end
+
+
+-- PATHING SCRIPTS --
+
+--[[ Randomized Movement Loops
+ Call the RandomMovement() function in the NPC's spawn function.
+ Example format: RandomMovement(NPC, Spawn, -5, 5, 2, 8, 15)
+ This exampled sets the NPC to randomly move anywhere in a 5 meter radius
+ from it's spawn point at a speed of 2, moving every 8-15 seconds.
+--]]
+
+function RandomMovement(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+
+ MovementLoopAddLocation(NPC, X, Y, Z, Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementMod(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ MovementLoopAddLocation(NPC, X + LocModX, Y, Z + LocModZ, Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementMod(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ MovementLoopAddLocation(NPC, X + LocModX, Y, Z + LocModZ, Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementMod(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ MovementLoopAddLocation(NPC, X + LocModX, Y, Z + LocModZ, Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementMod(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ MovementLoopAddLocation(NPC, X + LocModX, Y, Z + LocModZ, Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementMod(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ MovementLoopAddLocation(NPC, X + LocModX, Y, Z + LocModZ, Speed, MakeRandomInt(MinDly, MaxDly))
+end
+
+function RandomMovementFlight(NPC, Spawn, NegDist, PosDist, NegHeight, PosHeight, Speed, MinDly, MaxDly)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementLoopAddLocation(NPC, X + MakeRandomInt(NegDist, PosDist), Y + MakeRandomInt(NegHeight, PosHeight), Z + MakeRandomInt(NegDist, PosDist), Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementLoopAddLocation(NPC, X + MakeRandomInt(NegDist, PosDist), Y + MakeRandomInt(NegHeight, PosHeight), Z + MakeRandomInt(NegDist, PosDist), Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementLoopAddLocation(NPC, X + MakeRandomInt(NegDist, PosDist), Y + MakeRandomInt(NegHeight, PosHeight), Z + MakeRandomInt(NegDist, PosDist), Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementLoopAddLocation(NPC, X + MakeRandomInt(NegDist, PosDist), Y + MakeRandomInt(NegHeight, PosHeight), Z + MakeRandomInt(NegDist, PosDist), Speed, MakeRandomInt(MinDly, MaxDly))
+ MovementLoopAddLocation(NPC, X + MakeRandomInt(NegDist, PosDist), Y + MakeRandomInt(NegHeight, PosHeight), Z + MakeRandomInt(NegDist, PosDist), Speed, MakeRandomInt(MinDly, MaxDly))
+end
+
+---Set an NPC to follow another NPC
+function FollowNPC(NPC, Spawn, LocID, Speed, Distance)
+ local zone = GetZone(NPC)
+ local leader = GetSpawnByLocationID(zone, LocID)
+
+ if GetDistance(NPC, leader) >= Distance then
+ MovementLoopAddLocation (NPC, GetX(leader), GetY(leader), GetZ(leader), Speed, 0)
+ end
+
+
+ -- in progress, do not use
+end
+
+function MovementMod(NPC, Spawn, NegDist, PosDist, Speed, MinDly, MaxDly)
+ MinNegDist = math.floor(NegDist/2)
+ MinPosDist = math.floor(PosDist/2)
+ MinX = MakeRandomInt(1,2)
+ MinZ = MakeRandomInt(1,2)
+
+ if MinX == 1 then
+ LocModX = MakeRandomInt(MinNegDist, NegDist)
+ elseif MinX == 2 then
+ LocModX = MakeRandomInt(MinPostDist, PosDist)
+ end
+
+ if MinZ == 1 then
+ LocModZ = MakeRandomInt(MinNegDist, NegDist)
+ elseif MinZ == 2 then
+ LocModZ = MakeRandomInt(MinPostDist, PosDist)
+ end
+
+end
+
+-- Automatically enforce level uniformity in multi-spawn encounters
+function Encounters(NPC, Spawn)
+ local group = GetGroup(NPC)
+
+ if group ~= nil then
+ for k,v in ipairs(group) do
+ GroupLevel= GetLevel(v)
+ Level = GroupLevel
+ SpawnSet(NPC, "level", GroupLevel)
+ end
+ end
+end
+
diff --git a/server/SpawnScripts/Generic/OrcModule.lua b/server/SpawnScripts/Generic/OrcModule.lua
new file mode 100644
index 000000000..eb6f95377
--- /dev/null
+++ b/server/SpawnScripts/Generic/OrcModule.lua
@@ -0,0 +1,243 @@
+--[[
+ Script Name : SpawnScripts/Generic/OrcModule.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.05 03:01:35
+ Script Purpose :
+ :
+--]]
+
+function OrcModule(NPC, Spawn, FactionID, ArmorType, ArmorRarity)
+ armor = ArmorType
+ rarity = ArmorRarity
+ faction = FactionID
+ class = GetClass(NPC)
+
+ SpawnSet(NPC,"model_type",137)
+ SpawnSet(NPC, "race", 19)
+ OrcFaction(NPC, Spawn)
+ OrcArmor(NPC, Spawn)
+ OrcWeapons(NPC, Spawn)
+end
+
+function OrcFaction(NPC, Spawn)
+ SpawnSet(NPC, "faction", faction)
+ if faction == 0 or Faction == 1 then
+ Generic(NPC)
+ elseif faction == 119 then
+ Deathfist(NPC)
+ elseif faction == 120 then
+ Bloodskull(NPC)
+ elseif faction == 367 then
+ Brokentusk(NPC)
+ elseif faction == 366 then
+ Lonetusk(NPC)
+ elseif faction == 121 then
+ Ree(NPC)
+ end
+
+end
+
+function Deathfist(NPC, Spawn)
+
+end
+
+function Bloodskull(NPC, Spawn)
+
+end
+
+function Brokentusk(NPC, Spawn)
+ SpawnSet(NPC, "skin_color", "110 75 75")
+ SpawnSet(NPC, "eye_color", "98 63 28")
+end
+
+function Lonetusk(NPC, Spawn)
+ SpawnSet(NPC, "skin_color", "92 52 52")
+ SpawnSet(NPC, "eye_color", "98 63 28")
+end
+
+function Ree(NPC, Spawn)
+
+end
+
+function Generic(NPC, Spawn)
+ SpawnSet(NPC, "skin_color", "75 100 75")
+ SpawnSet(NPC, "eye_color", "98 63 28")
+
+end
+
+function OrcArmor(NPC, Spawn)
+
+ if armor == 1 then
+ VeryLightArmor(NPC, Spawn)
+ elseif armor == 2 then
+ LightArmor(NPC, Spawn)
+ elseif armor == 3 then
+ MediumArmor(NPC, Spawn)
+ elseif armor == 4 then
+ HeavyArmor(NPC, Spawn)
+ else
+ LightArmor(NPC, Spawn)
+ end
+end
+
+function VeryLightArmor(NPC, Spawn)
+
+end
+
+function LightArmor(NPC, Spawn)
+ --if rarity == 1 then
+ Mismatched(NPC, Spawn)
+ --end
+
+end
+
+function MediumArmor(NPC, Spawn)
+
+end
+
+function HeavyArmor(NPC, Spawn)
+
+end
+
+function OrcWeapons(NPC, Spawn)
+ if class >= 1 and class <= 4 then
+ FighterWeapons(NPC)
+ elseif class >= 5 and class <=7 then
+ BrawlerWeapons(NPC)
+ elseif class >= 8 and class <= 10 then
+ FighterWeapons(NPC)
+ elseif class >= 11 and class <= 20 then
+ PriestWeapons(NPC)
+ elseif class >= 21 and class <= 30 then
+ MageWeapons(NPC)
+ else
+ ScoutWeapons(NPC)
+ end
+end
+
+function FighterWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,10)
+ if weapon == 1 then
+ SetEquipment(NPC, Primary, 2228, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, Primary, 2237, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, Primary, 2240, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, Primary, 2296, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 5 then
+ SetEquipment(NPC, Primary, 2319, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 6 then
+ SetEquipment(NPC, Primary, 2548, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 7 then
+ SetEquipment(NPC, Primary, 3242, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 8 then
+ SetEquipment(NPC, Primary, 2282, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 9 then
+ SetEquipment(NPC, Primary, 2409, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 10 then
+ SetEquipment(NPC, Primary, 2240, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function PriestWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,6)
+ if weapon == 1 then
+ SetEquipment(NPC, Primary, 3292, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, Primary, 3843, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, Primary, 2324, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, Primary, 2287, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3255, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 5 then
+ SetEquipment(NPC, Primary, 2516, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 6 then
+ SetEquipment(NPC, Primary, 2396, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function MageWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,4)
+ if weapon == 1 then
+ SetEquipment(NPC, Primary, 3642, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 or weapon == 3 then
+ SetEquipment(NPC, Primary, 2426, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, Primary, 3675, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function ScoutWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,3)
+ if weapon == 1 then
+ SetEquipment(NPC, Primary, 2264, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 2264, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, Primary, 2312, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 2312, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, Primary, 3286, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3286, 255, 255, 255, 255, 255, 255)
+ end
+
+end
+
+function BrawlerWeapons(NPC, Spawn)
+ local weapon = MakeRandomInt(1,4)
+ if weapon == 1 then
+ SetEquipment(NPC, Primary, 2536, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 2536, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 2 then
+ SetEquipment(NPC, Primary, 2534, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 2534, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 3 then
+ SetEquipment(NPC, Primary, 2274, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 2274, 255, 255, 255, 255, 255, 255)
+ elseif weapon == 4 then
+ SetEquipment(NPC, Primary, 3290, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Secondary, 3290, 255, 255, 255, 255, 255, 255)
+ end
+end
+
+function Mismatched(NPC, Spawn)
+ local mismatch = MakeRandomInt(1,6)
+ if mismatch == 1 then
+ SetEquipment(NPC, Legs, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Forearms, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Feet, 1080, 255, 255, 255, 255, 255, 255)
+ elseif mismatch ==2 then
+ SetEquipment(NPC, Legs, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Forearms, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Feet, 1080, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Chest, 1079, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 3 then
+ SetEquipment(NPC, Legs, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Forearms, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Feet, 1080, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Head, 1083, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 4 then
+ SetEquipment(NPC, Legs, 1084, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 5 then
+ SetEquipment(NPC, Legs, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Forearms, 1081, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Feet, 1080, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Head, 1083, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Chest, 1079, 255, 255, 255, 255, 255, 255)
+ elseif mismatch == 6 then
+ SetEquipment(NPC, Legs, 1084, 255, 255, 255, 255, 255, 255)
+ SetEquipment(NPC, Feet, 1080, 255, 255, 255, 255, 255, 255)
+ end
+end
+
+
diff --git a/server/SpawnScripts/Generic/PlayerHistory.lua b/server/SpawnScripts/Generic/PlayerHistory.lua
index ae400358d..d0cc30901 100755
--- a/server/SpawnScripts/Generic/PlayerHistory.lua
+++ b/server/SpawnScripts/Generic/PlayerHistory.lua
@@ -16,5 +16,6 @@ HISTORY = {
NEK_CASTLE_BASEMENT_ACCESS = 4,
NEK_CASTLE_BASEMENT_STUDY_ACCESS = 5,
BB_SCHMITTYSANDALS_STEP5_WAIT = 6,
- FROSTFELL_SANTA_GLUG = 7
-}
\ No newline at end of file
+ FROSTFELL_SANTA_GLUG = 7,
+ ANTONICA_QST_HUNTERSMANIFEST = 8,
+ ANTONICA_BOOTS_HERITAGE_QUEST_WAIT = 9 }
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/SpiritShard.lua b/server/SpawnScripts/Generic/SpiritShard.lua
index aa32506cd..ae7f13b82 100755
--- a/server/SpawnScripts/Generic/SpiritShard.lua
+++ b/server/SpawnScripts/Generic/SpiritShard.lua
@@ -42,13 +42,13 @@ function recovershard(NPC, Spawn)
end
function CheckShardExpired(NPC)
- local creationStamp = tostring(GetShardCreatedTimestamp(NPC))
- local year_ = math.floor(tonumber(string.sub(creationStamp, 0, 4)))
- local month_ = math.floor(tonumber(string.sub(creationStamp, 5, 6)))
- local day_ = math.floor(tonumber(string.sub(creationStamp, 7, 8)))
- local hour_ = math.floor(tonumber(string.sub(creationStamp, 9, 10)))
- local min_ = math.floor(tonumber(string.sub(creationStamp, 11, 12)))
- local sec_ = math.floor(tonumber(string.sub(creationStamp, 13, 14)))
+ local creationStamp = GetShardCreatedTimestamp(NPC)
+ local year_ = math.floor(string.sub(creationStamp, 0, 4))
+ local month_ = math.floor(string.sub(creationStamp, 5, 6))
+ local day_ = math.floor(string.sub(creationStamp, 7, 8))
+ local hour_ = math.floor(string.sub(creationStamp, 9, 10))
+ local min_ = math.floor(string.sub(creationStamp, 11, 12))
+ local sec_ = math.floor(string.sub(creationStamp, 13, 14))
local currentUTCTime = os.time(os.date('!*t'))
local creationTime = os.time{year=year_, month=month_, day=day_, hour=hour_, min=min_,sec=sec_}
@@ -60,4 +60,4 @@ function CheckShardExpired(NPC)
DeleteDBShardID(shardid) -- you could alternatively choose to not delete from DB, but for now it only holds XP debt recovery not items
Despawn(NPC)
end
-end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Generic/SubClassToCommoner.lua b/server/SpawnScripts/Generic/SubClassToCommoner.lua
index 1a4aa0d07..c1e455e89 100755
--- a/server/SpawnScripts/Generic/SubClassToCommoner.lua
+++ b/server/SpawnScripts/Generic/SubClassToCommoner.lua
@@ -42,6 +42,9 @@ if GetRace(player) == 0 or GetRace(player) == 3 or GetRace(player) == 5 or GetRa
SetAlignment(player, 2)
end
+DeleteSpellBook(player, 6)
+
+
if Qeynos >0 then ChangeFaction(player, 11, -Qeynos)
elseif Qeynos <0 then ChangeFaction(player, 11, (Qeynos*-1))
end
@@ -475,7 +478,6 @@ end
if HasSkill(player, 2638198038) then -- Focus
RemoveSkill(player, 2638198038)
end
-
if HasSkill(player, 723762198) then -- Aggression
RemoveSkill(player, 723762198)
end
@@ -485,7 +487,6 @@ end
if HasSkill(player, 1852383242) then -- Dual Wield
RemoveSkill(player, 1852383242)
end
-
if HasSkill(player, 3421494576) then -- Crushing
RemoveSkill(player, 3421494576)
end
@@ -498,6 +499,185 @@ end
if HasSkill(player, 418532101) then -- Slashing
RemoveSkill(player, 418532101)
end
+if HasSkill(player, 1553857724) then -- Investigation
+ RemoveSkill(player, 1553857724)
+end
+
+
+--Fighter
+if HasSkill(player, 1408356869) then -- Martial/Fighter
+ RemoveSkill(player, 1408356869)
+end
+if HasSkill(player, 1124719197) then -- Tactics/Warrior
+ RemoveSkill(player, 1124719197)
+end
+if HasSkill(player, 433335062) then -- Berserk/Berserker
+ RemoveSkill(player, 433335062)
+end
+if HasSkill(player, 1209716810) then -- Protection/Guardian
+ RemoveSkill(player, 1209716810)
+end
+if HasSkill(player, 3856706740) then -- Brawl/Brawling
+ RemoveSkill(player, 3856706740)
+end
+if HasSkill(player, 2011726342) then -- Tranquility/Monk
+ RemoveSkill(player, 2011726342)
+end
+if HasSkill(player, 3067436248) then -- Physicality/Bruiser
+ RemoveSkill(player, 3067436248)
+end
+if HasSkill(player, 3809066846) then -- Faith/Crusader
+ RemoveSkill(player, 3809066846)
+end
+if HasSkill(player, 90523872) then -- Determined Faith/Paladin
+ RemoveSkill(player, 90523872)
+end
+if HasSkill(player, 2741805322) then -- Determined Zeal/Shadowknight
+ RemoveSkill(player, 2741805322)
+end
+
+--Scout
+if HasSkill(player, 1921433074) then -- Reconnaissance/Scout
+ RemoveSkill(player, 1921433074)
+end
+if HasSkill(player, 1311635100) then -- Melodies/Bard
+ RemoveSkill(player, 1311635100)
+end
+if HasSkill(player, 296246391) then -- Ballads/Troubador
+ RemoveSkill(player, 296246391)
+end
+if HasSkill(player, 340921594) then -- Dirges/Dirge
+ RemoveSkill(player, 340921594)
+end
+if HasSkill(player, 1514256692) then -- Skulldugery/Rogue
+ RemoveSkill(player, 1514256692)
+end
+if HasSkill(player, 2663054519) then -- Swashbuckling/Swashbuckler
+ RemoveSkill(player, 2663054519)
+end
+if HasSkill(player, 1519965519) then -- Banditry/Brigand
+ RemoveSkill(player, 1519965519)
+end
+if HasSkill(player, 3167106577) then -- Stalking/Predator
+ RemoveSkill(player, 3167106577)
+end
+if HasSkill(player, 1400160844) then -- Archery/Ranger
+ RemoveSkill(player, 1400160844)
+end
+if HasSkill(player, 2711101135) then -- Assassination/Assassin
+ RemoveSkill(player, 2711101135)
+end
+
+--Priest
+if HasSkill(player, 2463145248) then -- Inspirations/Priest
+ RemoveSkill(player, 2463145248)
+end
+if HasSkill(player, 3341842907) then -- Theurgy/Cleric
+ RemoveSkill(player, 3341842907)
+end
+if HasSkill(player, 2581053277) then -- Regimens/Templar
+ RemoveSkill(player, 2581053277)
+end
+if HasSkill(player, 1829443087) then -- Inquisitions/Inquisitor
+ RemoveSkill(player, 1829443087)
+end
+if HasSkill(player, 3282420779) then -- Archegenesis/Druid
+ RemoveSkill(player, 3282420779)
+end
+if HasSkill(player, 1624274802) then -- Nature's Reckoning/Fury
+ RemoveSkill(player, 1624274802)
+end
+if HasSkill(player, 1040683335) then -- Nature's Refuge/Warden
+ RemoveSkill(player, 1040683335)
+end
+if HasSkill(player, 3343700951) then -- Talismans/Shaman
+ RemoveSkill(player, 3343700951)
+end
+if HasSkill(player, 3467160477) then -- Fetichisms/Mystic
+ RemoveSkill(player, 3467160477)
+end
+if HasSkill(player, 3191839982) then -- Vehemence/Defiler
+ RemoveSkill(player, 3191839982)
+end
+
+--Mage
+if HasSkill(player, 3820670534) then -- Evocations/Mage
+ RemoveSkill(player, 3820670534)
+end
+if HasSkill(player, 287643040) then -- Enchantments/Enchanter
+ RemoveSkill(player, 287643040)
+end
+if HasSkill(player, 2898101972) then -- Hallucinations/Illusionist
+ RemoveSkill(player, 2898101972)
+end
+if HasSkill(player, 2950599749) then -- Protean/Coecerer
+ RemoveSkill(player, 2950599749)
+end
+if HasSkill(player, 2533124061) then -- Sorcery/Sorcerer
+ RemoveSkill(player, 2533124061)
+end
+if HasSkill(player, 2662430630) then -- Elemental Mastery/Wizard
+ RemoveSkill(player, 2662430630)
+end
+if HasSkill(player, 193411854) then -- Noctivagance/Warlock
+ RemoveSkill(player, 193411854)
+end
+if HasSkill(player, 2120065377) then -- Legerdemain/Summoner
+ RemoveSkill(player, 2120065377)
+end
+if HasSkill(player, 2042842194) then -- Conjurations/Conjurer
+ RemoveSkill(player, 2042842194)
+end
+if HasSkill(player, 289471519) then -- Sepulchers/Necromancer
+ RemoveSkill(player, 289471519)
+end
+
+if HasSkill(player, 887279616) then -- Dagger
+ RemoveSkill(player, 887279616)
+end
+if HasSkill(player, 1696217328) then -- Sword
+ RemoveSkill(player, 1696217328)
+end
+if HasSkill(player, 2476073427) then -- Axe
+ RemoveSkill(player, 2476073427)
+end
+if HasSkill(player, 2954459351) then -- Great Axe
+ RemoveSkill(player, 2954459351)
+end
+if HasSkill(player, 2292577688) then -- Great Sword
+ RemoveSkill(player, 2292577688)
+end
+if HasSkill(player, 1653482350) then -- Great Hammer
+ RemoveSkill(player, 1653482350)
+end
+if HasSkill(player, 1653482350) then -- Great Spear
+ RemoveSkill(player, 1653482350)
+end
+if HasSkill(player, 1616998748) then -- Spear
+ RemoveSkill(player, 1616998748)
+end
+if HasSkill(player, 554333641) then -- Hammer
+ RemoveSkill(player, 554333641)
+end
+if HasSkill(player, 1743366740) then -- Bow
+ RemoveSkill(player, 1743366740)
+end
+if HasSkill(player, 2650425026) then -- Thrown Weapon
+ RemoveSkill(player, 2650425026)
+end
+if HasSkill(player, 4037812502) then -- Buckler
+ RemoveSkill(player, 4037812502)
+end
+if HasSkill(player, 3173504370) then -- Roundshield
+ RemoveSkill(player, 3173504370)
+end
+if HasSkill(player, 2608320658) then -- Kite Shield
+ RemoveSkill(player, 2608320658)
+end
+if HasSkill(player, 570458645) then -- Tower Shield
+ RemoveSkill(player, 570458645)
+end
+
if HasSkill(player, 609880714) then -- Defense
diff --git a/server/SpawnScripts/Generic/UnknownLanguage.lua b/server/SpawnScripts/Generic/UnknownLanguage.lua
index 445e58b39..ad7787332 100755
--- a/server/SpawnScripts/Generic/UnknownLanguage.lua
+++ b/server/SpawnScripts/Generic/UnknownLanguage.lua
@@ -311,26 +311,26 @@ function Garbled(NPC, Spawn, Faction)
local choice = math.random(1,6)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 3536439879, 1109691272, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 3536439879, 1109691272, Spawn,26)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_bc265d9b.mp3", "EeeSIP qweek MEEerallow neep", "", 148555474, 1278831922, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_bc265d9b.mp3", "EeeSIP qweek MEEerallow neep", "", 148555474, 1278831922, Spawn,26)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 1940215504, 447502824, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_2_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 1940215504, 447502824, Spawn,26)
elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 2175556278, 29227183, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_5a81ec49.mp3", "Hekveten plava SU klina", "", 2175556278, 29227183, Spawn,26)
elseif choice == 5 then
- PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 806743894, 496586204, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_5c77ba46.mp3", "Chee ava kirAH tay!", "", 806743894, 496586204, Spawn,26)
elseif choice == 6 then
- PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_21432a6a.mp3", "TravaHAS merallund kBORrten illanya", "", 1269733907, 434806140, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ratonga_bloodsabers/ft/ratonga/ratonga_bloodsabers_1_garbled_gm_21432a6a.mp3", "TravaHAS merallund kBORrten illanya", "", 1269733907, 434806140, Spawn,26)
end
elseif gender == FEMALE then
local choice = math.random(1,3)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/ratonga_darkblades/ft/ratonga/ratonga_darkblades_1_garbled_gf_5a81ec49.mp3", "Hekveten plava SU klina", "", 4282746773, 1025120966, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_darkblades/ft/ratonga/ratonga_darkblades_1_garbled_gf_5a81ec49.mp3", "Hekveten plava SU klina", "", 4282746773, 1025120966, Spawn,26)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gf_21432a6a.mp3", "EeeSIP qweek MEEerallow neep", "", 3484386885, 1475086391, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gf_21432a6a.mp3", "EeeSIP qweek MEEerallow neep", "", 3484386885, 1475086391, Spawn,26)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gf_5a81ec49.mp3", "Chee ava kirAH tay!", "", 3639926873, 1002267878, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_black_magi/ft/ratonga/ratonga_black_magi_1_garbled_gf_5a81ec49.mp3", "Chee ava kirAH tay!", "", 3639926873, 1002267878, Spawn,26)
end
end
diff --git a/server/SpawnScripts/Generic/random_pattern_long_short_delay.lua b/server/SpawnScripts/Generic/random_pattern_long_short_delay.lua
index a8c32af1c..5231f1b30 100755
--- a/server/SpawnScripts/Generic/random_pattern_long_short_delay.lua
+++ b/server/SpawnScripts/Generic/random_pattern_long_short_delay.lua
@@ -5,8 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
ChooseMovement(NPC)
end
@@ -29,10 +32,10 @@ function RouteOne(NPC, Spawn)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
MovementLoopAddLocation(NPC, X + 50, Y, Z, 2,0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 50, Y, Z + 50, 2, 5)
+ MovementLoopAddLocation(NPC, X - 25, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X , Y, Z + 50, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -41,10 +44,10 @@ function RouteTwo(NPC, Spawn)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
+ MovementLoopAddLocation(NPC, X - 50, Y, Z - 50, 2, 5)
+ MovementLoopAddLocation(NPC, X - 50, Y, Z +10, 2, 0)
+ MovementLoopAddLocation(NPC, X , Y, Z - 50, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -52,11 +55,11 @@ function RouteThree(NPC, Spawn)
local Y = GetY(NPC)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 5)
- MovementLoopAddLocation(NPC, X + 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X + 50, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X + 50, Y, Z +50, 2, 0)
+ MovementLoopAddLocation(NPC, X + 50, Y, Z - 50, 2, 5)
+ MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 50, Y, Z - 25, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -64,11 +67,11 @@ function RouteFour(NPC, Spawn)
local Y = GetY(NPC)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 5)
- MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 0)
- MovementLoopAddLocation(NPC, X - 50, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X - 50, Y, Z +30, 2, 0)
+ MovementLoopAddLocation(NPC, X - 50, Y, Z, 2, 5)
+ MovementLoopAddLocation(NPC, X - 50, Y, Z -25, 2, 0)
+ MovementLoopAddLocation(NPC, X - 50, Y, Z + 10, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Generic/random_pattern_medium_short_delay.lua b/server/SpawnScripts/Generic/random_pattern_medium_short_delay.lua
index e5fbfefb3..c127933c8 100755
--- a/server/SpawnScripts/Generic/random_pattern_medium_short_delay.lua
+++ b/server/SpawnScripts/Generic/random_pattern_medium_short_delay.lua
@@ -5,9 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "ChooseMovement")
end
function ChooseMovement(NPC)
@@ -32,7 +35,7 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 5)
MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
MovementLoopAddLocation(NPC, X + 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -44,7 +47,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 5)
MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -56,7 +59,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 5)
MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, 0)
MovementLoopAddLocation(NPC, X + 14, Y, Z - 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -68,7 +71,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 5)
MovementLoopAddLocation(NPC, X - 20, Y, Z, 2, 0)
MovementLoopAddLocation(NPC, X - 14, Y, Z + 4, 2, 0)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Generic/random_pattern_small.lua b/server/SpawnScripts/Generic/random_pattern_small.lua
index 9664f8df0..c55ef4839 100755
--- a/server/SpawnScripts/Generic/random_pattern_small.lua
+++ b/server/SpawnScripts/Generic/random_pattern_small.lua
@@ -5,7 +5,10 @@
Script Date : 2013.5.16
Script Notes : If the coords are out of bounds then the spawn will still go there.
--]]
-function spawn(NPC)
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
ChooseMovement(NPC)
end
@@ -27,11 +30,11 @@ function RouteOne(NPC, Spawn)
local Y = GetY(NPC)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
end
function RouteTwo(NPC, Spawn)
@@ -39,11 +42,11 @@ function RouteTwo(NPC, Spawn)
local Y = GetY(NPC)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
end
function RouteThree(NPC, Spawn)
@@ -51,11 +54,11 @@ function RouteThree(NPC, Spawn)
local Y = GetY(NPC)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
end
function RouteFour(NPC, Spawn)
@@ -63,11 +66,11 @@ function RouteFour(NPC, Spawn)
local Y = GetY(NPC)
local Z = GetZ(NPC)
MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Generic/random_pattern_small_med_delay.lua b/server/SpawnScripts/Generic/random_pattern_small_med_delay.lua
index 2c64bd402..e5e963ef6 100755
--- a/server/SpawnScripts/Generic/random_pattern_small_med_delay.lua
+++ b/server/SpawnScripts/Generic/random_pattern_small_med_delay.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
ChooseMovement(NPC)
end
@@ -32,7 +34,7 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -44,7 +46,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15), "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -56,7 +58,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -68,7 +70,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(7,15))
MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15), "ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Generic/random_pattern_small_short_delay.lua b/server/SpawnScripts/Generic/random_pattern_small_short_delay.lua
index 51577712b..dc808fd13 100755
--- a/server/SpawnScripts/Generic/random_pattern_small_short_delay.lua
+++ b/server/SpawnScripts/Generic/random_pattern_small_short_delay.lua
@@ -5,71 +5,13 @@
Script Date : 2013.5.16
Script Notes : If the coords are out of bounds then the spawn will still go there.
--]]
-function spawn(NPC)
- ChooseMovement(NPC)
-end
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
function respawn(NPC, Spawn)
spawn(NPC)
end
diff --git a/server/SpawnScripts/Generic/random_pattern_tiny_med_delay.lua b/server/SpawnScripts/Generic/random_pattern_tiny_med_delay.lua
index 7675fb196..16795dc66 100755
--- a/server/SpawnScripts/Generic/random_pattern_tiny_med_delay.lua
+++ b/server/SpawnScripts/Generic/random_pattern_tiny_med_delay.lua
@@ -5,8 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
ChooseMovement(NPC)
end
diff --git a/server/SpawnScripts/GobblerocksHideout/aGobblerockgrunt.lua b/server/SpawnScripts/GobblerocksHideout/aGobblerockgrunt.lua
new file mode 100755
index 000000000..ea52ca2e3
--- /dev/null
+++ b/server/SpawnScripts/GobblerocksHideout/aGobblerockgrunt.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/GobblerocksHideout/aGobblerockgrunt.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.09 12:12:21
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graveyard/widgetinspectthexmonument.lua b/server/SpawnScripts/Graveyard/widgetinspectthexmonument.lua
index 1dbf8b48e..f76b93355 100755
--- a/server/SpawnScripts/Graveyard/widgetinspectthexmonument.lua
+++ b/server/SpawnScripts/Graveyard/widgetinspectthexmonument.lua
@@ -10,18 +10,27 @@ local TheStolenArtifactsofThex = 5683
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'inspect' then
- if GetQuestStep(Spawn, TheStolenArtifactsofThex) == 6 then
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 6)
+ local con = CreateConversation()
+ AddConversationOption(con, "Stop inspecting.","Close")
+ if HasLanguage(Spawn,2) and GetQuestStepProgress(Spawn,TheStolenArtifactsofThex,6)==0 then
+ AddConversationOption(con, "Make a note of the artifact.","Dialog2")
end
- end
+ StartDialogConversation(con, 1, NPC, Spawn, "This is a gravestone made of ancient looking stone. The name of the deceased appears on the stone as well as odd writing of a foreign language. The name looks to have been added more recently than the foreign writing.")
+end
+end
+
+function Dialog2(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheStolenArtifactsofThex, 6)
+ AddConversationOption(con, "Stop studying.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "You make a note of the location of the Thex artifact as ordered by Kylanith D'Lar.")
+end
+
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
end
function spawn(NPC)
-
-end
-
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Graystone/AssistantJalan.lua b/server/SpawnScripts/Graystone/AssistantJalan.lua
index b8da85975..db87ce923 100755
--- a/server/SpawnScripts/Graystone/AssistantJalan.lua
+++ b/server/SpawnScripts/Graystone/AssistantJalan.lua
@@ -5,6 +5,13 @@
Script Date : 2008.09.21
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/AssistantTillheel.lua b/server/SpawnScripts/Graystone/AssistantTillheel.lua
index da86f16e5..4ac285ccd 100755
--- a/server/SpawnScripts/Graystone/AssistantTillheel.lua
+++ b/server/SpawnScripts/Graystone/AssistantTillheel.lua
@@ -10,6 +10,7 @@ require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
ProvidesQuest(NPC, 5498)
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
@@ -117,7 +118,7 @@ function WingDelivery(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("You are so kind to assist me. I am sorry I don't have much to offer as a reward, but here is what little I have left. Have a godo day!")
+ Dialog.AddDialog("You are so kind to assist me. I am sorry I don't have much to offer as a reward, but here is what little I have left. Have a good day!")
Dialog.AddVoiceover("voiceover/english/assistant_tillheel/qey_village03/assistanttillheel006.mp3",1830324090, 432473430)
Dialog.AddOption( "Thank you.","FinishQuest")
Dialog.Start()
diff --git a/server/SpawnScripts/Graystone/BarryViceheart.lua b/server/SpawnScripts/Graystone/BarryViceheart.lua
index 9f3dd7780..f74327e36 100755
--- a/server/SpawnScripts/Graystone/BarryViceheart.lua
+++ b/server/SpawnScripts/Graystone/BarryViceheart.lua
@@ -12,6 +12,7 @@ local Delivery = 5500
function spawn(NPC)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
ProvidesQuest(NPC, Delivery)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function InRange(NPC, Spawn) --Quest Callout
diff --git a/server/SpawnScripts/Graystone/Beerocks.lua b/server/SpawnScripts/Graystone/Beerocks.lua
index 1ab5e6316..9d9ea646b 100755
--- a/server/SpawnScripts/Graystone/Beerocks.lua
+++ b/server/SpawnScripts/Graystone/Beerocks.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/BriceStrongmend.lua b/server/SpawnScripts/Graystone/BriceStrongmend.lua
index a2e0cd632..e6eb55bc6 100755
--- a/server/SpawnScripts/Graystone/BriceStrongmend.lua
+++ b/server/SpawnScripts/Graystone/BriceStrongmend.lua
@@ -86,7 +86,7 @@ function Returned(NPC, Spawn)
PlayFlavor(NPC, "voiceover/english/brice_strongmend/qey_village03/bricestrongmend003.mp3", "", "agree", 3257008842, 2595858488, Spawn)
AddConversationOption(conversation, "I don't need the pole, but I'll take the money!","Done")
AddConversationOption(conversation, "Your old fishing pole has seen better days. Good luck.","Done")
- StartConversation(conversation, NPC, Spawn, "An honest one you are! I can see you'll fit in well in Qeynos! Please, take the leftover money. With this new pole I'm sure to catch more than my share and I can sell the rest! Say, would you like my old fishing pole?")
+ StartConversation(conversation, NPC, Spawn, "An honest one you are! I can see you'll fit in well in Qeynos! Please, take the leftover money. With this new pole I'm sure to catch more than my share of fish. Then I can sell the rest. Say, would you like my old fishing pole?")
end
function Done(NPC,Spawn)
diff --git a/server/SpawnScripts/Graystone/CarpenterJorgieIcearmor.lua b/server/SpawnScripts/Graystone/CarpenterJorgieIcearmor.lua
index 57c7d2ecb..4eba79bc1 100755
--- a/server/SpawnScripts/Graystone/CarpenterJorgieIcearmor.lua
+++ b/server/SpawnScripts/Graystone/CarpenterJorgieIcearmor.lua
@@ -5,8 +5,11 @@
Script Date : 2008.09.21
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+local Priest1 = 5772
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
end
function respawn(NPC)
@@ -15,9 +18,70 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A good day's work is the measure of worth!")
+ Dialog.AddVoiceover("voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor000.mp3", 2791551387, 1030675041)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ if HasQuest(Spawn,Priest1) and GetQuestStepProgress(Spawn,Priest1,2)==0 and GetQuestStep(Spawn,Priest1) <=2 then
+ Dialog.AddOption("I understand you're not feeling well.", "Priest")
+ end
+ Dialog.AddOption("I fully agree. I'll let you get back to work!")
+ Dialog.AddOption("No, I think it's just you. I'll let you get back to what you're doing.")
+ Dialog.Start()
+end
- PlayFlavor(NPC, "voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor000.mp3", "", "", 2791551387, 1030675041, Spawn)
- AddConversationOption(conversation, "I fully agree. I'll let you get back to work!")
- StartConversation(conversation, NPC, Spawn, "A good day's work is the measure of worth!")
-end
\ No newline at end of file
+ function Priest(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Harr! Does all of Qeynos know about it?! You tell one friend you've got a bad case of the ... the wind, and soon the whole city is a-buzz! Best keep yer distance, friend.")
+ Dialog.AddVoiceover("voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor001.mp3", 4288259113, 2466627591)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ Dialog.AddOption("I see. When did you start noticing this problem?","Priesta")
+ Dialog.AddOption("Is THAT what that smell is? I must be going...")
+ Dialog.Start()
+end
+
+ function Priesta(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, earlier today. Hmm ... now that you mention it the vapors started a little after I'd eaten that hunk of brisket I'd been saving.")
+ Dialog.AddVoiceover("voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor002.mp3", 683432825, 959372110)
+ PlayFlavor(NPC, "", "", "gutcramp", 0, 0, Spawn)
+ Dialog.AddOption("A hunk of brisket? How old was it?","Priestb")
+ Dialog.Start()
+end
+
+ function Priestb(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The missus cooked up this brisket that was so darned good; I wanted to keep a slab for special occasions. So, I stashed it 'round back where the cats and rats couldn't get at it. I suppose that was ... oh ... two months, three months ago.")
+ Dialog.AddVoiceover("voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor003.mp3", 1074806250, 332386423)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("You ate three-month-old meat?!","Priestc")
+ Dialog.AddOption("...you need more help than I can offer. Good bye.")
+ Dialog.Start()
+end
+
+ function Priestc(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, it was a bit gamey. Maybe I shoulda cured it or cooked it first. I thought it was all right -- better than most days at the pub. But now I've a terrible pain in my gut, and my face is roasting hot.")
+ Dialog.AddVoiceover("voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor004.mp3", 4032914528, 185062024)
+ PlayFlavor(NPC, "", "", "gutcramp", 0, 0, Spawn)
+ Dialog.AddOption("You have food poisoning! Let me heal you!","Priestd")
+ Dialog.AddOption("You're going to die, and I can't help you! Gods! What did I do to deserve this test?!")
+ Dialog.Start()
+end
+
+ function Priestd(NPC, Spawn)
+ SetStepComplete(Spawn,Priest1,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ho now, I feel better already! Next time, I won't eat any brisket older than a month, 'less it's been properly salted. An' I'll pick out the maggots first. You're a temple healer, yes? Good work! Good work! I'll be sure to give a little something extra to the temple this week. Maybe a hefty slab of meat!")
+ Dialog.AddVoiceover("voiceover/english/carpenter_jorgie_icearmor/qey_harbor/jorgieicearmor005.mp3", 1129428515, 388268360)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("Blessings be upon ... Oh, I'm gonna be sick!")
+ Dialog.Start()
+ ApplySpellVisual(NPC,58)
+ CastSpell(Spawn,53)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graystone/Coppershot.lua b/server/SpawnScripts/Graystone/Coppershot.lua
index 5e663df5a..acfc55e8e 100755
--- a/server/SpawnScripts/Graystone/Coppershot.lua
+++ b/server/SpawnScripts/Graystone/Coppershot.lua
@@ -44,7 +44,7 @@ function LagerDelivery(NPC, Spawn)
conversation = CreateConversation()
PlayFlavor(NPC, "voiceover/english/bartender_coppershot/qey_village03/bartendercoppershot001.mp3", "", "thanks", 552811210, 4089856593, Spawn)
AddConversationOption(conversation, "I'll make sure he gets this. Thanks.", "UpdateDelivery")
- StartConversation(conversation, NPC, Spawn, "Ye don't say! Must'a been ol' Deeppockets that sent ya. His family brew is famous here! Please, give him this antique stein. Now don't drop it! He'll be sure to find it interesting.")
+ StartConversation(conversation, NPC, Spawn, "You don't say! Must've been ol' Deeppockets who sent ya'. His family brew is famous here. Please give him this antique stein. Now, don't drop it. He'll be sure to find it interesting.")
end
function UpdateDelivery(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/Deadeye.lua b/server/SpawnScripts/Graystone/Deadeye.lua
index aac8a2979..4f27ba1d5 100755
--- a/server/SpawnScripts/Graystone/Deadeye.lua
+++ b/server/SpawnScripts/Graystone/Deadeye.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/DorakEverstock.lua b/server/SpawnScripts/Graystone/DorakEverstock.lua
index 9323ad6fd..42a251a4f 100755
--- a/server/SpawnScripts/Graystone/DorakEverstock.lua
+++ b/server/SpawnScripts/Graystone/DorakEverstock.lua
@@ -25,13 +25,15 @@ function hailed(NPC, Spawn)
else
conversation = CreateConversation()
GenericHail(NPC, Spawn)
-
- if not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
AddConversationOption(conversation, "No, not at the moment.")
StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
else
- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in Qeynos Harbor. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
end
@@ -39,11 +41,21 @@ end
function dlg_39_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
- -- artisan essentials volume 2
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
- AddConversationOption(conversation, "I will start on that now.", "dlg_39_2")
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
end
function Dialog1(NPC,Spawn)
@@ -77,7 +89,7 @@ function CanDo2(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other in the city. A very handy connection, indeed!")
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
Dialog.AddOption("Thank you for all the information!")
if GetTradeskillLevel(Spawn)<2 then
Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
diff --git a/server/SpawnScripts/Graystone/Frerin.lua b/server/SpawnScripts/Graystone/Frerin.lua
index 6a49e78c8..58901cf7c 100755
--- a/server/SpawnScripts/Graystone/Frerin.lua
+++ b/server/SpawnScripts/Graystone/Frerin.lua
@@ -6,6 +6,25 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ if GetFactionID(Spawn) ==1 then
+ Attack(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/GnorFarven.lua b/server/SpawnScripts/Graystone/GnorFarven.lua
index 76039d972..8167831c0 100755
--- a/server/SpawnScripts/Graystone/GnorFarven.lua
+++ b/server/SpawnScripts/Graystone/GnorFarven.lua
@@ -11,6 +11,7 @@ dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
local DWARF_MENTOR_QUEST_2 = 285
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Graystone/GurnaHadel.lua b/server/SpawnScripts/Graystone/GurnaHadel.lua
index 1e0326da4..8a43bd2d2 100755
--- a/server/SpawnScripts/Graystone/GurnaHadel.lua
+++ b/server/SpawnScripts/Graystone/GurnaHadel.lua
@@ -11,6 +11,7 @@ dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
local DWARF_MENTOR_QUEST_2 = 285
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Graystone/HannaFurycleaver.lua b/server/SpawnScripts/Graystone/HannaFurycleaver.lua
index 90c746f95..5ca2ee5c3 100755
--- a/server/SpawnScripts/Graystone/HannaFurycleaver.lua
+++ b/server/SpawnScripts/Graystone/HannaFurycleaver.lua
@@ -99,24 +99,24 @@ function Door3(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","hungry",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Graystone/HarganIcethaw.lua b/server/SpawnScripts/Graystone/HarganIcethaw.lua
index d0472ba70..e415795eb 100755
--- a/server/SpawnScripts/Graystone/HarganIcethaw.lua
+++ b/server/SpawnScripts/Graystone/HarganIcethaw.lua
@@ -5,8 +5,11 @@
Script Date : 2008.09.21
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5787
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "mining_digging")
end
function respawn(NPC)
@@ -14,15 +17,130 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- SpawnSet(NPC, "visual_state", 0)
- AddTimer(NPC,33000,"resetVisual")
- PlayFlavor(NPC, "voiceover/english/hargan_icethaw/qey_village03/harganicethaw000.mp3", "", "", 3849445120, 4083065151, Spawn)
- AddConversationOption(conversation, "No, I think it's just you. I'll let you get back to what you're doing.")
- StartConversation(conversation, NPC, Spawn, "Ahhhh ... Nothing's more rewarding than building up a good, hearty sweat after a long day's work!")
+ FaceTarget(NPC, Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+ AddTimer(NPC,45000,"resetVisual")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahhhh ... Nothing's more rewarding than building up a good, hearty sweat after a long day's work!")
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw000.mp3", 3849445120, 4083065151)
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)>=3 and GetQuestStep(Spawn,Quest1)<=4 and not QuestStepIsComplete(Spawn,Quest1,4) then
+ Dialog.AddOption("Dagorel said you could show me a thing or two about brawling.","Dialog2")
+ end
+ Dialog.AddOption("No, I think it's just you. I'll let you get back to what you're doing.")
+ Dialog.Start()
end
function resetVisual(NPC)
SpawnSet(NPC, "visual_state", 11420)
-end
\ No newline at end of file
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Dagorel you say? HAHA!!! That old dwarf still takes on whelps and turns them into real fighters? Looking at you, I can see he picks students with real potential! So, he wants me to give you some rough-and-tumble, eh?")
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw001.mp3", 3849445120, 4083065151)
+ Dialog.AddOption("He mentioned you are better with your fists than swords.","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("He's right about that. Let's give it a go ... it'll keep my blood pumpin'! Let me roll up my sleeves. Okay, let's go a couple of rounds. Give me everything you got! Don't worry, I can take it!")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw001.mp3", 3849445120, 4083065151)
+ Dialog.AddOption("[punch at his nose]","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog4a",1,Spawn)
+end
+
+function Dialog4a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Again. Mean it this time!")
+ PlayFlavor(NPC, "", "", "1h_thrown_ouch_down", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw002.mp3", 3849445120, 4083065151)
+ Dialog.AddOption("[give a short jab at his ribs]","Dialog5")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack02", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog5a",1,Spawn)
+end
+
+function Dialog5a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Again! Hit me again!")
+ PlayFlavor(NPC, "", "", "1h_thrown_ouch_forehand", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw003.mp3", 3849445120, 4083065151)
+ Dialog.AddOption("[give him the old one-two]","Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_wild_swing", 0, 0, NPC)
+ AddTimer(NPC,1200,"Dialog6a",1,Spawn)
+end
+
+function Dialog6a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(NPC, "", "", "1h_crush_ouch_forehand", 0, 0, Spawn)
+ AddTimer(NPC,1800,"Dialog6b",1,Spawn)
+end
+
+function Dialog6b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("AAARRGGGGGHH!!! Whoa, whoa, whoa! Are you okay?! Sorry about that, friend. I guess I got carried away. I was having so much fun. Umm ... I think we're done for now. Don't worry, that bruise should go away after a bit.")
+ PlayFlavor(NPC, "", "", "pugilist_kick", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw004.mp3", 3849445120, 4083065151)
+ Dialog.AddOption("Wow! I wasn't expecting you to come at me like that...","Dialog7")
+ Dialog.Start()
+ AddTimer(NPC,1400,"Dialog6c",1,Spawn)
+end
+
+function Dialog6c(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "knockedtoback", 0, 0, NPC)
+ AddTimer(NPC,1400,"Dialog6d",1,Spawn)
+
+end
+
+function Dialog6d(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "knockedtoback_getup", 0, 0, NPC)
+local invul = IsInvulnerable(Spawn)
+if invul == true then
+return 0
+end
+
+local hp = GetHP(Spawn)
+local damage = GetMaxHP(Spawn)*0.26
+local damageToTake = damage * 1
+-- if we don't have enough HP make them die to pain and suffering not self
+if hp <= damageToTake then
+else
+DamageSpawn(Spawn, Spawn, 192, 3, damageToTake, damageToTake, "Hargan's pugilist kick!", 0, 0, 1, 1)
+end
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, I'm still real sorry. Now you know how a brawler really fights. It's not all about using your fists. You can use other weapons you were born with too! No hard feelings, eh?")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/hargan_icethaw/qey_village03/harganicethaw005.mp3", 3849445120, 4083065151)
+ Dialog.AddOption("All in good fun, right? Thank you for the lesson.")
+ Dialog.Start()
+ SetStepComplete(Spawn,Quest1,4)
+end
diff --git a/server/SpawnScripts/Graystone/Ironmallet.lua b/server/SpawnScripts/Graystone/Ironmallet.lua
index ad9f46af1..52732ef88 100755
--- a/server/SpawnScripts/Graystone/Ironmallet.lua
+++ b/server/SpawnScripts/Graystone/Ironmallet.lua
@@ -9,6 +9,7 @@ local Daggers = 5462
local Tongs = 5482
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
@@ -18,10 +19,10 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- if GetQuestStep(Spawn, Daggers)==1 then
+ if HasQuest(Spawn,Daggers) and GetQuestStep(Spawn, Daggers)==1 then
AddConversationOption(conversation, "I am here to pick up daggers for Kruuprum.","Pickup")
end
- if GetQuestStep(Spawn, Tongs)==1 then
+ if HasQuest(Spawn,Tongs) and GetQuestStep(Spawn, Tongs)==1 then
AddConversationOption(conversation, "I am here have Baynor's tongs repaired.","PickupTongs")
end
PlayFlavor(NPC, "voiceover/english/mender_ironmallet/qey_village03/menderironmallet000.mp3", "", "", 296833708, 2408095573, Spawn)
@@ -32,25 +33,25 @@ end
function Pickup(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- AddConversationOption(conversation, "I'll consider that. Thank you.","Pickup")
- AddConversationOption(conversation, "I'm just picking up. Don't spread your gossip to me.","Pickup")
+ AddConversationOption(conversation, "I'll consider that. Thank you.","Pickup2")
+ AddConversationOption(conversation, "I'm just picking up. Don't spread your gossip to me.","Pickup2")
PlayFlavor(NPC, "voiceover/english/mender_ironmallet/qey_village03/menderironmallet001.mp3", "", "listen", 4074173931, 1699472908, Spawn)
StartConversation(conversation, NPC, Spawn, "Wha?...Eh?... Here ya go. Here is another sack of rusted daggers. These things aren't worth reselling or refurbishing. What Kruuprum wants with this refuse is beyond this dwarf! If I were you, I would steer clear of his wares.")
end
-function PickupTong(NPC, Spawn)
+function PickupTongs(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- AddConversationOption(conversation, "Great. I'll make sure he gets them.","PickupTongs")
+ AddConversationOption(conversation, "Great. I'll make sure he gets them.","PickupTongs2")
PlayFlavor(NPC, "voiceover/english/mender_ironmallet/qey_village03/menderironmallet001.mp3", "", 65782, 4074173931, 1699472908, Spawn)
StartConversation(conversation, NPC, Spawn, "Oh... again? Baynor's aim is waaaay off. Okay, hand them here. Silly supersticious halfelf refusing to fix his tongs. Refusing to fix his tongs. This is the tenth time I've fixed the blasted things... There, there you go. Good as new. ")
end
-function PickupTongs(NPC, Spawn)
+function PickupTongs2(NPC, Spawn)
SetStepComplete(Spawn, Tongs, 1)
end
-function Pickup(NPC, Spawn)
+function Pickup2(NPC, Spawn)
SetStepComplete(Spawn, Daggers, 1)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graystone/Jenison.lua b/server/SpawnScripts/Graystone/Jenison.lua
index dd8b37e4c..4a887f332 100755
--- a/server/SpawnScripts/Graystone/Jenison.lua
+++ b/server/SpawnScripts/Graystone/Jenison.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/KargIcemoore.lua b/server/SpawnScripts/Graystone/KargIcemoore.lua
index 06f8000ea..c4993f0ac 100755
--- a/server/SpawnScripts/Graystone/KargIcemoore.lua
+++ b/server/SpawnScripts/Graystone/KargIcemoore.lua
@@ -9,6 +9,7 @@
local TheMotleyMerchantManifest = 5368
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Graystone/LarsSilverbrace.lua b/server/SpawnScripts/Graystone/LarsSilverbrace.lua
index 22989f36c..feff020a0 100755
--- a/server/SpawnScripts/Graystone/LarsSilverbrace.lua
+++ b/server/SpawnScripts/Graystone/LarsSilverbrace.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "orate")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Graystone/LodzBouldercrack.lua b/server/SpawnScripts/Graystone/LodzBouldercrack.lua
index b799fcbe3..880592a94 100755
--- a/server/SpawnScripts/Graystone/LodzBouldercrack.lua
+++ b/server/SpawnScripts/Graystone/LodzBouldercrack.lua
@@ -93,24 +93,24 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","ponder",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Graystone/LonaDolsar.lua b/server/SpawnScripts/Graystone/LonaDolsar.lua
index 5e997fb96..1bff0be45 100755
--- a/server/SpawnScripts/Graystone/LonaDolsar.lua
+++ b/server/SpawnScripts/Graystone/LonaDolsar.lua
@@ -111,22 +111,22 @@ function waypoints(NPC)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,2)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
function FaceSeer(NPC)
diff --git a/server/SpawnScripts/Graystone/MarusDonoval.lua b/server/SpawnScripts/Graystone/MarusDonoval.lua
index d19eb2997..302601a1a 100755
--- a/server/SpawnScripts/Graystone/MarusDonoval.lua
+++ b/server/SpawnScripts/Graystone/MarusDonoval.lua
@@ -5,6 +5,13 @@
Script Date : 2009.09.27
Script Notes :
--]]
+function Spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
+end
+
+function respawn(NPC)
+ Spawn(NPC)
+end
-- Quest ID's
local A_TIME_FOR_FIGHTING = 289
diff --git a/server/SpawnScripts/Graystone/MinerGoldclamp.lua b/server/SpawnScripts/Graystone/MinerGoldclamp.lua
new file mode 100755
index 000000000..4b0a065cf
--- /dev/null
+++ b/server/SpawnScripts/Graystone/MinerGoldclamp.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Graystone/MinerGoldclamp.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.20 03:06:07
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graystone/MinerMcHammer.lua b/server/SpawnScripts/Graystone/MinerMcHammer.lua
new file mode 100755
index 000000000..28c866ecb
--- /dev/null
+++ b/server/SpawnScripts/Graystone/MinerMcHammer.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Graystone/MinerMcHammer.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.20 03:06:48
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graystone/NorvilleBurninghaunch.lua b/server/SpawnScripts/Graystone/NorvilleBurninghaunch.lua
index e9fbbb7b8..2885482cf 100755
--- a/server/SpawnScripts/Graystone/NorvilleBurninghaunch.lua
+++ b/server/SpawnScripts/Graystone/NorvilleBurninghaunch.lua
@@ -99,20 +99,20 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,2)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Graystone/RolonaSteinhold.lua b/server/SpawnScripts/Graystone/RolonaSteinhold.lua
index 1afd73902..6069abf65 100755
--- a/server/SpawnScripts/Graystone/RolonaSteinhold.lua
+++ b/server/SpawnScripts/Graystone/RolonaSteinhold.lua
@@ -85,24 +85,24 @@ function Door(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","confused",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graystone/ScribeBoomcast.lua b/server/SpawnScripts/Graystone/ScribeBoomcast.lua
new file mode 100755
index 000000000..7c53ffb1b
--- /dev/null
+++ b/server/SpawnScripts/Graystone/ScribeBoomcast.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Graystone/ScribeBoomcast.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.22 12:09:38
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Graystone/Snowboot.lua b/server/SpawnScripts/Graystone/Snowboot.lua
index 3a463022a..066ef09a0 100755
--- a/server/SpawnScripts/Graystone/Snowboot.lua
+++ b/server/SpawnScripts/Graystone/Snowboot.lua
@@ -5,6 +5,7 @@
Script Date : 2022.03.07
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local Pickup = 5501
@@ -33,47 +34,52 @@ end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,11) <0 then
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot.mp3", "", "", 3584987348, 1438770677, Spawn)
- if GetQuestStep(Spawn,Pickup)==1 then
- AddConversationOption(conversation, "I'm here to pick up Watchman Fiercecry's suit of armor.","Armor")
- end
- AddConversationOption(conversation, "Sorry to disturb you!")
- StartConversation(conversation, NPC, Spawn, "Aye, what is it? I've got to be fitting this elven lass, and I haven't got all day! Come on, out with it!")
+ PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
+ else
+ Dialog1(NPC, Spawn)
+ end
end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, what is it? I've got to be fitting this elven lass, and I haven't got all day! Come on, out with it!")
+ Dialog.AddVoiceover("voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot.mp3", 3584987348, 1438770677)
+ if GetQuestStep(Spawn,Pickup)==1 then
+ Dialog.AddOption("I'm here to pick up Watchman Fiercecry's suit of armor.","Armor")
+ end
+ Dialog.AddOption("Sorry to disturb you!")
+ Dialog.Start()
+end
+
+
function Armor(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot000.mp3", "", "", 2002270290, 3759394726, Spawn)
- AddConversationOption(conversation, "Fiercecry is apart of the Graystone Watch. Don't you want him protected?","Armor2")
- AddConversationOption(conversation, "Please? I am just trying to do a job.","Armor3")
- AddConversationOption(conversation, "I'm sure 'Old Snowboot' helps those who helps others.","Armor2")
- StartConversation(conversation, NPC, Spawn, "Oh, ya are, are you? Why should I believe you? I can't let every last soul run off with me full suit of armor just because they say they are here to pick it up for someone! Go on! Give me a reason! Why should I give it to you?! Out with it already! Why?!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, you are, are you? And why should I believe you? I can't let every last soul run off with a full suit of armor just because they say they're here to pick it up for someone! Go on, give me a reason! Why should I give it to you? Come on! Out with it already! Why?")
+ Dialog.AddVoiceover("voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot000.mp3", 2002270290, 3759394726)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("Fiercecry is a part of the Graystone Watch. Don't you want him protected?","Armor2")
+ Dialog.AddOption("Please? I am just trying to do a job.","Armor2")
+ Dialog.AddOption("I'm sure 'Old Snowboot' helps those who helps others.","Armor2")
+ Dialog.Start()
end
function Armor2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot001.mp3", "", "", 3372293691, 3262827310, Spawn)
- AddConversationOption(conversation, "I'll deliver it right away.","ArmorDone")
- StartConversation(conversation, NPC, Spawn, "Blast my good nature! Alright! Just a momment while I get it for ya. Now, don't let me hear about this suit going missing!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Blast my good nature! All right, just a moment while I get it for you. Now, don't let me hear about this suit going missing!")
+ Dialog.AddVoiceover("voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot001.mp3", 3372293691, 3262827310)
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ Dialog.AddOption("I'll deliver it right away.","ArmorDone")
+ Dialog.Start()
end
-function Armor3(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayAnimation(Spawn, 10844)
- PlayFlavor(NPC, "voiceover/english/armorsmith_snowboot/qey_village03/armorsmithsnowboot001.mp3", "", "", 3372293691, 3262827310, Spawn)
- AddConversationOption(conversation, "I'll deliver it right away.","ArmorDone")
- StartConversation(conversation, NPC, Spawn, "Blast my good nature! Alright! Just a momment while I get it for ya. Now, don't let me hear about this suit going missing!")
-end
function ArmorDone(NPC,Spawn)
FaceTarget(NPC, Spawn)
SetStepComplete(Spawn, Pickup, 1)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
end
diff --git a/server/SpawnScripts/Graystone/Soulforge.lua b/server/SpawnScripts/Graystone/Soulforge.lua
index d733d6cd9..1e9b1b23c 100755
--- a/server/SpawnScripts/Graystone/Soulforge.lua
+++ b/server/SpawnScripts/Graystone/Soulforge.lua
@@ -12,6 +12,7 @@ local Delivery = 5502
function spawn(NPC)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
ProvidesQuest(NPC, Delivery)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function InRange(NPC, Spawn) --Quest Callout
@@ -40,7 +41,7 @@ function hailed(NPC, Spawn)
AddConversationOption(conversation, "Can I assist you with anything around the shop?", "Snakes")
end
if GetQuestStep(Spawn, Delivery)==2 then
- AddConversationOption(conversation, "Here are the snake skins you asked for.", "SnakesFinish")
+ AddConversationOption(conversation, "I'm back! I've got the skins you requested!", "SnakesFinish")
end
AddConversationOption(conversation, "I'm just looking around.")
StartConversation(conversation, NPC, Spawn, "If steel is what you seek traveler, then look no further!")
@@ -77,11 +78,11 @@ function QuestBegin (NPC, Spawn)
end
function SnakesFinish(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/blacksmith_baynor/qey_village05/blacksmithbaynor003.mp3", "", "thank", 4052925746, 2525148033, Spawn)
+ PlayFlavor(NPC, "voiceover/english/weaponsmith_soulforge/qey_village03/weaponsmithsoulforge005.mp3", "", "ponder", 3067377267, 3322501955, Spawn) --DOESN'T WORK (Wrong key)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- AddConversationOption(conversation, "Thanks, and be careful with those tongs.", "Reward")
- StartConversation(conversation, NPC, Spawn, "Thank you, friend! Ah, yes. These tongs work as well as the day Ironmallet gave them to me! Please, take a bit of coin for your trouble. Farewell.")
+ AddConversationOption(conversation, "Ok, well, I'll have to make due with that.", "Reward")
+ StartConversation(conversation, NPC, Spawn, "Let's have a look, shall we? Hmm ... These skins are damaged. I can't pay you as much as I'd like. This will have to do.")
end
diff --git a/server/SpawnScripts/Graystone/TullyJamtoe.lua b/server/SpawnScripts/Graystone/TullyJamtoe.lua
index c5e0bb1e1..db74d8897 100755
--- a/server/SpawnScripts/Graystone/TullyJamtoe.lua
+++ b/server/SpawnScripts/Graystone/TullyJamtoe.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
diff --git a/server/SpawnScripts/Graystone/WatcherCurmoglielKarthal.lua b/server/SpawnScripts/Graystone/WatcherCurmoglielKarthal.lua
index c70e11661..c25cdab58 100755
--- a/server/SpawnScripts/Graystone/WatcherCurmoglielKarthal.lua
+++ b/server/SpawnScripts/Graystone/WatcherCurmoglielKarthal.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local Rats = 5503
@@ -23,24 +24,34 @@ if math.random(1, 100) <= 70 then
end
function hailed(NPC, Spawn)
- conversation = CreateConversation()
- SetTarget(NPC,Spawn)
- FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)<0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ else
+ Dialog1(NPC, Spawn)
AddTimer(NPC,30000,"RemoveTarget",1,Spawn)
- PlayFlavor(NPC, "voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel000.mp3", "", "", 1545523898, 2801793023, Spawn)
- if not HasCompletedQuest (Spawn, Rats) and not HasQuest (Spawn, Rats) and GetLevel(Spawn) >=6 then
- AddConversationOption(conversation, "Haven't the gods been quiet since The Shattering?", "Gods")
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Celestial Watch is ever vigilant. Rest will come only after the tyranny of evil can be undone.")
+ Dialog.AddVoiceover("voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel000.mp3", 1545523898, 2801793023)
+ if not HasCompletedQuest (Spawn, Rats) and not HasQuest (Spawn, Rats) and GetLevel(Spawn) >=6 then
+ Dialog.AddOption("Haven't the gods been quiet since The Shattering?", "Gods")
end
- if GetQuestStep (Spawn, Rats)==2 then
- AddConversationOption(conversation, "I have slain the Bloodsabers. Is that proof enough?", "Finished")
+ if GetQuestStep (Spawn, Rats)==2 then
+ Dialog.AddOption("I have slain the Bloodsabers. Is that proof enough?", "Finished")
end
- AddConversationOption(conversation, "Good to know. Good day to you.")
-if not HasCompletedQuest (Spawn, Rats) and not HasQuest (Spawn, Rats) then
- AddConversationOption(conversation, "I don't need faith telling me what to do.","NoFaith")
-end
- StartConversation(conversation, NPC, Spawn, "The Celestial Watch is ever vigilant. Rest will come only after the tyranny of evil can be undone.")
+ Dialog.AddOption("Good to know. Good day to you.")
+ if not HasCompletedQuest (Spawn, Rats) and not HasQuest (Spawn, Rats) then
+ Dialog.AddOption( "I don't need faith telling me what to do.","NoFaith")
+ end
+ Dialog.Start()
end
+
function RemoveTarget(NPC,Spawn)
if GetTarget(NPC)==Spawn then
SetTarget(NPC,nil)
@@ -48,20 +59,22 @@ end
end
function NoFaith(NPC, Spawn)
- conversation = CreateConversation()
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel004.mp3","","sigh",3442673353,215479191,Spawn)
- AddConversationOption(conversation, "Perhaps.")
- StartConversation(conversation, NPC, Spawn, "Faith is all that can save us. I am sorry you cannot see this. This fight is not yours. But someday, you shall find your way.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Faith is all that can save us. I am sorry you cannot see this. This fight is not yours. But someday, you shall find your way.")
+ Dialog.AddVoiceover("voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel004.mp3", 3442673353, 215479191)
+ Dialog.AddOption("Perhaps.")
+ Dialog.Start()
end
function Gods(NPC, Spawn)
- conversation = CreateConversation()
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel001.mp3","","nod",2796372523,2339729936,Spawn)
- AddConversationOption(conversation, "How can I prove my faith?","Prove")
- AddConversationOption(conversation, "I don't need faith telling me what to do.","NoFaith")
- StartConversation(conversation, NPC, Spawn, "The Celestial Watch is the bearer of faith in this near faithless world. The powers that be have been silenced for ages, and far too many have lost faith. Now is the time for all to prove their faith.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Celestial Watch is the bearer of faith in this near faithless world. The powers that be have been silenced for ages, and far too many have lost faith. Now is the time for all to prove their faith.")
+ Dialog.AddVoiceover("voiceover/english/watcher_curmogliel_kar_thal/qey_village03/watchercurmogliel001", 2796372523, 2339729936)
+ Dialog.AddOption("How can I prove my faith?","Prove2")
+ Dialog.AddOption("I don't need faith telling me what to do.","NoFaith")
+ Dialog.Start()
end
function Prove(NPC, Spawn)
diff --git a/server/SpawnScripts/Graystone/zonetoqeyharbor.lua b/server/SpawnScripts/Graystone/zonetoqeyharbor.lua
index c8efddd2d..9201829e7 100755
--- a/server/SpawnScripts/Graystone/zonetoqeyharbor.lua
+++ b/server/SpawnScripts/Graystone/zonetoqeyharbor.lua
@@ -5,19 +5,32 @@
Script Purpose :
:
--]]
-
-function spawn(NPC)
- SetRequiredQuest(NPC,5718,14,0,1,1)
- SetRequiredQuest(NPC,5719,14,0,1,1)
- SetRequiredQuest(NPC,5720,14,0,1,1)
- SetRequiredQuest(NPC,5721,14,0,1,1)
- SetRequiredQuest(NPC,5722,14,0,1,1)
- SetRequiredQuest(NPC,5723,14,0,1,1)
-end
-
-function hailed(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter Qeynos Harbor' then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723)
+ and GetFactionAmount(Spawn,11)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5764) and GetQuestStep(Spawn,5764)==10 then
+ SetStepComplete(Spawn,5764,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only citizens may enter the city of Qeynos.",255,50,50)
+ SendMessage(Spawn,"Only citizens may enter the city of Qeynos.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,11) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("QeynosHarbor")
+ Zone(ZoneRef,Spawn,863.512, -25, -83.7554, 169.97)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/GrimgashsLair/GrimgashtheBlack.lua b/server/SpawnScripts/GrimgashsLair/GrimgashtheBlack.lua
index 047d0a39e..808328482 100755
--- a/server/SpawnScripts/GrimgashsLair/GrimgashtheBlack.lua
+++ b/server/SpawnScripts/GrimgashsLair/GrimgashtheBlack.lua
@@ -7,6 +7,14 @@
--]]
function spawn(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
end
diff --git a/server/SpawnScripts/GrimgashsLair/aGruttoothchampion.lua b/server/SpawnScripts/GrimgashsLair/aGruttoothchampion.lua
index d86019172..770b21365 100755
--- a/server/SpawnScripts/GrimgashsLair/aGruttoothchampion.lua
+++ b/server/SpawnScripts/GrimgashsLair/aGruttoothchampion.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
-EmoteLoop(NPC,Spawn)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ EmoteLoop(NPC,Spawn)
end
function EmoteLoop(NPC,Spawn)
diff --git a/server/SpawnScripts/GrimgashsLair/aGruttoothprotector.lua b/server/SpawnScripts/GrimgashsLair/aGruttoothprotector.lua
index 28f23b19e..f6dd036a2 100755
--- a/server/SpawnScripts/GrimgashsLair/aGruttoothprotector.lua
+++ b/server/SpawnScripts/GrimgashsLair/aGruttoothprotector.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
-AddTimer(NPC,2000,"EmoteLoop")
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC,2000,"EmoteLoop")
end
function EmoteLoop(NPC,Spawn)
diff --git a/server/SpawnScripts/GrimgashsLair/aGruttoothsparkcaster.lua b/server/SpawnScripts/GrimgashsLair/aGruttoothsparkcaster.lua
index 295802a86..f0f5dd0de 100755
--- a/server/SpawnScripts/GrimgashsLair/aGruttoothsparkcaster.lua
+++ b/server/SpawnScripts/GrimgashsLair/aGruttoothsparkcaster.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/GrimgashsLair/aGruttoothwitchdoctor.lua b/server/SpawnScripts/GrimgashsLair/aGruttoothwitchdoctor.lua
index b20b8b1c0..930ac5ab3 100755
--- a/server/SpawnScripts/GrimgashsLair/aGruttoothwitchdoctor.lua
+++ b/server/SpawnScripts/GrimgashsLair/aGruttoothwitchdoctor.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
-AddTimer(NPC,2000,"EmoteLoop")
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ AddTimer(NPC,2000,"EmoteLoop")
end
function EmoteLoop(NPC,Spawn)
diff --git a/server/SpawnScripts/HiddenVillage/ChiefKaorf.lua b/server/SpawnScripts/HiddenVillage/ChiefKaorf.lua
new file mode 100755
index 000000000..b04d9412e
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/ChiefKaorf.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/ChiefKaorf.lua
+ Script Purpose : Chief Kaorf
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Say(NPC, "Lick my frog balls!")
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello again traveler. It is good that you have returned to us in our time of need.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1060.mp3", 0, 0)
+ Dialog.AddOption("Your time of need? Has something happened?", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes. Our scouts have returned and informed us that Venekor has grown angry with the incursion of adventurers in these lands! This could spell certain doom for our people!")
+ Dialog.AddOption("Venekor?", "Dialog6")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Tae Ew are the cruel wardens that guard our people and subject them to daily torture. If it wasn't for their dragon master, our people would have been free long ago. ")
+ Dialog.AddOption("Dragon master?!?", "Dialog5")
+ Dialog.AddOption("Sorry but I've got some other business to attend to.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Excellent! There is no time to lose! You must leave the village immediately and head to the Temple of Cazic-Thule. The future of the froglok race depends upon your success!")
+ Dialog.AddOption("Don't worry, chief, I know how to deal with dragons!")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Now that their Lord Venekor has gotten wind of our preparation of our impending attack, there is no possible way we could leave the village. Even now their scouts monitor our movements!")
+ Dialog.AddOption("I have some allies. We could enter the temple and take care of Venekor!", "Dialog4")
+ Dialog.AddOption("I really wish I could help but a dragon is going to be a bit much for me right now.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Euurp.lua b/server/SpawnScripts/HiddenVillage/Euurp.lua
new file mode 100755
index 000000000..622f68978
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Euurp.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Euurp.lua
+ Script Purpose : Euurp
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Well it's about time you returned. Have you been keeping up on your Guktan studies?", "scold", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Fruppen.lua b/server/SpawnScripts/HiddenVillage/Fruppen.lua
new file mode 100755
index 000000000..6e4f30094
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Fruppen.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Fruppen.lua
+ Script Purpose : Fruppen
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Look! See I've been training!", "monk_dodge_down", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Grepp.lua b/server/SpawnScripts/HiddenVillage/Grepp.lua
new file mode 100755
index 000000000..64514537c
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Grepp.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Grepp.lua
+ Script Purpose : Grepp
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+waypoints(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -69.93, 13.63, 154.28, 1, 0)
+ MovementLoopAddLocation(NPC, -70.07, 13.64, 155.49, 1, 0)
+ MovementLoopAddLocation(NPC, -69.17, 13.65, 156.1, 1, 0)
+ MovementLoopAddLocation(NPC, -67.52, 13.64, 153.7, 1, 10)
+ MovementLoopAddLocation(NPC, -69.17, 13.65, 156.1, 1, 0)
+ MovementLoopAddLocation(NPC, -70.07, 13.64, 155.49, 1, 0)
+ MovementLoopAddLocation(NPC, -69.93, 13.63, 154.28, 1, 0)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "I see you have returned. I hope you brought your appetite. If there is anything you need to eat we sell it right here.", "wave", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Welcome back friend the stew was most excellent.", "happy", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1028.mp3", 0, 0, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/MsGrupp.lua b/server/SpawnScripts/HiddenVillage/MsGrupp.lua
new file mode 100755
index 000000000..27f3f087a
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/MsGrupp.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Ms.Grupp.lua
+ Script Purpose : Ms. Grupp
+ Script Author : neatz09
+ Script Date : 2023.12.12
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "You boys look so handsome in your little uniforms...", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Oemor.lua b/server/SpawnScripts/HiddenVillage/Oemor.lua
new file mode 100755
index 000000000..faefb9c9a
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Oemor.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Oemor.lua
+ Script Purpose : Oemor
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Thank you for bringing us back together. I just love my flowers!", "fullcurtsey", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1015.mp3", 0, 0, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Pikspoh.lua b/server/SpawnScripts/HiddenVillage/Pikspoh.lua
new file mode 100755
index 000000000..a6c80a1f0
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Pikspoh.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Pikspoh.lua
+ Script Purpose : Pikspoh
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "It's good to see you again! It's always nice to see adventurers in Kugup!", "wave", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Pohpiks.lua b/server/SpawnScripts/HiddenVillage/Pohpiks.lua
new file mode 100755
index 000000000..6d6776937
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Pohpiks.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Pohpiks.lua
+ Script Purpose : Pohpiks
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "You have returned to the village of Kugup. You are welcome to assist us in our struggle!", "bow", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Repmuj.lua b/server/SpawnScripts/HiddenVillage/Repmuj.lua
new file mode 100755
index 000000000..92a9d3164
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Repmuj.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Repmuj.lua
+ Script Purpose : Repmuj
+ Script Author : neatz09
+ Script Date : 2023.12.13
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Player)
+--two movement scripts
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Stop fooling around and gimme it Reppoh!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "REPPOH GIVE ME MY BALL!", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Reppoh.lua b/server/SpawnScripts/HiddenVillage/Reppoh.lua
new file mode 100755
index 000000000..3ac8195cd
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Reppoh.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/HiddenVillage/Reppoh.lua
+ Script Author : neatz09
+ Script Date : 2023.12.13 03:12:27
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ waypoints(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -97.46, 13.72, 208.56, 2, 0)
+ MovementLoopAddLocation(NPC, -96.87, 13.72, 199.38, 2, 0)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/SenseiGrrupin.lua b/server/SpawnScripts/HiddenVillage/SenseiGrrupin.lua
new file mode 100755
index 000000000..a36d15245
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/SenseiGrrupin.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/SenseiGrrupin.lua
+ Script Purpose : Sensei Grrupin
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "The Hand of Marr will always guide the faithful! Do not let yourself become distracted by what goes on around us! Concentrate!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "My warriors, let us take a moment to reflect on our strengths! Together, we can overcome any obstacle.", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Teiluj.lua b/server/SpawnScripts/HiddenVillage/Teiluj.lua
new file mode 100755
index 000000000..8fa78701c
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Teiluj.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Teiluj.lua
+ Script Purpose : Teiluj
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Hello there friend. I cannot thank you enough for reuniting me with Oemor.", "thanks", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Timrek.lua b/server/SpawnScripts/HiddenVillage/Timrek.lua
new file mode 100755
index 000000000..8af7bad65
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Timrek.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Timrek.lua
+ Script Purpose : Timrek
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "It's good to see you again, adventurer. If you're looking for some weapons, I have a few of the new ones we have made here for the next fight.", "bow", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/Vripp.lua b/server/SpawnScripts/HiddenVillage/Vripp.lua
new file mode 100755
index 000000000..f0f3c7c0b
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/Vripp.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/Vripp.lua
+ Script Purpose : Vripp
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Dolly don't worry I'll never lose you again!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1059.mp3", 0, 0, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/aDefenderofKugup.lua b/server/SpawnScripts/HiddenVillage/aDefenderofKugup.lua
new file mode 100755
index 000000000..764536b7e
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/aDefenderofKugup.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/aDefenderofKugup.lua
+ Script Purpose : a Defender of Kugup
+ Script Author : neatz09
+ Script Date : 2023.04.03
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Welcome back to the city of Kugup adventurer!", "salute", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/HiddenVillage/aFroglokchild.lua b/server/SpawnScripts/HiddenVillage/aFroglokchild.lua
new file mode 100755
index 000000000..b3262e01b
--- /dev/null
+++ b/server/SpawnScripts/HiddenVillage/aFroglokchild.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/TheHiddenVillageofKugup/aFroglokchild.lua
+ Script Purpose : a Froglok child
+ Script Author : neatz09
+ Script Date : 2023.12.12
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,7)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "EEeiiiiIIEE!!", "point", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Hehe!", "giggle", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1030.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1030.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1017.mp3", 0, 0, Spawn)
+ elseif choice == 6 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1030.mp3", 0, 0, Spawn)
+ elseif choice == 7 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1017.mp3", 0, 0, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/AmbassadorSaera.lua b/server/SpawnScripts/IsleRefuge1/AmbassadorSaera.lua
index 561ad9c12..4504e7797 100755
--- a/server/SpawnScripts/IsleRefuge1/AmbassadorSaera.lua
+++ b/server/SpawnScripts/IsleRefuge1/AmbassadorSaera.lua
@@ -2,7 +2,7 @@
Script Name : SpawnScripts/IsleRefuge1/AmbassadorSaera.lua
Script Author : Dorbin
Script Date : 2022.08.30 03:08:04
- Script Purpose : Just applying parsed dialog here. Obvisouly needs more.
+ Script Purpose :
:
--]]
@@ -65,7 +65,7 @@ end
function hailed(NPC, Spawn)
if GetClass(Spawn)>0 then
if not HasQuest(Spawn,5758) and not HasQuest(Spawn,5717) and not HasCompletedQuest(Spawn,5758) and not HasCompletedQuest(Spawn,5717) and not HasItem(Spawn, 1413,1) and GetFactionAmount(Spawn,11) >=0 then
- if GetRace(Spawn) == BARBARIAN or GetRace(Spawn) == DWARF or GetRace(Spawn) == ERUDITE or GetRace(Spawn) ==GNOME or GetRace(Spawn) == HALF_ELF or GetRace(Spawn) == HUMAN or GetRace(Spawn) == FROGLOK or GetRace(Spawn) == KERRA or GetRace(Spawn) == HIGH_ELF or GetRace(Spawn) == HALFLING or GetRace(Spawn) == WOOD_ELF or GetRace(Spawn) == FAE or GetRace(Spawn) == AERAKYN then
+ if GetRace(Spawn) == BARBARIAN or GetRace(Spawn) == DWARF or GetRace(Spawn) == ERUDITE or GetRace(Spawn) ==GNOME or GetRace(Spawn) == HALF_ELF or GetRace(Spawn) == HUMAN or GetRace(Spawn) == FROGLOK or GetRace(Spawn) == KERRA or GetRace(Spawn) == HIGH_ELF or GetRace(Spawn) == HALFLING or GetRace(Spawn) == WOOD_ELF or GetRace(Spawn) == FAE or GetRace(Spawn) == VAMPIRE or GetRace(Spawn) == AERAKYN then
Dialog1(NPC, Spawn)
else
NotRace(NPC, Spawn)
@@ -146,15 +146,34 @@ end
function Dialog5(NPC, Spawn)
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ if GetClass(Spawn)==1 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Fighter", "Dialog6")
+ elseif GetClass(Spawn)==11 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Priest", "Dialog6")
+ elseif GetClass(Spawn)==21 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Mage", "Dialog6")
+ elseif GetClass(Spawn)==31 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Scout", "Dialog6")
+ else
+ AddConversationOption(con, ""..GetName(Spawn).."", "Dialog6")
+ end
+ AddConversationOption(con, "On second thought, I need to reconsider.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "OFFICIAL QEYNOS DOCUMENTATION:\n-----------------------------------------\nI \""..GetName(Spawn).."\" pledge myself to \nthe City of Qeynos and its ruler,\nQueen Antonia Bayle. \n\nI will strive to uphold its ideals of honor and goodwill for all citizens of Qeynos.\n\nSigned,")
+ else
window = CreateOptionWindow();
AddOptionWindowOption(window, " Pledge allegiance to Qeynos", "Dedicate yourself to the City of Qeynos and to its leader, Queen Antonia Bayle. [This decision is final!]", 2, 16, "Dialog6")
AddOptionWindowOption(window, " Reconsider", "Rescind your request. Return to Ambassador Saera if you decide Qeynos is right for you.", 2, 13, "Sigh")
SendOptionWindow(window, Spawn, "Pledge allegiance to Qeynos?", "Cancel")
+
+end
end
function Dialog6(NPC, Spawn)
-OfferQuest(NPC,Spawn,5717)
+OfferQuest(NPC,Spawn,Qeynos)
FaceTarget(NPC,Spawn)
+CloseConversation(NPC,Spawn)
end
function Sigh(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/AmbassadorTKirr.lua b/server/SpawnScripts/IsleRefuge1/AmbassadorTKirr.lua
index eb9ac6884..ca9653a76 100755
--- a/server/SpawnScripts/IsleRefuge1/AmbassadorTKirr.lua
+++ b/server/SpawnScripts/IsleRefuge1/AmbassadorTKirr.lua
@@ -2,7 +2,7 @@
Script Name : SpawnScripts/IsleRefuge1/AmbassadorTKirr.lua
Script Author : Dorbin
Script Date : 2022.08.30 03:08:00
- Script Purpose : Just placing the parced dialog here.
+ Script Purpose :
:
--]]
@@ -141,11 +141,27 @@ function Dialog5(NPC, Spawn)
end
function Dialog6(NPC, Spawn)
- window = CreateOptionWindow();
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ if GetClass(Spawn)==1 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Fighter", "Dialog7")
+ elseif GetClass(Spawn)==11 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Priest", "Dialog7")
+ elseif GetClass(Spawn)==21 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Mage", "Dialog7")
+ elseif GetClass(Spawn)==31 then
+ AddConversationOption(con, ""..GetName(Spawn).." the Scout", "Dialog7")
+ else
+ AddConversationOption(con, ""..GetName(Spawn).."", "Dialog7")
+ end
+ AddConversationOption(con, "On second thought, I need to reconsider.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "-----------------------------------------\n Declaration to The Overlord \n-----------------------------------------\nI \""..GetName(Spawn).."\" pledge myself to \nOverlord Lucan D'Lere\nThe Lord and Ruler over\nThe City of Freeport\n\nMy actions shall be judged as a testament of Freeport's might, determination, and opportunity.\n\nBy the Overlord's will.\n\nSigned,")
+ else window = CreateOptionWindow();
AddOptionWindowOption(window, " Pledge allegiance to Freeport", "Dedicate yourself to the City of Freeport and to its leader, Overlord Lucan D'lere. [This decision is final!]", 2, 16, "Dialog7")
AddOptionWindowOption(window, " Reconsider", "Rescind your request. Return to Ambassador T'Kirr if you decide Freeport is right for you.", 2, 13, "Sigh")
SendOptionWindow(window, Spawn, "Pledge allegiance to Freeport?", "Cancel")
end
+end
function Dialog7(NPC, Spawn)
OfferQuest(NPC,Spawn,5758)
diff --git a/server/SpawnScripts/IsleRefuge1/Anikra.lua b/server/SpawnScripts/IsleRefuge1/Anikra.lua
index f7facb3b1..ccaac846f 100755
--- a/server/SpawnScripts/IsleRefuge1/Anikra.lua
+++ b/server/SpawnScripts/IsleRefuge1/Anikra.lua
@@ -75,13 +75,13 @@ function waypoints(NPC)
MovementLoopAddLocation(NPC, 10.74, -5.06, 180.22, 2, 0)
MovementLoopAddLocation(NPC, 20.08, -6.86, 183.67, 2, 0)
MovementLoopAddLocation(NPC, 23.74, -6.86, 187.07, 2, 15,"InitialPause")
- MovementLoopAddLocation(NPC, 20.06, -6.88, 192.26, 2, 0)
+ MovementLoopAddLocation(NPC, 20.06, -6.88, 192.26, 2, 0,"stop_gathering")
MovementLoopAddLocation(NPC, 20.69, -6.86, 199.29, 2, 15,"InitialPause")
- MovementLoopAddLocation(NPC, 24.24, -6.86, 192.73, 2, 0)
+ MovementLoopAddLocation(NPC, 24.24, -6.86, 192.73, 2, 0,"stop_gathering")
MovementLoopAddLocation(NPC, 28.21, -6.86, 190.32, 2, 15,"InitialPause")
- MovementLoopAddLocation(NPC, 22.37, -6.86, 194.32, 2, 0)
+ MovementLoopAddLocation(NPC, 22.37, -6.86, 194.32, 2, 0,"stop_gathering")
MovementLoopAddLocation(NPC, 11.12, -6.9, 205.21, 2, 15,"InitialPause")
- MovementLoopAddLocation(NPC, 12.8, -6.9, 200.16, 2, 0)
+ MovementLoopAddLocation(NPC, 12.8, -6.9, 200.16, 2, 0,"stop_gathering")
MovementLoopAddLocation(NPC, 5.85, -5.45, 189.64, 2, 0)
MovementLoopAddLocation(NPC, -0.07, -5.22, 183.06, 2, 0)
MovementLoopAddLocation(NPC, -7.59, -5.19, 186.27, 2, 0)
@@ -90,7 +90,7 @@ function waypoints(NPC)
end
function InitialPause(NPC)
- local GatherSpawn = GetSpawn(NPC, 3250033) -- Get Greenlock
+ local GatherSpawn = GetSpawn(NPC, 3250033) -- Get Anikra
math.randomseed(os.time())
local pause = math.random (1, 4)
@@ -105,13 +105,13 @@ end
function Gather(NPC)
local GatherSpawn = GetSpawn(NPC, 3250033) -- Get Anikra
- SpawnSet(NPC, "visual_state", "2809") -- Start gathering
+ SpawnSet(NPC, "visual_state", "gathering_search") -- Start gathering
AddTimer(NPC, 8000, "Collect") -- for 5 seconds, then stop
end
function Collect(NPC)
local GatherSpawn = GetSpawn(NPC, 3250033) -- Get Anikra
- SpawnSet(NPC, "visual_state", "2810") -- Start gathering
+ SpawnSet(NPC, "visual_state", "gathering_success") -- Start gathering
AddTimer(NPC, 2000, "stop_gathering") -- for 5 seconds, then stop
end
diff --git a/server/SpawnScripts/IsleRefuge1/AssistantDreak.lua b/server/SpawnScripts/IsleRefuge1/AssistantDreak.lua
index a6dcd2a37..4e5dd2933 100755
--- a/server/SpawnScripts/IsleRefuge1/AssistantDreak.lua
+++ b/server/SpawnScripts/IsleRefuge1/AssistantDreak.lua
@@ -107,12 +107,15 @@ function QuestUpdate8(NPC, Player)
Dialog.AddOption("All right, I'll be back with your lock.")
Dialog.Start()
SetStepComplete(Player, Cellar,8)
- if GetTradeskillLevel(Player)<2 then
- SetTradeskillLevel(Player,2)
+ if GetTradeskillLevel(Player) <2 then
+ Quest = GetQuest(Player,5749)
+ SummonItem(Player,1030001,1)
+ GiveQuestItem(Quest, Player, "", 20708,1001034,1001034,1001034,7391,7391,7391)
SetTradeskillClass(Player,1)
+ SetTradeskillLevel(Player,2)
SendMessage(Player, "You are now an Artisan!")
SendPopUpMessage(Player, "You are now an Artisan!", 200, 200, 200)
- end
+ end
end
function respawn(NPC)
@@ -146,7 +149,7 @@ end
function Finished(NPC, Player)
FaceTarget(NPC, Player)
- PlayFlavor(NPC,"voiceover/english/assistant_dreak/tutorial_island02/030_wizard_assistant_dreak_quest_completed_e3b1aced.mp3","Thanks for all your help! Make sure to clean up when you're done in the cellar.","thanks",1096069834,205718440, Spawn)
+ PlayFlavor(NPC,"voiceover/english/assistant_dreak/tutorial_island02/030_wizard_assistant_dreak_quest_completed_e3b1aced.mp3","Thanks for all your help! Make sure to clean up when you're done in the cellar.","thanks",1096069834,205718440, Player)
end
--[[
diff --git a/server/SpawnScripts/IsleRefuge1/Bladefin.lua b/server/SpawnScripts/IsleRefuge1/Bladefin.lua
index 1cc7d6a7b..51fc06abe 100755
--- a/server/SpawnScripts/IsleRefuge1/Bladefin.lua
+++ b/server/SpawnScripts/IsleRefuge1/Bladefin.lua
@@ -7,7 +7,15 @@
--]]
function spawn(NPC)
- waypoints(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/BraksanSteelforge.lua b/server/SpawnScripts/IsleRefuge1/BraksanSteelforge.lua
index e237ff68a..6eaad2eb2 100755
--- a/server/SpawnScripts/IsleRefuge1/BraksanSteelforge.lua
+++ b/server/SpawnScripts/IsleRefuge1/BraksanSteelforge.lua
@@ -5,7 +5,7 @@
Script Purpose :
:
--]]
-
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
require "SpawnScripts/Generic/DialogModule"
local Fighter2 = 5731
local Fighter3 = 5735
@@ -19,6 +19,7 @@ function spawn(NPC)
ProvidesQuest(NPC, Fighter4)
ProvidesQuest(NPC, Fighter5)
ProvidesQuest(NPC, Fighter6)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function InRange(NPC,Spawn)
@@ -72,11 +73,18 @@ function hailed(NPC, Spawn)
if HasCompletedQuest(Spawn,Fighter6) then
Dialog.AddOption("Greetings Braksan. I hope your work has slowed down some.","Thanks")
end
- Dialog.AddOption("I will leave you to your work.")
- Dialog.Start()
+ Dialog.AddOption("I will leave you to your work.")
+ if GetClass(Spawn)==1 then
+ Dialog.AddOption("Can you make sure my skills are in order?","Skills")
+ end Dialog.Start()
end
end
+function Skills(NPC,Spawn)
+ SkillCheck(NPC,Spawn)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+end
+
function Thanks(NPC,Spawn)
FaceTarget(NPC, Spawn)
PlayFlavor(NPC,"","Nice to see you're still alive and well!","hello",0,0, Spawn)
@@ -117,8 +125,8 @@ function Interested(NPC,Spawn)
Dialog.Start()
end
-function Quest3Start(NPC,Player)
- OfferQuest(NPC,Player,Fighter3)
+function Quest3Start(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Fighter3)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/CaptainRockbelly.lua b/server/SpawnScripts/IsleRefuge1/CaptainRockbelly.lua
index b71d18610..f96aad4a8 100755
--- a/server/SpawnScripts/IsleRefuge1/CaptainRockbelly.lua
+++ b/server/SpawnScripts/IsleRefuge1/CaptainRockbelly.lua
@@ -7,8 +7,16 @@
--]]
function spawn(NPC)
-AddTimer(NPC,5000,"Callout")
-AddTimer(NPC,6000,"AliveCheck")
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+ AddTimer(NPC,5000,"Callout")
+ AddTimer(NPC,6000,"AliveCheck")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/Direspike.lua b/server/SpawnScripts/IsleRefuge1/Direspike.lua
index d14ac2150..83e6acb26 100755
--- a/server/SpawnScripts/IsleRefuge1/Direspike.lua
+++ b/server/SpawnScripts/IsleRefuge1/Direspike.lua
@@ -5,72 +5,20 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
function spawn(NPC)
-
-ChooseMovement(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 3 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 7 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/DukeFerrin.lua b/server/SpawnScripts/IsleRefuge1/DukeFerrin.lua
index c9f066cc9..cdcfc177a 100755
--- a/server/SpawnScripts/IsleRefuge1/DukeFerrin.lua
+++ b/server/SpawnScripts/IsleRefuge1/DukeFerrin.lua
@@ -163,7 +163,7 @@ function Dialog9(NPC, Spawn)
Dialog.AddDialog("The requirements of the cities are stricter and they now require us to train the refugees before bringing them to the cities. It eats at our profits and doesn't even guarantee the refugee citizenship.")
Dialog.AddVoiceover("voiceover/english/duke_ferrin/tutorial_island02/dukeferrin018.mp3", 2405207983, 1515901840)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
- Dialog.AddOption("Citizenship?", "Dialog1")
+ Dialog.AddOption("Citizenship?", "Dialog10")
Dialog.AddOption("Thanks, I need to go now.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/IsleRefuge1/GarvenTralk.lua b/server/SpawnScripts/IsleRefuge1/GarvenTralk.lua
index e7e2baf5d..cbddc5687 100755
--- a/server/SpawnScripts/IsleRefuge1/GarvenTralk.lua
+++ b/server/SpawnScripts/IsleRefuge1/GarvenTralk.lua
@@ -6,6 +6,7 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
local IsleIntro = 5725
@@ -130,13 +131,17 @@ function YesS(NPC, Spawn)
SetStepComplete(Spawn,IsleIntro,1)
SetAdventureClass(Spawn,31)
SendMessage(Spawn, "Congratulations! You have chosen the path of the Scout.","yellow")
+-- HarvestSkills(NPC,Spawn)
+-- ScoutSkills(NPC,Spawn)
+ AddTimer(NPC,1000,"SkillCheck",1,Spawn)
+
OfferQuest(NPC,Spawn,ScoutGI)
if GetLevel(Spawn)<3 then
SetPlayerLevel(Spawn,3)
end
end
-
+--PRIEST
function Priest(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
@@ -163,9 +168,12 @@ function YesP(NPC, Spawn)
FaceTarget(NPC, Spawn)
SetAdventureClass(Spawn,11)
SetStepComplete(Spawn,IsleIntro,1)
+-- HarvestSkills(NPC,Spawn)
+-- PriestSkills(NPC,Spawn)
+ AddTimer(NPC,1000,"SkillCheck",1,Spawn)
+
SendMessage(Player, "Congratulations! You have chosen the path of the Priest.","yellow")
OfferQuest(NPC,Spawn,PriestGI)
- SetStepComplete()
if GetLevel(Spawn)<3 then
SetPlayerLevel(Spawn,3)
end
@@ -184,6 +192,8 @@ function PContinue2(NPC, Spawn)
Dialog.Start()
end
+
+--MAGE
function Mage(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
@@ -200,13 +210,17 @@ function YesM(NPC, Spawn)
SetStepComplete(Spawn,IsleIntro,1)
SendMessage(Spawn, "Congratulations! You have chosen the path of the Mage.","yellow")
SetAdventureClass(Spawn,21)
+-- HarvestSkills(NPC,Spawn)
+-- MageSkills(NPC,Spawn)
+ AddTimer(NPC,1000,"SkillCheck",1,Spawn)
+
OfferQuest(NPC,Spawn,MageGI)
if GetLevel(Spawn)<3 then
SetPlayerLevel(Spawn,3)
end
end
-
+--FIGHTER
function Fighter(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
@@ -223,6 +237,11 @@ function YesF(NPC, Spawn)
SetStepComplete(Spawn,IsleIntro,1)
SetAdventureClass(Spawn,1)
SendMessage(Spawn, "Congratulations! You have chosen the path of the Fighter.","yellow")
+ AddTimer(NPC,1000,"SkillCheck",1,Spawn)
+
+-- HarvestSkills(NPC,Spawn)
+-- FighterSkills(NPC,Spawn)
+
OfferQuest(NPC,Spawn,FighterGI)
if GetLevel(Spawn)<3 then
SetPlayerLevel(Spawn,3)
@@ -244,7 +263,6 @@ function No(NPC, Spawn)
end
function Dialog2(NPC,Spawn)
--- if HasCompletedQuest(Spawn, IsleIntro) then
if GetClass(Spawn) == 1 then
OfferQuest(NPC, Spawn,FighterGI)
elseif GetClass(Spawn) == 31 then
@@ -341,3 +359,258 @@ function thanksS(NPC,Spawn)
OfferQuest(NPC, Spawn,Scout2)
end
end
+
+-----------------------------------------------------------
+function FighterSkills(NPC,Spawn)
+ local level = GetLevel(Spawn)*5
+
+if not HasSkill(Spawn, 1408356869) then -- Martial
+ AddSkill(Spawn, 1408356869,1,level)
+end
+ if not HasSkill(Spawn, 2897193374) then -- Light Armor
+ AddSkill(Spawn, 2897193374,1,level)
+end
+if not HasSkill(Spawn, 3421494576) then -- Crushing
+ AddSkill(Spawn, 3421494576,1,level)
+end
+if not HasSkill(Spawn, 418532101) then -- Slashing
+ AddSkill(Spawn, 418532101,1,level)
+end
+if HasSkill(Spawn, 540022425) then -- Parry
+ RemoveSkill(Spawn, 540022425)
+end
+if not HasSkill(Spawn, 1852383242) then -- Dual Wield
+ AddSkill(Spawn, 1852383242,1,level)
+end
+if not HasSkill(Spawn, 2638198038) then -- Focus
+ AddSkill(Spawn, 2638198038,1,level)
+end
+if HasSkill(Spawn, 540022425) then -- Parry
+ RemoveSkill(Spawn, 540022425)
+end
+--WEAPON SKILLS
+if not HasSkill(Spawn, 4037812502) then -- Buckler
+ AddSkill(Spawn, 4037812502,1,level)
+end
+if not HasSkill(Spawn, 3173504370) then -- Roundshield
+ AddSkill(Spawn, 3173504370,1,level)
+end
+if not HasSkill(Spawn, 2476073427) then -- Axe
+ AddSkill(Spawn, 2476073427,1,level)
+end
+if not HasSkill(Spawn, 2954459351) then -- Great Axe
+ AddSkill(Spawn, 2954459351,1,level)
+end
+if not HasSkill(Spawn, 1696217328) then -- Sword
+ AddSkill(Spawn, 1696217328,1,level)
+end
+if not HasSkill(Spawn, 2292577688) then -- Great Sword
+ AddSkill(Spawn, 2292577688,1,level)
+end
+if not HasSkill(Spawn, 770311065) then -- Mace
+ AddSkill(Spawn, 770311065,1,level)
+end
+if not HasSkill(Spawn, 554333641) then -- Hammer
+ AddSkill(Spawn, 554333641,1,level)
+end
+if not HasSkill(Spawn, 1653482350) then -- Great Hammer
+ AddSkill(Spawn, 1653482350,1,level)
+end
+if not HasSkill(Spawn, 3180399725) then -- Staff(2h)
+ AddSkill(Spawn, 3180399725,1,level)
+end
+end
+
+
+------------------------------------------------------------
+function PriestSkills(NPC,Spawn)
+ local level = GetLevel(Spawn)*5
+
+if not HasSkill(Spawn, 2463145248) then -- Inspirations
+ AddSkill(Spawn, 2463145248,1,level)
+end
+ if not HasSkill(Spawn, 2897193374) then -- Light Armor
+ AddSkill(Spawn, 2897193374,1,level)
+end
+if not HasSkill(Spawn, 3421494576) then -- Crushing
+ AddSkill(Spawn, 3421494576,1,level)
+end
+if HasSkill(Spawn, 540022425) then -- Parry
+ RemoveSkill(Spawn, 540022425)
+end
+
+--CASTING SKILLS
+if not HasSkill(Spawn, 613995491) then -- Disruption
+ AddSkill(Spawn, 613995491,1,level)
+end
+if not HasSkill(Spawn, 366253016) then -- Ministration
+ AddSkill(Spawn, 366253016,1,level)
+end
+if not HasSkill(Spawn, 3587918036) then -- Ordination
+ AddSkill(Spawn, 3587918036,1,level)
+end
+if not HasSkill(Spawn, 882983852) then -- Subjugation
+ AddSkill(Spawn, 882983852,1,level)
+end
+if not HasSkill(Spawn, 2638198038) then -- Focus
+ AddSkill(Spawn, 2638198038,1,level)
+end
+
+--WEAPON SKILLS
+if not HasSkill(Spawn, 4037812502) then -- Buckler
+ AddSkill(Spawn, 4037812502,1,level)
+end
+if not HasSkill(Spawn, 545043066) then -- Symbol
+ AddSkill(Spawn, 545043066,1,level)
+end
+if not HasSkill(Spawn, 770311065) then -- Mace
+ AddSkill(Spawn, 770311065,1,level)
+end
+if not HasSkill(Spawn, 554333641) then -- Hammer
+ AddSkill(Spawn, 554333641,1,level)
+end
+if not HasSkill(Spawn, 1653482350) then -- Great Hammer
+ AddSkill(Spawn, 1653482350,1,level)
+end
+if not HasSkill(Spawn, 3180399725) then -- Staff(2h)
+ AddSkill(Spawn, 3180399725,1,level)
+end
+end
+
+
+
+--------------------------------------------------------------
+function MageSkills(NPC,Spawn)
+ local level = GetLevel(Spawn)*5
+
+if not HasSkill(Spawn, 3820670534) then -- Evocations
+ AddSkill(Spawn, 3820670534,1,level)
+end
+if not HasSkill(Spawn, 3048574950) then -- Piercing
+ AddSkill(Spawn, 3048574950,31,level)
+end
+if not HasSkill(Spawn, 3421494576) then -- Crushing
+ AddSkill(Spawn, 3421494576,31,level)
+end
+if HasSkill(Spawn, 540022425) then -- Parry
+ RemoveSkill(Spawn, 540022425)
+end
+--CASTING SKILLS
+if not HasSkill(Spawn, 613995491) then -- Disruption
+ AddSkill(Spawn, 613995491,1,level)
+end
+if not HasSkill(Spawn, 366253016,1,level) then -- Ministration
+ AddSkill(Spawn, 366253016,1,level)
+end
+if not HasSkill(Spawn, 3587918036) then -- Ordination
+ AddSkill(Spawn, 3587918036,1,level)
+end
+if not HasSkill(Spawn, 882983852) then -- Subjugation
+ AddSkill(Spawn, 882983852,1,level)
+end
+if not HasSkill(Spawn, 2638198038) then -- Focus
+ AddSkill(Spawn, 2638198038,1,level)
+end
+
+--WEAPON SKILLS
+if not HasSkill(Spawn, 545043066) then -- Symbol
+ AddSkill(Spawn, 545043066,1,level)
+end
+if not HasSkill(Spawn, 887279616) then -- Dagger
+ AddSkill(Spawn, 887279616,1,level)
+end
+if not HasSkill(Spawn, 3180399725) then -- Staff(2h)
+ AddSkill(Spawn, 3180399725,1,level)
+end
+end
+
+---------------------------------------------------------------
+function ScoutSkills(NPC,Spawn)
+ local level = GetLevel(Spawn)*5
+
+if not HasSkill(Spawn, 1921433074) then -- Reconnaissance
+ AddSkill(Spawn, 1921433074,1,level)
+end
+if not HasSkill(Spawn, 1468243427) then -- Tracking
+ AddSkill(Spawn, 1468243427,1,level)
+end
+if not HasSkill(Spawn, 2200201799) then -- Disarm Trap
+ AddSkill(Spawn, 2200201799,1,level)
+end
+ if not HasSkill(Spawn, 2897193374) then -- Light Armor
+ AddSkill(Spawn, 2897193374,1,level)
+end
+ if not HasSkill(Spawn, 1756482397) then -- Ranged
+ AddSkill(Spawn, 1756482397,1,level)
+end
+if not HasSkill(Spawn, 3048574950) then -- Piercing
+ AddSkill(Spawn, 3048574950,1,level)
+end
+if not HasSkill(Spawn, 418532101,1,level) then -- Slashing
+ AddSkill(Spawn, 418532101,1,level)
+end
+if not HasSkill(Spawn, 1852383242) then -- Dual Wield
+ AddSkill(Spawn, 1852383242,1,level)
+end
+if not HasSkill(Spawn, 2650425026) then -- Thrown Weapon
+ AddSkill(Spawn, 2650425026,1,level)
+end
+if not HasSkill(Spawn, 2638198038) then -- Focus
+ AddSkill(Spawn, 2638198038,1,level)
+end
+if HasSkill(Spawn, 540022425) then -- Parry
+ RemoveSkill(Spawn, 540022425)
+end
+
+--WEAPON SKILLS
+if not HasSkill(Spawn, 4037812502) then -- Buckler
+ AddSkill(Spawn, 4037812502,1,level)
+end
+if not HasSkill(Spawn, 3173504370) then -- Roundshield
+ AddSkill(Spawn, 3173504370,1,level)
+end
+if not HasSkill(Spawn, 1616998748) then -- Spear
+ AddSkill(Spawn, 1616998748,1,level)
+end
+if not HasSkill(Spawn, 887279616) then -- Dagger
+ AddSkill(Spawn, 887279616,1,level)
+end
+if not HasSkill(Spawn, 1743366740) then -- Bow
+ AddSkill(Spawn, 1743366740,1,level)
+end
+if not HasSkill(Spawn, 2476073427) then -- Axe
+ AddSkill(Spawn, 2476073427,1,level)
+end
+if not HasSkill(Spawn, 770311065) then -- Mace
+ AddSkill(Spawn, 770311065,1,level)
+end
+if not HasSkill(Spawn, 641561514) then -- Rapier
+ AddSkill(Spawn, 641561514,1,level)
+end
+if not HasSkill(Spawn, 1696217328) then -- Sword
+ AddSkill(Spawn, 1696217328,1,level)
+end
+end
+
+--HARVESTING SKILLS
+function HarvestSkills(NPC,Spawn)
+ local level = GetLevel(Spawn)*5
+if HasSkill(Spawn, 1970131346) then -- Transmuting
+ RemoveSkill(Spawn, 1970131346)
+end
+if not HasSkill(Spawn, 3659699625) then -- Mining
+ AddSkill(Spawn, 3659699625,1,level)
+end
+if not HasSkill(Spawn, 688591146) then -- Foresting
+ AddSkill(Spawn, 688591146,1,level)
+end
+if not HasSkill(Spawn, 1048513601) then -- Gathering
+ AddSkill(Spawn, 1048513601,1,level)
+end
+if not HasSkill(Spawn, 4158365743) then -- Trapping
+ AddSkill(Spawn, 4158365743,1,level)
+end
+if not HasSkill(Spawn, 2319450178) then -- Fishing
+ AddSkill(Spawn, 2319450178,1,level)
+end
+end
diff --git a/server/SpawnScripts/IsleRefuge1/Garveninvisiblecube.lua b/server/SpawnScripts/IsleRefuge1/Garveninvisiblecube.lua
index 0a3572b9b..9f007ec8e 100755
--- a/server/SpawnScripts/IsleRefuge1/Garveninvisiblecube.lua
+++ b/server/SpawnScripts/IsleRefuge1/Garveninvisiblecube.lua
@@ -5,18 +5,21 @@
Script Purpose :
:
--]]
-local QuestOfferCheck = false -- Avoids spamming quest offer when when/out of range
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+SetTempVariable(NPC,"QuestOfferCheck","false")-- Avoids spamming quest offer when when/out of range
end
function InRange(NPC,Spawn)
-if QuestOfferCheck==false then
+if GetTempVariable(NPC,"QuestOfferCheck")=="false" then
if GetClass(Spawn)==0 and not HasQuest(Spawn,5725) and not HasCompletedQuest(Spawn, 5725) then
+ if not HasItem(Spawn,20902) and GetLevel(Spawn) <2 then -- GIVES SMALL BAG
+ SummonItem(Spawn,20902,1,1)
+ end
OfferQuest(NPC,Spawn,5725)
- QuestOfferCheck = true
- AddTimer(NPC,7000,"TimerReset")
+ SetTempVariable(NPC,"QuestOfferCheck","true")
+ AddTimer(NPC,10000,"TimerReset")
end
end
end
@@ -26,5 +29,5 @@ function respawn(NPC)
end
function TimerReset(NPC)
- QuestOfferCheck = false
- end
\ No newline at end of file
+SetTempVariable(NPC,"QuestOfferCheck","false")
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/GoliathBeetle.lua b/server/SpawnScripts/IsleRefuge1/GoliathBeetle.lua
index b46ce748e..9f0500691 100755
--- a/server/SpawnScripts/IsleRefuge1/GoliathBeetle.lua
+++ b/server/SpawnScripts/IsleRefuge1/GoliathBeetle.lua
@@ -5,90 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/Greybeard.lua b/server/SpawnScripts/IsleRefuge1/Greybeard.lua
index 071ed290e..ac8a6a379 100755
--- a/server/SpawnScripts/IsleRefuge1/Greybeard.lua
+++ b/server/SpawnScripts/IsleRefuge1/Greybeard.lua
@@ -9,6 +9,14 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
function spawn(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
SetSpawnAnimation(NPC, 13016)
end
diff --git a/server/SpawnScripts/IsleRefuge1/GuardBranos.lua b/server/SpawnScripts/IsleRefuge1/GuardBranos.lua
index 5e409f598..983e033c7 100755
--- a/server/SpawnScripts/IsleRefuge1/GuardBranos.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuardBranos.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/GuardCarnis.lua b/server/SpawnScripts/IsleRefuge1/GuardCarnis.lua
index df8317c8a..00a61e907 100755
--- a/server/SpawnScripts/IsleRefuge1/GuardCarnis.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuardCarnis.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/GuardMizmozzle.lua b/server/SpawnScripts/IsleRefuge1/GuardMizmozzle.lua
index 9b336f027..a83b1afee 100755
--- a/server/SpawnScripts/IsleRefuge1/GuardMizmozzle.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuardMizmozzle.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
end
diff --git a/server/SpawnScripts/IsleRefuge1/GuardTanglor.lua b/server/SpawnScripts/IsleRefuge1/GuardTanglor.lua
index e1ba09da5..0f01a1898 100755
--- a/server/SpawnScripts/IsleRefuge1/GuardTanglor.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuardTanglor.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/GuardTugar.lua b/server/SpawnScripts/IsleRefuge1/GuardTugar.lua
index caeaeb493..a3faebaa9 100755
--- a/server/SpawnScripts/IsleRefuge1/GuardTugar.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuardTugar.lua
@@ -5,14 +5,20 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
FaceTarget(NPC, Spawn)
+ if choice == 1 then
PlayFlavor(NPC, "voiceover/english/island_of_refuge/guard_tugar/ior_guardtugar_004.mp3", "Keep walking... While you still can!", "nod", 146673171, 1820291654, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/island_of_refuge/guard_tugar/ior_guardtugar_002.mp3", "Bash some skulls for me!", "shakefist", 3677270980, 1767623082, Spawn, 0)
+end
end
diff --git a/server/SpawnScripts/IsleRefuge1/GuardVraen.lua b/server/SpawnScripts/IsleRefuge1/GuardVraen.lua
index b9b5861a5..bd712e94c 100755
--- a/server/SpawnScripts/IsleRefuge1/GuardVraen.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuardVraen.lua
@@ -6,8 +6,10 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
diff --git a/server/SpawnScripts/IsleRefuge1/GuttertoothWarTotem.lua b/server/SpawnScripts/IsleRefuge1/GuttertoothWarTotem.lua
index 97270c79c..29bf6e2f7 100755
--- a/server/SpawnScripts/IsleRefuge1/GuttertoothWarTotem.lua
+++ b/server/SpawnScripts/IsleRefuge1/GuttertoothWarTotem.lua
@@ -80,54 +80,54 @@ function GoblinRevenge(NPC,Spawn)
if IsAlive(Goblin1)==true and IsInCombat(Goblin1)==false then
Attack(Goblin1,Spawn)
AddHate(Spawn, Goblin1, 50)
- else GoblinPop = SpawnByLocationID(zone,133775496)
- Attack(GoblinPop,Spawn)
- AddHate(Spawn, GoblinPop, 50)
+ else GoblinPopping = SpawnByLocationID(zone,133775496)
+ Attack(GoblinPopping,Spawn)
+ AddHate(Spawn, GoblinPopping, 50)
end
elseif GetSpawnLocationID(NPC) == 133774886 then
- if Goblin2 ~=nil then
+ if IsAlive(Goblin2)==true and IsInCombat(Goblin2)==false then
Attack(Goblin2,Spawn)
AddHate(Spawn, Goblin2, 50)
else GoblinPopping = SpawnByLocationID(zone,133775496)
- Attack(GoblinPop,Spawn)
- AddHate(Spawn, GoblinPop, 50)
+ Attack(GoblinPopping,Spawn)
+ AddHate(Spawn, GoblinPopping, 50)
end
elseif GetSpawnLocationID(NPC) == 133774887 then
- if Goblin3 ~=nil then
+ if IsAlive(Goblin3)==true and IsInCombat(Goblin3)==false then
Attack(Goblin3,Spawn)
AddHate(Spawn, Goblin3, 50)
else GoblinPopping = SpawnByLocationID(zone,133775496)
- Attack(GoblinPop,Spawn)
- AddHate(Spawn, GoblinPop, 50)
+ Attack(GoblinPopping,Spawn)
+ AddHate(Spawn, GoblinPopping, 50)
end
elseif GetSpawnLocationID(NPC) == 133774888 then
- if Goblin4 ~=nil then
+ if IsAlive(Goblin4)==true and IsInCombat(Goblin4)==false then
Attack(Goblin4,Spawn)
AddHate(Spawn, Goblin4, 50)
else GoblinPopping = SpawnByLocationID(zone,133775496)
- Attack(GoblinPop,Spawn)
- AddHate(Spawn, GoblinPop, 50)
+ Attack(GoblinPopping,Spawn)
+ AddHate(Spawn, GoblinPopping, 50)
end
elseif GetSpawnLocationID(NPC) == 133774889 then
- if Goblin5 ~=nil then
+ if IsAlive(Goblin5)==true and IsInCombat(Goblin5)==false then
Attack(Goblin5,Spawn)
AddHate(Spawn, Goblin5, 50)
else GoblinPopping = SpawnByLocationID(zone,133775496)
- Attack(GoblinPop,Spawn)
- AddHate(Spawn, GoblinPop, 50)
+ Attack(GoblinPopping,Spawn)
+ AddHate(Spawn, GoblinPopping, 50)
end
elseif GetSpawnLocationID(NPC) == 133774880 then
- if Goblin6 ~=nil then
+ if IsAlive(Goblin6)==true and IsInCombat(Goblin6)==false then
Attack(Goblin6,Spawn)
AddHate(Spawn, Goblin6, 50)
else GoblinPopping = SpawnByLocationID(zone,133775496)
- Attack(GoblinPop,Spawn)
- AddHate(Spawn, GoblinPop, 50)
+ Attack(GoblinPopping,Spawn)
+ AddHate(Spawn, GoblinPopping, 50)
end
end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/HighChieftanKryx.lua b/server/SpawnScripts/IsleRefuge1/HighChieftanKryx.lua
index b0c90b935..a8924a8b1 100755
--- a/server/SpawnScripts/IsleRefuge1/HighChieftanKryx.lua
+++ b/server/SpawnScripts/IsleRefuge1/HighChieftanKryx.lua
@@ -8,7 +8,14 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin3.lua")
function spawn(NPC)
-
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/LeavetheIsleofRefuge.lua b/server/SpawnScripts/IsleRefuge1/LeavetheIsleofRefuge.lua
index 6dfdf96da..d98ee980f 100755
--- a/server/SpawnScripts/IsleRefuge1/LeavetheIsleofRefuge.lua
+++ b/server/SpawnScripts/IsleRefuge1/LeavetheIsleofRefuge.lua
@@ -50,18 +50,33 @@ function casted_on(NPC, Spawn, Message)
elseif GetQuestStep(Spawn,5758)==2 or HasCompletedQuest(Spawn, 5758) then --FREEPORT LEAVING
PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_002.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Leave for Freeport", "LeaveIslandFP")
+ AddConversationOption(con, "Stay","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Are you sure you wish to leave the Isle of Refuge?\n\nLeave the Island - It is unlikely you will return, but you will continue to pursue greatness in Freeport.\n\n[All active Isle of Refuge quests will be removed!]")
+ else
window = CreateOptionWindow();
AddOptionWindowOption(window, " Leave for Freeport", "Leave the Island - It is unlikely you will return, but you will continue to pursue greatness in Freeport. [All active Isle of Refuge quests will be removed!]", 0, 2297, "LeaveIslandFP")
AddOptionWindowOption(window, " Stay", "Stay on the Island - Continue your adventures here and return to this bell when you are ready to leave.", 0, 2296, "Cancel")
SendOptionWindow(window, Spawn, "Are you sure you wish to leave the Isle of Refuge?", "Cancel")
+ end
+
elseif GetQuestStep(Spawn,5717)==2 or HasCompletedQuest(Spawn, 5717) then --QEYNOS LEAVING
PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_002.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
- window = CreateOptionWindow();
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Leave for Qeynos", "LeaveIslandQ")
+ AddConversationOption(con, "Stay","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Are you sure you wish to leave the Isle of Refuge?\n\nLeave the Island - It is unlikely you will return, but you will continue to pursue greatness in Qeynos.\n\n[All active Isle of Refuge quests will be removed!]")
+ else
+ window = CreateOptionWindow();
AddOptionWindowOption(window, " Leave for Qeynos", "Leave the Island - It is unlikely you will return, but you will continue to pursue greatness in Qeynos. [All active Isle of Refuge quests will be removed!]", 0, 2297, "LeaveIslandQ")
AddOptionWindowOption(window, " Stay", "Stay on the Island - Continue your adventures here and return to this bell when you are ready to leave.", 0, 2296, "Cancel")
SendOptionWindow(window, Spawn, "Are you sure you wish to leave the Isle of Refuge?", "Cancel")
-
+ end
else -- STILL NEED ALIGNMENT QUEST
PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
SendPopUpMessage(Spawn,"Speak with an Ambassador if you are ready to leave the island.",200,200,200)
@@ -88,7 +103,7 @@ function LeaveIslandQ(NPC, Spawn)
-- Kerra
- if Race == 11 then
+ if Race == 11 or Race == 19 then
-- AddSpellBookEntry(Spawn, 8057, 1)
ZoneRef = GetZone("Nettleville")
Zone(ZoneRef,Spawn)
@@ -100,12 +115,20 @@ function LeaveIslandQ(NPC, Spawn)
Zone(ZoneRef,Spawn)
elseif Race == 9 then --Human
- window = CreateOptionWindow();
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Nettleville Hovel", "HumanQNettleville")
+ AddConversationOption(con, "Starcrest Commune", "HumanQStarcrest")
+ AddConversationOption(con, "Tell me about these places", "Human2")
+ AddConversationOption(con, "Stay","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Humans must select their next desitnation in Qeynos.")
+ else
+ window = CreateOptionWindow();
AddOptionWindowOption(window, " Nettleville Hovel", "Depart for Nettleville - Home to the reserved Kerra and diverse Humans of Qeynos. It’s a busy district area with plenty of opportunties for adventure seekers and back-alley trade.", 2, 26, "HumanQNettleville")
AddOptionWindowOption(window, " Starcrest Commune", "Depart for Starcrest - Starcrest is a grand political experiment implemented by the intellectual Erudites to serve as their home in Qeynos. Residents often frown on noise and distraction that might hinder their research, so be mindful of your activities. ", 2, 27, "HumanQStarcrest")
AddOptionWindowOption(window, " Stay", "Stay on the Island. Continue your adventures here and return to this bell when you are ready to leave.", 0, 2296, "Cancel")
SendOptionWindow(window, Spawn, "Humans Must Select Their Next Desitnation", "Cancel")
-
+ end
-- Barbarian / Dwarf
elseif Race == 0 or Race == 2 then
@@ -120,7 +143,7 @@ function LeaveIslandQ(NPC, Spawn)
Zone(ZoneRef,Spawn)
-- Half Elf / Wood Elf
- elseif Race == 6 or Race == 15 then
+ elseif Race == 6 or Race == 15 or Race == 16 then
-- AddSpellBookEntry(Spawn, 8057, 1)
ZoneRef = GetZone("Willowwood")
Zone(ZoneRef,Spawn)
@@ -135,7 +158,13 @@ function LeaveIslandQ(NPC, Spawn)
end
end
-
+function Human2(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Nettleville Hovel", "HumanQNettleville")
+ AddConversationOption(con, "Starcrest Commune", "HumanQStarcrest")
+ AddConversationOption(con, "Stay","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Nettlevilel Hovel:\n\nHome to the reserved Kerra and diverse Humans of Qeynos. It’s a busy district area with plenty of opportunties for adventure seekers and back-alley trade.\n\nStarcrest Commune:\n\nStarcrest is a grand political experiment implemented by the intellectual Erudites to serve as their home in Qeynos. Residents often frown on noise and distraction that might hinder their research, so be mindful of your activities.")
+end
function LeaveIslandFP(NPC, Spawn)
PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_005.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
@@ -168,20 +197,20 @@ function LeaveIslandFP(NPC, Spawn)
Zone(ZoneRef,Spawn)
-- Dark Elf
- elseif Race == 1 then
+ elseif Race == 1 or Race == 19 or Race == 17 then
-- AddSpellBookEntry(Spawn, 8057, 1)
ZoneRef = GetZone("Longshadow")
Zone(ZoneRef,Spawn)
- -- Barbarian / Iksar
- elseif Race == 0 or Race == 10 then
+ -- Barbarian / Iksar / Sarnak
+ elseif Race == 0 or Race == 10 or Race == 18 then
-- AddSpellBookEntry(Spawn, 8057, 1)
ZoneRef = GetZone("ScaleYard")
Zone(ZoneRef,Spawn)
else
-- AddSpellBookEntry(Spawn, 8057, 1)
- ZoneRef = GetZone("EastFreeport")
+ ZoneRef = GetZone("BeggarsCourt")
Zone(ZoneRef,Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/MenderMannus.lua b/server/SpawnScripts/IsleRefuge1/MenderMannus.lua
index 525a68b74..ae057567e 100755
--- a/server/SpawnScripts/IsleRefuge1/MenderMannus.lua
+++ b/server/SpawnScripts/IsleRefuge1/MenderMannus.lua
@@ -9,7 +9,7 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/MizanVaeolin.lua b/server/SpawnScripts/IsleRefuge1/MizanVaeolin.lua
index fc6461ce2..2468a584f 100755
--- a/server/SpawnScripts/IsleRefuge1/MizanVaeolin.lua
+++ b/server/SpawnScripts/IsleRefuge1/MizanVaeolin.lua
@@ -5,7 +5,7 @@
Script Purpose :
:
--]]
-
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
require "SpawnScripts/Generic/DialogModule"
local Mage2 = 5733
local Mage3 = 5736
@@ -125,11 +125,18 @@ else
Dialog.AddOption("I suppose it is time I do my own research off the island. Good day Mizan.","Thanks")
end
Dialog.AddOption("I will leave you to your research.")
+ if GetClass(Spawn)==21 then
+ Dialog.AddOption("Can you make sure my skills are in order?","Skills")
+ end
Dialog.Start()
-
end
end
+function Skills(NPC,Spawn)
+ SkillCheck(NPC,Spawn)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+end
+
function Thanks(NPC,Spawn)
FaceTarget(NPC, Spawn)
PlayFlavor(NPC,"","","bow",0,0, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/NathiniaSparklebright.lua b/server/SpawnScripts/IsleRefuge1/NathiniaSparklebright.lua
index 5d19e15cf..85f597126 100755
--- a/server/SpawnScripts/IsleRefuge1/NathiniaSparklebright.lua
+++ b/server/SpawnScripts/IsleRefuge1/NathiniaSparklebright.lua
@@ -5,7 +5,7 @@
Script Purpose : Nathinia Sparklebright on Isle of Refuge
:
--]]
-
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
require "SpawnScripts/Generic/DialogModule"
local Priest2 = 5732
local Priest3 = 5734
@@ -94,11 +94,19 @@ else
Dialog.AddOption("Blessings to you, Nathinia. Thank you again for your lessons.", "Thanks")
end
Dialog.AddOption("Thank you for that bit of wisdom.")
+ if GetClass(Spawn)==11 then
+ Dialog.AddOption("Can you make sure my skills are in order?","Skills")
+ end
Dialog.Start()
end
end
+function Skills(NPC,Spawn)
+ SkillCheck(NPC,Spawn)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+end
+
function Thanks(NPC,Spawn)
FaceTarget(NPC, Spawn)
PlayFlavor(NPC,"voiceover/english/nathinia_sparklebright/tutorial_island02_fvo_priestq2.mp3","I hope all is going well for you.","curtsey",3742259648,1726362202, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/Quagmaul.lua b/server/SpawnScripts/IsleRefuge1/Quagmaul.lua
new file mode 100755
index 000000000..ce879581e
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/Quagmaul.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/Quagmaul.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.09 09:03:14
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 4 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 10 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/QuartermasterBrennar.lua b/server/SpawnScripts/IsleRefuge1/QuartermasterBrennar.lua
index 197c85a8a..7bed7027a 100755
--- a/server/SpawnScripts/IsleRefuge1/QuartermasterBrennar.lua
+++ b/server/SpawnScripts/IsleRefuge1/QuartermasterBrennar.lua
@@ -11,7 +11,7 @@ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function InRange(NPC,Spawn)
-RandomGreeting(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
FaceTarget(NPC, Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/ShadySwashbucklerXVII.lua b/server/SpawnScripts/IsleRefuge1/ShadySwashbucklerXVII.lua
new file mode 100755
index 000000000..966e7ee82
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/ShadySwashbucklerXVII.lua
@@ -0,0 +1,348 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/ShadySwashbucklerXVII.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.14 04:12:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local BARBARIAN = 0
+local DARK_ELF = 1
+local DWARF = 2
+local ERUDITE = 3
+local FROGLOK = 4
+local GNOME = 5
+local HALF_ELF = 6
+local HALFLING = 7
+local HIGH_ELF = 8
+local HUMAN = 9
+local IKSAR = 10
+local KERRA = 11
+local OGRE = 12
+local RATONGA = 13
+local TROLL = 14
+local WOOD_ELF = 15
+local FAE = 16
+local ARASAI = 17
+local SARNAK = 18
+local VAMPIRE = 19
+local AERAKYN = 20
+
+local AntonicaQuest = 5858
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My apologies, friend. I did not see you there ... What is it you need?")
+ Dialog.AddVoiceover("voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_callout1_c6eaefe5.mp3", 3948051330, 1166584264)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ if GetQuestStep(Spawn,5717)==2 or HasCompletedQuest(Spawn, 5717) then
+ Dialog.AddOption("Get me out of here!\n[EMU Test Buff]","Item_Buff1")
+ elseif GetQuestStep(Spawn,5758)==2 or HasCompletedQuest(Spawn, 5758) then
+ Dialog.AddOption("I've seen enough here.\n[EMU Test Buff]","Item_Buff1")
+ else
+ Dialog.AddOption("I've seen enough here. [EMU Test Buff]","Fail")
+ end
+ Dialog.AddOption("Can you sneak me off the island? \n[EMU Fast-Track]","FastTrack")
+ Dialog.AddOption("Good day to you!")
+ Dialog.Start()
+end
+
+function Fail(NPC,Spawn)
+ local con = CreateConversation()
+ PlayFlavor(NPC, "voiceover/english/scribe_duvo/qey_elddar/100_scribe_halfling_duvo_multhail1_a72f47c8.mp3", "I'm sorry. I cannot help you.", "no", 1448300901, 17119076, Spawn)
+ AddConversationOption(con, "Close window using X above","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Before you can EMU Test buff you must: \n\n 1) Pick an Archetype class from Garven Tralk at the beach. \n\n 2) Speak with an ambassador and select a city.\n\n 3) Secure a boat off the island with Duke Ferrin.")
+end
+
+function FastTrack(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+-- Dialog.AddVoiceover("voiceover/english/broker_algernon/qey_harbor/034_con_merchant_algernon_human_1_hail_55be2bc8.mp3", 99913618, 1474936299)
+ Dialog.AddOption("Take me to Antonica.","ToAntonica")
+ Dialog.AddOption("Nevermind.")
+ Dialog.Start()
+end
+
+function ToAntonica(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Find me once you arrive. Alright, see this barrel here? Climb in.")
+ Dialog.AddOption("Umm...")
+ Dialog.Start()
+ OfferQuest(NPC,Spawn,AntonicaQuest)
+end
+
+function CloseConvo(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Item_Buff1(NPC,Spawn)
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ AddConversationOption(con, "EMU Buff and Leave Island", "Item_Buff2")
+ AddConversationOption(con, "Stay","Cancel")
+ StartDialogConversation(con, 1, NPC, Spawn, "Are you sure you wish to leave the Isle of Refuge?\n\nBuff Includes:\n\n- Adventure Level to 6\n- Solo Quested Gean\n- 6 silver\n- Port to Racial Hood\n\n[ Complete Citizenship once in the city ]")
+ else
+ window = CreateOptionWindow();
+ AddOptionWindowOption(window, " EMU Buff and Leave Island", "Buff Includes:\n\nLevel to 6 // Solo Quested Gear // 6 silver // Port to Racial Hood\n\n[ Complete Citizenship once in the city ]", 0, 2297, "Item_Buff2")
+ AddOptionWindowOption(window, "Refuse Buff", "Stay on the island and continue playing here.", 0, 2296, "Cancel")
+ SendOptionWindow(window, Spawn, "Are you sure you wish to leave the Isle of Refuge?", "Cancel")
+end
+end
+
+
+function Item_Buff2(NPC,Spawn)
+ AddTimer(NPC,1500,"Trip",1,Spawn)
+local Class = GetClass(Spawn)
+
+if GetLevel(Spawn) <=5 then
+ SetPlayerLevel(Spawn,6)
+end
+
+AddCoin(Spawn,600)
+
+if not HasItem(Spawn,20728)then --Goblin Satchle
+ SummonItem(Spawn,20728,1)
+end
+if not HasItem(Spawn,1130007)then --Scrimshaw Necklace
+ SummonItem(Spawn,1130007,1)
+end
+if not HasItem(Spawn,140253)then --Constructed Wrist Spanner
+ SummonItem(Spawn,140253,1)
+end
+if not HasItem(Spawn,137914)then --Castaway Sash
+ SummonItem(Spawn,137914,1)
+end
+if not HasItem(Spawn,136170)then --Bone Bracelet
+ SummonItem(Spawn,136170,1)
+end
+
+if Class == 1 then -- FIGHTER
+
+if not HasItem(Spawn,152754)then --Boots
+ SummonItem(Spawn,152754,1)
+end
+if not HasItem(Spawn,152756)then --Legs
+ SummonItem(Spawn,152756,1)
+end
+if not HasItem(Spawn,152757)then --Chest
+ SummonItem(Spawn,152757,1)
+end
+if not HasItem(Spawn,152755)then --Gloves
+ SummonItem(Spawn,152755,1)
+end
+
+
+elseif Class == 11 then -- PRIEST
+if not HasItem(Spawn,130119)then --Boots
+ SummonItem(Spawn,130119,1)
+end
+if not HasItem(Spawn,130121)then --Legs
+ SummonItem(Spawn,130121,1)
+end
+if not HasItem(Spawn,130122)then --Chest
+ SummonItem(Spawn,130122,1)
+end
+if not HasItem(Spawn,130120)then --Gloves
+ SummonItem(Spawn,130120,1)
+end
+
+
+elseif Class == 21 then --MAGE
+if not HasItem(Spawn,132364)then --Boots
+ SummonItem(Spawn,132364,1)
+end
+if not HasItem(Spawn,132366)then --Legs
+ SummonItem(Spawn,132366,1)
+end
+if not HasItem(Spawn,132367)then --Chest
+ SummonItem(Spawn,132367,1)
+end
+if not HasItem(Spawn,132365)then --Gloves
+ SummonItem(Spawn,132365,1)
+end
+
+
+elseif Class == 31 then --SCOUT
+if not HasItem(Spawn,40984)then --Bow
+ SummonItem(Spawn,40984,1)
+end
+if not HasItem(Spawn,20528)then --Arrows
+ SummonItem(Spawn,20528,1)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+ SummonItem(Spawn,20528,0)
+end
+
+if not HasItem(Spawn,158693)then --Boots
+ SummonItem(Spawn,158693,1)
+end
+if not HasItem(Spawn,158695)then --Legs
+ SummonItem(Spawn,158695,1)
+end
+if not HasItem(Spawn,158696)then --Chest
+ SummonItem(Spawn,158696,1)
+end
+if not HasItem(Spawn,158694)then --Gloves
+ SummonItem(Spawn,158694,1)
+end
+
+
+end
+end
+
+function Trip(NPC,Spawn)
+ if GetQuestStep(Spawn,5717)==2 or HasCompletedQuest(Spawn, 5717) then
+ LeaveIslandQ(NPC, Spawn)
+ elseif GetQuestStep(Spawn,5758)==2 or HasCompletedQuest(Spawn, 5758) then
+ LeaveIslandFP(NPC, Spawn)
+end
+end
+
+
+function LeaveIslandQ(NPC, Spawn)
+ PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_005.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ local Race = GetRace(Spawn)
+
+
+ -- Kerra
+ if Race == 11 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Nettleville")
+ Zone(ZoneRef,Spawn)
+
+ -- Erudite
+ elseif Race == 3 or Race == 20 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Starcrest")
+ Zone(ZoneRef,Spawn)
+
+ elseif Race == 9 then --Human
+ if GetClientVersion(Spawn) <= 546 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Nettleville Hovel", "HumanQNettleville")
+ AddConversationOption(con, "Starcrest Commune", "HumanQStarcrest")
+ AddConversationOption(con, "Tell me about these places", "Human2")
+ AddConversationOption(con, "Stay","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Humans must select their next desitnation in Qeynos.")
+ else
+ window = CreateOptionWindow();
+ AddOptionWindowOption(window, " Nettleville Hovel", "Depart for Nettleville - Home to the reserved Kerra and diverse Humans of Qeynos. It’s a busy district area with plenty of opportunties for adventure seekers and back-alley trade.", 2, 26, "HumanQNettleville")
+ AddOptionWindowOption(window, " Starcrest Commune", "Depart for Starcrest - Starcrest is a grand political experiment implemented by the intellectual Erudites to serve as their home in Qeynos. Residents often frown on noise and distraction that might hinder their research, so be mindful of your activities. ", 2, 27, "HumanQStarcrest")
+ AddOptionWindowOption(window, " Stay", "Stay on the Island. Continue your adventures here and return to this bell when you are ready to leave.", 0, 2296, "Cancel")
+ SendOptionWindow(window, Spawn, "Humans Must Select Their Next Desitnation", "Cancel")
+ end
+
+ -- Barbarian / Dwarf
+ elseif Race == 0 or Race == 2 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Graystone")
+ Zone(ZoneRef,Spawn)
+
+ -- Froglok / High Elf
+ elseif Race == 4 or Race == 8 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Castleview")
+ Zone(ZoneRef,Spawn)
+
+ -- Half Elf / Wood Elf
+ elseif Race == 6 or Race == 15 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Willowwood")
+ Zone(ZoneRef,Spawn)
+
+ -- Gnome / Halfling
+ elseif Race == 5 or Race == 7 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Baubbleshire")
+ Zone(ZoneRef,Spawn)
+ else
+ SendMessage(Spawn,"There doesn't seem to be a boat available for you to Qeynos right now. [Report this!]")
+ end
+end
+
+function Human2(NPC,Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Nettleville Hovel", "HumanQNettleville")
+ AddConversationOption(con, "Starcrest Commune", "HumanQStarcrest")
+ AddConversationOption(con, "Stay","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "Nettlevilel Hovel:\n\nHome to the reserved Kerra and diverse Humans of Qeynos. It’s a busy district area with plenty of opportunties for adventure seekers and back-alley trade.\n\nStarcrest Commune:\n\nStarcrest is a grand political experiment implemented by the intellectual Erudites to serve as their home in Qeynos. Residents often frown on noise and distraction that might hinder their research, so be mindful of your activities.")
+end
+
+function LeaveIslandFP(NPC, Spawn)
+ PlaySound(Spawn,"sounds/objectsandparticlesounds/amb_marinersbell_005.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ Race = GetRace(Spawn)
+
+ -- Erudite / Kerra
+ if Race == 3 or Race == 11 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Stonestair")
+ Zone(ZoneRef,Spawn)
+
+ -- Ratonga / Gnome
+ elseif Race == 5 or Race == 13 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn)
+
+
+ -- Human / Half Elf
+ elseif Race == 9 or Race == 6 then
+-- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn)
+
+
+ -- Orge / Troll
+ elseif Race == 12 or Race == 14 then
+ -- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("BigBend")
+ Zone(ZoneRef,Spawn)
+
+ -- Dark Elf
+ elseif Race == 1 then
+-- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("Longshadow")
+ Zone(ZoneRef,Spawn)
+
+ -- Barbarian / Iksar
+ elseif Race == 0 or Race == 10 then
+-- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("ScaleYard")
+ Zone(ZoneRef,Spawn)
+
+ else
+-- AddSpellBookEntry(Spawn, 8057, 1)
+ ZoneRef = GetZone("BeggarsCourt")
+ Zone(ZoneRef,Spawn)
+
+ end
+end
diff --git a/server/SpawnScripts/IsleRefuge1/Ssilith.lua b/server/SpawnScripts/IsleRefuge1/Ssilith.lua
index 6c9fe73d4..06537bc4b 100755
--- a/server/SpawnScripts/IsleRefuge1/Ssilith.lua
+++ b/server/SpawnScripts/IsleRefuge1/Ssilith.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/Vladiminn.lua b/server/SpawnScripts/IsleRefuge1/Vladiminn.lua
index 45ad070a5..a802efbcc 100755
--- a/server/SpawnScripts/IsleRefuge1/Vladiminn.lua
+++ b/server/SpawnScripts/IsleRefuge1/Vladiminn.lua
@@ -6,6 +6,8 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/ClassSkillCheck.lua")
+
local Scout2 = 5730
local Scout3 = 5737
local Scout4 = 5741
@@ -70,10 +72,17 @@ else
Dialog.AddOption("Fit as I can be thanks you. I must prepare for my voyage off this island. Farewell, Vladiminn.")
end
Dialog.AddOption("Fit, but currently unwilling.")
- Dialog.Start()
+ if GetClass(Spawn)==31 then
+ Dialog.AddOption("Can you make sure my skills are in order?","Skills")
+ end
+ Dialog.Start()
end
end
+function Skills(NPC,Spawn)
+ SkillCheck(NPC,Spawn)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+end
function respawn(NPC)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/Weaponrack.lua b/server/SpawnScripts/IsleRefuge1/Weaponrack.lua
index 391dcbe89..b6c63ea57 100755
--- a/server/SpawnScripts/IsleRefuge1/Weaponrack.lua
+++ b/server/SpawnScripts/IsleRefuge1/Weaponrack.lua
@@ -20,16 +20,29 @@ end
function casted_on(NPC, Player, Message)
if Message == "Search weapon rack" then
if GetQuestStep(Player,FighterGI)==1 then
+ Fighter = GetQuest(Player,5726)
SetStepComplete(Player,FighterGI,1)
-
+ if not HasItem(Player, 1001011,1) and not HasItem(Player, 75057,1) then
+ GiveQuestItem(Fighter,Player,"You found some items that suit you on the weapon rack.",1001011, 75057)
+ end
elseif GetQuestStep(Player,PriestGI)==1 then
+ Priest = GetQuest(Player,5727)
SetStepComplete(Player,PriestGI,1)
-
+ if not HasItem(Player, 1001011,1) and not HasItem(Player, 73731,1) then
+ GiveQuestItem(Priest,Player,"You found some items that suit you on the weapon rack.",1001011, 73731)
+ end
elseif GetQuestStep(Player,MageGI)==1 then
+ Mage = GetQuest(Player,5728)
SetStepComplete(Player,MageGI,1)
-
+ if not HasItem(Player, 1001011,1) and not HasItem(Player, 73899,1) then
+ GiveQuestItem(Mage,Player,"You found some items that suit you on the weapon rack.",1001011,73899)
+ end
elseif GetQuestStep(Player,ScoutGI)==1 then
+ Scout =GetQuest(Player,5729)
SetStepComplete(Player,ScoutGI,1)
+ if not HasItem(Player, 1001011,1) and not HasItem(Player, 73896,1) then
+ GiveQuestItem(Scout,Player,"You found some items that suit you on the weapon rack.",1001011,73896)
+ end
end
end
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothWarmonger.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothWarmonger.lua
index bcd15ead6..d7ea918ce 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothWarmonger.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothWarmonger.lua
@@ -8,7 +8,14 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin3.lua")
function spawn(NPC)
-
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 4 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 10 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothaggressor.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothaggressor.lua
index 055b71e3a..9946cd265 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothaggressor.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothaggressor.lua
@@ -6,29 +6,12 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-EmoteLoop(NPC,Spawn)
-SetTempVariable(NPC,"Update","false")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ EmoteLoop(NPC,Spawn)
+ SetTempVariable(NPC,"Update","false")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothbrute.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothbrute.lua
index 7c8ac9802..6ea9ceadd 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothbrute.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothbrute.lua
@@ -6,31 +6,14 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
EmoteLoop(NPC,Spawn)
-if GetSpawnLocationID(NPC)==133775625 then
- waypoints(NPC)
-end
+ if GetSpawnLocationID(NPC)==133775625 then
+ waypoints(NPC)
+ end
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR1.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR1.lua
index 8c59f0cac..78dc123b8 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR1.lua
@@ -6,28 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR2.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR2.lua
index 8c5950289..cccf41510 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothbruteR2.lua
@@ -6,29 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothbruteRoam.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothbruteRoam.lua
index e37910b5a..f32377965 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothbruteRoam.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothbruteRoam.lua
@@ -6,91 +6,13 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothguard.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothguard.lua
index 3fff2cca2..511001ab6 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothguard.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothguard.lua
@@ -6,27 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothguardAngry.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothguardAngry.lua
index fca503a4f..ff7f035c6 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothguardAngry.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothguardAngry.lua
@@ -6,31 +6,12 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SpawnSet(NPC, "visual_state", 12030)
end
-
-
-end
function aggro(NPC,Spawn)
SpawnSet(NPC, "visual_state", 0)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothguardPatrol.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothguardPatrol.lua
index fbe2cc7ba..ab5ee2c11 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothguardPatrol.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothguardPatrol.lua
@@ -6,27 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothhunter.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothhunter.lua
index 66932ba70..3a382413b 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothhunter.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothhunter.lua
@@ -6,72 +6,13 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothhunter4-5.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothhunter4-5.lua
index 6f10cf2ab..6e2bdcda6 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothhunter4-5.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothhunter4-5.lua
@@ -6,91 +6,13 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
---ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol1.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol1.lua
index 3a3d82aed..ee6ffe3ce 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol1.lua
@@ -6,29 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol2.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol2.lua
index 75b78764d..1557fb5e2 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothhunterPatrol2.lua
@@ -6,29 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader1.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader1.lua
index e117df99d..6e863f522 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader1.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader2.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader2.lua
index e0f711dd6..f19f59408 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader2.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader3.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader3.lua
index cdb86da7a..fee89171b 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader3.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader3.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader4.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader4.lua
index 7b7d56bd1..dd02a0bb0 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader4.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader4.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader5.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader5.lua
index 43bdc9b73..79dd8a576 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader5.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader5.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader6.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader6.lua
index 342359dee..1ce8db0b0 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader6.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader6.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader7.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader7.lua
index ea296393d..ccd438433 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader7.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader7.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader8.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader8.lua
index a695eb9c7..e09256b6c 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothinvader8.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothinvader8.lua
@@ -6,8 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothlaborer.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothlaborer.lua
index 4a138a669..4411a9990 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothlaborer.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothlaborer.lua
@@ -6,26 +6,19 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ local ID = GetSpawnID(NPC)
+ if ID ==3250122 then
+ SetInfoStructString(NPC, "action_state", "cooking_idle")
+ elseif ID ==3250104 then
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+ elseif ID ==3250105 then
+ SetInfoStructString(NPC, "action_state", "forestry_chopping")
+ elseif ID ==3250095 then
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
end
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerAggro.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerAggro.lua
new file mode 100644
index 000000000..9eab62d5e
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerAggro.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/aGruttoothlaborerAggro.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.06 11:02:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SpawnSet(NPC, "faction", 1)
+ local ID = GetSpawnID(NPC)
+ if ID ==3250122 then
+ SetInfoStructString(NPC, "action_state", "cooking_idle")
+ elseif ID ==3250104 then
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+ elseif ID ==3250105 then
+ SetInfoStructString(NPC, "action_state", "forestry_chopping")
+ elseif ID ==3250095 then
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerPonder.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerPonder.lua
index e7a9ec3d2..b3bf460d1 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerPonder.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothlaborerPonder.lua
@@ -6,8 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/CombatModule"
-function spawn(NPC)
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 3
local level2 = 4
@@ -28,7 +31,8 @@ function spawn(NPC)
SpawnSet(NPC, "power", power2)
end
SpawnSet(NPC, "visual_state", 12030)
-
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
end
function aggro(NPC,Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothlookout.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothlookout.lua
index f9c7570e1..c7cea649e 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothlookout.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothlookout.lua
@@ -6,28 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothlookoutR.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothlookoutR.lua
index 33673b3d9..7a64e3577 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothlookoutR.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothlookoutR.lua
@@ -6,91 +6,13 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothmystic1.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothmystic1.lua
index 3d6f320be..e0cb4b015 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothmystic1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothmystic1.lua
@@ -6,29 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothmystic2.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothmystic2.lua
index 52d160795..fe7d11f7c 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothmystic2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothmystic2.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothmystic3.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothmystic3.lua
index e1c397b83..a25e3fa09 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothmystic3.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothmystic3.lua
@@ -6,31 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-end
-
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothmysticR.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothmysticR.lua
index c76b8625e..a630b0a51 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothmysticR.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothmysticR.lua
@@ -6,91 +6,13 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothmysticTaunt.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothmysticTaunt.lua
index ecdc0a1ad..bbdb8c700 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothmysticTaunt.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothmysticTaunt.lua
@@ -6,30 +6,12 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-SetPlayerProximityFunction(NPC, 20, "InRange", "LeaveRange")
-EmoteLoop(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 20, "InRange", "LeaveRange")
+ EmoteLoop(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.P5lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.P5lua
index 1abcc3496..432f77630 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.P5lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.P5lua
@@ -6,9 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.lua
index 000a9d684..6c5f782d3 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprotector.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
EmoteLoop(NPC,Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP1.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP1.lua
index 9d10a2892..3ba711930 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP1.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP2.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP2.lua
index fbf894f4e..fd36fb7d1 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP2.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP3.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP3.lua
index 66a655b46..3147fb1cd 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP3.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP3.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP4.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP4.lua
index d7ea73765..3d9404987 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP4.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprotectorP4.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothprovider.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothprovider.lua
index 950be2ea0..6e9bcf12c 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothprovider.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothprovider.lua
@@ -7,8 +7,10 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
ChooseMovement(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothrunt.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothrunt.lua
index 55b411b5c..f17ea5bff 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothrunt.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothrunt.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
ChooseMovement(NPC)
end
@@ -32,8 +34,8 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 12, Y, Z, 2,math.random(5,10))
MovementLoopAddLocation(NPC, X + 12, Y, Z + 4, 2 , 15 , "InitialPause")
MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 4, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 4, 15 , "InitialPause")
+ MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 4, math.random(5,10), "InitialPause")
+ MovementLoopAddLocation(NPC, X, Y, Z, 4, 15 ,"ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -45,7 +47,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 4, math.random(5,10))
MovementLoopAddLocation(NPC, X - 12, Y, Z, 2, 15 , "InitialPause")
MovementLoopAddLocation(NPC, X - 12, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -57,7 +59,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 14, Y, Z, 2, 15 , "InitialPause")
MovementLoopAddLocation(NPC, X + 12, Y, Z - 4, 4, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -69,7 +71,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 14, Y, Z, 4, math.random(5,10))
MovementLoopAddLocation(NPC, X - 12, Y, Z + 4, 2, 15 , "InitialPause")
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function respawn(NPC, Spawn)
@@ -93,12 +95,14 @@ function InitialPause(NPC)
end
function Gather(NPC)
- SpawnSet(NPC, "visual_state", "2809") -- Start gathering
+-- SpawnSet(NPC, "visual_state", "gathering_search") -- Start gathering
+ PlayFlavor(NPC,"","","gathering_search",0,0)
AddTimer(NPC, 8000, "Collect") -- for 5 seconds, then stop
end
function Collect(NPC)
- SpawnSet(NPC, "visual_state", "2810") -- Start gathering
+-- SpawnSet(NPC, "visual_state", "gathering_success") -- Start gathering
+ PlayFlavor(NPC,"","","gathering_success",0,0)
AddTimer(NPC, 2000, "stop_gathering") -- for 5 seconds, then stop
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothsaboteur.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothsaboteur.lua
index 7f0fd99d9..98d758bf3 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothsaboteur.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothsaboteur.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
AddTimer(NPC,2000,"EmoteLoop")
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothscout.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothscout.lua
index c75f27787..e276abe0e 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothscout.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothscout.lua
@@ -7,10 +7,12 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-SetPlayerProximityFunction(NPC, 20, "InRange", "LeaveRange")
-EmoteLoop(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 20, "InRange", "LeaveRange")
+ EmoteLoop(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothsentry.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothsentry.lua
index bf39c54c0..69a8693ab 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothsentry.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothsentry.lua
@@ -6,28 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothsentry1.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothsentry1.lua
index b06c6b130..a9d502f8d 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothsentry1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothsentry1.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aGruttoothsentry2.lua b/server/SpawnScripts/IsleRefuge1/aGruttoothsentry2.lua
index 34cbb85e7..623253cd3 100755
--- a/server/SpawnScripts/IsleRefuge1/aGruttoothsentry2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aGruttoothsentry2.lua
@@ -6,10 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin2.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aShadowSerpent.lua b/server/SpawnScripts/IsleRefuge1/aShadowSerpent.lua
new file mode 100755
index 000000000..2a625c856
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/aShadowSerpent.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/aShadowSerpent.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.09 09:03:27
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/aSiegePlanner.lua b/server/SpawnScripts/IsleRefuge1/aSiegePlanner.lua
index e26e006fc..a2d13a7b6 100755
--- a/server/SpawnScripts/IsleRefuge1/aSiegePlanner.lua
+++ b/server/SpawnScripts/IsleRefuge1/aSiegePlanner.lua
@@ -8,7 +8,14 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin3.lua")
function spawn(NPC)
-
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 4 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 10 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aSupplyCaptain.lua b/server/SpawnScripts/IsleRefuge1/aSupplyCaptain.lua
index 8d4d92628..2b8cbee6e 100755
--- a/server/SpawnScripts/IsleRefuge1/aSupplyCaptain.lua
+++ b/server/SpawnScripts/IsleRefuge1/aSupplyCaptain.lua
@@ -8,7 +8,14 @@
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin3.lua")
function spawn(NPC)
-
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 4 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 10 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aTitanbeetle.lua b/server/SpawnScripts/IsleRefuge1/aTitanbeetle.lua
index 58c4be8ca..a05df8f20 100755
--- a/server/SpawnScripts/IsleRefuge1/aTitanbeetle.lua
+++ b/server/SpawnScripts/IsleRefuge1/aTitanbeetle.lua
@@ -7,70 +7,17 @@
--]]
function spawn(NPC)
-
-ChooseMovement(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 4 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 10 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/abattlewolf.lua b/server/SpawnScripts/IsleRefuge1/abattlewolf.lua
index 9650059d4..5c11913fc 100755
--- a/server/SpawnScripts/IsleRefuge1/abattlewolf.lua
+++ b/server/SpawnScripts/IsleRefuge1/abattlewolf.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/abattlewolfP1.lua b/server/SpawnScripts/IsleRefuge1/abattlewolfP1.lua
index d2d417483..7afe6e7a1 100755
--- a/server/SpawnScripts/IsleRefuge1/abattlewolfP1.lua
+++ b/server/SpawnScripts/IsleRefuge1/abattlewolfP1.lua
@@ -5,10 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-AddTimer(NPC, 1000, "followsentry")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ AddTimer(NPC, 1000, "followsentry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/abattlewolfP2.lua b/server/SpawnScripts/IsleRefuge1/abattlewolfP2.lua
index 8314b4922..41ff4a615 100755
--- a/server/SpawnScripts/IsleRefuge1/abattlewolfP2.lua
+++ b/server/SpawnScripts/IsleRefuge1/abattlewolfP2.lua
@@ -5,10 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-AddTimer(NPC, 800, "followsentry")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ AddTimer(NPC, 800, "followsentry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/abattlewolfR.lua b/server/SpawnScripts/IsleRefuge1/abattlewolfR.lua
index 1a392dd5c..f0da5a58b 100755
--- a/server/SpawnScripts/IsleRefuge1/abattlewolfR.lua
+++ b/server/SpawnScripts/IsleRefuge1/abattlewolfR.lua
@@ -5,96 +5,15 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/acaptiverefugee.lua b/server/SpawnScripts/IsleRefuge1/acaptiverefugee.lua
index eeccbe56c..41d6e3f99 100755
--- a/server/SpawnScripts/IsleRefuge1/acaptiverefugee.lua
+++ b/server/SpawnScripts/IsleRefuge1/acaptiverefugee.lua
@@ -47,17 +47,16 @@ function Speak(NPC,Spawn)
else
PlayFlavor(NPC, "", "You're timing is excellent stranger. I thought I was going to have to find my own way out of this.", "thanks", 0, 0,Spawn)
end
- PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_human_refugee_hail2_72457d89.mp3", "I've never seen a goblin before. Are they always this...umm...excitable?", "confused", 3599089715, 3189955253,Spawn)
elseif GetRace(NPC)==11 then --Kerra
- PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/004_kerran_refugee_hail2_a8d13011.mp3", "Thank goodness you found us. These goblins may not be bright but they have us at an advantage in numbers.", "thanks", 1996349290, 3249018436,Spawn)
+ PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/004_kerran_refugee_hail2_a8d13011.mp3", "Thank goodness you found us. These goblins may not be bright but they have us at an advantage in numbers.", "thanks", 1996349290, 3249018436,Spawn)
elseif GetRace(NPC)==13 then --Ratonga
- PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_ratonga_refugee_hail2_f6cdb005.mp3", "First a Drakota, and now this! Why do the old gods hate me so?", "scream", 3567711464, 78154507,Spawn)
+ PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_ratonga_refugee_hail2_f6cdb005.mp3", "First a Drakota, and now this! Why do the old gods hate me so?", "scream", 3567711464, 78154507,Spawn)
elseif GetRace(NPC)==15 then --Woodelf
choice = MakeRandomInt(1,2)
if choice==1 then
- PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_woodelf_refugee_hail1_665582a4.mp3", "Please don't hurt them! These poor goblins are only acting out of fear.", "beg", 4167828572, 1837602908,Spawn)
+ PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_woodelf_refugee_hail1_665582a4.mp3", "Please don't hurt them! These poor goblins are only acting out of fear.", "beg", 1038403057, 372639812,Spawn)
else
- PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_woodelf_refugee_hail2_19c22530.mp3", "Thanks for nothing you bully! How would you like it if a bunch of scary men with swords invaded your island?", "shame", 4167828572, 1837602908,Spawn)
+ PlayFlavor(NPC, "voiceover/english/a_captured_refugee/tutorial_island02/003_woodelf_refugee_hail2_19c22530.mp3", "Thanks for nothing you bully! How would you like it if a bunch of scary men with swords invaded your island?", "shame", 3030530877, 3849447082,Spawn)
end
end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/acoastalcrab.lua b/server/SpawnScripts/IsleRefuge1/acoastalcrab.lua
index cfc016f70..053794545 100755
--- a/server/SpawnScripts/IsleRefuge1/acoastalcrab.lua
+++ b/server/SpawnScripts/IsleRefuge1/acoastalcrab.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/acopperhead.lua b/server/SpawnScripts/IsleRefuge1/acopperhead.lua
index bb993c676..81071f05c 100755
--- a/server/SpawnScripts/IsleRefuge1/acopperhead.lua
+++ b/server/SpawnScripts/IsleRefuge1/acopperhead.lua
@@ -5,27 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/acopperheadR.lua b/server/SpawnScripts/IsleRefuge1/acopperheadR.lua
index c4c81a81d..f48b621da 100755
--- a/server/SpawnScripts/IsleRefuge1/acopperheadR.lua
+++ b/server/SpawnScripts/IsleRefuge1/acopperheadR.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/afallenpirate.lua b/server/SpawnScripts/IsleRefuge1/afallenpirate.lua
index 17dfa05ea..4dfcf00e1 100755
--- a/server/SpawnScripts/IsleRefuge1/afallenpirate.lua
+++ b/server/SpawnScripts/IsleRefuge1/afallenpirate.lua
@@ -7,28 +7,12 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
+
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/afallenpirateR.lua b/server/SpawnScripts/IsleRefuge1/afallenpirateR.lua
index 8677be22a..2c08f4b7c 100755
--- a/server/SpawnScripts/IsleRefuge1/afallenpirateR.lua
+++ b/server/SpawnScripts/IsleRefuge1/afallenpirateR.lua
@@ -7,92 +7,12 @@
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
SetSpawnAnimation(NPC, 13016)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube.lua
index 21ed91424..8a5b90ec2 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube.lua
@@ -18,7 +18,10 @@ end
function Cage1(NPC, Spawn)
local zone = GetZone(NPC)
-local Goblin1 = SpawnByLocationID(zone, 133775211) --Goblin1
+local Goblin1 = GetSpawnByLocationID(zone, 133775211) --Goblin1
+if IsAlive(Goblin1)== false or Goblin1 == nil then
+SpawnByLocationID(zone, 133775211) --Goblin1
+end
AddTimer(NPC,3500,"GobLiveCheck")
end
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube2.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube2.lua
index e86e77fe8..0bff09663 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube2.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube2.lua
@@ -18,7 +18,10 @@ end
function Cage2(NPC, Spawn)
local zone = GetZone(NPC)
-local Goblin1 = SpawnByLocationID(zone, 133775212) --Goblin1
+local Goblin1 = GetSpawnByLocationID(zone, 133775212) --Goblin1
+if IsAlive(Goblin1)== false or Goblin1 == nil then
+SpawnByLocationID(zone, 133775212) --Goblin1
+end
AddTimer(NPC,3500,"GobLiveCheck")
-- Say(NPC,"Spawning")
end
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube3.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube3.lua
index ef5a2420d..c32a08869 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube3.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube3.lua
@@ -17,7 +17,10 @@ end
function Cage2(NPC, Spawn)
local zone = GetZone(NPC)
-local Goblin1 = SpawnByLocationID(zone, 133775213) --Goblin1
+local Goblin1 = GetSpawnByLocationID(zone, 133775213) --Goblin1
+if IsAlive(Goblin1)== false or Goblin1 == nil then
+SpawnByLocationID(zone, 133775213) --Goblin1
+end
AddTimer(NPC,3500,"GobLiveCheck")
end
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube4.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube4.lua
index 604adf294..d5b008691 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube4.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube4.lua
@@ -18,7 +18,10 @@ end
function Cage4(NPC, Spawn)
local zone = GetZone(NPC)
-local Goblin1 = SpawnByLocationID(zone, 133775214) --Goblin1
+local Goblin1 = GetSpawnByLocationID(zone, 133775214) --Goblin1
+if IsAlive(Goblin1)== false or Goblin1 == nil then
+SpawnByLocationID(zone, 133775214) --Goblin1
+end
AddTimer(NPC,3500,"GobLiveCheck")
end
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube5.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube5.lua
index 10cdc533c..cd45fc310 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube5.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube5.lua
@@ -16,7 +16,10 @@ end
function Cage4(NPC, Spawn)
local zone = GetZone(NPC)
-local Goblin1 = SpawnByLocationID(zone, 133775215) --Goblin1
+local Goblin1 = GetSpawnByLocationID(zone, 133775215) --Goblin1
+if IsAlive(Goblin1)== false or Goblin1 == nil then
+SpawnByLocationID(zone, 133775215) --Goblin1
+end
AddTimer(NPC,3500,"GobLiveCheck")
end
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube6.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube6.lua
index 338158df2..05416c9f6 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube6.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecube6.lua
@@ -15,7 +15,10 @@ end
function Cage6(NPC, Spawn)
local zone = GetZone(NPC)
-local Goblin1 = SpawnByLocationID(zone, 133775216) --Goblin1
+local Goblin1 = GetSpawnByLocationID(zone, 133775216) --Goblin1
+if IsAlive(Goblin1)== false or Goblin1 == nil then
+SpawnByLocationID(zone, 133775216) --Goblin1
+end
AddTimer(NPC,3500,"GobLiveCheck")
end
@@ -78,7 +81,6 @@ local z=GetZ(NPC)
end
function ThankYou(NPC,Spawn)
- PlaySound(NPC, "sounds/widgets/doors/door_gate_close001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
local zone = GetZone(NPC)
local Refugee = GetSpawnByLocationID(zone, 133775267) --Refugee
FaceTarget(Refugee,Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecubeTreeHouse1.lua b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecubeTreeHouse1.lua
index 23454f72a..5c957cf07 100755
--- a/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecubeTreeHouse1.lua
+++ b/server/SpawnScripts/IsleRefuge1/aggresiveGobinvisiblecubeTreeHouse1.lua
@@ -7,7 +7,8 @@
--]]
function spawn(NPC)
-Cage4(NPC, Spawn)end
+Cage4(NPC, Spawn)
+end
function respawn(NPC)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/agiantspider.lua b/server/SpawnScripts/IsleRefuge1/agiantspider.lua
index 5a5971480..a239ae274 100755
--- a/server/SpawnScripts/IsleRefuge1/agiantspider.lua
+++ b/server/SpawnScripts/IsleRefuge1/agiantspider.lua
@@ -5,89 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/agrizzlybear.lua b/server/SpawnScripts/IsleRefuge1/agrizzlybear.lua
index 2c62cc6da..82b83c2d5 100755
--- a/server/SpawnScripts/IsleRefuge1/agrizzlybear.lua
+++ b/server/SpawnScripts/IsleRefuge1/agrizzlybear.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/agrizzlybearShortPath.lua b/server/SpawnScripts/IsleRefuge1/agrizzlybearShortPath.lua
new file mode 100755
index 000000000..882890f37
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/agrizzlybearShortPath.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/agrizzlybearShortPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.02 04:08:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+end
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/agrizzlybearcub.lua b/server/SpawnScripts/IsleRefuge1/agrizzlybearcub.lua
index d881f277d..52fda1ecb 100755
--- a/server/SpawnScripts/IsleRefuge1/agrizzlybearcub.lua
+++ b/server/SpawnScripts/IsleRefuge1/agrizzlybearcub.lua
@@ -5,72 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 6, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 6, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/agrovedeer.lua b/server/SpawnScripts/IsleRefuge1/agrovedeer.lua
index a117ea5f7..6e0019bca 100755
--- a/server/SpawnScripts/IsleRefuge1/agrovedeer.lua
+++ b/server/SpawnScripts/IsleRefuge1/agrovedeer.lua
@@ -5,33 +5,10 @@
Script Purpose :
:
--]]
-
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 2
- local level2 = 3
- local difficulty1 = 6
- local hp1 = 45
- local power1 = 35
- local difficulty2 = 6
- local hp2 = 75
- local power2 = 45
- local difficulty3 = 6
- local hp3 = 110
- local power3 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- SetInfoStructUInt(NPC, "hp_regen_override", 1)
- SetInfoStructUInt(NPC, "hp_regen", 1)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetInfoStructUInt(NPC, "friendly_target_npc", 1)
Diseased(NPC)
ChooseMovement(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/alargecoastalcrab.lua b/server/SpawnScripts/IsleRefuge1/alargecoastalcrab.lua
index 9a6269559..c87fd3ce4 100755
--- a/server/SpawnScripts/IsleRefuge1/alargecoastalcrab.lua
+++ b/server/SpawnScripts/IsleRefuge1/alargecoastalcrab.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/amammothbeetle.lua b/server/SpawnScripts/IsleRefuge1/amammothbeetle.lua
index 3ef2263db..23d9495d6 100755
--- a/server/SpawnScripts/IsleRefuge1/amammothbeetle.lua
+++ b/server/SpawnScripts/IsleRefuge1/amammothbeetle.lua
@@ -5,90 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 2
- local level2 = 3
- local difficulty1 = 6
- local hp1 = 45
- local power1 = 35
- local difficulty2 = 6
- local hp2 = 75
- local power2 = 45
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/amammothbeetleLongerPath.lua b/server/SpawnScripts/IsleRefuge1/amammothbeetleLongerPath.lua
new file mode 100755
index 000000000..23f346f94
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/amammothbeetleLongerPath.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/amammothbeetleLongerPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.02 04:08:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/amirebog.lua b/server/SpawnScripts/IsleRefuge1/amirebog.lua
index c1ef8d5ec..626459c9b 100755
--- a/server/SpawnScripts/IsleRefuge1/amirebog.lua
+++ b/server/SpawnScripts/IsleRefuge1/amirebog.lua
@@ -5,92 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- local difficulty3 = 6
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 12, Y, Z, 1,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 12, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 12, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 12, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 12, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 14, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 12, Y, Z - 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 12, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 14, Y, Z, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 12, Y, Z + 4, 1, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 12, -12, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/anAlphaWolf.lua b/server/SpawnScripts/IsleRefuge1/anAlphaWolf.lua
new file mode 100755
index 000000000..d3fce2256
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/anAlphaWolf.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/anAlphaWolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.09 09:03:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ local dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 5 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 11 + dmgMod)
+ SetInfoStructUInt(NPC, "hp_regen_override", 1)
+ SetInfoStructSInt(NPC, "hp_regen", 0)
+ SetInfoStructUInt(NPC, "pw_regen_override", 1)
+ SetInfoStructSInt(NPC, "pw_regen", 0)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/aneedlefang.lua b/server/SpawnScripts/IsleRefuge1/aneedlefang.lua
index 04d88b7e4..a28e678cc 100755
--- a/server/SpawnScripts/IsleRefuge1/aneedlefang.lua
+++ b/server/SpawnScripts/IsleRefuge1/aneedlefang.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/anemeraldsnake.lua b/server/SpawnScripts/IsleRefuge1/anemeraldsnake.lua
index 125a90ab6..723f9d45b 100755
--- a/server/SpawnScripts/IsleRefuge1/anemeraldsnake.lua
+++ b/server/SpawnScripts/IsleRefuge1/anemeraldsnake.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/anemeraldsnakeR.lua b/server/SpawnScripts/IsleRefuge1/anemeraldsnakeR.lua
index 4144e4ae6..21bfee31f 100755
--- a/server/SpawnScripts/IsleRefuge1/anemeraldsnakeR.lua
+++ b/server/SpawnScripts/IsleRefuge1/anemeraldsnakeR.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseMovement(NPC)
end
function ChooseMovement(NPC)
@@ -52,7 +34,7 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -64,7 +46,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10), "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -76,7 +58,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -88,7 +70,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/anislandbeaver.lua b/server/SpawnScripts/IsleRefuge1/anislandbeaver.lua
new file mode 100755
index 000000000..5731fb001
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/anislandbeaver.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/anislandbeaver.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.09 09:03:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/anoxiouscobra.lua b/server/SpawnScripts/IsleRefuge1/anoxiouscobra.lua
index 012767503..74b65673f 100755
--- a/server/SpawnScripts/IsleRefuge1/anoxiouscobra.lua
+++ b/server/SpawnScripts/IsleRefuge1/anoxiouscobra.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/anoxiouscobraR.lua b/server/SpawnScripts/IsleRefuge1/anoxiouscobraR.lua
index 27f90a559..6bf36a575 100755
--- a/server/SpawnScripts/IsleRefuge1/anoxiouscobraR.lua
+++ b/server/SpawnScripts/IsleRefuge1/anoxiouscobraR.lua
@@ -5,29 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseMovement(NPC)
end
function ChooseMovement(NPC)
@@ -52,7 +34,7 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -64,7 +46,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -76,7 +58,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -88,7 +70,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/arazortoothshark.lua b/server/SpawnScripts/IsleRefuge1/arazortoothshark.lua
index a016e75a5..59adc2684 100755
--- a/server/SpawnScripts/IsleRefuge1/arazortoothshark.lua
+++ b/server/SpawnScripts/IsleRefuge1/arazortoothshark.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aredgill.lua b/server/SpawnScripts/IsleRefuge1/aredgill.lua
index bd932fd58..048eb2989 100755
--- a/server/SpawnScripts/IsleRefuge1/aredgill.lua
+++ b/server/SpawnScripts/IsleRefuge1/aredgill.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/IsleRefuge1/areefturtle.lua b/server/SpawnScripts/IsleRefuge1/areefturtle.lua
index 5b8a79e76..9905ddfe9 100755
--- a/server/SpawnScripts/IsleRefuge1/areefturtle.lua
+++ b/server/SpawnScripts/IsleRefuge1/areefturtle.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function waypoints(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/asawtoothshark.lua b/server/SpawnScripts/IsleRefuge1/asawtoothshark.lua
index 6461a6551..548e11d26 100755
--- a/server/SpawnScripts/IsleRefuge1/asawtoothshark.lua
+++ b/server/SpawnScripts/IsleRefuge1/asawtoothshark.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/aseasidefalcon.lua b/server/SpawnScripts/IsleRefuge1/aseasidefalcon.lua
index 327b71520..04aa65c6f 100755
--- a/server/SpawnScripts/IsleRefuge1/aseasidefalcon.lua
+++ b/server/SpawnScripts/IsleRefuge1/aseasidefalcon.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-Waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ Waypoints(NPC)
end
function hailed(NPC, Spawn)
@@ -17,6 +19,10 @@ function respawn(NPC)
spawn(NPC)
end
+function death(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_feather_explosion",0,0)
+end
+
function Waypoints(NPC)
if GetSpawnLocationID(NPC)== 133776637 then
MovementLoopAddLocation(NPC, 58.02, 2.98, 215.83, 2, 0)
diff --git a/server/SpawnScripts/IsleRefuge1/ashoalglider.lua b/server/SpawnScripts/IsleRefuge1/ashoalglider.lua
index 933235d32..6eb4c1001 100755
--- a/server/SpawnScripts/IsleRefuge1/ashoalglider.lua
+++ b/server/SpawnScripts/IsleRefuge1/ashoalglider.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function waypoints(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/ashorecrab.lua b/server/SpawnScripts/IsleRefuge1/ashorecrab.lua
index 569708595..c9da6159f 100755
--- a/server/SpawnScripts/IsleRefuge1/ashorecrab.lua
+++ b/server/SpawnScripts/IsleRefuge1/ashorecrab.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/asmallcoastalcrab.lua b/server/SpawnScripts/IsleRefuge1/asmallcoastalcrab.lua
index 0f2c54fbe..f78cfebe8 100755
--- a/server/SpawnScripts/IsleRefuge1/asmallcoastalcrab.lua
+++ b/server/SpawnScripts/IsleRefuge1/asmallcoastalcrab.lua
@@ -5,9 +5,11 @@
Script Purpose : Pulled from Rylec's locations on QueensColony
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/asupplyrunner.lua b/server/SpawnScripts/IsleRefuge1/asupplyrunner.lua
new file mode 100755
index 000000000..60c1c2464
--- /dev/null
+++ b/server/SpawnScripts/IsleRefuge1/asupplyrunner.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/IsleRefuge1/asupplyrunner.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.09 09:03:49
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/IsleRefuge1/asupplyrunner1.lua b/server/SpawnScripts/IsleRefuge1/asupplyrunner1.lua
index 1481f6a02..313f96298 100755
--- a/server/SpawnScripts/IsleRefuge1/asupplyrunner1.lua
+++ b/server/SpawnScripts/IsleRefuge1/asupplyrunner1.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/asupplyrunner2.lua b/server/SpawnScripts/IsleRefuge1/asupplyrunner2.lua
index f5da1a0e3..d8e8049d8 100755
--- a/server/SpawnScripts/IsleRefuge1/asupplyrunner2.lua
+++ b/server/SpawnScripts/IsleRefuge1/asupplyrunner2.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/asupplyrunner3.lua b/server/SpawnScripts/IsleRefuge1/asupplyrunner3.lua
index da923e762..5b7027479 100755
--- a/server/SpawnScripts/IsleRefuge1/asupplyrunner3.lua
+++ b/server/SpawnScripts/IsleRefuge1/asupplyrunner3.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR1.lua b/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR1.lua
index 782cc731a..94588a2d5 100755
--- a/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR1.lua
+++ b/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR1.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR2.lua b/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR2.lua
index 6ebb3c78b..3d2bba378 100755
--- a/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR2.lua
+++ b/server/SpawnScripts/IsleRefuge1/asupplyrunnerCR2.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGoblin1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/atimberwolf.lua b/server/SpawnScripts/IsleRefuge1/atimberwolf.lua
index eaccaefcb..3b38596ea 100755
--- a/server/SpawnScripts/IsleRefuge1/atimberwolf.lua
+++ b/server/SpawnScripts/IsleRefuge1/atimberwolf.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/atimberwolfpup.lua b/server/SpawnScripts/IsleRefuge1/atimberwolfpup.lua
index 4a18dc029..5f3a11b74 100755
--- a/server/SpawnScripts/IsleRefuge1/atimberwolfpup.lua
+++ b/server/SpawnScripts/IsleRefuge1/atimberwolfpup.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/atimberwolfpup1.lua b/server/SpawnScripts/IsleRefuge1/atimberwolfpup1.lua
index f8ffa867b..8e1bb191c 100755
--- a/server/SpawnScripts/IsleRefuge1/atimberwolfpup1.lua
+++ b/server/SpawnScripts/IsleRefuge1/atimberwolfpup1.lua
@@ -5,71 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- -- ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 8, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 8, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/atimberwolfpup1lua b/server/SpawnScripts/IsleRefuge1/atimberwolfpup1lua
index 4c36fe41a..dd7d117c4 100755
--- a/server/SpawnScripts/IsleRefuge1/atimberwolfpup1lua
+++ b/server/SpawnScripts/IsleRefuge1/atimberwolfpup1lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
ChooseMovement(NPC)
end
@@ -32,7 +34,7 @@ function RouteOne(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 9, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteTwo(NPC, Spawn)
@@ -44,7 +46,7 @@ function RouteTwo(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, 0, "ChooseMovement")
end
function RouteThree(NPC, Spawn)
@@ -56,7 +58,7 @@ function RouteThree(NPC, Spawn)
MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X + 9, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function RouteFour(NPC, Spawn)
@@ -68,7 +70,7 @@ function RouteFour(NPC, Spawn)
MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
MovementLoopAddLocation(NPC, X - 9, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10), "ChooseMovement")
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/atriggerfish.lua b/server/SpawnScripts/IsleRefuge1/atriggerfish.lua
index 621f2e4f7..e26455a70 100755
--- a/server/SpawnScripts/IsleRefuge1/atriggerfish.lua
+++ b/server/SpawnScripts/IsleRefuge1/atriggerfish.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolf.lua b/server/SpawnScripts/IsleRefuge1/awarwolf.lua
index 08c495380..3b3466f31 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolf.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolf.lua
@@ -6,26 +6,10 @@
:
--]]
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 7
- local hp1 = 165
- local power1 = 85
- local difficulty2 = 7
- local hp2 = 195
- local power2 = 95
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolf1.lua b/server/SpawnScripts/IsleRefuge1/awarwolf1.lua
index 7f21b405d..bdbe31c1d 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolf1.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolf1.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-AddTimer(NPC, 1000, "followsentry")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1000, "followsentry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolf2.lua b/server/SpawnScripts/IsleRefuge1/awarwolf2.lua
index 0ab8494db..9f7edc4a0 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolf2.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolf2.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-AddTimer(NPC, 1000, "followsentry")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1000, "followsentry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolf3.lua b/server/SpawnScripts/IsleRefuge1/awarwolf3.lua
index ba5466e0b..1b6eda26c 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolf3.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolf3.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-AddTimer(NPC, 1000, "followsentry")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1000, "followsentry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolf4.lua b/server/SpawnScripts/IsleRefuge1/awarwolf4.lua
index f68156b30..5c0a48056 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolf4.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolf4.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-AddTimer(NPC, 1000, "followsentry")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 1000, "followsentry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolfB.lua b/server/SpawnScripts/IsleRefuge1/awarwolfB.lua
index e20c54cef..16c328a4c 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolfB.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolfB.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/IsleRefuge1/awarwolfR.lua b/server/SpawnScripts/IsleRefuge1/awarwolfR.lua
index 280975631..cecf4f018 100755
--- a/server/SpawnScripts/IsleRefuge1/awarwolfR.lua
+++ b/server/SpawnScripts/IsleRefuge1/awarwolfR.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 7
- local hp1 = 165
- local power1 = 85
- local difficulty2 = 7
- local hp2 = 195
- local power2 = 95
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, 0)
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 5, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/IsleRefuge1/evilgravestonespawner.lua b/server/SpawnScripts/IsleRefuge1/evilgravestonespawner.lua
index 139f9dfc1..cbac4d9ee 100755
--- a/server/SpawnScripts/IsleRefuge1/evilgravestonespawner.lua
+++ b/server/SpawnScripts/IsleRefuge1/evilgravestonespawner.lua
@@ -20,10 +20,18 @@ function casted_on(NPC, Spawn, Message)
RockbellyNew = SpawnByLocationID(zone,133774610)
AddTimer(NPC,2000,"Attacking",1,Spawn)
SetStepComplete(Spawn,5747,1)
+ SetAccessToEntityCommand(Spawn,NPC,"kick gravestone", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ AddTimer(NPC,30000,"Reset")
end
end
end
+function Reset(NPC)
+ SetAccessToEntityCommand(Spawn,NPC,"kick gravestone", 1)
+ SpawnSet(NPC, "show_command_icon", 1)
+end
+
function Attacking(NPC,Spawn)
local zone = GetZone(NPC)
Rockbelly = GetSpawnByLocationID(zone,133774610)
diff --git a/server/SpawnScripts/IsleRefuge1/statuewidget.lua b/server/SpawnScripts/IsleRefuge1/statuewidget.lua
index b2aed6e02..0e9c37444 100755
--- a/server/SpawnScripts/IsleRefuge1/statuewidget.lua
+++ b/server/SpawnScripts/IsleRefuge1/statuewidget.lua
@@ -16,7 +16,7 @@ function casted_on(NPC, Spawn, Message)
end
AddConversationOption(con, "Leave the statue", "CloseConversation")
if not HasQuest(Spawn, LasydiasCall) and not HasCompletedQuest(Spawn, LasydiasCall) then
- StartDialogConversation(con, 1, NPC, Spawn, "\"Lasydia - as divinely merciful as she is beautiful. Deliverer of the drowned and caretaker of the castaway.\" A feeling of purpose surrounds and penetrates you. You have a sudden desire to touch the statue.")
+ StartDialogConversation(con, 1, NPC, Spawn, "\"Lasydia - as divinely merciful as she is beautiful. Deliverer of the drowned and caretaker of the castaway.\"\n\nA feeling of purpose surrounds and penetrates you. You have a sudden desire to touch the statue.")
else
StartDialogConversation(con, 1, NPC, Spawn, "\"Lasydia - as divinely merciful as she is beautiful. Deliverer of the drowned and caretaker of the castaway.\"")
end
diff --git a/server/SpawnScripts/Kugup/Burgun.lua b/server/SpawnScripts/Kugup/Burgun.lua
new file mode 100755
index 000000000..3d613bedf
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Burgun.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Burgun.lua
+ Script Purpose : Burgun
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Fantastic! Sensational!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "You have all come very far. It is an inspiration and a testament to the strengths of our people.", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/ChiefKaorf.lua b/server/SpawnScripts/Kugup/ChiefKaorf.lua
new file mode 100755
index 000000000..7fcc2575f
--- /dev/null
+++ b/server/SpawnScripts/Kugup/ChiefKaorf.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/ChiefKaorf.lua
+ Script Purpose : Chief Kaorf
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Then bring to me the pondstone. You must be ready to fully relinquish it to me. Do not hold the stone tightly, for it is not your only way here.", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "You are a stranger to me. Prove yourself to my village, and then we shall talk.", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Of that I have no doubt. However, the time is not yet right. Take with you this talisman. With it, you will be able to return to us when you are ready and, when that time comes, perhaps we too will be ready.")
+ Dialog.AddOption("How do I get home?")
+ Dialog.AddOption("I'll see you then.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Where you first entered the village, there is a sacred portal stone. You may use it to return to your home. Depart now, friend of my people.")
+ Dialog.AddOption("I hope to see you again soon.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My greatest dream is that my people will one day be returned to our former glory. If that glory is ever to be restored, we will need great champions.")
+ Dialog.AddOption("I am a great champion.", "Dialog1")
+ Dialog.AddOption("Well, that's not me.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I see you have done much for my village and its people. I thank you.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("Is there more I can do?", "Dialog3")
+ Dialog.AddOption("I have to go.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I see you have done much for my village and its people. I thank you.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0)
+ Dialog.AddOption("Is there more I can do?", "Dialog3")
+ Dialog.AddOption("I have to go.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Kugup/Euurp.lua b/server/SpawnScripts/Kugup/Euurp.lua
new file mode 100755
index 000000000..2a76015e1
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Euurp.lua
@@ -0,0 +1,204 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Euurp.lua
+ Script Purpose : Euurp
+ Script Author : neatz09
+ Script Date : 2023.04.18
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "It seems like you're already working on something else. Come see me again when you're finished!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "I hope you remember your lessons!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1059.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog3(NPC, Spawn)
+ --Int 1
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello, friend. I am Euurp, the school teacher. We may be a small village, but we do have some youngsters and there's just so much to teach them!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1059.mp3", 0, 0)
+ Dialog.AddOption("What do you teach?", "Dialog11")
+ Dialog.AddOption("That's interesting, but I must be going.")
+ Dialog.Start()
+end
+
+function Dialog11(NPC, Spawn)
+ --Int 2
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, everything we can! Mathematics, arcane science, alchemy, even combat when they get a bit older than these children. But, one of the most important lessons is history.")
+ Dialog.AddOption("What's so interesting about history?", "Dialog14")
+ Dialog.AddOption("Hmm, school was boring enough the first time.")
+ Dialog.Start()
+end
+
+function Dialog14(NPC, Spawn)
+ --Int 3
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("History is why we are where we are. If we don't learn from history, we will surely repeat the mistakes of the past. The Froglok people have a long and fascinating history. Would you like to learn it?")
+ Dialog.AddOption("Sure, I'd like to learn the Froglok History.", "Dialog18")
+ Dialog.AddOption("No thanks, I don't have the time right now.")
+ Dialog.Start()
+end
+
+function Dialog18(NPC, Spawn)
+ --Int 4 and Quest Accept
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's great news. Here, take this tome and read it. When you are done, come back and we'll see what you've learned.")
+ Dialog.AddOption("Thanks. I'll be back as soon as I'm done!")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ --Pretest
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I see you have read the book... Do you feel like you've studied well?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1059.mp3", 0, 0)
+ Dialog.AddOption("I read it carefully.", "Dialog10")
+ Dialog.AddOption("Uh, maybe I should re-read it.")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ --Pretest Pt2
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good to hear, are you ready for the first question?")
+ Dialog.AddOption("I am ready.", "Dialog4")
+ Dialog.AddOption("Not quite yet")
+ Dialog.Start()
+end
+
+function Dialog20(NPC, Spawn)
+ --First answer correct
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Outstanding answer. Are you ready for the next question?")
+ Dialog.AddOption("I am ready.", "Dialog9")
+ Dialog.AddOption("Not quite yet.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ --Second Question Correct
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Again, excellent. Are you ready for the final question?")
+ Dialog.AddOption("I am ready.", "Dialog15")
+ Dialog.AddOption("Not quite yet.")
+ Dialog.Start()
+end
+
+function Dialog1(NPC, Spawn)
+ --Completion
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Absolutely correct! You are a quick study for one so old. You have learned our history well, and I am proud to be your teacher.")
+ Dialog.AddOption("Thank you for teaching me.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ --Failure
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmm, I believe you should review the text some more.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1059.mp3", 0, 0)
+ Dialog.AddOption("I will review the text.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ --Question: What did we rename Grobb to after the defeat of the Trolls? Answer: Gukta.
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What did we rename Grobb to after the defeat of the Trolls?")
+ Dialog.AddOption("New Guk", "Dialog7")
+ Dialog.AddOption("Frooaka", "Dialog7")
+ Dialog.AddOption("Gukta", "Dialog20") --Correct
+ Dialog.AddOption("I don't know.", "Dialog7")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ --Question: What would we frogloks rather die than do? Answer: Utilize deception.
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What would we Frogloks rather die than do?")
+ Dialog.AddOption("Fail in battle", "Dialog7")
+ Dialog.AddOption("Harm another living being", "Dialog7")
+ Dialog.AddOption("Utilize deception", "Dialog20") --Correct
+ Dialog.AddOption("I don't know.", "Dialog7")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ --Question: What did we carry into the depths of Gukta to protect our kind? Answer: Froglok eggs.
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What did we carry into the depths of Gukta to protect our kind?")
+ Dialog.AddOption("Froglok Eggs", "Dialog2") --Correct
+ Dialog.AddOption("Bug stew", "Dialog7")
+ Dialog.AddOption("The King", "Dialog7")
+ Dialog.AddOption("I don't know.", "Dialog7")
+ Dialog.Start()
+end
+
+function Dialog12(NPC, Spawn)
+ --Question: What army brought about our ruin? Answer: Rallos Zek.
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Whose army brought the Froglok people to the brink of extinction?")
+ Dialog.AddOption("Rallos Zek") --Correct
+ Dialog.AddOption("Cazic-Thule", "Dialog7")
+ Dialog.AddOption("Bristlebane", "Dialog7")
+ Dialog.AddOption("I don't know.", "Dialog7")
+ Dialog.Start()
+end
+
+function Dialog15(NPC, Spawn)
+ --Question: Whose punishment was swift and severe? Answer: The Gods'.
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Whose punishment was swift and severe?")
+ Dialog.AddOption("The Tae'Ew", "Dialog7")
+ Dialog.AddOption("The Ogres'", "Dialog7")
+ Dialog.AddOption("The Gods'", "Dialog1") --Correct
+ Dialog.AddOption("I don't know.", "Dialog7")
+ Dialog.Start()
+end
+
+ --[[ Question: Frogloks believe everyone must abide by the... Answer: Laws of the land.
+ Question: Who took us prisoner in the Feerrott? Answer: The Tae'Ew.
+ Question: What did we do to disappoint the Gods? Answer: Failed to stand our ground.
+ Question: What did the ogres fight without? Answer: Honor.
+ Question: Which race did we defeat in Grobb? Answer: Trolls.
+ Question: Where did we hide when the end was near? Answer: Deep beneath the marshes.
+ Question: What would have been far kinder than our current fate? Answer: Oblivion.
+ Question: What god watched over the froglok people for generations? Answer: Mithaniel Marr.
+ Question: What scattered those who survived the Rallosian onslaught? Answer: The Rending.
+ Question: Who did our emissaries first contact for assistance? Answer: The Overlord of Freeport. ]]--
+
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Flowers.lua b/server/SpawnScripts/Kugup/Flowers.lua
new file mode 100755
index 000000000..fd10087c4
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Flowers.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Kugup/Flowers.lua
+ Script Author : neatz09
+ Script Date : 2023.04.29 09:04:33
+ Script Purpose :
+ :
+--]]
+local ColdBloodedRelations = 5808
+
+function spawn(NPC)
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "Pick" then
+ if GetQuestStep(Spawn, ColdBloodedRelations) == 1 then
+ AddStepProgress(Spawn, ColdBloodedRelations, 1, 1)
+ Despawn(NPC)
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/FroglokTotem.lua b/server/SpawnScripts/Kugup/FroglokTotem.lua
new file mode 100755
index 000000000..3b8e3d65d
--- /dev/null
+++ b/server/SpawnScripts/Kugup/FroglokTotem.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Kugup/FroglokTotem.lua
+ Script Author : neatz09
+ Script Date : 2023.04.29 06:04:40
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, Message)
+ local Zone = GetZone(NPC)
+ local sign = 484016
+ local signloc = GetSpawnByLocationID(Zone, sign)
+ if Message == "activateportalstone" and signloc == nil then SpawnByLocationID(Zone, sign)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Froppen.lua b/server/SpawnScripts/Kugup/Froppen.lua
new file mode 100755
index 000000000..66bd6ca9d
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Froppen.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Froppen.lua
+ Script Purpose : Froppen
+ Script Author : neatz09
+ Script Date : 2023.11.23
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "You're doing great, son! I'm so proud of you!", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Frrin.lua b/server/SpawnScripts/Kugup/Frrin.lua
new file mode 100755
index 000000000..485be8747
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Frrin.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Frrin.lua
+ Script Purpose : Frrin
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Hrumph... Well, I've got plenty more anyways...", "", 0, 0, Spawn, 0) --quest
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Hey! What do you think you're doing? That's mine! Give it back!", "curse", 0, 0, Spawn, 0) --quest
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Fruppen.lua b/server/SpawnScripts/Kugup/Fruppen.lua
new file mode 100755
index 000000000..915d64138
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Fruppen.lua
@@ -0,0 +1,137 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Fruppen.lua
+ Script Purpose : Fruppen
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+local StaffingUpQuest = 5932
+
+function spawn(NPC)
+ProvidesQuest(NPC, StaffingUpQuest)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasQuest(Spawn, StaffingUpQuest) and not HasCompletedQuest(Spawn, StaffingUpQuest) then
+ Dialog5(NPC, Spawn)
+ elseif HasQuest(Spawn, StaffingUpQuest) and GetQuestStep(Spawn, StaffingUpQuest) == 2 then
+ Dialog2(NPC, Spawn)
+ else RandomGreeting(NPC, Spawn)
+end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "I can't believe I finally have a staff of my own! I can't wait to start practicing!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Woohoo! Freppen, you're my hero!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey this branch is perfect! Whoa! Thanks so much!")
+ SetStepComplete(Spawn, StaffingUpQuest, 2)
+ Dialog.AddOption("You're welcome. Practice hard!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did you find a good staff for me yet? ")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("I sure did.", "Dialog1")
+ Dialog.AddOption("Not quite yet")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Really?! I can't be a monk right now, though. My dad says I'm too little, but I still want to practice, ya know? It's just that I can't even practice.")
+ Dialog.AddOption("Why not?", "Dialog9")
+ Dialog.AddOption("You are too little.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wow! Thanks! You should be able to find a good branch on one of these trees around here. Yeah, a nice tree branch. That would work great for my first staff!")
+ Dialog.AddOption("Okay, I'll find you one.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Can you believe my big brother is such a good fighter? I sure hope I can be a monk like him someday.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0)
+ Dialog.AddOption("I bet you will be!", "Dialog3")
+ Dialog.AddOption("I suppose it's possible. I have to get going.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Can you believe my big brother is such a good fighter? I sure hope I can be a monk like him someday.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0)
+ Dialog.AddOption("I bet you will be!", "Dialog3")
+ Dialog.AddOption("I suppose it's possible. I have to get going.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Can you believe my big brother is such a good fighter? I sure hope I can be a monk like him someday.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("I bet you will be!", "Dialog3")
+ Dialog.AddOption("I suppose it's possible. I have to get going.")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Really?! I mean... You don't have to if you don't want to. Do you want to?")
+ Dialog.AddOption("Sure thing!", "StaffingUpInit")
+ Dialog.AddOption("Not really")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well... I mean... I guess I could, but I don't have a staff or anything. How am I supposed to practice without a staff?")
+ Dialog.AddOption("I could probably get you a staff to practice with.", "Dialog8")
+ Dialog.AddOption("You are too young.")
+ Dialog.Start()
+end
+
+function StaffingUpInit(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC, Spawn, StaffingUpQuest)
+ Dialog4(NPC, Spawn)
+end
+
+--function StaffingUpComplete(NPC, Spawn)
+ --SetStepComplete(Spawn, StaffingUpQuest, 2)
+--end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Grepp.lua b/server/SpawnScripts/Kugup/Grepp.lua
new file mode 100755
index 000000000..1e3a3d945
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Grepp.lua
@@ -0,0 +1,119 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Grepp.lua
+ Script Purpose : Grepp
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "I can't wait... This stew is going to be the best batch yet!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1028.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1028.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1028.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Just my luck! Everyone's hungry and my key ingredient is missing!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1028.mp3", 0, 0)
+ Dialog.AddOption("Key ingredient?", "Dialog3")
+ Dialog.AddOption("Good luck finding it.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Just my luck! Everyone's hungry and my key ingredient is missing!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1028.mp3", 0, 0)
+ Dialog.AddOption("Key ingredient?", "Dialog3")
+ Dialog.AddOption("Good luck finding it.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Sure, the key ingredient. What are you, slow or somethin'? How am I supposed to make the firefly stew without some dern fireflies?")
+ Dialog.AddOption("Firefly stew? That doesn't sound particularly appetizing.", "Dialog7")
+ Dialog.AddOption("That's your problem, not mine.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well lookie here, big ones too! This is gonna be some fantastic stew! Thanks so much!")
+ Dialog.AddOption("You are quite welcome.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well I'll be derned! Alright, here's a net, just go ahead and catch... let's see... three groups ought to be enough. Then bring 'em on back!")
+ Dialog.AddOption("I'll be back when I've caught you some fireflies.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey, how's the hunt for them tasty buggers goin?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1028.mp3", 0, 0)
+ Dialog.AddOption("I caught three groups for you.", "Dialog4")
+ Dialog.AddOption("Still hunting.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, but it is! Firefly stew is my specialty! I just don't have time to go catch any of the buggers.")
+ Dialog.AddOption("I have some time to spare. Can I help you out?", "Dialog9")
+ Dialog.AddOption("Neither do I. Good luck with the hunt!")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey, how's the hunt for them tasty buggers goin?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1028.mp3", 0, 0)
+ Dialog.AddOption("I caught three groups for you.", "Dialog4")
+ Dialog.AddOption("Still hunting.")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well of course, if yer willin'! Are ya?")
+ Dialog.AddOption("Of course.", "Dialog5")
+ Dialog.AddOption("Not really.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Kugup/GrroptheForeman.lua b/server/SpawnScripts/Kugup/GrroptheForeman.lua
new file mode 100755
index 000000000..be5df580f
--- /dev/null
+++ b/server/SpawnScripts/Kugup/GrroptheForeman.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/GrroptheForeman.lua
+ Script Purpose : Grrop the Foreman
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,10)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Sure is exhausting.", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Whew, it's break time!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "I'm sorry about that, friend. Say, if you're looking to wash that off, ol Grepp keeps a keg o' water over by his tent.", "", 0, 0, Spawn, 0) --Quest
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "Oh Frrin, calm down! Pikspoh probably just needs another crystal... Don't you have work to do, anyway?", "", 0, 0, Spawn, 0) --Quest
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "Stop goofing around, Frrin!", "", 0, 0, Spawn, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "This is hard work!", "", 0, 0, Spawn, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "Would you just look at all these rocks I have to mine?", "", 0, 0, Spawn, 0)
+ elseif choice == 8 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1016.mp3", 0, 0, Spawn)
+ elseif choice == 9 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1016.mp3", 0, 0, Spawn)
+ elseif choice == 10 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1016.mp3", 0, 0, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/MsGrupp.lua b/server/SpawnScripts/Kugup/MsGrupp.lua
new file mode 100755
index 000000000..1bd4317eb
--- /dev/null
+++ b/server/SpawnScripts/Kugup/MsGrupp.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Ms.Grupp.lua
+ Script Purpose : Ms. Grupp
+ Script Author : neatz09
+ Script Date : 2023.11.23
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Keep it up boys! You'll show those Rallosians who's boss!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Nicely done boys!", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Oemor.lua b/server/SpawnScripts/Kugup/Oemor.lua
new file mode 100755
index 000000000..a0e6f0e40
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Oemor.lua
@@ -0,0 +1,94 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Oemor.lua
+ Script Purpose : Oemor
+ Script Author : neatz09
+ Script Date : 2023.04.29
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+ local ColdBloodedRelations = 5808
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+
+ if GetQuestStep(Spawn, ColdBloodedRelations) == 2 then Dialog2(NPC, Spawn)
+ else RandomGreeting(NPC, Spawn)
+ end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,6)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Why don't you just leave me alone you dirty wordmonger... Er, sorry, you're not Teiluj... Uh, hello.", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "I am glad that we worked everything out.", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "Teiluj...", "", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1015.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1015.mp3", 0, 0, Spawn)
+ elseif choice == 6 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1015.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello there... Can I help you?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1015.mp3", 0, 0)
+ Dialog.AddOption("I brought you these flowers...")
+ Dialog.AddOption("I have to be going.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello there... Can I help you?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1015.mp3", 0, 0)
+ Dialog.AddOption("I brought you these flowers...", "Dialog5")
+ Dialog.AddOption("I have to be going.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did he tell you that? Really? Wow... Maybe I was wrong about him. If you talk to him again, please ask him to come speak with me.")
+ Dialog.AddOption("I would love to.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello there... Can I help you?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1015.mp3", 0, 0)
+ Dialog.AddOption("I brought you these flowers...", "suckafrogdick") -- highjacking this one as well to keep the quest going
+ Dialog.AddOption("I have to be going.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What? Flowers for me? From that weasel Teiluj, no doubt.")
+ Dialog.AddOption("He's not a weasel. He loves you.", "suckafrogdick")
+ Dialog.AddOption("Yeah, uh...")
+ Dialog.Start()
+end
+
+function suckafrogdick(NPC, Spawn)
+ SetStepComplete(Spawn, ColdBloodedRelations, 2)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Pikspoh.lua b/server/SpawnScripts/Kugup/Pikspoh.lua
new file mode 100755
index 000000000..45fe88ed1
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Pikspoh.lua
@@ -0,0 +1,102 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Pikspoh.lua
+ Script Purpose : Pikspoh
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "This channeling gem really packs some punch! ", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Ah, if only you weren't already helping someone else...", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1015.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1015.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1015.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, it's nothing you'd understand, I'm sure. It's just that my channeling gem seems to have cracked, so my wand is broken! Right when I was about to do some training too!")
+ Dialog.AddOption("Yikes, is there anything I can do?", "Dialog3")
+ Dialog.AddOption("That's too bad... I have to be going.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey, this is a good one! Wow, it's really yellow. This is going to make a great lightning wand.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1015.mp3", 0, 0)
+ Dialog.AddOption("I'm happy I could be of service.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmm, if you were willing to find me another channeling stone, I could fix it right up. Would you be willing to do that for me?")
+ Dialog.AddOption("Definitely!", "Dialog4")
+ Dialog.AddOption("Um... no.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wonderful! I would start by looking over by the miners to see if there are any gems in the rubble over there.")
+ Dialog.AddOption("I'm on it!")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Drat! I can't believe it! Why does something like this have to happen now, of all times?!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1015.mp3", 0, 0)
+ Dialog.AddOption("What happened?", "Dialog1")
+ Dialog.AddOption("I'm busy right now.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Drat! I can't believe it! Why does something like this have to happen now, of all times?!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1015.mp3", 0, 0)
+ Dialog.AddOption("What happened?", "Dialog1")
+ Dialog.AddOption("I'm busy right now.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Drat! I can't believe it! Why does something like this have to happen now, of all times?!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1015.mp3", 0, 0)
+ Dialog.AddOption("What happened?", "Dialog1")
+ Dialog.AddOption("I'm busy right now.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Pohpiks.lua b/server/SpawnScripts/Kugup/Pohpiks.lua
new file mode 100755
index 000000000..6d544f6ac
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Pohpiks.lua
@@ -0,0 +1,113 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Pohpiks.lua
+ Script Purpose : Pohpiks
+ Script Author : neatz09
+ Script Date : 2023.05.05
+ Script Notes :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local Trash = 5810
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Trash)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasQuest(Spawn, Trash) and not HasCompletedQuest(Spawn, Trash) then Dialog1(NPC, Spawn) else
+ RandomGreeting(NPC, Spawn)
+end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,6)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Shouldn't you get back to whatever you're working on?", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Ah! This new spell sure is powerful!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "Ready or not, here goes!", "", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1029.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1029.mp3", 0, 0, Spawn)
+ elseif choice == 6 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1029.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Huh, what do you want? Who are you? I'm very busy, can't you see?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1029.mp3", 0, 0)
+ Dialog.AddOption("What are you busy doing?", "Dialog2")
+ Dialog.AddOption("Sorry to bother you!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I am trying to perfect a new spell. I think I finally have it; I just need something to test it out on!")
+ Dialog.AddOption("Is there anything I can help with?", "Dialog4")
+ Dialog.AddOption("Oh, well I can't help you there.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Huh, what do you want? Who are you? I'm very busy, can't you see?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1029.mp3", 0, 0)
+ Dialog.AddOption("What are you busy doing?", "Dialog2")
+ Dialog.AddOption("Sorry to bother you!")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes. As a matter of fact, I believe you can. I need some suitable targets to test this spell on and, if you're willing, I think I know where to find some.")
+ Dialog.AddOption("Sure, just let me know where to look.", "TakingOuttheTrash") --Was dialog 7
+ Dialog.AddOption("I'm sort of busy. Sorry!")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Huh, what do you want? Who are you? I'm very busy, can't you see?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1029.mp3", 0, 0)
+ Dialog.AddOption("What are you busy doing?", "Dialog2")
+ Dialog.AddOption("Sorry to bother you!")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, I see all the bags are collected. Great! Now to test the spell. I'll give you a moment to stand back, just in case...")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1029.mp3", 0, 0)
+ Dialog.AddOption("Okay.")
+ Dialog.Start()
+end
+
+--[[function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Great, this should be simple. Just gather trash bags from the garbage boxes around the village and bring all the bags back over here to my target platform. Those should make a fine target!")
+ Dialog.AddOption("Eww... trash.")
+ Dialog.Start()
+end]]--
+
+function TakingOuttheTrash(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC, Spawn, Trash)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Repmuj.lua b/server/SpawnScripts/Kugup/Repmuj.lua
new file mode 100755
index 000000000..43fed5c48
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Repmuj.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Repmuj.lua
+ Script Purpose : Repmuj
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Reppoh! Give me back my ball!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Stop fooling around and gimme it Reppoh!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "REPPOH GIVE ME MY BALL!", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/SenseiGrrupin.lua b/server/SpawnScripts/Kugup/SenseiGrrupin.lua
new file mode 100755
index 000000000..0faa8c382
--- /dev/null
+++ b/server/SpawnScripts/Kugup/SenseiGrrupin.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/SenseiGrrupin.lua
+ Script Purpose : Sensei Grrupin
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,6)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Excellent work all! Froak!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "FRRRRROOOOOOOAKKK!!!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "We will never give up! Take a deep breath; we are readying to begin anew! With honor!", "", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "The Hand of Marr will always guide the faithful! Do not let yourself become distracted by what goes on around us! Concentrate!", "", 0, 0, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "Do not be discouraged by lack of success; be inspired! Every journey begins with the smallest of hops.", "", 0, 0, Spawn, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "My warriors, let us take a moment to reflect on our strengths! Together, we can overcome any obstacle.", "", 0, 0, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Teiluj.lua b/server/SpawnScripts/Kugup/Teiluj.lua
new file mode 100755
index 000000000..ff2bfad38
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Teiluj.lua
@@ -0,0 +1,134 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Teiluj.lua
+ Script Purpose : Teiluj
+ Script Author : neatz09
+ Script Date : 2023.04.29
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local ColdBloodedRelations = 5808
+function spawn(NPC)
+ ProvidesQuest(NPC, ColdBloodedRelations)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+ if not HasQuest(Spawn, ColdBloodedRelations) and not HasCompletedQuest(Spawn, ColdBloodedRelations) then
+ Dialog1(NPC, Spawn)
+ elseif HasQuest(Spawn, ColdBloodedRelations) and GetQuestStep(Spawn, ColdBloodedRelations) == 3 then
+ Dialog2(NPC, Spawn)
+ elseif HasQuest(Spawn, ColdBloodedRelations) then
+ PlayFlavor(NPC, "", "Oemor...", "", 0, 0, Spawn, 0)
+ end
+end
+
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,7)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Oemor...", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Thou art a hero for the heart.", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "Impressive display in finding the flowers. Please bestow them upon sweet Oemor for me.", "", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "Payest me a visit sometime when thou art not about another task. I have an important favor to request of thee.", "", 0, 0, Spawn, 0)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0, Spawn)
+ elseif choice == 6 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0, Spawn)
+ elseif choice == 7 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oemor, ist thou my sweet? Woe, thou be'st not Oemor. I fear she shall not desire to look upon my shameful being e'er again.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("Who is Oemor?", "Dialog7")
+ Dialog.AddOption("I don't even understand what thou just said...")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, really? She liked them, did she? She seeks my presence? How do I look? Spectacular! How is my breath? Oh, glorious day!")
+ getfrogdicksucked(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("Whoa, calm down!")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oemor, ist thou my sweet? Woe, thou be'st not Oemor. I fear she shall not desire to look upon my shameful being e'er again.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0)
+ Dialog.AddOption("Who is Oemor?", "Dialog7")
+ Dialog.AddOption("I don't even understand what thou just said...")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("'Tis merely a misunderstanding, really. She observed me with her angelic gaze hopping about, ever so innocently, with another maiden.")
+ Dialog.AddOption("Well, you need to apologize!", "Dialog8")
+ Dialog.AddOption("You pig!")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I have crafted a marvelous plan, indeed! Sweet Oemor's favorite flowers art now in bloom. I implore thee to take the pain of gathering a few and giving them to my dearest. Inform her that they are from me, then perhaps she will speak again to me!")
+ Dialog.AddOption("Great plan! I'll be back soon.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oemor, ist thou my sweet? Woe, thou be'st not Oemor. I fear she shall not desire to look upon my shameful being e'er again.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0)
+ Dialog.AddOption("Who is Oemor?", "Dialog7")
+ Dialog.AddOption("I don't even understand what thou just said...")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oemor is verily the pinnacle of beauty amongst all the Frogloks to grace Norrath. She is the light of my most humble life. My blood may run cold, but my heart burns for her. For shame, she will speakest not to me.")
+ Dialog.AddOption("What happened, pray tell?", "Dialog4")
+ Dialog.AddOption("Good luck with your crush.", "Dialog6")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("But of course! I have tried, though she refuses to grant me even the briefest audience. Perhaps thou canst assist me in mine impasse?")
+ Dialog.AddOption("Sure. What do you need me to do?", "ColdBloodedRelationsQuest") --This is where i highjacked a call function this should call dialog5
+ Dialog.AddOption("Hmm, not right now.")
+ Dialog.Start()
+end
+
+function ColdBloodedRelationsQuest(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC, Spawn, ColdBloodedRelations)
+end
+
+function getfrogdicksucked(NPC, Spawn)
+ SetStepComplete(Spawn, ColdBloodedRelations, 3)
+end
diff --git a/server/SpawnScripts/Kugup/Timrek.lua b/server/SpawnScripts/Kugup/Timrek.lua
new file mode 100755
index 000000000..d4596f6ff
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Timrek.lua
@@ -0,0 +1,229 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Timrek.lua
+ Script Purpose : Timrek
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local ThePuzzledTactician = 5930
+
+function spawn(NPC)
+ ProvidesQuest(NPC, ThePuzzledTactician)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasQuest(Spawn, ThePuzzledTactician) and not HasCompletedQuest(Spawn, ThePuzzledTactician) then
+ Dialog2(NPC, Spawn)
+ elseif HasQuest(Spawn, ThePuzzledTactician) and GetQuestStep(Spawn, ThePuzzledTactician) == 1 then
+ Dialog12(NPC, Spawn)
+ else
+ RandomGreeting(NPC, Spawn)
+end
+
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "I'm afraid my task will require your full attention. Come see me again when you're not preoccupied...", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Ahh, my mind is finally free to think about more important issues. Now, where was I?", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What order did they finish in the contest, from most to least cats eaten?")
+ Dialog.AddOption("End.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No no... that can't be it... hmm... If he ate three cats... no... no that's inconceivable.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0)
+ Dialog.AddOption("Excuse me?", "Dialog10")
+ Dialog.AddOption("Uh, you're crazy! ")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No no... that can't be it... hmm... If he ate three cats... no... no that's inconceivable.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("Excuse me?", "Dialog10")
+ Dialog.AddOption("Uh, you're crazy! ")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm, no, something seems wrong about it... ")
+ Dialog.AddOption("Reset the puzzle.", "Dialog7")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The two brothers, Krunk and Brunk, ate the most and least cats.")
+ Dialog.AddOption("Next...", "Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Barzan ate less than Brunk, but more than Vrack.")
+ Dialog.AddOption("Next...", "Dialog1")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Alright, it's reset.")
+ Dialog.AddOption("Thanks.")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Five blundering Trolls, Kraznar, Vrack, Krunk, Brunk, and Barzan, had a cat eating contest...")
+ Dialog.AddOption("Next...", "Dialog17")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No no... that can't be it... hmm... If he ate three cats... no... no that's inconceivable.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0)
+ Dialog.AddOption("Excuse me?", "Dialog10")
+ Dialog.AddOption("Uh, you're crazy! ")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, I'm very sorry. It's just that I'm so preoccupied with this logic puzzle. Why, I haven't even been able to plan any new battle tactics in weeks! This is driving me crazy!")
+ Dialog.AddOption("Battle Tactics? What are you talking about?", "Dialog16")
+ Dialog.AddOption("Yeah... Crazy...")
+ Dialog.Start()
+end
+
+function Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's a logic puzzle. If you'd like to take a crack at it, be my guest. I must warn you though, it isn't easy.")
+ Dialog.AddOption("Sure, I'll take a look.", "ThePuzzledTacticianQuest")
+ Dialog.AddOption("No thanks, I enjoy my sanity.")
+ Dialog.Start()
+end
+
+function Dialog12(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So you've had a crack at it now, eh? What do you think?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0)
+ Dialog.AddOption("Can I hear the riddle again?", "Dialog8")
+ Dialog.AddOption("I think I have it!", "Dialog13")
+ Dialog.AddOption("Reset the puzzle", "Dialog7")
+ Dialog.AddOption("Nevermind")
+ Dialog.Start()
+end
+
+function Dialog13(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Let me see here... Yes, yes I believe you've done it! This is amazing! Thank you so much, now I can finally get back to work!")
+ Dialog.AddOption("Glad I could help!")
+ Dialog.Start()
+end
+
+function Dialog14(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, you've had a crack at it now, eh? What do you think?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0)
+ Dialog.AddOption("Can I hear the riddle again?")
+ Dialog.AddOption("I think I have it!", "Dialog13")
+ Dialog.AddOption("Reset the puzzle", "Dialog7")
+ Dialog.AddOption("Nevermind")
+ Dialog.Start()
+end
+
+function Dialog15(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Alright! Here's the riddle. Once you hear it, go place the totems on the correct platforms. When you think you're finished, or you want to start over, come talk to me!")
+ Dialog.AddOption("What's the riddle?", "Dialog8")
+ Dialog.AddOption("I don't need to hear the riddle.")
+ Dialog.Start()
+end
+
+function Dialog16(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, I'm Kugup's master tactician, but lately I've just been too busy with this puzzle to formulate any new stratagems. It's really becoming a problem!")
+ Dialog.AddOption("What puzzle?", "Dialog11")
+ Dialog.AddOption("That's intriguing, but I must be going.")
+ Dialog.Start()
+end
+
+function Dialog17(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Vrack ate more than at least two other Trolls.")
+ Dialog.AddOption("Next...", "Dialog5")
+ Dialog.Start()
+end
+
+function Dialog18(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, you've had a crack at it now, eh? What do you think?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0)
+ Dialog.AddOption("Can I hear the riddle again?", "Dialog8")
+ Dialog.AddOption("I think I have it!", "Dialog4")
+ Dialog.AddOption("Reset the puzzle")
+ Dialog.AddOption("Nevermind")
+ Dialog.Start()
+end
+
+function Dialog19(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, you've had a crack at it now, eh? What do you think?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0)
+ Dialog.AddOption("Can I hear the riddle again?")
+ Dialog.AddOption("I think I have it!", "Dialog4")
+ Dialog.AddOption("Reset the puzzle")
+ Dialog.AddOption("Nevermind")
+ Dialog.Start()
+end
+
+function ThePuzzledTacticianQuest(NPC, Spawn)
+ OfferQuest(NPC, Spawn, ThePuzzledTactician)
+ Dialog15(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/TrashBox.lua b/server/SpawnScripts/Kugup/TrashBox.lua
new file mode 100755
index 000000000..b4742aef7
--- /dev/null
+++ b/server/SpawnScripts/Kugup/TrashBox.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Kugup/TrashBox.lua
+ Script Author : neatz09
+ Script Date : 2023.05.05 11:05:05
+ Script Purpose :
+ :
+--]]
+
+local TakingOuttheTrash = 5810
+local trashsack = 2558
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "Collect Trash" then
+ if GetQuestStep(Spawn, TakingOuttheTrash) == 1 then
+ if HasItem(Spawn, trashsack) then SendMessage(Spawn, "you can only carry one trash bag at a time. You must place the current trash bag on the platform before picking up another.", "White")
+else
+ SummonItem(Spawn, 2558, 1)
+ AddStepProgress(Spawn, TakingOuttheTrash, 1, 1)
+end
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/TreeBranch.lua b/server/SpawnScripts/Kugup/TreeBranch.lua
new file mode 100755
index 000000000..d781c38d4
--- /dev/null
+++ b/server/SpawnScripts/Kugup/TreeBranch.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/Kugup/TreeBranch.lua
+ Script Author : neatz09
+ Script Date : 2023.11.23 07:11:20
+ Script Purpose :
+ :
+--]]
+
+local quest = 5932
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "Break off branch" then
+ if GetQuestStep(Spawn, quest) == 1 then
+ AddStepProgress(Spawn, quest, 1, 1)
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/Vripp.lua b/server/SpawnScripts/Kugup/Vripp.lua
new file mode 100755
index 000000000..68cfdd569
--- /dev/null
+++ b/server/SpawnScripts/Kugup/Vripp.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/Vripp.lua
+ Script Purpose : Vripp
+ Script Author : neatz09
+ Script Date : 2023.05.06
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "I'm so happy to have dolly back!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "I wish you weren't busy so you could help me look for my dolly...", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1059.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1059.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1059.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You found her! Thank you so much! I told you she'd be easy to find... My dolly never goes too far!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1059.mp3", 0, 0)
+ Dialog.AddOption("I was glad to help.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, thank you! Please bring her back as soon as you can. I miss her so much!")
+ Dialog.AddOption("I'll be back as soon as I find her.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Have... have you... have you seen... my dolly?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1059.mp3", 0, 0)
+ Dialog.AddOption("What dolly?", "Dialog5")
+ Dialog.AddOption("I'm afraid not. I have to get going.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Have... have you... have you seen... my dolly?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1059.mp3", 0, 0)
+ Dialog.AddOption("What dolly?", "Dialog5")
+ Dialog.AddOption("I'm afraid not. I have to get going.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("She's just a little doll... I don't know where she, she... where she went off to... Oh won't you PLEEEASE help me find her? She must be around here somewhere.")
+ Dialog.AddOption("Sure. I would love to help you.", "Dialog2")
+ Dialog.AddOption("I don't have time to help you out right now.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Kugup/aDefenderofKugup.lua b/server/SpawnScripts/Kugup/aDefenderofKugup.lua
new file mode 100755
index 000000000..9cefed4dd
--- /dev/null
+++ b/server/SpawnScripts/Kugup/aDefenderofKugup.lua
@@ -0,0 +1,64 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/aDefenderofKugup.lua
+ Script Purpose : a Defender of Kugup
+ Script Author : neatz09
+ Script Date : 2023.04.18
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,10)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Thou be'st a stranger to this village. FrroOOOaaAk!", "yawn", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "Pardon? Pail? What dost thou mea... Ah, HAIL... Right, well...", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "I see there is still much to be done before you have earned the right to speak with the chief.", "", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "There is still plenty to do around here before the chief will speak with you.", "", 0, 0, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "We do not have time to help those who cannot help us.", "", 0, 0, Spawn, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "Dost thou need something? I pray thee, continue about thy business.", "", 0, 0, Spawn, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "Canst thou see that I am rather busy?", "", 0, 0, Spawn, 0)
+ elseif choice == 8 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1024.mp3", 0, 0, Spawn)
+ elseif choice == 9 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3", 0, 0, Spawn)
+ elseif choice == 10 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1024.mp3", 0, 0, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, I implore you to act with respect toward our people while in this village. We will be watching you, outsider.")
+ Dialog.AddOption("You don't have to worry about me.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey, I don't think I've ever seen you before! What are you doing here?")
+ Dialog.AddOption("I am investigating the village.", "Dialog1")
+ Dialog.AddOption("Nothing you need to worry about.", "Dialog1")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Kugup/aFroglokchild.lua b/server/SpawnScripts/Kugup/aFroglokchild.lua
new file mode 100755
index 000000000..05282107d
--- /dev/null
+++ b/server/SpawnScripts/Kugup/aFroglokchild.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/TheLostVillageofKugup/aFroglokchild.lua
+ Script Purpose : a Froglok child
+ Script Author : neatz09
+ Script Date : 2023.11.22
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,6)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "Hehe!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "EEeiiiiIIEE!!", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1027.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1027.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1028.mp3", 0, 0, Spawn)
+ elseif choice == 6 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1027.mp3", 0, 0, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Kugup/puzzlestones.lua b/server/SpawnScripts/Kugup/puzzlestones.lua
new file mode 100755
index 000000000..256bdfa4b
--- /dev/null
+++ b/server/SpawnScripts/Kugup/puzzlestones.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : SpawnScripts/Kugup/puzzlestones.lua
+ Script Author : neatz09
+ Script Date : 2023.11.23 02:11:03
+ Script Purpose : handles platforms you place the troll statues on in kugup
+ :
+--]]
+
+local ThePuzzledTactician = 5930
+
+function spawn(NPC)
+end
+
+function casted_on(NPC, Spawn, Message)
+ if GetSpawnLocationID(NPC) == 459555 and Message == "Examine" then
+ SendMessage(Spawn, "This is where I am supposed to place the totem for the troll who ate the least cats...", "white")
+ elseif GetSpawnLocationID(NPC) == 459554 and Message == "Examine" then
+ SendMessage(Spawn, "This is where I am supposed to place the totem for the troll who ate the fourth most cats...", "white")
+ elseif GetSpawnLocationID(NPC) == 459553 and Message == "Examine" then
+ SendMessage(Spawn, "This is where I am supposed to place the totem for the troll who ate the third most cats...", "white")
+ elseif GetSpawnLocationID(NPC) == 459552 and Message == "Examine" then
+ SendMessage(Spawn, "This is where I am supposed to place the totem for the troll who ate the second most cats...", "white")
+ elseif GetSpawnLocationID(NPC) == 459551 and Message == "Examine" then
+ SendMessage(Spawn, "This is where I am supposed to place the totem for the troll who ate the most cats...", "white")
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/Kugup/trashplatform.lua b/server/SpawnScripts/Kugup/trashplatform.lua
new file mode 100755
index 000000000..af2eb7b64
--- /dev/null
+++ b/server/SpawnScripts/Kugup/trashplatform.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/Kugup/trashplatform.lua
+ Script Author : neatz09
+ Script Date : 2023.05.06 12:05:37
+ Script Purpose : handles the proximity check for the quest "Taking Out the Trash"
+ :
+--]]
+local TakingOuttheTrash = 5810
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetQuestStep(Spawn, TakingOuttheTrash) then SendMessage(Spawn, "This is where I am supposed to place the trash...", "White")
+end
+end
+
+function LeaveRange(NPC, Spawn)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/AlanaramalZAste.lua b/server/SpawnScripts/Longshadow/AlanaramalZAste.lua
index 79a5588b6..9dedfef2d 100755
--- a/server/SpawnScripts/Longshadow/AlanaramalZAste.lua
+++ b/server/SpawnScripts/Longshadow/AlanaramalZAste.lua
@@ -5,44 +5,127 @@
Script Date : 2022.07.20
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-
require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
+
+-- Item ID's
+local ARTISAN_ESSENTIALS_VOLUME_2 = 31373
function spawn(NPC)
end
+function RandomGreeting(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1007.mp3", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1007.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1007.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1033.mp3", 0, 0, Spawn)
+ elseif choice == 5 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1033.mp3", 0, 0, Spawn)
+ end
+end
+
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
-end
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862) == 8 then
+ Dialog1(NPC,Spawn)
+ else
+ conversation = CreateConversation()
+ RandomGreeting(NPC,Spawn)
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
-
- if choice == 1 then
- PlayFlavor(NPC, "", "You have learned everything I have to teach. You are free to use our crafting facilities to hone your skills and master your craft.", "", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayFlavor(NPC, "", "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", "", 0, 0, Spawn, 0)
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ else
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in West Freeport. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
+end
-function Dialog1(NPC, Spawn)
+function dlg_39_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
+ StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
+end
+
+function Dialog1(NPC,Spawn)
+ SetStepComplete(Spawn,5862,8)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
- Dialog.AddOption("I will start on that now.")
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ Dialog.AddDialog("Welcome to the halls of The Dark Bargainers. Deals can be made here for most anything you might be searching for.")
+ RandomGreeting(NPC,Spawn)
+ Dialog.AddOption("Just looking around. As you were.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
Dialog.Start()
end
-function Dialog2(NPC, Spawn)
+function CanDo(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
- Dialog.AddOption("Yes, please teach me.", "Dialog1")
- Dialog.AddOption("No, not at the moment.")
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddDialog("Many things can be done at a tradeskill society and there are many in the city... but ours is obviously the best! Each is equipped with quality crafting stations and fuels needed to become proficient at any tradeskill class you might desire.")
+ Dialog.AddOption("Anything else I should know?", "CanDo2")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
Dialog.Start()
end
+function CanDo2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function HelpMe(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("In order to be competitive in today's marketplace, the Dark Bargainers provides you with this basic guide to commerce. You will learn many things on your own over time, so do not consider this book your only guide to success. Rely on your own resources and skills and you will prosper.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn) <2 then
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/AlderaVExxa.lua b/server/SpawnScripts/Longshadow/AlderaVExxa.lua
index 16028a87c..c26753fd8 100755
--- a/server/SpawnScripts/Longshadow/AlderaVExxa.lua
+++ b/server/SpawnScripts/Longshadow/AlderaVExxa.lua
@@ -142,7 +142,7 @@ function KoadaDalShouldPay(NPC, Spawn)
conversation = CreateConversation()
AddConversationOption(conversation, "Revenge can be sweet.", "RevengeSweet")
- StartConversation(conversation, NPC, Spawn, "And someday, they will. Remember: we are the patient ones. Though fruit may rippen off the vine, it is much tastier when picked at its ripest. So is with our opportunities for revenge. When they are ripe, we shall pluck them.")
+ StartConversation(conversation, NPC, Spawn, "And someday, they will. Remember: we are the patient ones. Though fruit may ripen off the vine, it is much tastier when picked at its ripest. So is with our opportunities for revenge. When they are ripe, we shall pluck them.")
end
function RevengeSweet(NPC, Spawn, conversation)
diff --git a/server/SpawnScripts/Longshadow/ArmsdealerTNyvez.lua b/server/SpawnScripts/Longshadow/ArmsdealerTNyvez.lua
index c3706ee5c..87432bb77 100755
--- a/server/SpawnScripts/Longshadow/ArmsdealerTNyvez.lua
+++ b/server/SpawnScripts/Longshadow/ArmsdealerTNyvez.lua
@@ -5,16 +5,46 @@
Script Date : 2008.09.29
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
-
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/weaponsmith/darkelf_weaponsmith_service_evil_1_aoi_gf_e5231875.mp3", "Don't be caught defenseless when your enemies strike. See our stock of weapons, before it's too late!", "bye", 3596090341, 1905755630, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/weaponsmith/darkelf_weaponsmith_service_evil_1_hail_gf_9d2ef5c4.mp3", "A good weapon at your side is the only real friend you'll ever have!", "agree", 2557998412, 1299746806, Spawn)
-end
\ No newline at end of file
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/weaponsmith/darkelf_weaponsmith_service_evil_1_hail_gf_de25bbfc.mp3", "The only thing separating you from death in this city are your wits. I wouldn't call that adequate protection.", "sarcasm", 3764437747, 3191922927, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/weaponsmith/darkelf_weaponsmith_service_evil_1_hail_gf_fa46b6f6.mp3", "Is there a specific way you're looking to kill someone? Disemboweling, beheading, impaling, strangulation?", "shrug", 1925778208, 2473902714, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/weaponsmith/darkelf_weaponsmith_service_evil_1_hail_gf_9d2ef5c4.mp3", "A good weapon at your side is the only real friend you'll ever have!", "agree", 2557998412, 1299746806, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/weaponsmith/darkelf_weaponsmith_service_evil_1_hail_gf_febc50f4.mp3", "We have a nice selection of previously owned weapons for those with modest funds.", "sniff", 1102225128, 1972146444, Spawn, 0)
+ end
+end
diff --git a/server/SpawnScripts/Longshadow/CaptainLNek.lua b/server/SpawnScripts/Longshadow/CaptainLNek.lua
index 1ecdcac4a..d57280b8b 100755
--- a/server/SpawnScripts/Longshadow/CaptainLNek.lua
+++ b/server/SpawnScripts/Longshadow/CaptainLNek.lua
@@ -5,7 +5,7 @@
Script Date : 2022.07.20
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
require "SpawnScripts/Generic/DialogModule"
local TheTruthisoutThere = 5684
@@ -14,44 +14,155 @@ local SilencedSpeech = 5685
function spawn(NPC)
ProvidesQuest(NPC, TheTruthisoutThere)
ProvidesQuest(NPC, SilencedSpeech)
+ SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ SetTempVariable(NPC, "CalloutTimer2", "false")
+ SetTempVariable(NPC, "CalloutTimer3", "false")
end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if CanReceiveQuest(Spawn, TheTruthisoutThere) or
+ HasCompletedQuest(Spawn, TheTruthisoutThere) and
+ CanReceiveQuest(Spawn,SilencedSpeech) then
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/captain_l_nek/fprt_hood05/100_captain_lnek_callout_c7c2fcfb.mp3", "Come closer; I've something to say to you!", "salute_freeport", 1023446507, 848958092, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer2")== "false"then
+ PlayFlavor(NPC, "voiceover/english/captain_l_nek/fprt_hood05/100_captain_lnek_multhail1_ceb19390.mp3", "Hmm ... you are clearly not ready to serve our Militia in any capacity. This is disappointing.", "sniff", 562398108, 1978987267, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer2", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer3")== "false"then
+ PlayFlavor(NPC, "voiceover/english/captain_l_nek/fprt_hood05/100_captain_lnek_multhail5_54f94dfc.mp3", "Hmm ... I am mistaken. You are not the one I seek.", "sniff", 3750262963, 2820443341, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer3", "true")
+
+ else
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ SetTempVariable(NPC, "CalloutTimer2", "false")
+ SetTempVariable(NPC, "CalloutTimer3", "false")
+ PlayFlavor(NPC, "voiceover/english/captain_l_nek/fprt_hood05/100_captain_lnek_multhail6_f7ddb289.mp3", "Ah, yes. You are the one to assist me.", "nod", 3388282438, 3532241672, Spawn, 0)
+ end
+ end
+ end
+end
+end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
function respawn(NPC)
spawn(NPC)
end
+
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, TheTruthisoutThere) and not HasCompletedQuest(Spawn, TheTruthisoutThere) then
- OfferQuest(NPC, Spawn, TheTruthisoutThere)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif not HasCompletedQuest (Spawn,SilencedSpeech)then
+ Dialog1(NPC,Spawn)
+else
+ Dialog2(NPC,Spawn)
end
- if HasCompletedQuest(Spawn, TheTruthisoutThere) then
- if not HasQuest(Spawn, SilencedSpeech) and not HasCompletedQuest(Spawn, SilencedSpeech) then
- OfferQuest(NPC, Spawn, SilencedSpeech)
- end
- end
- if GetQuestStep(Spawn, TheTruthisoutThere) == 2 then
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Imnat is such a coward. I bet he told you everything he knows...")
- Dialog.AddOption("Of course he did.")
- Dialog.Start()
- SetStepComplete(Spawn, TheTruthisoutThere, 2)
- end
- if GetQuestStep(Spawn, SilencedSpeech) == 2 then
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Thanks for your help citizen. The Freeport Militia will not forget that.")
- Dialog.AddOption("Of course.")
- Dialog.Start()
- SetStepComplete(Spawn, SilencedSpeech, 2)
- end
- RandomGreeting(NPC, Spawn)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/captain_l_nek/fprt_hood05/100_captain_lnek_multhail5_54f94dfc.mp3", "Hmm ... I am mistaken. You are not the one I seek.", "", 3750262963, 2820443341, Spawn, 0)
- end
-end
\ No newline at end of file
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It would serve you well to consider joining the militia. The militia is where the true power lies within this city.")
+ PlayFlavor(NPC, "","","agree",0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/grd_captain_lnek.mp3",730672231,3077726269)
+
+ if CanReceiveQuest(Spawn, TheTruthisoutThere) then
+ Dialog.AddOption("What's so great about the Militia?", "Dialog1a")
+ elseif GetQuestStep(Spawn, TheTruthisoutThere)==2 then
+ Dialog.AddOption("I found out the culprit is Kirs G'viz, here in Longshadow Alley.", "Dialog1b")
+ end
+
+ if CanReceiveQuest(Spawn, SilencedSpeech) then
+ Dialog.AddOption("Have the Militia dealt with the Thexian yet?", "Dialog1c")
+ elseif GetQuestStep(Spawn, SilencedSpeech)==2 then
+ Dialog.AddOption("I've found a signet ring on who I believe to be Kirs.", "Dialog2")
+ end
+
+ Dialog.AddOption("Alright! I'm going.")
+ Dialog.Start()
+end
+
+--QUEST 1
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It carries the sole burden of peace. You must have noticed how sedition has lately saturated every district of the city. A treasonous faction of bad blood, calling itself the Thexians, has been spreading lies into every street and alley, preaching the resurrection of Neriak upon the bones of Freeport. I trust you can see the villainy in such talk. We clearly need more information about these traitors. If you wish to prove your loyalty to Freeport, you will assist us.")
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/quests/captainlnek/lnek_x1_initial.mp3",1419069236,794084834)
+ Dialog.AddOption("I am willing to prove myself!", "OfferQuest1")
+ Dialog.AddOption("Don't worry. I'll see myself out.")
+ Dialog.Start()
+end
+
+
+function OfferQuest1(NPC,Spawn)
+ if CanReceiveQuest(Spawn, TheTruthisoutThere) then
+ OfferQuest(NPC, Spawn, TheTruthisoutThere)
+ end
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Really? Interesting ... I did not foresee it, and yet it makes sense. He incessantly questions us about the Militia, as if intending to join. But I see now he has merely been gathering information to use against us. He will pay for this treachery even if I have to exact the ... penalty ... myself. It will be unpleasant. As for you, there may yet be a promising career for you within our ranks.")
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/quests/captainlnek/lnek_x1_finish.mp3",3372615479,4263501678)
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ Dialog.AddOption("I look forward to proving my worth.")
+ Dialog.Start()
+ SetStepComplete(Spawn, TheTruthisoutThere, 2)
+end
+
+
+
+--QUEST 2
+
+function Dialog1c(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I regret my hands have been tied in that matter. A passel of Inquisitors is scheduled to arrive, but they could be interrogating G'Viz for weeks. I grow impatient to see our traitor under the blade of justice. Hmm ... of course, if someone else were to take care of the problem behind my back ...")
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/quests/captainlnek/lnek_x2_initial.mp3",3788373781,4065934543)
+ Dialog.AddOption("It would be a shame if something happened to this troublemaker...", "OfferQuest2")
+ Dialog.AddOption("Would you look at that? I must be going.")
+ Dialog.Start()
+end
+
+
+function OfferQuest2(NPC,Spawn)
+ if CanReceiveQuest(Spawn, SilencedSpeech) then
+ OfferQuest(NPC, Spawn, SilencedSpeech)
+ end
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm ... I seem to have found a hangnail on my thumb. Eh, who are you? What nonsense are you about? I don't waste my time chattering with the rabble. Inquisitors have arrived to interrogate an important prisoner, and I must inform them of a complication. So, unless you're here to report seditious speech, you had best be on your way, sirrah!")
+ Dialog.AddVoiceover("voiceover/english/captain_l_nek/fprt_hood05/quests/captainlnek/lnek_x2_finish.mp3",657243154,2443782081)
+ PlayFlavor(NPC, "","","sniff",0,0, Spawn)
+ Dialog.AddOption("I see... as you were.", "Dialog2a")
+ Dialog.Start()
+ if GetQuestStep(Spawn, SilencedSpeech)==2 then
+ SetStepComplete(Spawn, SilencedSpeech, 2)
+ end
+end
+
diff --git a/server/SpawnScripts/Longshadow/CizraJYax.lua b/server/SpawnScripts/Longshadow/CizraJYax.lua
index 43ca1a4d2..a8f873b79 100755
--- a/server/SpawnScripts/Longshadow/CizraJYax.lua
+++ b/server/SpawnScripts/Longshadow/CizraJYax.lua
@@ -1,12 +1,40 @@
--[[
Script Name : SpawnScripts/LongshadowAlley/CizraJYax.lua
Script Purpose : Cizra J`Yax
- Script Author : torsten
- Script Date : 2022.07.20
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Author : Dorbin
+ Script Date : 2023.10.14
+ Script Notes :
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ waypoints(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 30 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,60000,"ResetCalloutTimer")
+ Talk(NPC, Spawn)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
end
function respawn(NPC)
@@ -14,17 +42,154 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function Talk(NPC, Spawn)
+local FP_MageFaction = GetFactionAmount(Spawn, 104)
+ if FP_MageFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_hail_gf_ec2a8705.mp3", "Mindless brutes that feed on the weak make up the ranks of the Freeport Militia.", "", 3674227482, 1789009112, Spawn, 0)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_hail_gf_6ad11033.mp3", "When it comes to arcane knowledge, no one knows more about it than Arcane Scientists.", "", 458970350, 57476188, Spawn, 0)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_hail_gf_dfb5c3b3.mp3", "The Seafuries are just a bunch of ruffians that pirate ships and trade on the black market.", "", 1213807064, 3494632294, Spawn, 0)
- end
-end
\ No newline at end of file
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_hail_gf_4dd0033.mp3", "How is it any different to overprice your goods than to steal a few coin from an unsuspecting customer? Such are the ways of the Coalition of Tradefolke. Be careful if you ever deal with them.", "", 2508521854, 2690377311, Spawn)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_hail_gf_1035b801.mp3", "The Dismal Rage is such a group of pure evil, that how can they be trusted to heal anyone?", "", 3091455674, 3623617426, Spawn)
+ end
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_MageFaction = GetFactionAmount(Spawn, 104)
+ if FP_MageFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_40_gf_c38c736.mp3", "To aid the Academy of Arcane Science is to unleash the force for power that burns within us all!", "cheer", 0, 0, Spawn)
+ elseif FP_MageFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_30_gf_130c3c71.mp3", "You have helped the Academy of Arcane Science rise in power and brought some invaluable assets within these walls.", "thank", 0, 0, Spawn)
+ elseif FP_MageFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_20_gf_7b836853.mp3", "Your actions have assisted the Academy of Arcane Science in its quest for all knowledge!", "", 0, 0, Spawn)
+ elseif FP_MageFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_10_gf_5547196e.mp3", "Your actions have done well for the Academy of Arcane Science, but there is always more to know.", "nod", 0, 0, Spawn)
+ end
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -44.22, 1, -0.39, 2, 1)
+ MovementLoopAddLocation(NPC, -44.22, 1, -0.39, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -44.06, 1, -1.28, 2, 0)
+ MovementLoopAddLocation(NPC, -44.34, 1, -2.35, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -48.56, 0.81, -5.15, 2, 0)
+ MovementLoopAddLocation(NPC, -51.3, 1.01, -4.17, 2, 0)
+ MovementLoopAddLocation(NPC, -53.55, 1.99, 0.64, 2, 0)
+ MovementLoopAddLocation(NPC, -54.26, 2.44, 5.22, 2, 0)
+ MovementLoopAddLocation(NPC, -53.21, 3.05, 8.72, 2, 0)
+ MovementLoopAddLocation(NPC, -52.57, 3.63, 11.07, 2, 0)
+ MovementLoopAddLocation(NPC, -50.26, 4.14, 14.28, 2, 0)
+ MovementLoopAddLocation(NPC, -41.84, 4.1, 18.42, 2, 0)
+ MovementLoopAddLocation(NPC, -36.47, 4.53, 21.84, 2, 0)
+ MovementLoopAddLocation(NPC, -29.25, 4.31, 24.32, 2, 0)
+ MovementLoopAddLocation(NPC, -21.23, 4.3, 27.15, 2, 0)
+ MovementLoopAddLocation(NPC, -21.17, 3.96, 30.7, 2, 0)
+ MovementLoopAddLocation(NPC, -21.15, 4, 32.04, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -23.99, 4, 37.74, 2, 0)
+ MovementLoopAddLocation(NPC, -24.17, 4, 40.44, 2, 0)
+ MovementLoopAddLocation(NPC, -19.46, 4, 43.29, 2, 0)
+ MovementLoopAddLocation(NPC, -12.22, 4, 46.06, 2, 1)
+ MovementLoopAddLocation(NPC, -12.22, 4, 46.06, 2, 25,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -20.54, 4, 41.69, 2, 0)
+ MovementLoopAddLocation(NPC, -22.81, 4, 38.43, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -22.78, 4.01, 35.68, 2, 0)
+ MovementLoopAddLocation(NPC, -20.31, 3.91, 30.83, 2, 0)
+ MovementLoopAddLocation(NPC, -11.83, 3.32, 30.95, 2, 0)
+ MovementLoopAddLocation(NPC, -6.17, 3, 31, 2, 0)
+ MovementLoopAddLocation(NPC, 6.66, 2.87, 27.56, 2, 0)
+ MovementLoopAddLocation(NPC, 14.67, 1.9, 24.62, 2, 0)
+ MovementLoopAddLocation(NPC, 18.13, 1.79, 22.67, 2, 0)
+ MovementLoopAddLocation(NPC, 22.44, 1.35, 17.12, 2, 0)
+ MovementLoopAddLocation(NPC, 29.85, 0.31, 8.87, 2, 0)
+ MovementLoopAddLocation(NPC, 34.97, -0.75, 1.44, 2, 0)
+ MovementLoopAddLocation(NPC, 36.39, -1.3, -4.04, 2, 0)
+ MovementLoopAddLocation(NPC, 36.48, -1.51, -9.05, 2, 0)
+ MovementLoopAddLocation(NPC, 42.14, -1.27, -14.85, 2, 1)
+ MovementLoopAddLocation(NPC, 42.14, -1.27, -14.85, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 37.2, -1.3, -18.3, 2, 0)
+ MovementLoopAddLocation(NPC, 33.89, -1.29, -20.77, 2, 0)
+ MovementLoopAddLocation(NPC, 26.43, -1.19, -20.8, 2, 0)
+ MovementLoopAddLocation(NPC, 20.59, -0.2, -19.19, 2, 0)
+ MovementLoopAddLocation(NPC, 13.55, 0, -15.88, 2, 0)
+ MovementLoopAddLocation(NPC, 9.36, 0, -13.9, 2, 0)
+ MovementLoopAddLocation(NPC, 9.39, 0, -11.18, 2, 0)
+ MovementLoopAddLocation(NPC, 12.47, 0, -4.04, 2, 0)
+ MovementLoopAddLocation(NPC, 12.78, 0, -0.4, 2, 0)
+ MovementLoopAddLocation(NPC, 10.65, 0, 5.22, 2, 0)
+ MovementLoopAddLocation(NPC, 8.38, 0, 7.67, 2, 0)
+ MovementLoopAddLocation(NPC, 2.51, 0, 11.59, 2, 0)
+ MovementLoopAddLocation(NPC, -1.75, 0, 12.13, 2, 0)
+ MovementLoopAddLocation(NPC, -6.91, 0, 10.87, 2, 0)
+ MovementLoopAddLocation(NPC, -18.25, 0, 11.78, 2, 1)
+ MovementLoopAddLocation(NPC, -18.25, 0, 11.78, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -18.25, 0, 11.78, 2, 0)
+ MovementLoopAddLocation(NPC, -18.66, 0, 12.09, 2, 0)
+ MovementLoopAddLocation(NPC, -18.05, 0, 12.41, 2, 0)
+ MovementLoopAddLocation(NPC, -14.38, 0, 20.48, 2, 1)
+ MovementLoopAddLocation(NPC, -14.38, 0, 20.48, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -14.57, 0, 16.19, 2, 0)
+ MovementLoopAddLocation(NPC, -15.15, 0, 9.49, 2, 0)
+ MovementLoopAddLocation(NPC, -14.01, 0, -5.36, 2, 0)
+ MovementLoopAddLocation(NPC, -13.29, 0, -8.95, 2, 0)
+ MovementLoopAddLocation(NPC, -15.16, 0, -11.33, 2, 0)
+ MovementLoopAddLocation(NPC, -22.21, 0.13, -15.23, 2, 0)
+ MovementLoopAddLocation(NPC, -30, -0.05, -22.45, 2, 0)
+ MovementLoopAddLocation(NPC, -33.47, -1.01, -26.42, 2, 0)
+ MovementLoopAddLocation(NPC, -33.26, -1.66, -32.42, 2, 0)
+ MovementLoopAddLocation(NPC, -33.34, -2.09, -34.52, 2, 0)
+ MovementLoopAddLocation(NPC, -36.22, -1.91, -33.38, 2, 0)
+ MovementLoopAddLocation(NPC, -39.4, -1.16, -31.41, 2, 0)
+ MovementLoopAddLocation(NPC, -41.34, -0.64, -29.56, 2, 0)
+ MovementLoopAddLocation(NPC, -43.39, -0.35, -27.33, 2, 0)
+ MovementLoopAddLocation(NPC, -46.53, -0.93, -20.2, 2, 0)
+ MovementLoopAddLocation(NPC, -48.51, 0.3, -10.26, 2, 0)
+ MovementLoopAddLocation(NPC, -48.79, 0.73, -6.22, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -43.66, 1, -2.43, 2, 0)
+end
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380084)
+ UseWidget(door)
+end
+
+function Door2(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380077)
+ UseWidget(door)
+end
diff --git a/server/SpawnScripts/Longshadow/DBeph.lua b/server/SpawnScripts/Longshadow/DBeph.lua
index 7455105d7..e95eb8988 100755
--- a/server/SpawnScripts/Longshadow/DBeph.lua
+++ b/server/SpawnScripts/Longshadow/DBeph.lua
@@ -5,6 +5,7 @@
Script Date : 2022.07.20
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
end
@@ -14,7 +15,11 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
end
function RandomGreeting(NPC, Spawn)
diff --git a/server/SpawnScripts/Longshadow/DimalBOrin.lua b/server/SpawnScripts/Longshadow/DimalBOrin.lua
new file mode 100755
index 000000000..14ec9d5db
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/DimalBOrin.lua
@@ -0,0 +1,142 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/DimalBOrin.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 07:10:02
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,2)then
+ Garbled(NPC,Spawn)
+ --PlayFlavor(NPC,"","","shrug",0,0,Spawn)
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,2)then
+ if math.random(0,100)<40 then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ end
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380083)
+ UseWidget(door)
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "mood_angry", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -5.64, 3, 71.95, 2, 1)
+ MovementLoopAddLocation(NPC, -5.64, 3, 71.95, 2, MakeRandomInt(20,30),"Action")
+ MovementLoopAddLocation(NPC, -3.33, 3, 66.71, 2, 0)
+ MovementLoopAddLocation(NPC, -0.33, 3, 57.94, 2, 0)
+ MovementLoopAddLocation(NPC, 6.91, 3, 53.28, 2, 0)
+ MovementLoopAddLocation(NPC, 6.97, 3, 51.69, 2, 0)
+ MovementLoopAddLocation(NPC, 3.44, 3, 37.48, 2, 0)
+ MovementLoopAddLocation(NPC, 2.75, 2.98, 33.01, 2, 0)
+ MovementLoopAddLocation(NPC, 1.73, 2.98, 32.97, 2, 0)
+ MovementLoopAddLocation(NPC, -7.37, 3, 33.77, 2, 0)
+ MovementLoopAddLocation(NPC, -26.37, 4.21, 27.5, 2, 0)
+ MovementLoopAddLocation(NPC, -43.72, 4.09, 20.05, 2, 0)
+ MovementLoopAddLocation(NPC, -52.25, 4.16, 15.67, 2, 0)
+ MovementLoopAddLocation(NPC, -55.56, 4, 15.67, 2, 1)
+ MovementLoopAddLocation(NPC, -55.56, 4, 15.67, 2, MakeRandomInt(15,30),"Action")
+ MovementLoopAddLocation(NPC, -54.98, 3.8, 13.49, 2, 0)
+ MovementLoopAddLocation(NPC, -56.13, 3.02, 7.88, 2, 0)
+ MovementLoopAddLocation(NPC, -57.44, 2.32, 1.96, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, -62.04, 2.5, 1.3, 2, 0)
+ MovementLoopAddLocation(NPC, -62.88, 2.5, -0.25, 2, 1,"Door")
+ MovementLoopAddLocation(NPC, -62.88, 2.5, -0.25, 2, MakeRandomInt(15,30),"Action")
+ MovementLoopAddLocation(NPC, -62.79, 2.5, 2, 2, 1)
+ MovementLoopAddLocation(NPC, -62.79, 2.5, 2, 2, 20,"Action")
+ MovementLoopAddLocation(NPC, -61.01, 2.5, 1.46, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, -57.9, 2.4, 1.61, 2, 0,"Door")
+ MovementLoopAddLocation(NPC, -57.38, 2.31, 1.6, 2, 0)
+ MovementLoopAddLocation(NPC, -52.25, 3.58, 10.09, 2, 0)
+ MovementLoopAddLocation(NPC, -50.49, 4.19, 14.02, 2, 0)
+ MovementLoopAddLocation(NPC, -42.15, 4.05, 18.54, 2, 0)
+ MovementLoopAddLocation(NPC, -34.44, 4.42, 22.51, 2, 0)
+ MovementLoopAddLocation(NPC, -19.58, 3.92, 27.71, 2, 0)
+ MovementLoopAddLocation(NPC, -12.95, 3.4, 30.12, 2, 0)
+ MovementLoopAddLocation(NPC, -3.44, 2.97, 30.88, 2, 0)
+ MovementLoopAddLocation(NPC, 7.15, 2.82, 28.05, 2, 0)
+ MovementLoopAddLocation(NPC, 13.93, 2.16, 24.98, 2, 0)
+ MovementLoopAddLocation(NPC, 15.64, 1.86, 24.19, 2, 0)
+ MovementLoopAddLocation(NPC, 15.13, 1.94, 22.4, 2, 0)
+ MovementLoopAddLocation(NPC, 9.65, 0.67, 15.41, 2, 0)
+ MovementLoopAddLocation(NPC, 8.12, 0, 11.94, 2, 0)
+ MovementLoopAddLocation(NPC, 7.18, 0, 8.8, 2, 0)
+ MovementLoopAddLocation(NPC, 9.55, 0, 4.49, 2, 0)
+ MovementLoopAddLocation(NPC, 10.14, 0, -0.9, 2, 0)
+ MovementLoopAddLocation(NPC, 7.17, 0.04, -21.59, 2, 1)
+ MovementLoopAddLocation(NPC, 7.17, 0.04, -21.59, 2, 30,"Action")
+ MovementLoopAddLocation(NPC, 5.5, 0.04, -19.47, 2, 0)
+ MovementLoopAddLocation(NPC, -0.28, 0, -14.19, 2, 0)
+ MovementLoopAddLocation(NPC, -6.51, 0.09, -11.75, 2, 0)
+ MovementLoopAddLocation(NPC, -17.94, 0.08, -14.58, 2, 0)
+ MovementLoopAddLocation(NPC, -25.99, 0.02, -18.93, 2, 0)
+ MovementLoopAddLocation(NPC, -31.88, -0.08, -22.43, 2, 0)
+ MovementLoopAddLocation(NPC, -35.26, -1, -27.91, 2, 1)
+ MovementLoopAddLocation(NPC, -35.26, -1, -27.91, 2, MakeRandomInt(10,20),"Action")
+ MovementLoopAddLocation(NPC, -34.13, -1.02, -26.75, 2, 0)
+ MovementLoopAddLocation(NPC, -32.93, -1.73, -30.89, 2, 0)
+ MovementLoopAddLocation(NPC, -33.52, -2.14, -35.16, 2, 0)
+ MovementLoopAddLocation(NPC, -37.78, -1.63, -32.35, 2, 0)
+ MovementLoopAddLocation(NPC, -39.73, -1.15, -31.44, 2, 0)
+ MovementLoopAddLocation(NPC, -43.56, -0.39, -27.35, 2, 0)
+ MovementLoopAddLocation(NPC, -49.45, 0.24, -11.32, 2, 0)
+ MovementLoopAddLocation(NPC, -51.79, 1.71, -0.98, 2, 0)
+ MovementLoopAddLocation(NPC, -53.79, 2.48, 5.75, 2, 0)
+ MovementLoopAddLocation(NPC, -51.87, 3.73, 12.09, 2, 0)
+ MovementLoopAddLocation(NPC, -48.9, 4.06, 15.16, 2, 0)
+ MovementLoopAddLocation(NPC, -38.9, 4.37, 20.72, 2, 0)
+ MovementLoopAddLocation(NPC, -24.29, 4.31, 25.98, 2, 0)
+ MovementLoopAddLocation(NPC, -14.9, 3.45, 29.35, 2, 0)
+ MovementLoopAddLocation(NPC, -8.13, 3, 31.19, 2, 0)
+ MovementLoopAddLocation(NPC, -1.41, 2.94, 30.52, 2, 0)
+ MovementLoopAddLocation(NPC, 3.33, 3, 34.36, 2, 0)
+ MovementLoopAddLocation(NPC, 7.72, 3, 39.72, 2, 0)
+ MovementLoopAddLocation(NPC, 10.75, 3, 48.38, 2, 0)
+ MovementLoopAddLocation(NPC, 7.87, 3, 52.45, 2, 0)
+ MovementLoopAddLocation(NPC, 4.14, 3, 54.61, 2, 0)
+ MovementLoopAddLocation(NPC, 0.18, 3, 56.98, 2, 0)
+ MovementLoopAddLocation(NPC, -4.11, 3, 70.72, 2, 0)
+end
+
+
+
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/DivekLNarr.lua b/server/SpawnScripts/Longshadow/DivekLNarr.lua
index 1898ca812..cb0a8df82 100755
--- a/server/SpawnScripts/Longshadow/DivekLNarr.lua
+++ b/server/SpawnScripts/Longshadow/DivekLNarr.lua
@@ -1,10 +1,12 @@
--[[
Script Name : SpawnScripts/LongshadowAlley/DivekLNarr.lua
Script Purpose : Divek L`Narr
- Script Author : torsten
+ Script Author : torsten\\Dorbin - Added Dialog (Mostly fabricated)
Script Date : 2022.07.18
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
local DeadManEyes = 5674
@@ -17,21 +19,64 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if HasLanguage(Spawn, 2) then --Thexian
- if not HasQuest(Spawn, DeadManEyes) and not HasCompletedQuest(Spawn, DeadManEyes) then
- OfferQuest(NPC, Spawn, DeadManEyes)
- end
- if GetQuestStep(Spawn, DeadManEyes) == 2 then
- SetStepComplete(Spawn, DeadManEyes, 2)
- end
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if not HasLanguage(Spawn,2)then
+ Garbled(NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
end
- RandomGreeting(NPC, Spawn)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+function Dialog1(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Can't you see I'm busy organizing my collections of wisdom? I've no time for chatting. Leave me alone!")
+ Dialog.AddVoiceover("voiceover/english/scribe_ommanoden/qey_village02/100_scribe_ommanoden_multhail1_becd50b2.mp3", 3010394589, 1905118172)
+ Dialog.AddLanguage(2)
+ if CanReceiveQuest(Spawn, DeadManEyes) then
+ Dialog.AddOption("What are you going on about?", "Dialog2")
+ elseif GetQuestStep(Spawn, DeadManEyes) == 2 then
+ Dialog.AddOption("Here are the eyes you requested.", "Dialog5")
+ end
+ Dialog.AddOption("Perhaps you should lock your door then!")
+ Dialog.Start()
+end
- if choice == 1 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1052.mp3", 0, 0, Spawn)
- end
-end
\ No newline at end of file
+function Dialog2(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You must be offering your soul, because there is no other reason you should be pestering me while I try to avenge my brother's death. Even after four centuries, his untimely murder still haunts my waking thoughts. I MUST have answers!")
+ Dialog.AddOption("Sitting in this filth won't help. Go dig him up!", "Dialog3")
+ Dialog.AddOption("You pathetic fool. Centuries?! Get over it!")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That advice is precisely what I'd expect from a lowborn such as yourself. However, my methods are more subtle. After years of tracking down the murderer, I've concluded that his secret indeed lies within the ancient ruins of Neriak. If I can gain passage into its depths, I should be able to catch the murderer unaware and avenge my brother.")
+ Dialog.AddOption("So, crawl through the rubble and look for it rather than crying to me!", "Dialog4")
+ Dialog.AddOption("After all this time? Doubtful. You've wasted your life.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You have an impertinent manner. Still, I may be able to use you. I have applied myself to the dark arts so that I may one day channel my departed brother's spirit for further clues. There is a special reagent I need to perform the channeling ritual. If you gather it for me, you will be handsomely paid.")
+ Dialog.AddOption("Dark arts? I'm intrigued. What do you need?", "Offer")
+ Dialog.AddOption("You pathetic fool. Centuries?! Get over it!")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC, Spawn, DeadManEyes)
+end
+
+function Dialog5(NPC, Spawn)
+ SetStepComplete(Spawn, DeadManEyes, 2)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Allow me to inspect them ... yes, these will suffice. Now, take your coin and go. I must perform this ritual undisturbed. If you hear any screams, do not attempt to interfere. If you disrupt the delicate procedure, I will use you as my next source of Dead Man's Eyes. Do you understand?")
+ Dialog.AddOption("Thanks. Screams in the Alley? Sounds like a normal night to me.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/Longshadow/ImnatDVren.lua b/server/SpawnScripts/Longshadow/ImnatDVren.lua
index 4545f8b90..265738651 100755
--- a/server/SpawnScripts/Longshadow/ImnatDVren.lua
+++ b/server/SpawnScripts/Longshadow/ImnatDVren.lua
@@ -21,29 +21,118 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if HasCompletedQuest(Spawn, ADramaticPerformance) then
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if GetQuestStep(Spawn,AShadyClearing) >= 1 then
+ QuestCheck(NPC,Spawn)
+ else
+ Dialog1(NPC,Spawn)
+ end
+ end
+end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Bah! That Maliz keeps breaking everything. He's not allowed near what little furniture we have left! What do you want? Can't you see I'm busy!")
+ PlayFlavor(NPC, "","","grumble",0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/imnat_d_vren/fprt_hood05/100_std_de_male_imnat_dvren_callout_c7828a4.mp3",3649396705, 3766219054)
+ if GetQuestStep(Spawn, TheTruthisoutThere)==1 then
+ Dialog.AddOption("I'm here to investigate information for the Militia.", "Dialog2")
+ end
+ if CanReceiveQuest(Spawn, AShadyClearing) then
+ Dialog.AddOption("Maliz said that you might have some work for me?", "Dialog3")
+ end
+ Dialog.AddOption("I was just leaving.")
+ Dialog.Start()
+end
+
+function QuestCheck(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Is the way clear? The sewers must be rid of this vermin that would get in the way of our shipment!")
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ if GetQuestStep(Spawn, AShadyClearing)==2 then
+ Dialog.AddOption("The sewers should be clear enough for your delivery now.", "Dialog6")
+ else
+ Dialog.AddOption("They will be soon.")
+ end
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I wondered if the Militia would ever confront this menace. It's about time! I grow weary of all this chatter about Thexians rebuilding Neriak. Neriak is gone forever! We must forget it! Freeport is our home now. Tell your dear Captain to arrest one Kirs G'Vis who nests with his fellow Thexian vermin right here in Longshadow. He's your liar. May he face the wrath of Lucan.")
+ Dialog.AddVoiceover("voiceover/english/imnat_d_vren/fprt_hood05/quests/captainlnek/imnat_lnek_x1_initial.mp3",3046593267,1007171639)
+ PlayFlavor(NPC, "","","sniff",0,0, Spawn)
+ Dialog.AddOption("Your information is most welcome.")
+ Dialog.Start()
+ if GetQuestStep(Spawn, TheTruthisoutThere) == 1 then
+ SetStepComplete(Spawn, TheTruthisoutThere, 1)
+ end
+end
+
+ function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perhaps... I do wonder why are you so interested in helping us? It seems odd that you would put yourself in such harms way to deal with our affairs.")
+ PlayFlavor(NPC, "","","sniff",0,0, Spawn)
+ Dialog.AddOption("I'm just looking for coin. Is that too much to ask?","Dialog4")
+ Dialog.Start()
+end
+
+ function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I suppose not, and you have proved yourself so far. You have been privy to more than you know. We have been expecting a delivery of an important treasure, but you proved that the hired hands charged in protecting it could not stand up to a real challenge.")
+ PlayFlavor(NPC, "","","shrug",0,0, Spawn)
+ Dialog.AddOption("So you were using me?","Dialog5")
+ Dialog.Start()
+end
+
+ function Dialog5(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You got paid, didn't you?! We had to see if the hired goons could protect this vital delivery... We are grateful for your assistance in identifying their failure. Now, we need to be certain the deilvery can happen without hindrance. Are you willing to assist with this?")
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddOption("We've come this far. What must I do?","Offer")
+ Dialog.AddOption("I've had enough of this! Get out of my face!")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,AShadyClearing)
+end
+
+ function Dialog6(NPC,Spawn)
+ SetStepComplete(Spawn, AShadyClearing, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I trust your skills, therefore I will send word to Pavo to begin the transport of the treasure. Unfortunately, I cannot tell you anymore about the mission, but I promise that when our treasure is here, the Teir'Dal will no longer grovel before Lucan D'Lere. I may need your services later, but for now we best not speak to one another. Until then, farewell...")
+ PlayFlavor(NPC, "","","thanks",0,0, Spawn)
+ Dialog.AddOption("Fair enough. I've had enough skulking about anyways.")
+ Dialog.AddOption("Hah! Good luck with that!")
+ Dialog.Start()
+end
+
+--[[ if HasCompletedQuest(Spawn, ADramaticPerformance) then
if not HasQuest(Spawn, AShadyClearing) and not HasCompletedQuest(Spawn, AShadyClearing) then
OfferQuest(NPC, Spawn, AShadyClearing)
end
end
+
if GetQuestStep(Spawn, AShadyClearing) == 2 then
SetStepComplete(Spawn, AShadyClearing, 2)
end
+
if GetQuestStep(Spawn, TheTruthisoutThere) == 1 then
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Yes... I know something about this. Who sends you again ?")
- Dialog.AddOption("Captain L`Nek of course. Now tell me what you know!")
- Dialog.Start()
SetStepComplete(Spawn, TheTruthisoutThere, 1)
end
- RandomGreeting(NPC, Spawn)
-end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
-
- if choice == 1 then
PlayFlavor(NPC, "voiceover/english/imnat_d_vren/fprt_hood05/100_std_de_male_imnat_dvren_callout_c7828a4.mp3", "Bah! That Maliz keeps breaking everything. He's not allowed near what little furniture we have left! What do you want? Can't you see I'm busy!", "", 3649396705, 3766219054, Spawn, 0)
end
-end
\ No newline at end of file
+end]]--
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/InnkeeperTMel.lua b/server/SpawnScripts/Longshadow/InnkeeperTMel.lua
index b6645bf35..5d164e43f 100755
--- a/server/SpawnScripts/Longshadow/InnkeeperTMel.lua
+++ b/server/SpawnScripts/Longshadow/InnkeeperTMel.lua
@@ -9,42 +9,80 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_aoi_gm_523a90f5.mp3", "Ah hello there! A traveling adventurer. You're in luck, we just had a recent death... err last minute cancellation.", "bye", 2131223265, 1605898906, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 4267987983, 4115199119, Spawn, 0)
+ end
end
function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
+ local choice = MakeRandomInt(1,4)
+ FaceTarget(NPC, Spawn)
if choice == 1 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", 0, 0, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_252bf582.mp3", "Room rates are by the night not by the hour!", "scold", 1428065610, 3259602252, Spawn, 0)
elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", 0, 0, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_a81dfaee.mp3", "Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ", "stare", 2206861027, 3893730348, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", "What! What do you want?", "boggle", 1358705787, 1083758044, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_cac7726b.mp3", "Look I'm no cook, but I was going to have some fresh kidneys myself. You want me to get you a pair?", "shrug", 2253071510, 109270441, Spawn, 0)
end
- Dialog1(NPC, Spawn)
end
-function Dialog1(NPC, Spawn)
+--[[function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Hello Gaikichi, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
+ Dialog.AddDialog("Hello, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper010.mp3", 328655352, 2391913046)
Dialog.AddOption("Yes.", "Dialog9")
Dialog.AddOption("No thanks.")
Dialog.Start()
-end
+end]]--
-function Dialog9(NPC, Spawn)
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("What would you like to know?")
- Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper001.mp3", 1649814488, 96870422)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ Dialog.AddDialog("Room rates are by the night not by the hour!")
+ Dialog.AddVoiceover("voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_252bf582.mp3", 1428065610, 3259602252)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ Dialog.AddDialog("Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ")
+ Dialog.AddVoiceover("voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_a81dfaee.mp3", 2206861027, 3893730348)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ Dialog.AddDialog("What! What do you want?")
+ Dialog.AddVoiceover("voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", 1358705787, 1083758044)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ Dialog.AddDialog("Look I'm no cook, but I was going to have some fresh kidneys myself. You want me to get you a pair?")
+ Dialog.AddVoiceover("voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_cac7726b.mp3", 2253071510, 109270441)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
Dialog.AddOption("How can I place an item in my house?", "Dialog7")
Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
Dialog.AddOption("What is the marketboard for?", "Dialog6")
@@ -85,7 +123,7 @@ function Dialog2(NPC, Spawn)
Dialog.AddOption("How can I place an item in my house?", "Dialog7")
Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
Dialog.AddOption("What is the marketboard for?", "Dialog6")
- Dialog.AddOption("That’s enough for now, thanks.")
+ Dialog.AddOption("That's enough for now, thanks.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/Longshadow/InnuraeVTarris.lua b/server/SpawnScripts/Longshadow/InnuraeVTarris.lua
index 8085d347b..914f2f849 100755
--- a/server/SpawnScripts/Longshadow/InnuraeVTarris.lua
+++ b/server/SpawnScripts/Longshadow/InnuraeVTarris.lua
@@ -2,10 +2,143 @@
Script Name : SpawnScripts/Longshadow/InnuraeVTarris.lua
Script Purpose : Innurae V`Tarris
Script Author : John Adams
- Script Date : 2008.09.29
+ Script Date : 2008.09.29//Restructured completely w/ dialog mod - Dorbin 10/19/2023
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+
+function Intro(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Don't expect anything from me, young one. This place is but a mere rest stop before I move on.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae.mp3", 505131296, 528063113)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("And where, pray tell, shall you be moving on to?", "Dialog0")
+ Dialog.AddOption("Then move on, hag, and leave the space for those who can provide some use!")
+ Dialog.Start()
+end
+
+function Dialog0(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Neriak is the place of my birth, and it shall be the place of my death. While you remain here in the care of the humans, I will be home. ")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae000.mp3", 3567010242, 2488453546)
+ Dialog.AddOption("Home, what home, you foolish old woman?! Neriak was destroyed centuries ago!", "Dialog1")
+ Dialog.AddOption("Ha! While you die searching for your lost Neriak, I will be prospering and gaining power!")
+ Dialog.Start()
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, Neriak was once lost to us, but not all of us chose to debase ourselves in a contemptible union with the humans. Those of us who care about our heritage, those of us who are truly Teir`Dal, are searching for a way to return to the grace and legacy of our people. It would seem that such a way has already been found...")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae001.mp3", 4044045516, 2985844795)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("Neriak has been found?!", "Dialog2")
+ Dialog.AddOption("Wake up and accept reality! Neriak is gone!")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not entirely. The loyalists to the cause believe that they have uncovered what was once an entrance to the Foreign Quarter. However, as that portion of the city was destroyed in the siege, we may have some time left before we can find our home.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae002.mp3", 3686330680, 1121720833)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("What siege?", "Dialog3")
+ Dialog.AddOption("Who are the loyalists?","Dialog8")
+ Dialog.AddOption("How was the foreign quarter destroyed?","Dialog7")
+ Dialog.AddOption("So you found some ruins, eh? Yeah, good luck with that.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("During the age of Turmoil, Neriak was besieged by Leatherfoot Raiders. The forces of Neriak were thin, as Faydwer had deployed most of the Indigo Brotherhood. So we were unsuspecting and unprepared for such an attack. ")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae003.mp3", 4154815778, 4054614513)
+ Dialog.AddOption("So, Neriak fell to a group of halflings?", "Dialog4")
+ Dialog.AddOption("What happened in Faydwer?", "Dialog9")
+ Dialog.AddOption("I have no time to listen to this now.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("In a way, yes, but the city also fell to the greedy ambitions of a warlord king who neglected the needs of his people and soiled the legacy of his great heritage in pursuit of conquest over the refuse and swine that slithers upon the surface of this world.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae004.mp3", 2883566286, 1697596405)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("You obviously have no love for your ruler; why return to Neriak then?", "Dialog5")
+ Dialog.AddOption("I have no time to listen to this now.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("If the city has been shut out from the rest of the world and returned to its proper place of dominion in the Underfoot, then there are no longer any wasteful attempts at conquering this abominable haven of refuse, now are there?")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae005.mp3", 895354264, 3005681462)
+ Dialog.AddOption("Why are you so against conquering the surface world?", "Dialog6")
+ Dialog.AddOption("I have no time to listen to this now.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No surface campaign has proved fruitful. The Teir`Dal are the ruling force in the Underfoot. No subterranean race rivals our power and none can withstand our dominion. Besides, ownership of the surface world would be tantamount to owning a dung hill festering with maggots and flies.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae006.mp3", 1523175183, 964525033)
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
+ Dialog.AddOption("So, now that Neriak is found, you will return home?", "Dialog10")
+ Dialog.AddOption("I have no time to listen to this now.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I was very young when the siege began, but I saw the entrance collapsing as I fought in the forest with the other dragoons. It became silent as the rumbling destruction came to pass. All fighting ceased; everyone was in awe of the unexpected event. I can't be certain of what happened, exactly. All that I know is that a great force collapsed the cavern.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae007.mp3", 1084233029, 4258746911)
+ Dialog.AddOption("If Neriak has been found, will you return to it?", "Dialog10")
+ Dialog.AddOption("I have no time to listen to this now.")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The loyalists are all that is left of the Teir`Dal; all the others are traitorous whelps who only wear our dark skin and fair hair. The loyalists are dedicated to the cause of being restored to our nation.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae008.mp3", 787145551, 4172782462)
+ Dialog.AddOption("So the loyalists have been successful? Why are you still here then, woman?!", "Dialog10")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("After Neriak became shut out from the world, the forces on Faydwer began to fall. They were without reinforcement and were eventually overrun by the alliance of elves and dwarves. The folly of our war-mongering ruler was their downfall.")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae009.mp3", 762073917, 1481455239)
+ Dialog.AddOption("So, now you're going to return to the rule of this \"war-mongerer\"?", "Dialog5")
+ Dialog.AddOption("I have no time to listen to this now.")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I long for the day when I return home. While I am still here, though, I choose to educate curiosity-seekers. Would you like to know anything else?")
+ Dialog.AddVoiceover("voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae010.mp3", 852727047, 1895315430)
+ Dialog.AddOption("What about the siege?", "Dialog3")
+ Dialog.AddOption("Who are the loyalists?", "Dialog8")
+ Dialog.AddOption("How was the foreign quarter destroyed?", "Dialog7")
+ Dialog.AddOption("Not at the moment. If I need any more information, I'll be back.")
+ Dialog.Start()
+end
+
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
end
@@ -14,139 +147,10 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae.mp3", "", "", 505131296, 528063113, Spawn)
- AddConversationOption(conversation, "And where, pray tell, shall you be moving on to?", "dlg_12_1")
- AddConversationOption(conversation, "Then move on, hag, and leave the space for those who can provide some use!")
- StartConversation(conversation, NPC, Spawn, "Don't expect anything from me, young one. This place is but a mere rest stop before I move on.")
+Intro(NPC, Spawn)
end
-function dlg_12_1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae000.mp3", "", "", 3567010242, 2488453546, Spawn)
- AddConversationOption(conversation, "Home, what home, you foolish old woman?! Neriak was destroyed centuries ago!", "dlg_12_2")
- AddConversationOption(conversation, "Ha! While you die searching for your lost Neriak, I will be prospering and gaining power!")
- StartConversation(conversation, NPC, Spawn, "Neriak is the place of my birth, and it shall be the place of my death. While you remain here in the care of the humans, I will be home. ")
-end
-function dlg_12_2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae001.mp3", "", "", 4044045516, 2985844795, Spawn)
- AddConversationOption(conversation, "Neriak has been found?!", "dlg_12_3")
- AddConversationOption(conversation, "Wake up and accept reality! Neriak is gone!")
- StartConversation(conversation, NPC, Spawn, "Yes, Neriak was once lost to us, but not all of us chose to debase ourselves in a contemptible union with the humans. Those of us who care about our heritage, those of us who are truly TeirDal, are searching for a way to return to the grace and legacy of our people. It would seem that such a way has already been found...")
-end
-function dlg_12_3(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae002.mp3", "", "", 3686330680, 1121720833, Spawn)
- AddConversationOption(conversation, "What siege?", "dlg_12_4")
- AddConversationOption(conversation, "Who are the loyalists?", "dlg_12_9")
- AddConversationOption(conversation, "How was the foreign quarter destroyed?", "dlg_12_11")
- AddConversationOption(conversation, "So you found some ruins, eh? Yeah, good luck with that.")
- StartConversation(conversation, NPC, Spawn, "Not entirely. The loyalists to the cause believe that they have uncovered what was once an entrance to the Foreign Quarter. However, as that portion of the city was destroyed in the siege, we may have some time left before we can find our home.")
-end
-
-function dlg_12_4(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae003.mp3", "", "", 4154815778, 4054614513, Spawn)
- AddConversationOption(conversation, "So, Neriak fell to a group of halflings?", "dlg_12_5")
- AddConversationOption(conversation, "What happened in Faydwer?")
- AddConversationOption(conversation, "I have no time to listen to this now.")
- StartConversation(conversation, NPC, Spawn, "During the age of Turmoil, Neriak was besieged by Leatherfoot Raiders. The forces of Neriak were thin, as Faydwer had deployed most of the Indigo Brotherhood. So we were unsuspecting and unprepared for such an attack. ")
-end
-
-function dlg_12_5(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae004.mp3", "", "", 2883566286, 1697596405, Spawn)
- AddConversationOption(conversation, "You obviously have no love for your ruler; why return to Neriak then?", "dlg_12_6")
- AddConversationOption(conversation, "I have no time to listen to this now.")
- StartConversation(conversation, NPC, Spawn, "In a way, yes, but the city also fell to the greedy ambitions of a warlord king who neglected the needs of his people and soiled the legacy of his great heritage in pursuit of conquest over the refuse and swine that slithers upon the surface of this world.")
-end
-
-function dlg_12_6(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae005.mp3", "", "", 895354264, 3005681462, Spawn)
- AddConversationOption(conversation, "Why are you so against conquering the surface world?", "dlg_12_7")
- AddConversationOption(conversation, "I have no time to listen to this now.")
- StartConversation(conversation, NPC, Spawn, "If the city has been shut out from the rest of the world and returned to its proper place of dominion in the Underfoot, then there are no longer any wasteful attempts at conquering this abominable haven of refuse, now are there?")
-end
-
-function dlg_12_7(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae006.mp3", "", "", 1523175183, 964525033, Spawn)
- AddConversationOption(conversation, "So, now that Neriak is found, you will return home?", "dlg_12_8")
- AddConversationOption(conversation, "I have no time to listen to this now.")
- StartConversation(conversation, NPC, Spawn, "No surface campaign has proved fruitful. The TeirDal are the ruling force in the Underfoot. No subterranean race rivals our power and none can withstand our dominion. Besides, ownership of the surface world would be tantamount to owning a dung hill festering with maggots and flies.")
-end
-
-function dlg_12_8(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae010.mp3", "", "", 852727047, 1895315430, Spawn)
- AddConversationOption(conversation, "What about the siege?", "dlg_12_9")
- AddConversationOption(conversation, "Who are the loyalists?")
- AddConversationOption(conversation, "How was the foreign quarter destroyed?")
- AddConversationOption(conversation, "Not at the moment. If I need any more information, I'll be back.")
- StartConversation(conversation, NPC, Spawn, "I long for the day when I return home. While I am still here, though, I choose to educate curiosity-seekers. Would you like to know anything else?")
-end
-
-function dlg_12_9(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae008.mp3", "", "", 787145551, 4172782462, Spawn)
- AddConversationOption(conversation, "So the loyalists have been successful? Why are you still here then, woman?!")
- StartConversation(conversation, NPC, Spawn, "The loyalists are all that is left of the TeirDal; all the others are traitorous whelps who only wear our dark skin and fair hair. The loyalists are dedicated to the cause of being restored to our nation.")
-end
-
-function dlg_12_10(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae010.mp3", "", "", 852727047, 1895315430, Spawn)
- AddConversationOption(conversation, "What about the siege?", "dlg_12_11")
- AddConversationOption(conversation, "Who are the loyalists?")
- AddConversationOption(conversation, "How was the foreign quarter destroyed?", "dlg_12_11")
- AddConversationOption(conversation, "Not at the moment. If I need any more information, I'll be back.")
- StartConversation(conversation, NPC, Spawn, "I long for the day when I return home. While I am still here, though, I choose to educate curiosity-seekers. Would you like to know anything else?")
-end
-
-function dlg_12_11(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae007.mp3", "", "", 1084233029, 4258746911, Spawn)
- AddConversationOption(conversation, "If Neriak has been found, will you return to it?")
- AddConversationOption(conversation, "I have no time to listen to this now.")
- StartConversation(conversation, NPC, Spawn, "I was very young when the siege began, but I saw the entrance collapsing as I fought in the forest with the other dragoons. It became silent as the rumbling destruction came to pass. All fighting ceased; everyone was in awe of the unexpected event. I can't be certain of what happened, exactly. All that I know is that a great force collapsed the cavern.")
-end
-
-function dlg_12_12(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/innurae_v_tarris/fprt_hood05/quests/innuraevtarris/lore_innurae010.mp3", "", "", 852727047, 1895315430, Spawn)
- AddConversationOption(conversation, "What about the siege?", "dlg_12_13")
- AddConversationOption(conversation, "Who are the loyalists?")
- AddConversationOption(conversation, "How was the foreign quarter destroyed?")
- AddConversationOption(conversation, "Not at the moment. If I need any more information, I'll be back.")
- StartConversation(conversation, NPC, Spawn, "I long for the day when I return home. While I am still here, though, I choose to educate curiosity-seekers. Would you like to know anything else?")
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/KTolia.lua b/server/SpawnScripts/Longshadow/KTolia.lua
index ed89f2f98..3bd980581 100755
--- a/server/SpawnScripts/Longshadow/KTolia.lua
+++ b/server/SpawnScripts/Longshadow/KTolia.lua
@@ -6,23 +6,37 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+
+
+function respawn(NPC)
+ spawn(NPC)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,2)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+function Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/alchemist/darkelf_alchemist_service_evil_1_hail_gf_28ab45b2.mp3", "Poison testers, it's been my biggest seller for the past several months. Of course poison was a close second. ", "ponder", 2704427591, 1913712670, Spawn, 0)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/alchemist/darkelf_alchemist_service_evil_1_hail_gf_1cabe1c1.mp3", "I need to get some eye of griffon, a bears paw, the heart of an innocent man. That'll be tough in this city!", "confused", 1057370854, 1424712778, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/alchemist/darkelf_alchemist_service_evil_1_hail_gf_28ab45b2.mp3", "Poison testers, it's been my biggest seller for the past several months. Of course poison was a close second.", "", 2704427591, 1913712670, Spawn)
end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/KylanithDLar.lua b/server/SpawnScripts/Longshadow/KylanithDLar.lua
index a78b408b3..f54f93489 100755
--- a/server/SpawnScripts/Longshadow/KylanithDLar.lua
+++ b/server/SpawnScripts/Longshadow/KylanithDLar.lua
@@ -1,111 +1,171 @@
--[[
Script Name : SpawnScripts/Longshadow/KylanithDLar.lua
Script Purpose : Kylanith D`Lar
- Script Author : John Adams
+ Script Author : John Adams//Dorbin (Restructured w/ DialogMod & garbled 15/10/2023)
Script Date : 2008.09.29 (20.7.2022 by torsten)
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
local TheStolenArtifactsofThex = 5683
function spawn(NPC)
ProvidesQuest(NPC, TheStolenArtifactsofThex)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+ elseif not HasLanguage(Spawn,2)then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+else
+end
+end
+
+
function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- if GetQuestStep(Spawn, TheStolenArtifactsofThex) == 5 then
- FaceTarget(NPC, Spawn)
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 5)
- end
- if GetQuestStep(Spawn, TheStolenArtifactsofThex) == 7 then
- SetStepComplete(Spawn, TheStolenArtifactsofThex, 7)
- end
- if not HasQuest(Spawn, TheStolenArtifactsofThex) and not HasCompletedQuest(Spawn, TheStolenArtifactsofThex) then
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/qst_kylanith_hail.mp3", "", "", 387692981, 2731095766, Spawn)
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- AddConversationOption(conversation, "Freeport is strong! Qeynos is weak!", "dlg_10_1")
- StartConversation(conversation, NPC, Spawn, "They call this the Age of Destiny. It's the age of someone's or some empire's claim to destiny. The world is in ruins. And now here we are, in Freeport, begging for acceptance and the embrace of its mighty walls.")
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if not HasLanguage(Spawn,2)then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
else
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/qst_kylanith_hail.mp3", "", "", 387692981, 2731095766, Spawn)
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "They call this the Age of Destiny. It's the age of someone's or some empire's claim to destiny. The world is in ruins. And now here we are, in Freeport, begging for acceptance and the embrace of its mighty walls.")
- end
+ Dialog1(NPC,Spawn)
+ end
+ end
end
-function dlg_10_1(NPC, Spawn)
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_01.mp3", "", "", 1570701615, 3622138466, Spawn)
- AddConversationOption(conversation, "Careful! Do not speak the Overlord's name or we shall both die!", "dlg_10_2")
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "Qeynos or Freeport? There was no choice for my kind. The Antonicans fear the greatness of the Teir'Dal. And the Overlord? I believe he knows he cannot rule us, but better to keep an eye on us than let us claim our destiny. We only exist within Longshadow Alley by the will of the Foci, not Lucan!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("They call this the Age of Destiny. It's the age of someone's or some empire's claim to destiny. The world is in ruins. And now here we are, in Freeport, begging for acceptance and the embrace of its mighty walls.")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/qst_kylanith_hail.mp3", 387692981, 2731095766)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ if not HasQuest(Spawn, TheStolenArtifactsofThex) and not HasCompletedQuest(Spawn, TheStolenArtifactsofThex) then
+ Dialog.AddOption("Freeport is strong! Qeynos is weak!", "Dialog2")
+ elseif GetQuestStep(Spawn, TheStolenArtifactsofThex) == 5 then
+ Dialog.AddOption("I could only find four monuments.", "Dialog8")
+ elseif GetQuestStep(Spawn, TheStolenArtifactsofThex) == 7 then
+ Dialog.AddOption("I found the last monument, but it was illegible.", "Dialog9")
+ end
+ Dialog.Start()
+
end
-function dlg_10_2(NPC, Spawn)
+
+
+
+function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_02.mp3", "", "", 1956578837, 2860993398, Spawn)
- AddConversationOption(conversation, "What grandeur?", "dlg_10_3")
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "I would rather welcome death than give Lucan allegiance! To those who bask in the light, we have done little more than pose a threat to their existence. He and his puppet they call Foci will tremble when Neriak roars again! Our past grandeur shall rise again.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Qeynos or Freeport? There was no choice for my kind. The Antonicans fear the greatness of the Teir'Dal. And the Overlord? I believe he knows he cannot rule us, but better to keep an eye on us than let us claim our destiny. We only exist within Longshadow Alley by the will of the Foci, not Lucan!")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_01.mp3", 1570701615, 3622138466)
+ PlayFlavor(NPC, "","","shrug",0,0, Spawn)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("Careful! Do not speak the Overlord's name or we shall both die!", "Dialog3")
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
-function dlg_10_3(NPC, Spawn)
+function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_03.mp3", "", "", 4093915268, 1190295502, Spawn)
- AddConversationOption(conversation, "What happened to Neriak?", "dlg_10_4")
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "The grandeur of an empire that spans greater than the Shattered Lands. An empire that has existed longer than man or elf ruled these lands. All that most know of us is a city called Neriak, never knowing truth.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I would rather welcome death than give Lucan allegiance! To those who bask in the light, we have done little more than pose a threat to their existence. He and his puppet they call Foci will tremble when Neriak roars again! Our past grandeur shall rise again.")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_02.mp3", 1956578837, 2860993398)
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("What grandeur?", "Dialog4")
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
-function dlg_10_4(NPC, Spawn)
+function Dialog4(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_09.mp3", "", "", 1273569291, 3869823159, Spawn)
- AddConversationOption(conversation, "What relics?", "dlg_10_5")
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "Many say it has been consumed by the Underfoot that once sheltered it. Crushed under the weight of the falling surface as quakes rend this land asunder, creating what we now know as the Shattered Lands. We know only of the relics that remain.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The grandeur of an empire that spans greater than the Shattered Lands. An empire that has existed longer than man or elf ruled these lands. All that most know of us is a city called Neriak, never knowing truth.")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_03.mp3", 4093915268, 1190295502)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("What happened to Neriak?", "Dialog5")
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
-function dlg_10_5(NPC, Spawn)
+function Dialog5(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_10.mp3", "", "", 1404555822, 3452180553, Spawn)
- AddConversationOption(conversation, "Where can I find these relics in Freeport?", "dlg_10_6")
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "The Ashlands, or should I say, Nektulos? That was once the surface territory of the dark elf empire. It is littered with remnants of that ancient occupation. Even here in Freeport you can find dark elf artifacts.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Many say it has been consumed by the Underfoot that once sheltered it. Crushed under the weight of the falling surface as quakes rend this land asunder, creating what we now know as the Shattered Lands. We know only of the relics that remain.")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_09.mp3", 1273569291, 3869823159)
+ PlayFlavor(NPC, "","","orate",0,0, Spawn)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("What relics?", "Dialog6")
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
-function dlg_10_6(NPC, Spawn)
+
+function Dialog6(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_11.mp3", "", "", 568372124, 1694164407, Spawn)
- AddConversationOption(conversation, "I can find the five artifacts.", "dlg_10_7")
- AddConversationOption(conversation, "I cannot chat now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "Gossip is circulating that within the walls of Freeport our ancient allies have betrayed us yet again! The wretched oafs of Big Bend have claimed five artifacts of Thexian past. I must know if this is true!")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Ashlands, or should I say, Nektulos? That was once the surface territory of the dark elf empire. It is littered with remnants of that ancient occupation. Even here in Freeport you can find dark elf artifacts.")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_10.mp3", 1404555822, 3452180553)
+ Dialog.AddLanguage(2)
+ if CanReceiveQuest(Spawn,TheStolenArtifactsofThex)then
+ Dialog.AddOption("Where can I find these relics in Freeport?", "Dialog7")
+ end
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
-function dlg_10_7(NPC, Spawn)
+function Dialog7(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional1/kylanith_d_lar/language/thexian/lan_5_kylanith_x1_initial01.mp3", "", "", 2884704375, 1873644890, Spawn)
- AddConversationOption(conversation, "I will find them and report back.", "dlg_10_8")
- StartConversation(conversation, NPC, Spawn, "It is rumored that the artifacts are somewhere within Big Bend's foul-stenching streets. Some artifacts have sustained great damage. Find them for me and report their existence. ")
- OfferQuest(NPC, Spawn, TheStolenArtifactsofThex)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Gossip is circulating that within the walls of Freeport our ancient allies have betrayed us yet again! The wretched oafs of Big Bend have claimed five artifacts of Thexian past. I must know if this is true!")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_11.mp3", 568372124, 1694164407)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("I can find the five artifacts.", "Offer")
+ Dialog.AddOption("I cannot chat now. Farewell.")
+ Dialog.Start()
end
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,TheStolenArtifactsofThex)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I was afraid of that. Recent reports from fellow Thexians have placed another Thex monument being used as a grave marker within the graveyard of Freeport. Go there and seek it out. ")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/fprt_hood05/quests/kylanithdlar/kylanith_lore_12.mp3", 250824677, 1536158300)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("I shall find the gravestone.","Update7")
+ Dialog.Start()
+end
+
+function Update7(NPC,Spawn)
+ SetStepComplete(Spawn,TheStolenArtifactsofThex,5)
+end
+
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm pleased with your find. Now my fellow Thexians and I can conspire to retrieve these artifacts. No one will dare claim such things in the future, lest they encounter the wrath of the Thexians.")
+ Dialog.AddVoiceover("voiceover/english/optional1/kylanith_d_lar/language/thexian/lan_5_kylanith_x1_initial02.mp3", 3166325585, 1383277729)
+ Dialog.AddLanguage(2)
+ Dialog.AddOption("Farewell Kylanith.")
+ Dialog.Start()
+ SetStepComplete(Spawn,TheStolenArtifactsofThex,7)
+end
diff --git a/server/SpawnScripts/Longshadow/LDor.lua b/server/SpawnScripts/Longshadow/LDor.lua
index 030bb3c9c..71b08064e 100755
--- a/server/SpawnScripts/Longshadow/LDor.lua
+++ b/server/SpawnScripts/Longshadow/LDor.lua
@@ -6,29 +6,42 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- SaySomethingRandom(NPC, Spawn)
-end
-
function InRange(NPC, Spawn)
- SaySomethingRandom(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 33 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_aoi_gm_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "beckon", 1403936443, 3068231605, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
-function LeaveRange(NPC, Spawn)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 4267987983, 4115199119, Spawn, 0)
+ end
end
-function SaySomethingRandom(NPC, Spawn)
- choice = math.random(1, 3)
-
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 1302153135, 3653961458, Spawn)
elseif choice == 2 then
diff --git a/server/SpawnScripts/Longshadow/LotniKIria.lua b/server/SpawnScripts/Longshadow/LotniKIria.lua
index 8a69b7f73..1f73449a3 100755
--- a/server/SpawnScripts/Longshadow/LotniKIria.lua
+++ b/server/SpawnScripts/Longshadow/LotniKIria.lua
@@ -14,16 +14,121 @@ local MagicalRetribution = 5682
function spawn(NPC)
ProvidesQuest(NPC, TheMissingBook)
ProvidesQuest(NPC, MagicalRetribution)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if not HasCompletedQuest(Spawn, TheMissingBook) then
+ if math.random(0, 100) <= 85 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/lotni_k_iria/fprt_hood05/100_std_de_female_lotni_kiria_callout_462c415.mp3", "Another refugee... What do YOU want, peasant?", "", 1297124107, 2736745015, Spawn, 0)
+ end
+end
+end
+end
+
+
+
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, TheMissingBook) and not HasCompletedQuest(Spawn, TheMissingBook) then
- OfferQuest(NPC, Spawn, TheMissingBook)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
end
+end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The endless number of refugees who enter my home sickens me, but I doubt boarding up my door would deter people like you. Get out of my sight. I've nothing to offer you.")
+ PlayFlavor(NPC, "","","tapfoot",0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_female/fprt_hood05/std_de_female_lotni_kiria.mp3",3857109569,3713028139)
+
+ if CanReceiveQuest(Spawn, TheMissingBook) then
+ Dialog.AddOption("I didn't mean to bother you.", "Dialog1a")
+ elseif GetQuestStep(Spawn, TheMissingBook)==2 then
+ Dialog.AddOption("I found the Ratonga, but she didn't have the book.", "Dialog2")
+ end
+
+ if CanReceiveQuest(Spawn, MagicalRetribution) then
+ Dialog.AddOption("Are you still searching for your lost book?", "Dialog3")
+ end
+
+ Dialog.AddOption("Alright! I'm going.")
+ Dialog.Start()
+end
+
+--QUEST 1
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well I don't appreciate you walking into my home! Because of people like you, I can't leave out any of the precious possessions that remind me of Neriak. In fact, I lost the Fourth Book of Shadowed Mysteries. It's the last of its kind, and I'm certain an intruder took it!")
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_female/fprt_hood05/quests/lotniklria/lotni_x1_initial.mp3",679420375,3622118352)
+ Dialog.AddOption("Perhaps I could lend you a hand...", "OfferQuest1")
+ Dialog.AddOption("Don't worry. I'll see myself out.")
+ Dialog.Start()
+end
+
+
+function OfferQuest1(NPC,Spawn)
+ if CanReceiveQuest(Spawn, TheMissingBook) then
+ OfferQuest(NPC, Spawn, TheMissingBook)
+ end
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well then, did she divulge where my book is? If you are holding out on me I'll twist a dagger so far into your chest I'll...")
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddOption("She said some mage in the Sprawl made her do it.", "Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It was him! I knew it! Blast that mage! That wiry little ratonga came to me several months ago asking for training in the magical ways, and I turned him away. Shortly there after, my book went missing. I already confronted him and killed him ... AARRG!! Now I'll never get my book. Uh ... thank you for your help, I guess. ")
+ PlayFlavor(NPC, "","","frustrated",0,0, Spawn)
+ Dialog.AddOption("Oh! You killed him already? Will you still try to find it?.","Dialog3")
+ Dialog.AddOption("Good luck finding it now...")
+ Dialog.Start()
+ SetStepComplete(Spawn, TheMissingBook, 2)
+end
+
+
+--QUEST 2
+
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No. I'm convinced the ancient book is lost forever, and it was the only book salvaged from Neriak before it collapsed. But what infuriates me even more is that the book's ancient secrets spread to those ratonga in the Sprawl who make a mockery of art. ")
+ PlayFlavor(NPC, "","","no",0,0, Spawn)
+ Dialog.AddOption("Let me give these ratonga what they deserve.","OfferQuest2")
+ Dialog.AddOption("Well, perhaps you should keep a better eye on your things.")
+ Dialog.Start()
+end
+
+function OfferQuest2(NPC,Spawn)
+ if CanReceiveQuest(Spawn, MagicalRetribution) then
+ OfferQuest(NPC, Spawn, MagicalRetribution)
+ end
+end
+
+--
+--[[
if HasCompletedQuest(Spawn, TheMissingBook) then
if not HasQuest(Spawn, MagicalRetribution) and not HasCompletedQuest(Spawn, MagicalRetribution) then
OfferQuest(NPC, Spawn, MagicalRetribution)
@@ -46,7 +151,7 @@ function hailed(NPC, Spawn)
else
RandomGreeting(NPC, Spawn)
end
-end
+end]]--
function RandomGreeting(NPC, Spawn)
local choice = MakeRandomInt(1,1)
diff --git a/server/SpawnScripts/Longshadow/LynsiaTKanix.lua b/server/SpawnScripts/Longshadow/LynsiaTKanix.lua
index daed01d46..35ea8aba9 100755
--- a/server/SpawnScripts/Longshadow/LynsiaTKanix.lua
+++ b/server/SpawnScripts/Longshadow/LynsiaTKanix.lua
@@ -1,11 +1,14 @@
--[[
Script Name : SpawnScripts/Longshadow/LynsiaTKanix.lua
Script Purpose : Lynsia T'Kanix
- Script Author : John Adams
- Script Date : 2008.09.29
+ Script Author : Dorbin
+ Script Date : 2023.05.2023
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+local Fighter = 5898
+
function spawn(NPC)
end
@@ -14,10 +17,102 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The wine I serve tastes like the wines of Neriak. Ah ... how I miss drinking the fine wine of my homeland. Now, what do you want, peasant?")
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix000.mp3", 2924549472, 3132470359)
+ if HasQuest(Spawn,Fighter) and GetQuestStep(Spawn,Fighter)>=7 and GetQuestStep(Spawn,Fighter)<=97 and GetQuestStepProgress(Spawn,Fighter,9)==0 then
+ Dialog.AddOption("Guttersnipes are not welcome within Longshadow Alley. Spread the information among your patrons.","Dialog2")
+ end
+ Dialog.AddOption("I am just taking a look around. ")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm sorry, but you've mistaken me for a commoner. Now, if you want to leave my tavern in one piece, rephrase what you just said, peon.")
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix001.mp3", 680476097, 430953950)
+ Dialog.AddOption("I'm sorry. My message did not come across appropriately...","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Much better, peasant. Go ahead.")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix002.mp3", 1026399992, 3299923746)
+ Dialog.AddOption("The Overlord demands you obey his will, or your limbs are forfeit.","Dialog4")
+ Dialog.Start()
+end
+
+
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How dare you! No one speaks to me like that!")
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix003.mp3", 2477356156, 1945555715)
+ Dialog.AddOption("I could always use another set of hands...","Dialog5")
+ Dialog.AddOption("I wonder if there is a market for fresh feet...","Dialog5")
+ Dialog.AddOption("I'm sure Boomba could pickle your legs nicely...","Dialog5")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You don't scare me!")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix004.mp3", 2732968485, 3600918602)
+ Dialog.AddOption("It is not me you should be afraid of, it is defying the Overlord's will!","Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I am a Teir'Dal of high standing! You cannot threaten me!!! Get out before, you're sorry!")
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix005.mp3", 943738693, 3313629273)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
+ Dialog.AddOption("Perhaps you would rather your head be removed? I can work with that.","Dialog7")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You wouldn't dare! With all of these people around!")
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix006.mp3", 3429807310, 4260575088)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("Hmm... the head of a traitor might earn me more favor-","Dialog7a")
+ Dialog.Start()
+end
+
+function Dialog7a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "brandish", 0, 0, NPC)
+ AddTimer(NPC,1200,"Dialog8",1,Spawn)
+end
+
+function Dialog8(NPC, Spawn)
+ SetStepComplete(Spawn,Fighter,9)
+ PlayFlavor(Spawn, "", "", "feint", 0, 0, NPC)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("OKAY!! OKAY, OKAY! I'll ... I'll let everyone know ... please don't hurt me ... go ... please just go ... I'll do anything the Overlord wants, just don't hurt me...")
+ Dialog.AddVoiceover("voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix007.mp3", 1694809092, 73901509)
+ PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("Good. Have a wonderufl day.")
+ Dialog.Start()
+end
+
+
- PlayFlavor(NPC, "voiceover/english/lynsia_t_kanix/fprt_hood05/lynsiatkanix000.mp3", "", "", 2924549472, 3132470359, Spawn)
- AddConversationOption(conversation, "I am just taking a look around. ", "dlg_3_1")
- StartConversation(conversation, NPC, Spawn, "The wine I serve tastes like the wines of Neriak. Ah ... how I miss drinking the fine wine of my homeland. Now, what do you want, peasant?")
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/MalizTRaan.lua b/server/SpawnScripts/Longshadow/MalizTRaan.lua
index e5d74ccfb..c59809321 100755
--- a/server/SpawnScripts/Longshadow/MalizTRaan.lua
+++ b/server/SpawnScripts/Longshadow/MalizTRaan.lua
@@ -18,28 +18,135 @@ function respawn(NPC)
spawn(NPC)
end
+require "SpawnScripts/Generic/DialogModule"
+
+
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, TakingitOutontheRaiders) and not HasCompletedQuest(Spawn, TakingitOutontheRaiders) then
- OfferQuest(NPC, Spawn, TakingitOutontheRaiders)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn, TakingitOutontheRaiders) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, TakingitOutontheRaiders) and GetQuestStep(Spawn,TakingitOutontheRaiders) ==1 then
+ Dialog2(NPC,Spawn)
+elseif HasQuest(Spawn, TakingitOutontheRaiders) and GetQuestStep(Spawn,TakingitOutontheRaiders) ==2 then
+ Dialog1(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, ADramaticPerformance) then
+ Dialog1 (NPC,Spawn)
+elseif HasQuest(Spawn, ADramaticPerformance)and GetQuestStep(Spawn,ADramaticPerformance) ==1 then
+ Dialog4 (NPC,Spawn)
+elseif HasQuest(Spawn, ADramaticPerformance)and GetQuestStep(Spawn,ADramaticPerformance) ==2 then
+ Dialog1 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ if CanReceiveQuest(Spawn, TakingitOutontheRaiders) then
+ Dialog.AddDialog("Living in these nasty slums makes me want to smash things ... things like your pea-brained skull! Get out of my sight, fool!")
+ Dialog.AddVoiceover("voiceover/english/optional1/maliz_t_raan/fprt_hood05/100_std_de_male_maliz_traan_multhail1_eba9917.mp3",3299447227, 613482411)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddOption("Get over yourself!")
+ else
+ Dialog.AddDialog("Living in these slums is sickening! What do you want from me?")
+ Dialog.AddVoiceover("voiceover/english/optional1/maliz_t_raan/fprt_hood05/100_std_de_male_maliz_traan_callout_927f5c89.mp3",1122076255, 1993662428)
+ PlayFlavor(NPC, "", "", "pout", 0, 0, Spawn)
+ Dialog.AddOption("Nothing right now.")
end
- if HasCompletedQuest(Spawn, TakingitOutontheRaiders) then
- if not HasQuest(Spawn, ADramaticPerformance) and not HasCompletedQuest(Spawn, ADramaticPerformance) then
- OfferQuest(NPC, Spawn, ADramaticPerformance)
- end
- end
- if GetQuestStep(Spawn, TakingitOutontheRaiders) == 2 then
- SetStepComplete(Spawn, TakingitOutontheRaiders, 2)
+ if CanReceiveQuest(Spawn, TakingitOutontheRaiders) then
+ Dialog.AddOption("If you have such a problem here, then why haven't you moved out?","Dialog1a")
end
- if GetQuestStep(Spawn, ADramaticPerformance) == 2 then
- SetStepComplete(Spawn, ADramaticPerformance, 2)
+ if CanReceiveQuest(Spawn, ADramaticPerformance) then
+ Dialog.AddOption("You mentioned you had more work for me?","Dialog3b")
end
- RandomGreeting(NPC, Spawn)
+ if HasQuest(Spawn, TakingitOutontheRaiders) and GetQuestStep(Spawn,TakingitOutontheRaiders)==2 then
+ Dialog.AddOption("Have you noticed I've removed a number of raiders from the area?","Dialog3")
+ end
+ if HasQuest(Spawn, ADramaticPerformance) and GetQuestStep(Spawn,ADramaticPerformance)==2 then
+ Dialog.AddOption("[Give him Pavo's message]","Dialog5")
+ end
+ Dialog.Start()
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional1/maliz_t_raan/fprt_hood05/100_std_de_male_maliz_traan_callout_927f5c89.mp3", "Living in these slums is sickening! What do you want from me?", "", 1122076255, 1993662428, Spawn, 0)
- end
-end
\ No newline at end of file
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What kind of stupid question is that? Move where? There IS nowhere to go, fool! Neriak is gone! GONE! We're forced to live like common overlanders ... worse yet, we must live WITH them! ARRRG!!! I want to rip something apart -- like those human raiders out in the Sunken City! That would calm me down.")
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ Dialog.AddOption("If it would scilence your hollering, I will do something about it.","Offer1")
+ Dialog.AddOption("No need to shout, fool! Enjoy living in refuse!")
+ Dialog.Start()
+end
+
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, TakingitOutontheRaiders)
+end
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, ADramaticPerformance)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You didn't kill the Raiders! Return to the Sunken City and destroy them!")
+ Dialog.AddOption("Their death will come soon!")
+ Dialog.Start()
+ PlayFlavor(NPC, "", "", "frustrated", 0, 0, Spawn)
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddDialog("Oh yes. Yes. I knew you wouldn't let me down. I could just tell that about you..about you. Not like those useless raiders...untrustworthy pusses. I'll never trust them again.")
+ Dialog.AddOption("So... How about some payment?","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ SetStepComplete(Spawn, TakingitOutontheRaiders, 2)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddDialog("I suppose your skills warrent something... Here. It is not much, but I could still use your help... This incedent with the raiders has been... unsettling. I can make it worth your while in the end!")
+ Dialog.AddOption("I could be persuaded.","Dialog3b")
+ Dialog.AddOption("I'd rather tickle an orc than do more for you!")
+ Dialog.Start()
+end
+
+function Dialog3b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddDialog("You have calmed my nerves some, but my friend and I have recently been moved by a performance we witnessed earlier today. We can't shake what we've witnessed and need to express our emotions to the performers...")
+ Dialog.AddOption("I would be glad to help.","Offer2")
+ Dialog.AddOption("I'm no messanger. Find someone else.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You haven't spoken with Pavo yet, have you. I don't like to be kept waiting...")
+ Dialog.AddOption("I'm still heading that way.")
+ Dialog.Start()
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+end
+
+function Dialog5(NPC,Spawn)
+ SetStepComplete(Spawn, ADramaticPerformance, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddDialog("Good... Very good. We will certainly prepare for our next step. You, on the other hand, have proved to be quite useful. Take this, and if you're interested in more work speak to my friend here. He'll have one last opportunity for you before the 'show' reaches its climax.")
+ Dialog.AddOption("I might just do that.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Longshadow/MenderBrelslade.lua b/server/SpawnScripts/Longshadow/MenderBrelslade.lua
new file mode 100755
index 000000000..32da4b537
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/MenderBrelslade.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/MenderBrelslade.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.17 01:10:57
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ RandomGreeting(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 0, 0, Spawn, 0)
+ end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/mender/darkelf_mender_service_evil_1_hail_gm_3b60608.mp3", "I can emphatically say repairing weapons is much more reliable than buying new ones. Would I lie? ", "agree", 4144081896, 3215065022, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/mender/darkelf_mender_service_evil_1_hail_gm_96a8c8ad.mp3", "Nah, no need to buy a completely new set. I'll use some of this special solvent I have. It'll fix it up good as new!", "no", 1542332176, 1407196466, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/mender/darkelf_mender_service_evil_1_hail_gm_a2234480.mp3", "Once we're done, you'll have the strongest armor in all of the city! I guarantee it!", "wink", 2676926812, 2314515685, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/mender/darkelf_mender_service_evil_1_hail_gm_de6b9f05.mp3", "You need help fixing that pile of junk? Well it's going to cost you.", "tapfoot", 1475585177, 595941913, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/ModianKJarr.lua b/server/SpawnScripts/Longshadow/ModianKJarr.lua
index 80bc0076e..fd3041c67 100755
--- a/server/SpawnScripts/Longshadow/ModianKJarr.lua
+++ b/server/SpawnScripts/Longshadow/ModianKJarr.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/LongshadowAlley/ModianKJarr.lua
Script Purpose : Modian K`Jarr
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.23
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
@@ -10,26 +10,151 @@ require "SpawnScripts/Generic/DialogModule"
local BlindTasteTest = 5693
+local Talk = true
+
function spawn(NPC)
+ Drink(NPC)
end
+
+function Revive1(NPC,Spawn)
+ SpawnSet(NPC,"visual_state","0")
+ SpawnSet(NPC,"action_state","323")
+ SetInfoStructString(NPC, "action_state", "idle")
+ PlayFlavor (NPC,"","","resurrect",0,0)
+end
+
+function Revive2(NPC,Spawn)
+ Talk = false
+ local Lyn = GetSpawn(NPC,1380013)
+ CastSpell(Lyn,52)
+ ApplySpellVisual(NPC,23)
+end
+
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if HasQuest(Spawn, BlindTasteTest) and not HasCompletedQuest(Spawn, BlindTasteTest) then
- SetStepComplete(Spawn, BlindTasteTest, 1)
- end
- Dialog1(NPC, Spawn)
+function Drink(NPC)
+ SpawnSet(NPC,"action_state","11422")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
+ Talk = true
end
+function hailed(NPC, Spawn)
+if Talk == false then
+elseif Talk == true then
+ Dialog1(NPC, Spawn)
+end
+end
+
+
function Dialog1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+if Talk == true then
+ FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("If you couldn't tell, I'm enjoying a drink. Now that your curiousity has been sated, perhaps you'll leave me alone?")
Dialog.AddVoiceover("voiceover/english/modian_k_jarr/fprt_hood05/std_de_male_modian_kjarr.mp3", 531408061, 599233569)
- Dialog.AddOption("I guess I will.")
+ if HasQuest(Spawn, BlindTasteTest) and not HasCompletedQuest(Spawn, BlindTasteTest) then
+ Dialog.AddOption("Bartender Icebrew wants you to try some of his new batch. On the house!","Dialog2")
+ elseif HasCompletedQuest(Spawn, BlindTasteTest) then
+ Dialog.AddOption("I'm glad to see you're still upright!")
+ end
+ Dialog.AddOption("I guess I will.")
+ Dialog.Start()
+end
+end
+
+function Dialog2(NPC, Spawn)
+if Talk == true then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, he does, does he? And did he also want you to gather the belongings from my corpse after I fall over dead from drinking that poisoned drink?")
+ PlayFlavor (NPC,"","","glare",0,0)
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_male/fprt_hood06/quests/bartendericebrew/truepatron_icebrew_x2_initial.mp3", 3216795582, 3263193911)
+ Dialog.AddOption("Hardly. You seem to be a decerning type. He claims this brew should put a fire in your belly in these drafty back alleys.","Dialog3")
+ Dialog.Start()
+end
+end
+
+function Dialog3(NPC, Spawn)
+if Talk == true then
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Very well ... I built up a tolerance to poisons. I guess now's as good a time as ever to see if my training paid off. Give me the drink, peon.")
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_male/fprt_hood06/quests/bartendericebrew/truepatron_icebrew_x2_initial2.mp3", 2486720354, 1239931448)
+ PlayFlavor (NPC,"","","sniff",0,0)
+ Dialog.AddOption("[ Hand him the drink and observe ]","Dialog4")
+ Dialog.Start()
+end
+end
+
+function Dialog4(NPC,Spawn)
+if Talk == true then
+ Talk = false
+ AddTimer(NPC,6000,"Dialog4a",1,Spawn)
+ AddTimer(NPC,10000,"Eyes",1,Spawn)
+ AddTimer(NPC,13000,"Melt",1,Spawn)
+ AddTimer(NPC,19000,"Die",1,Spawn)
+ AddTimer(NPC,21500,"Die2",1,Spawn)
+ AddTimer(NPC,28000,"Dead",1,Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_male/fprt_hood06/quests/bartendericebrew/truepatron_icebrew_x2_initial.mp3", 0, 0)
+ PlayFlavor (NPC,"","","drinking_idle",0,0)
+ Dialog.AddOption("And?")
+ Dialog.Start()
+else
+ CloseConversation(NPC,Spawn)
+end
+end
+
+
+
+function Eyes(NPC,Spawn)
+ PlayFlavor (NPC,"","","scream",0,0)
+end
+
+function Melt(NPC,Spawn)
+ PlayFlavor (NPC,"","","heartattack",0,0)
+ SpawnSet(NPC,"action_state","228")
+ SetInfoStructString(NPC, "action_state", "dead")
+ SetHeading(NPC,"143.938")
+end
+
+function Die(NPC,Spawn)
+ PlayFlavor (NPC,"","","dead_enter",0,0)
+ SpawnSet(NPC,"action_state","228")
+ SetInfoStructString(NPC, "action_state", "dead")
+end
+
+function Die2(NPC,Spawn)
+ PlayFlavor (NPC,"","","dead",0,0)
+ SpawnSet(NPC,"action_state","228")
+ SetInfoStructString(NPC, "action_state", "dead")
+ SpawnSet(NPC,"visual_state","228")
+ CloseConversation(NPC,Spawn)
+end
+
+function Dead(NPC,Spawn)
+ SpawnSet(NPC,"action_state","228")
+ SetInfoStructString(NPC, "action_state", "dead")
+ AddTimer(NPC,8999,"Revive1",1)
+ AddTimer(NPC,9000,"Revive2",1)
+ AddTimer(NPC,13000,"Drink",1)
+end
+
+function Dialog4a(NPC, Spawn)
+ SetStepComplete(Spawn, BlindTasteTest, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ugh... That has to be the most disgus... AAAAAAAAAAHHHHHHH!!! MY EYES!!!!!!! I CAN'T SEE!!!! MY EYeeeessss... uuuhhhh.... ev'ry ting... goin'... blakkkkk...")
+ Dialog.AddVoiceover("voiceover/english/standard_dark_elf_male/fprt_hood06/quests/bartendericebrew/truepatron_icebrew_x2_initial3.mp3", 1185257148, 1967119934)
+ PlayFlavor (NPC,"","","gutcramp",0,0)
+ Dialog.AddOption("Well... alright then.","Continue")
Dialog.Start()
end
+function Continue(NPC,Spawn)
+end
+
+
diff --git a/server/SpawnScripts/Longshadow/NezzkaSTai.lua b/server/SpawnScripts/Longshadow/NezzkaSTai.lua
index 592fb2774..e43591b5c 100755
--- a/server/SpawnScripts/Longshadow/NezzkaSTai.lua
+++ b/server/SpawnScripts/Longshadow/NezzkaSTai.lua
@@ -6,7 +6,36 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
+
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ waypoints(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 30 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,60000,"ResetCalloutTimer")
+ Talk(NPC, Spawn)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
end
function respawn(NPC)
@@ -14,17 +43,157 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function Talk(NPC, Spawn)
+local FP_PriestFaction = GetFactionAmount(Spawn, 105 )
+ if FP_PriestFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
+end
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_b9254acf.mp3", "The words preached by the Dismal Rage bring spiritual enlightenment to the weak.", "", 116806204, 1893451787, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_30_gf_350ac522.mp3", "To realize your full potential you must drive all empathy and pity from your heart.", "", 2475957665, 3294345346, Spawn, 0)
- elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_f7ca6051.mp3", "I find it vile that our great city has entrusted its protection to a group of degenerates such as the Freeport Militia.", "", 1175835727, 2628271838, Spawn, 0)
- end
-end
\ No newline at end of file
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_5a9793ef.mp3", "The Coalition of Tradesfolke aren't capable of serving anyone other than to serve its own greed.", "", 3353210602, 2809554948, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_7abc3066.mp3", "Too often the Arcane Scientists at the academy dedicate themselves to useless knowledge that is of no use to our city.", "", 1261386119, 1368644822, Spawn)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_hail_gf_7d78cf9d.mp3", "The weak souls of the Seafury Buccaneers only cry, running to a priest when facing certain death.", "", 683812929, 1852419614, Spawn)
+ end
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_PriestFaction = GetFactionAmount(Spawn, 105 )
+ if FP_PriestFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_40_gf_c38c736.mp3", "To aid the Dismal Rage is to worship the One True God for power that binds us to this realm!", "cheer", 0, 0, Spawn)
+ elseif FP_PriestFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_30_gf_350ac522.mp3", "To realize your full potential you must drive all empathy and pity from your heart.", "", 2475957665, 3294345346, Spawn, 0)
+ elseif FP_PriestFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_arcanescientists/ft/eco/evil/darkelf_female_eco_evil_arcanescientists_20_gf_7b836853.mp3", "The ritualistic power of Dismal Rage is what gives spiritual strength to us all.", "", 0, 0, Spawn)
+ elseif FP_PriestFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_dismalrage/ft/eco/evil/darkelf_female_eco_evil_dismalrage_10_gf_1a36b724.mp3", "You must learn to release the chaos and destruction of your power.", "", 1739074440, 1700879521, Spawn)
+ end
+end
+
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -17.58, 4, 48.42, 2, 0)
+ MovementLoopAddLocation(NPC, -19.27, 4, 51.76, 2, 1)
+ MovementLoopAddLocation(NPC, -19.27, 4, 51.76, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -17.97, 4, 50.82, 2, 0)
+ MovementLoopAddLocation(NPC, -16.6, 4, 47.44, 2, 0)
+ MovementLoopAddLocation(NPC, -16.5, 4, 45.05, 2, 0)
+ MovementLoopAddLocation(NPC, -20.18, 4, 42.36, 2, 0)
+ MovementLoopAddLocation(NPC, -23.89, 4, 37.68, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -20.86, 4, 32.15, 2, 0)
+ MovementLoopAddLocation(NPC, -19.16, 3.85, 30.42, 2, 0)
+ MovementLoopAddLocation(NPC, -10.69, 3.32, 30.94, 2, 0)
+ MovementLoopAddLocation(NPC, -4.73, 2.98, 31.6, 2, 0)
+ MovementLoopAddLocation(NPC, 7.51, 2.82, 27.83, 2, 0)
+ MovementLoopAddLocation(NPC, 10.64, 2.37, 26.7, 2, 0)
+ MovementLoopAddLocation(NPC, 21.69, 2, 25.67, 2, 1)
+ MovementLoopAddLocation(NPC, 21.69, 2, 25.67, 2, 25)
+ MovementLoopAddLocation(NPC, 19.78, 1.94, 24.69, 2, 0)
+ MovementLoopAddLocation(NPC, 14.65, 1.93, 21.71, 2, 0)
+ MovementLoopAddLocation(NPC, 12.3, 1.61, 18.97, 2, 0)
+ MovementLoopAddLocation(NPC, 8.98, 0.21, 13.52, 2, 0)
+ MovementLoopAddLocation(NPC, 7.78, 0, 11.63, 2, 0)
+ MovementLoopAddLocation(NPC, 8.94, 0, 9.95, 2, 0)
+ MovementLoopAddLocation(NPC, 9.91, 0, 4.58, 2, 0)
+ MovementLoopAddLocation(NPC, 9.9, 0, -0.06, 2, 0)
+ MovementLoopAddLocation(NPC, 7.86, 0, -6.42, 2, 0)
+ MovementLoopAddLocation(NPC, 5.81, 0, -9.03, 2, 0)
+ MovementLoopAddLocation(NPC, 4.98, 0.04, -17.83, 2, 0)
+ MovementLoopAddLocation(NPC, 4.77, 0, -19.96, 2, 0)
+ MovementLoopAddLocation(NPC, 1.62, 0.01, -23.17, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, 1.35, 0.07, -26.6, 2, 0)
+ MovementLoopAddLocation(NPC, 1.87, 0, -29.56, 2, 0)
+ MovementLoopAddLocation(NPC, 2.75, 0.5, -34.66, 2, 1)
+ MovementLoopAddLocation(NPC, 2.75, 0.5, -34.66, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 2.75, 0.5, -34.66, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 1.97, 0.5, -33.56, 2, 0)
+ MovementLoopAddLocation(NPC, 1.91, 0, -28.8, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, 1.1, 0.02, -23.2, 2, 0)
+ MovementLoopAddLocation(NPC, 1.44, 0, -20.46, 2, 0)
+ MovementLoopAddLocation(NPC, -0.15, 0, -13.64, 2, 0)
+ MovementLoopAddLocation(NPC, -5.55, 0.06, -9.1, 2, 0)
+ MovementLoopAddLocation(NPC, -9.98, 0, -2.89, 2, 0)
+ MovementLoopAddLocation(NPC, -12.2, 0, 3.45, 2, 0)
+ MovementLoopAddLocation(NPC, -9.07, 0, 8.46, 2, 0)
+ MovementLoopAddLocation(NPC, -6.32, 0, 9.62, 2, 0)
+ MovementLoopAddLocation(NPC, 2.27, 0, 16.46, 2, 1)
+ MovementLoopAddLocation(NPC, 2.27, 0, 16.46, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 2.78, 0, 14.67, 2, 0)
+ MovementLoopAddLocation(NPC, 7.04, 0, 11.89, 2, 0)
+ MovementLoopAddLocation(NPC, 8.92, 0, 12.92, 2, 0)
+ MovementLoopAddLocation(NPC, 12, 1.29, 17.65, 2, 0)
+ MovementLoopAddLocation(NPC, 16, 1.89, 22.81, 2, 0)
+ MovementLoopAddLocation(NPC, 18.33, 2, 26.69, 2, 2,"Door3")
+ MovementLoopAddLocation(NPC, 21.06, 2, 31.22, 2, 0)
+ MovementLoopAddLocation(NPC, 20.32, 2, 35.2, 2, 0)
+ MovementLoopAddLocation(NPC, 23, 2, 39.13, 2, 0)
+ MovementLoopAddLocation(NPC, 31.78, 2, 41.93, 2, 1)
+ MovementLoopAddLocation(NPC, 31.78, 2, 41.93, 2, MakeRandomInt(45,50),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 28.44, 2, 40.49, 2, 0)
+ MovementLoopAddLocation(NPC, 22.3, 2.01, 37.85, 2, 0)
+ MovementLoopAddLocation(NPC, 20.22, 2, 35.71, 2, 0)
+ MovementLoopAddLocation(NPC, 20.85, 2, 31.38, 2, 2,"Door3")
+ MovementLoopAddLocation(NPC, 17.58, 1.95, 25.93, 2, 0)
+ MovementLoopAddLocation(NPC, 10.41, 2.44, 28.9, 2, 0)
+ MovementLoopAddLocation(NPC, -4.01, 2.98, 33.42, 2, 0)
+ MovementLoopAddLocation(NPC, -11.76, 3.31, 33.18, 2, 0)
+ MovementLoopAddLocation(NPC, -18.85, 3.88, 31.26, 2, 0)
+ MovementLoopAddLocation(NPC, -20.07, 3.99, 31.85, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -24.17, 4, 37.47, 2, 0)
+ MovementLoopAddLocation(NPC, -23.56, 4, 38.14, 2, 0)
+ MovementLoopAddLocation(NPC, -19.03, 4, 40.77, 2, 0)
+ MovementLoopAddLocation(NPC, -15.73, 4, 43.98, 2, 0)
+end
+
+
+
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380077)
+ UseWidget(door)
+end
+
+function Door2(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380085)
+ UseWidget(door)
+end
+
+function Door3(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380075)
+ UseWidget(door)
+end
diff --git a/server/SpawnScripts/Longshadow/OlakUSom.lua b/server/SpawnScripts/Longshadow/OlakUSom.lua
new file mode 100755
index 000000000..0f906dcfd
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/OlakUSom.lua
@@ -0,0 +1,67 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/OlakUSom.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 07:10:17
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcology2Callout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -15.77, 0, -7.45, 2, 1)
+ MovementLoopAddLocation(NPC, -15.77, 0, -7.45, 2, MakeRandomInt(20,26),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -15.77, 0, -7.45, 2, 0)
+ MovementLoopAddLocation(NPC, -15.96, 0, -4.97, 2, 0)
+ MovementLoopAddLocation(NPC, -17.96, 0, -5.2, 2, 0)
+ MovementLoopAddLocation(NPC, -21.07, 0, -5.9, 2, 0)
+ MovementLoopAddLocation(NPC, -23.78, 0.08, -7.25, 2, 0)
+ MovementLoopAddLocation(NPC, -31.26, 0, -12.25, 2, 1)
+ MovementLoopAddLocation(NPC, -31.26, 0, -12.25, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -35.52, 0.05, -12.02, 2, 0)
+ MovementLoopAddLocation(NPC, -39.33, 0.2, -10.93, 2, 0)
+ MovementLoopAddLocation(NPC, -44.5, 0, -13.48, 2, 0)
+ MovementLoopAddLocation(NPC, -46.24, -0.64, -15.85, 2, 0)
+ MovementLoopAddLocation(NPC, -46.96, -0.93, -20.44, 2, 0)
+ MovementLoopAddLocation(NPC, -47.48, -0.21, -28.54, 2, 1)
+ MovementLoopAddLocation(NPC, -47.48, -0.21, -28.54, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -44.14, -0.57, -30.69, 2, 0)
+ MovementLoopAddLocation(NPC, -39.76, -1.21, -33.11, 2, 0)
+ MovementLoopAddLocation(NPC, -34.21, -2.07, -34.4, 2, 0)
+ MovementLoopAddLocation(NPC, -31.17, -3, -42.45, 2, 1)
+ MovementLoopAddLocation(NPC, -31.17, -3, -42.45, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -32.31, -3, -40.65, 2, 0)
+ MovementLoopAddLocation(NPC, -33.06, -2.76, -39.24, 2, 0)
+ MovementLoopAddLocation(NPC, -31.78, -2.14, -35.15, 2, 0)
+ MovementLoopAddLocation(NPC, -31.96, -1.17, -28.79, 2, 0)
+ MovementLoopAddLocation(NPC, -31.58, -0.55, -25.58, 2, 0)
+ MovementLoopAddLocation(NPC, -29.57, -0.05, -23.33, 2, 0)
+ MovementLoopAddLocation(NPC, -28.34, 0, -21.35, 2, 0)
+ MovementLoopAddLocation(NPC, -23.8, 0.09, -17.63, 2, 0)
+ MovementLoopAddLocation(NPC, -19.14, 0.06, -15.57, 2, 0)
+ MovementLoopAddLocation(NPC, -12.06, 0, -11.36, 2, 0)
+ MovementLoopAddLocation(NPC, -11.38, 0, -6.1, 2, 0)
+ MovementLoopAddLocation(NPC, -9.27, 0, 4.63, 2, 1)
+ MovementLoopAddLocation(NPC, -9.27, 0, 4.63, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -13.31, 0, -1.98, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/Longshadow/OrianDRak.lua b/server/SpawnScripts/Longshadow/OrianDRak.lua
index 0c44eba77..fe06a29cd 100755
--- a/server/SpawnScripts/Longshadow/OrianDRak.lua
+++ b/server/SpawnScripts/Longshadow/OrianDRak.lua
@@ -5,6 +5,7 @@
Script Date : 2022.07.18
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local OgreWatch = 5676
local InformationGatheringFromaFishmonger = 5677
@@ -12,39 +13,154 @@ local InformationGatheringFromaFishmonger = 5677
function spawn(NPC)
ProvidesQuest(NPC, OgreWatch)
ProvidesQuest(NPC, InformationGatheringFromaFishmonger)
+ SetPlayerProximityFunction(NPC, 11, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if not HasQuest(Spawn, OgreWatch) and not HasCompletedQuest(Spawn, OgreWatch) then
- OfferQuest(NPC, Spawn, OgreWatch)
- end
- if HasCompletedQuest(Spawn, OgreWatch) then
- if not HasQuest(Spawn, InformationGatheringFromaFishmonger) and not HasCompletedQuest(Spawn, InformationGatheringFromaFishmonger) then
- OfferQuest(NPC, Spawn, InformationGatheringFromaFishmonger)
+
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if not HasCompletedQuest(Spawn, OgreWatch) and not HasQuest(Spawn, OgreWatch) then
+ if MakeRandomInt(0, 100) <= 100 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "How dare you barge into my house! Who do you think you are, fool?", "frustrated", 0, 0, Spawn, 0)
+ end
+ elseif HasCompletedQuest(Spawn, OgreWatch) and not HasCompletedQuest(Spawn, InformationGatheringFromaFishmonger) and not HasQuest(Spawn, InformationGatheringFromaFishmonger) then
+ if MakeRandomInt(0, 100) <= 85 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "Get out before I call the Militia, you disrespectful worm!", "shakefist", 0, 0, Spawn, 0)
end
- end
- if GetQuestStep(Spawn, OgreWatch) == 2 then
- SetStepComplete(Spawn, OgreWatch, 2)
end
- if GetQuestStep(Spawn, InformationGatheringFromaFishmonger) == 2 then
- SetStepComplete(Spawn, InformationGatheringFromaFishmonger, 2)
- end
-
- RandomGreeting(NPC, Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn, OgreWatch) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, OgreWatch) and GetQuestStep(Spawn,OgreWatch) ==1 then
+ Dialog2(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, InformationGatheringFromaFishmonger) then
+ Dialog3 (NPC,Spawn)
+elseif HasQuest(Spawn, InformationGatheringFromaFishmonger) then
+ Dialog4 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("What on Norrath are you doing here? Get out of my house this instant!")
+ Dialog.AddVoiceover("voiceover/english/master_malvonicus/tutorial_island02/mastermalvonicus001.mp3", 2916930572, 3452710584)
+ if CanReceiveQuest(Spawn, OgreWatch) then
+ Dialog.AddOption("What happened here? It's a mess!","Dialog1a")
+ end
+ Dialog.AddOption("Yeesh! Okay, I'm leaving.")
+ Dialog.Start()
+end
+
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well apparently a group of undesirables, I can only assume ogres by the damage, decided to tear up my place while I was out! My house! I don't even know where to start! Oh, some of these heirlooms from Neriak were irreplaceable! ...and now YOU appear. What do you want?!")
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ Dialog.AddOption("I'm just looking to make a few coins.","Dialog2a")
+ Dialog.AddOption("Well that IS too bad. Good luck with... whatever.")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm... perahps I could make use of you. Is your brain matter solid enough to make a deilvery and not lose it? I have a plan to discover what happened here that requires this message to be delievered in ONE piece... unlike these broken furniture pieces you see strewn about.")
+ if CanReceiveQuest(Spawn, OgreWatch) then
+ Dialog.AddOption("I'm sure I can deliver your letter in one piece.","Offer1")
+ end
+ Dialog.AddOption("Nope. NO time for that.")
+ Dialog.Start()
+end
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, OgreWatch)
+end
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, InformationGatheringFromaFishmonger)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("Why haven't you delivered my letter? Azreana must know of my plan!")
+ Dialog.AddOption("I'm going!")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddDialog("Ah... It is only you again. I've recieved word Azreana has recieved my package as I requrested. Nice work... Perhaps these ogres will keep their noses out of my buisness!")
+ Dialog.AddOption("She said the raid on your home was a ruse for a bigger plot in the districts.","Offer2")
+ Dialog.AddOption("And I'll stay out of your buisness as well...")
+ Dialog.Start()
+end
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("Did you find Tilzak N'lim? I must know that fishmonger's true motives!")
+ if GetQuestStep(Spawn,InformationGatheringFromaFishmonger) ==2 then
+ Dialog.AddOption("He is no ordinary fishmonger. He works undercover for the Overlord and is planning to entrap the fools who started all this!","Dialog4a")
+ end
+ Dialog.AddOption("And I'll stay out of your buisness as well...")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "pout", 0, 0, Spawn)
+ Dialog.AddDialog("Well then... this does change things. If you claim the fishmonger is an agent of the Overlord... can he be trusted?")
+ Dialog.AddOption("He seemed honest enough?","Dialog4b")
+ Dialog.AddOption("Perhaps you shouldn't?","Dialog4b")
+ Dialog.Start()
+end
+
+
+function Dialog4b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddDialog("Better yet, can YOU be trusted?! How do I know you're speaking the truth!? Are you part of this whole plot?!?")
+ Dialog.AddOption("You'll just have to take my word for it.","Dialog4c")
+ Dialog.AddOption("You see this face? How can you not trust this face?","Dialog4c")
+ Dialog.AddOption("[Lie] The Overlord's agents told me you might not see reason.","Dialog4c")
+ Dialog.Start()
+end
+
+function Dialog4c(NPC,Spawn)
+ SetStepComplete(Spawn, InformationGatheringFromaFishmonger, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ Dialog.AddDialog("...Fine! Take these things and get out of my sight. If I find out you're behind any of this, I will make you pay! I can't take ANYMORE FOOLISHNESS!")
+ Dialog.AddOption("Thanks, and good luck resolving all of... 'this'.")
+ Dialog.Start()
+end
- if choice == 1 then
- PlayFlavor(NPC, "", "How dare you barge into my house! Who do you think you are, fool?", "", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1034.mp3", 0, 0, Spawn)
- elseif choice == 3 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1008.mp3", 0, 0, Spawn)
- end
-end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/OverseerDaerla.lua b/server/SpawnScripts/Longshadow/OverseerDaerla.lua
index c8da2dc35..ed4172cc7 100755
--- a/server/SpawnScripts/Longshadow/OverseerDaerla.lua
+++ b/server/SpawnScripts/Longshadow/OverseerDaerla.lua
@@ -5,23 +5,99 @@
Script Purpose :
:
--]]
+local Welcome = 5862
+
+require "SpawnScripts/Generic/DialogModule"
+local CalloutTimer = false
function spawn(NPC)
+ProvidesQuest(NPC,Welcome)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+function InRange(NPC, Spawn) --Quest Callout
+if GetFactionAmount(Spawn,12)<0 then
+PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+FaceTarget(NPC, Spawn)
+elseif GetRace(Spawn)== 1 or GetRace(Spawn) == 19 or GetRace(Spawn) == 17 then
+ if CanReceiveQuest(Spawn, Welcome)then
+ PlayFlavor(NPC,"voiceover/english/overseer_daerla/fprt_hood05/qst_overseer_daerla_callout2_8e8f4739.mp3","All of you lowly refugees are to speak with me at once!","sniff",2064397815,2852618419,Spawn)
+ elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+end
+
+
+
+function ResetCallout(NPC,Spawn)
+ CalloutTimer = false
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","shame",0,0,Spawn)
+ else
+if GetRace(Spawn)== 1 or GetRace(Spawn) == 19 or GetRace(Spawn) == 17 then
+ if not HasQuest(Spawn, Welcome) and not HasCompletedQuest(Spawn,Welcome)then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah ... Yes ... what have we here? A refugee? Now, how do I know you are a lowly refugee, hmm? Perhaps by your tattered, commoner clothing, or is it your rancid stench? No ... that's not it ... let's see ... Ahhh ... yes. I see now, the stupid look on your face gives away your lowly status.")
+ Dialog.AddVoiceover("voiceover/english/overseer_daerla/fprt_hood05/overseer_daerla001.mp3", 2177122562, 2434125400)
+ PlayFlavor(NPC,"","","sarcasm",0,0,Spawn)
+ Dialog.AddOption("Who are you to speak to me that way?","Dialog1")
+ Dialog.AddOption("I don't have time for this!")
+ Dialog.Start()
+ else
+ Talk(NPC,Spawn)
+ end
+else
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+function Talk(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
local choice = MakeRandomInt(1,2)
if choice == 1 then
PlayFlavor(NPC,"voiceover/english/overseer_daerla/fprt_hood05/qst_overseer_daerla_callout1_1b99f97d.mp3","Begone, you filthy commoner! I have important work to do.","stare",850117394,1406850605,Spawn)
elseif choice == 2 then
PlayFlavor(NPC,"voiceover/english/overseer_daerla/fprt_hood05/qst_overseer_daerla_callout2_8e8f4739.mp3","All of you lowly refugees are to speak with me at once!","sniff",2064397815,2852618419,Spawn)
- end
- if GetQuestStep(Spawn, 5758)==2 then
- SetStepComplete(Spawn, 5758,2)
- end
+ end
end
function respawn(NPC)
spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'll say this once: You are in Freeport, ruled by the Overlord. Our Lord charges me with the task of either processing refugees or flaying the flesh from their bodies with my sword. If you choose to speak up again, I shall choose the latter! ")
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/overseer_daerla/fprt_hood05/overseer_daerla002.mp3", 1998853027, 544729221)
+ Dialog.AddOption("I see... ahem... what are my instructions, then?", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Much better. You are in Longshadow Alley, the district set aside for the greatest race, the Teir'Dal. Our loving Overlord offers you a place to live, a house. Show your appreciation for this gift by undertaking any task his servants demand of you. I am one of those servants. ")
+ Dialog.AddVoiceover("voiceover/english/overseer_daerla/fprt_hood05/overseer_daerla003.mp3", 2404917247, 404866112)
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
+ Dialog.AddOption("Very well. Are there any demands at this moment, Overseer?", "QuestStart")
+ Dialog.Start()
+end
+
+function QuestStart(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Welcome)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/PThek.lua b/server/SpawnScripts/Longshadow/PThek.lua
index 70f17f7a8..4ddf629aa 100755
--- a/server/SpawnScripts/Longshadow/PThek.lua
+++ b/server/SpawnScripts/Longshadow/PThek.lua
@@ -6,21 +6,33 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
end
+
+
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
-
+function Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/scribe/darkelf_scribe_service_evil_1_hail_gf_8de85b9c.mp3", "Perhaps I could interest you in our necromantic line of spells? ", "agree", 3172095768, 4205908579, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/scribe/darkelf_scribe_service_evil_1_hail_gf_250b4da0.mp3", "So are you planning to master your art at the academy? We keep all of the required supplies right here!", "ponder", 3527012076, 2949477702, Spawn, 0)
end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/RyazVRez.lua b/server/SpawnScripts/Longshadow/RyazVRez.lua
new file mode 100755
index 000000000..ced79fefe
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/RyazVRez.lua
@@ -0,0 +1,107 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/RyazVRez.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 07:10:39
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
+
+function InRange(NPC,Spawn)
+ GenericRaceCheckCallout(NPC, Spawn)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -34.4, 1.12, 8.4, 2, 1)
+ MovementLoopAddLocation(NPC, -34.4, 1.12, 8.4, 2, 25,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -33.54, 1.12, 9.26, 2, 0)
+ MovementLoopAddLocation(NPC, -32.92, 1.12, 8.61, 2, 0)
+ MovementLoopAddLocation(NPC, -34.96, 1.12, 7.71, 2, 0)
+ MovementLoopAddLocation(NPC, -35.52, 1.12, 5.23, 2, 0)
+ MovementLoopAddLocation(NPC, -31.78, 1.12, 4.75, 2, 0)
+ MovementLoopAddLocation(NPC, -29.12, 0.91, 4.45, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -22.8, 0, 5.13, 2, 0)
+ MovementLoopAddLocation(NPC, -17.83, 0, 5.87, 2, 0)
+ MovementLoopAddLocation(NPC, -16.44, 0, 15.79, 2, 0)
+ MovementLoopAddLocation(NPC, -16.44, 0, 15.79, 2, 0)
+ MovementLoopAddLocation(NPC, -17.33, 0, 18.72, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -18.26, -0.01, 22.46, 2, 0,"Door2")
+ MovementLoopAddLocation(NPC, -18.18, 0.05, 24.75, 2, 1)
+ MovementLoopAddLocation(NPC, -18.18, 0.05, 24.75, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -19.32, -0.01, 23.11, 2, 0)
+ MovementLoopAddLocation(NPC, -19.32, -0.01, 23.11, 2, 1)
+ MovementLoopAddLocation(NPC, -19.32, -0.01, 23.11, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -18.7, -0.01, 22.48, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -17.48, 0, 18.09, 2, 0,"Door2")
+ MovementLoopAddLocation(NPC, -14.74, 0, 9.74, 2, 0)
+ MovementLoopAddLocation(NPC, -14.47, 0, 1.64, 2, 0)
+ MovementLoopAddLocation(NPC, -9.82, 0, -8.97, 2, 0)
+ MovementLoopAddLocation(NPC, -1.07, 0, -16.3, 2, 0)
+ MovementLoopAddLocation(NPC, 0, 0, -18.88, 2, 0)
+ MovementLoopAddLocation(NPC, -0.03, 0, -21.61, 2, 0)
+ MovementLoopAddLocation(NPC, -1.44, 0.04, -23.23, 2, 1)
+ MovementLoopAddLocation(NPC, -1.44, 0.04, -23.23, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, -1.44, 0.04, -23.23, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 0.2, 0, -21.73, 2, 0)
+ MovementLoopAddLocation(NPC, 2.57, 0, -17.84, 2, 0)
+ MovementLoopAddLocation(NPC, 4.97, 0, -8.75, 2, 1)
+ MovementLoopAddLocation(NPC, 4.97, 0, -8.75, 2, 25,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 6.07, 0, -10.42, 2, 0)
+ MovementLoopAddLocation(NPC, 5.6, 0.01, -12.98, 2, 0)
+ MovementLoopAddLocation(NPC, -0.4, 0, -12.2, 2, 0)
+ MovementLoopAddLocation(NPC, -8.56, 0, -8.8, 2, 0)
+ MovementLoopAddLocation(NPC, -14.06, 0, -0.04, 2, 0)
+ MovementLoopAddLocation(NPC, -23.25, 0, 4.63, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -26.87, -0.01, 5.05, 2, 0)
+ MovementLoopAddLocation(NPC, -34.59, 1.12, 4.76, 2, 0)
+ MovementLoopAddLocation(NPC, -35.47, 1.12, 6.23, 2, 0)
+end
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380079)
+ UseWidget(door)
+end
+
+function Door2(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380078)
+ UseWidget(door)
+end
+
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","snicker",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ else
+ PlayFlavor(NPC,"","","grumble",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/ShNra.lua b/server/SpawnScripts/Longshadow/ShNra.lua
index 203f593a1..e53fa9d5f 100755
--- a/server/SpawnScripts/Longshadow/ShNra.lua
+++ b/server/SpawnScripts/Longshadow/ShNra.lua
@@ -6,33 +6,49 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 33 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "no", 2250198640, 1947969981, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- SaySomethingRandom(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
end
-function InRange(NPC, Spawn)
- SaySomethingRandom(NPC, Spawn)
-end
-
-function LeaveRange(NPC, Spawn)
-end
-
-function SaySomethingRandom(NPC, Spawn)
- choice = math.random(1, 3)
+function Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3860282907, 2830883681, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 1457896156, 727813168, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 1457896156, 727813168, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3860282907, 2830883681, Spawn, 0)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1486780566, 1792397389, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1486780566, 1792397389, Spawn, 0)
end
-end
\ No newline at end of file
+end
+
+
+
diff --git a/server/SpawnScripts/Longshadow/TGask.lua b/server/SpawnScripts/Longshadow/TGask.lua
index 9b0687452..77c16561d 100755
--- a/server/SpawnScripts/Longshadow/TGask.lua
+++ b/server/SpawnScripts/Longshadow/TGask.lua
@@ -6,13 +6,45 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- choice = math.random(1,2)
+require "SpawnScripts/Generic/DialogModule"
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 2250198640, 1947969981, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1486780566, 1792397389, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 1457896156, 727813168, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3860282907, 2830883681, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3860282907, 2830883681, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1486780566, 1792397389, Spawn, 0)
end
-end
\ No newline at end of file
+end
diff --git a/server/SpawnScripts/Longshadow/TNarra.lua b/server/SpawnScripts/Longshadow/TNarra.lua
index cfa64494c..37b27ba88 100755
--- a/server/SpawnScripts/Longshadow/TNarra.lua
+++ b/server/SpawnScripts/Longshadow/TNarra.lua
@@ -5,18 +5,19 @@
Script Date : 2008.09.29
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- choice = math.random(1, 4)
-
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_hail_gf_582205e1.mp3", "Do you have business with the Freeport Militia?", "glare", 2007336774, 276021764, Spawn)
- elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_hail_gf_7fa14d4.mp3", "Do not challenge my authority citizen. In Freeport, the Overlord's word is law!", "scold", 2216401374, 2200952527, Spawn)
- elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_hail_gf_e6d19328.mp3", "The Overlord commands me to work the night shift and so I must accept.", "tapfoot", 1941665390, 4180571964, Spawn)
- elseif choice == 4 then
- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_hail_gf_edb196f8.mp3", "All praises to the Overlord. The Militia protects loyal citizens of Freeport.", "salute_freeport", 1432151232, 2291117299, Spawn)
- end
-end
\ No newline at end of file
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
diff --git a/server/SpawnScripts/Longshadow/TVal.lua b/server/SpawnScripts/Longshadow/TVal.lua
index f8149695d..6b2112116 100755
--- a/server/SpawnScripts/Longshadow/TVal.lua
+++ b/server/SpawnScripts/Longshadow/TVal.lua
@@ -9,23 +9,31 @@
require "SpawnScripts/Generic/DialogModule"
local ForThatSpecialSomeone = 5673
+local Citizenship = 5862
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, ForThatSpecialSomeone) == 1 then
- SetStepComplete(Spawn, ForThatSpecialSomeone, 1)
- end
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/banker_quintius_calacicus/fprt_hood1/100_bankerquintiuscalacicus_housing_quest_1_22bf58bf.mp3", "Are you the one opening the new account?", "bye", 1249171681, 483955197, Spawn)
+end
end
-function RandomGreeting(NPC, Spawn)
- Dialog1(NPC, Spawn)
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+elseif HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+Dialog2(NPC, Spawn)
+else
+Dialog1(NPC, Spawn)
+end
end
function Dialog1(NPC, Spawn)
@@ -33,7 +41,71 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Hail to you. Currency exchange, secure storage of goods, I offer a range of services tailored to the needs of Freeport guild members.")
Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval.mp3", 90970771, 1252206294)
- Dialog.AddOption("I'll keep that in mind.")
+ if GetQuestStep(Spawn, ForThatSpecialSomeone) == 1 then
+ Dialog.AddOption("Your wife asked me to bring you this bottle of wine.","Wine")
+ end
+ Dialog.AddOption("I'll keep that in mind.")
Dialog.Start()
end
+function Wine(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("She did? Why? Well... let me see that wine! Hmmm... my favorite. It smells normal. I guess it's all right, then. Tell her that I will thank her when I next see her. I'll... um... be working late again tonight, so tell her not to wait up.")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval006.mp3", 415080394, 1146938462)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I will let her know...")
+ SetStepComplete(Spawn, ForThatSpecialSomeone, 1)
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you look like the one Valthun described. Before we can open your account, we need some information from you. What's your name?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval006.mp3", 973761594, 631533180)
+ Dialog.AddOption(""..GetName(Spawn).."","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Occupation?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval007.mp3", 3366909671, 2696654878)
+ Dialog.AddOption("Adventurer","Dialog2b")
+ Dialog.AddOption("Crafter","Dialog2b")
+ if GetRace(Spawn)==1 then
+ Dialog.AddOption("A purveyor of all things forbiden, so I guess Adventurer of sorts?","Dialog2b")
+ elseif GetRace(Spawn)==17 then
+ Dialog.AddOption("I'm still waiting for you Teir'Dal to sort all that out...","Dialog2b")
+ elseif GetRace(Spawn)==19 then
+ Dialog.AddOption("Blood sucker doesn't really a job, but it is.","Dialog2b")
+ end
+ Dialog.Start()
+end
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Any surviving relatives, do you ever leave your house unarmed, and are you a deep sleeper?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval008.mp3", 77874907, 3978664262)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No, no, and no.","Dialog2c")
+ Dialog.AddOption("[Lie] No, no, and no.","Dialog2c")
+ Dialog.AddOption("What are with these questions?! Just... no!","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ SetStepComplete(Spawn, Citizenship,4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How convenient for you. Very well ... we've set aside a place for you within the Freeport Reserve vaults. Feel free to deposit large amounts of coin or valuable artifacts with us anytime. We'll be sure to keep it ... safe. Is there anything else?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval009.mp3", 3196985272, 4183310653)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/TVek.lua b/server/SpawnScripts/Longshadow/TVek.lua
index 698c5bc82..337b3d5bc 100755
--- a/server/SpawnScripts/Longshadow/TVek.lua
+++ b/server/SpawnScripts/Longshadow/TVek.lua
@@ -5,6 +5,22 @@
Script Date : 2008.09.29
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
function spawn(NPC)
waypoints(NPC)
@@ -25,11 +41,79 @@ function hailed(NPC, Spawn)
end
end
-function waypoints(NPC)
+--[[function waypoints(NPC)
MovementLoopAddLocation(NPC, 25.19, 3, 64.33, 2, 0)
MovementLoopAddLocation(NPC, 4.37, 3, 70.65, 2, 0)
MovementLoopAddLocation(NPC, 0.1, 3, 58.01, 2, 0)
MovementLoopAddLocation(NPC, 18.83, 3, 51.84, 2, 0)
+end]]--
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1.29, 3, 66.65, 2, 0)
+ MovementLoopAddLocation(NPC, -0.38, 3, 59.16, 2, 0)
+ MovementLoopAddLocation(NPC, 0.92, 3, 57.72, 2, 0)
+ MovementLoopAddLocation(NPC, 16.06, 3, 52.88, 2, 0)
+ MovementLoopAddLocation(NPC, 18.96, 3, 52.06, 2, 0)
+ MovementLoopAddLocation(NPC, 22.45, 3, 63.83, 2, 0)
+ MovementLoopAddLocation(NPC, 22.77, 3, 64.92, 2, 0)
+ MovementLoopAddLocation(NPC, 14.45, 3, 67.2, 2, 1)
+ MovementLoopAddLocation(NPC, 14.45, 3, 67.2, 2, 8,"Action")
+ MovementLoopAddLocation(NPC, 14.13, 3, 66.82, 2, 0)
+ MovementLoopAddLocation(NPC, 5.44, 3, 70.42, 2, 0)
+ MovementLoopAddLocation(NPC, 1.23, 3, 57.31, 2, 0)
+ MovementLoopAddLocation(NPC, 8.91, 3, 54.63, 2, 0)
+ MovementLoopAddLocation(NPC, 8.23, 3, 49.72, 2, 0)
+ MovementLoopAddLocation(NPC, 3.85, 2.9, 31.53, 2, 1)
+ MovementLoopAddLocation(NPC, 3.85, 2.9, 31.53, 2, 12,"Action")
+ MovementLoopAddLocation(NPC, -8.65, 3, 32.61, 2, 0)
+ MovementLoopAddLocation(NPC, -23.09, 4.23, 27.94, 2, 0)
+ MovementLoopAddLocation(NPC, -31.58, 4.21, 24.89, 2, 0)
+ MovementLoopAddLocation(NPC, -50.67, 4.03, 14.59, 2, 0)
+ MovementLoopAddLocation(NPC, -53.8, 3.54, 12.12, 2, 0)
+ MovementLoopAddLocation(NPC, -54.69, 2.43, 4.83, 2, 0)
+ MovementLoopAddLocation(NPC, -48.07, -0.82, -17.21, 2, 1)
+ MovementLoopAddLocation(NPC, -48.07, -0.82, -17.21, 2, 12,"Action")
+ MovementLoopAddLocation(NPC, -55.14, 2.4, 3.92, 2, 0)
+ MovementLoopAddLocation(NPC, -53.15, 3.6, 12.96, 2, 0)
+ MovementLoopAddLocation(NPC, -50.15, 3.98, 15.59, 2, 0)
+ MovementLoopAddLocation(NPC, -33.13, 4.29, 23.86, 2, 0)
+ MovementLoopAddLocation(NPC, -24.18, 4.24, 28.21, 2, 0)
+ MovementLoopAddLocation(NPC, -13.78, 3.35, 31.61, 2, 0)
+ MovementLoopAddLocation(NPC, -4.83, 2.99, 32.58, 2, 0)
+ MovementLoopAddLocation(NPC, 2.5, 2.87, 30.41, 2, 1)
+ MovementLoopAddLocation(NPC, 2.5, 2.87, 30.41, 2, 12,"Action")
+ MovementLoopAddLocation(NPC, 13.95, 2.15, 26.28, 2, 0)
+ MovementLoopAddLocation(NPC, 17.89, 1.86, 24.5, 2, 0)
+ MovementLoopAddLocation(NPC, 32.81, 0.12, 8.92, 2, 0)
+ MovementLoopAddLocation(NPC, 37.12, -0.91, 1.94, 2, 0)
+ MovementLoopAddLocation(NPC, 38.32, -1.48, -4.46, 2, 1)
+ MovementLoopAddLocation(NPC, 38.32, -1.48, -4.46, 2, 12,"Action")
+ MovementLoopAddLocation(NPC, 38.32, -1.48, -4.46, 2, 0)
+ MovementLoopAddLocation(NPC, 36.33, -0.73, 3.53, 2, 0)
+ MovementLoopAddLocation(NPC, 33.25, 0.07, 8.65, 2, 0)
+ MovementLoopAddLocation(NPC, 25.22, 1.1, 16.3, 2, 0)
+ MovementLoopAddLocation(NPC, 18.53, 1.85, 24.14, 2, 0)
+ MovementLoopAddLocation(NPC, 11.12, 2.33, 27.51, 2, 0)
+ MovementLoopAddLocation(NPC, 3.96, 2.85, 30.59, 2, 0)
+ MovementLoopAddLocation(NPC, 7.53, 3, 43.5, 2, 0)
+ MovementLoopAddLocation(NPC, 8.56, 3, 51.12, 2, 0)
+ MovementLoopAddLocation(NPC, 8.65, 3, 54.77, 2, 0)
+ MovementLoopAddLocation(NPC, 1.77, 3, 57.11, 2, 0)
+ MovementLoopAddLocation(NPC, 1.67, 3, 73.75, 2, 1)
+ MovementLoopAddLocation(NPC, 1.67, 3, 73.75, 2, 10,"Action")
end
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "listen", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ end
+end
diff --git a/server/SpawnScripts/Longshadow/TilzakNLim.lua b/server/SpawnScripts/Longshadow/TilzakNLim.lua
new file mode 100755
index 000000000..cd7a5b847
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/TilzakNLim.lua
@@ -0,0 +1,93 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/TilzakNLim.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.12 01:10:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local QUEST_1 = 386
+local InformationGatheringFromaFishmonger = 5677
+
+function spawn(NPC)
+ ProvidesQuest(NPC, QUEST_1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <1 then
+ PlayFlavor(NPC, "", "", "threaten", 0, 0, Spawn)
+else
+ Dialog1(NPC, Spawn)
+end
+end
+
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("These are my fish so you can't have them! Go... go find your own!")
+ Dialog.AddVoiceover("voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/std_de_male_tilzak_nlim.mp3", 3205731528, 2249540299)
+ if CanReceiveQuest(Spawn,QUEST_1) then
+ Dialog.AddOption("I didn't know the Teir'Dal took mundane jobs like fishing.", "Dialog2")
+ end
+ if GetQuestStep(Spawn, QUEST_1) == 2 then
+ Dialog.AddOption("I have the shark fins you wanted.", "Dialog4")
+ end
+ if GetQuestStep(Spawn, InformationGatheringFromaFishmonger) == 1 then
+ Dialog.AddOption("Word would have it that you know about a meeting. What can you tell me about it?", "Dialog5")
+ end
+ Dialog.AddOption("Then I'll leave you to your fish.")
+ Dialog.Start()
+end
+
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Only when we have no choice. I used to be a chef to some of the most important people in Neriak back in the day. Now I am nothing more than a common fisherman. This is my lot in life, I guess. If I returned to Neriak with new recipes I might once again regain that prominent position. If only I had the ingredients to make a new recipe I've come up with.")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Maybe I can offer you a hand. What do you need?", "OfferQuest1")
+ Dialog.AddOption("Your wants mean nothing to me.")
+ Dialog.Start()
+end
+
+function OfferQuest1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC, Spawn, QUEST_1)
+end
+
+function Dialog4(NPC, Spawn)
+ SetStepComplete(Spawn, QUEST_1, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, thank you so much, my good friend. These will be wonderful once they're prepared correctly. I need to be careful though, because these shark fins can be highly poisonous if they aren't prepared correctly. Don't worry, though -- I've prepared dishes very similar to this before. If you'd like you can be the first person to try it when I'm done!")
+ Dialog.AddVoiceover("voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/quests/tilzaknlim/tilzak_x1_finish.mp3", 1351808605, 3311226361)
+ Dialog.AddOption("No thanks. I'll leave that to you. Bye.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wait, I assume that this is a secret meeting? How would you know about it?")
+ Dialog.AddOption("My source tells me you might be involved.","Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ SetStepComplete(Spawn, InformationGatheringFromaFishmonger, 1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddDialog("Ahhh... Well tell your 'source' that I have no intention in telling him where any meeting is. Information is power, and the Overlord has intrusted me with a great deal of it. What I will tell you is the house was just a setup to expose some 'rats', but sometimes information gathering is a bit... extreme. If you or your 'source' decides to stick his nose where it doesn't belong, it will be more than furniture that ends up broken. Got it?")
+ Dialog.AddOption("Uhh, I'll make sure he knows.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/VDyhn.lua b/server/SpawnScripts/Longshadow/VDyhn.lua
index cb24f3db2..3cd34c6d5 100755
--- a/server/SpawnScripts/Longshadow/VDyhn.lua
+++ b/server/SpawnScripts/Longshadow/VDyhn.lua
@@ -6,25 +6,48 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/weaponsmith/human_weaponsmith_service_evil_1_aoi_gf_e5231875.mp3", "Don't be caught defenseless when your enemies strike. See our stock of weapons, before it's too late!", "beckon", 309302899, 2401241224, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_aoi_gm_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 1403936443, 3068231605, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "", 1302153135, 3653961458, Spawn, 0)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 2781916825, 678640011, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "", 2781916825, 678640011, Spawn, 0)
elseif choice == 3 then
- PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 898812878, 1402234103, Spawn, 0)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "", 898812878, 1402234103, Spawn, 0)
end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/VTun.lua b/server/SpawnScripts/Longshadow/VTun.lua
index 819bba8bf..8b80af983 100755
--- a/server/SpawnScripts/Longshadow/VTun.lua
+++ b/server/SpawnScripts/Longshadow/VTun.lua
@@ -9,59 +9,43 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 2250198640, 1947969981, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gf_6da83eeb.mp3", "I'll defend myself if it comes to that, savage.", "", 3357669916, 1930978996, Spawn)
+ end
end
-function Dialog1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Can I help you?")
- Dialog.AddVoiceover("bubbler/nozone/research_assistant_000.mp3", 2306513456, 3204208724)
- Dialog.AddOption("What is a Research Assistant?", "Dialog3")
- Dialog.AddOption("No.")
- Dialog.Start()
+function Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 1457896156, 727813168, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3860282907, 2830883681, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1486780566, 1792397389, Spawn, 0)
+ end
end
-
-function Dialog2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I sure can, but you must have the spell or combat art at Journeyman or Expert otherwise I will not be able to help. When you are ready just speak to me again! ")
- Dialog.AddVoiceover("bubbler/nozone/research_assistant_001.mp3", 1208968585, 486567327)
- Dialog.AddOption("Thank you.")
- Dialog.Start()
-end
-
-function Dialog3(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Research Assistants can help you learn better versions for some of your spells or combat arts.")
- Dialog.AddVoiceover("bubbler/nozone/research_assistant_001.mp3", 1208968585, 486567327)
- Dialog.AddOption("Which type of spells?", "Dialog4")
- Dialog.Start()
-end
-
-function Dialog4(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("If you learn a spell or combat art to Journeyman or Expert level, I can research and help you learn the secrets to unlocking its next level potential.")
- Dialog.AddVoiceover("bubbler/nozone/research_assistant_001.mp3", 1208968585, 486567327)
- Dialog.AddOption("How long does it take?", "Dialog5")
- Dialog.Start()
-end
-
-function Dialog5(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I would be able to tell you exactly how long based on the spell or combat art you wish to learn. It's a tedious process, though, so it may take days or even weeks to complete. ")
- Dialog.AddVoiceover("bubbler/nozone/research_assistant_001.mp3", 1208968585, 486567327)
- Dialog.AddOption("Can you take a look at what I can learn? ", "Dialog2")
- Dialog.Start()
-end
-
diff --git a/server/SpawnScripts/Longshadow/ValinaDMizrel.lua b/server/SpawnScripts/Longshadow/ValinaDMizrel.lua
new file mode 100755
index 000000000..8ddd32332
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/ValinaDMizrel.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/ValinaDMizrel.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 08:10:24
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380088)
+ UseWidget(door)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -22.3, 0.05, -18.99, 2, 1)
+ MovementLoopAddLocation(NPC, -22.3, 0.05, -18.99, 2, MakeRandomInt(15,25),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -22.3, 0.05, -18.99, 2, 0)
+ MovementLoopAddLocation(NPC, -26.77, 0.06, -19.34, 2, 0)
+ MovementLoopAddLocation(NPC, -30.66, -0.03, -21.61, 2, 0)
+ MovementLoopAddLocation(NPC, -33.14, -0.66, -25.2, 2, 0)
+ MovementLoopAddLocation(NPC, -33.74, -1.58, -32.93, 2, 0)
+ MovementLoopAddLocation(NPC, -34.3, -2.67, -37.11, 2, 0)
+ MovementLoopAddLocation(NPC, -35.99, -3.58, -45.25, 2, 0)
+ MovementLoopAddLocation(NPC, -40.38, -4.26, -53.42, 2, 0)
+ MovementLoopAddLocation(NPC, -41.94, -4.5, -54.9, 2, 0)
+ MovementLoopAddLocation(NPC, -42.99, -4.5, -56.45, 2, 0)
+ MovementLoopAddLocation(NPC, -45.31, -4.64, -62.81, 2, 0)
+ MovementLoopAddLocation(NPC, -49.5, -4.67, -63.72, 2, 0)
+ MovementLoopAddLocation(NPC, -55.4, -4.67, -64.45, 2, 1)
+ MovementLoopAddLocation(NPC, -55.4, -4.67, -64.45, 2, 1,"FishHead")
+ MovementLoopAddLocation(NPC, -55.4, -4.67, -64.45, 2, MakeRandomInt(25,35),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -55.4, -4.67, -64.45, 2, 0)
+ MovementLoopAddLocation(NPC, -50.93, -4.67, -65.45, 2, 0)
+ MovementLoopAddLocation(NPC, -47.61, -4.69, -65, 2, 0)
+ MovementLoopAddLocation(NPC, -44.13, -4.68, -63.74, 2, 0)
+ MovementLoopAddLocation(NPC, -41.83, -4.5, -57.19, 2, 0)
+ MovementLoopAddLocation(NPC, -39.77, -4.2, -54.18, 2, 0)
+ MovementLoopAddLocation(NPC, -35.18, -4.27, -52.15, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -32.36, -3.96, -54.26, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -29.27, -3.98, -54.85, 2, 0)
+ MovementLoopAddLocation(NPC, -29.27, -3.98, -54.85, 2, 1)
+ MovementLoopAddLocation(NPC, -29.27, -3.98, -54.85, 2, MakeRandomInt(25,35),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -30.21, -4, -55.79, 2, 0)
+ MovementLoopAddLocation(NPC, -31.06, -4, -56.07, 2, 1)
+ MovementLoopAddLocation(NPC, -31.06, -4, -56.07, 2, 35,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -31.4, -4, -55.7, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -35.61, -4.33, -51.88, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, -34.56, -3.67, -47.97, 2, 0)
+ MovementLoopAddLocation(NPC, -32.93, -3.07, -40.75, 2, 0)
+ MovementLoopAddLocation(NPC, -31.16, -1.7, -32.92, 2, 0)
+ MovementLoopAddLocation(NPC, -31.89, -1.15, -28.64, 2, 0)
+ MovementLoopAddLocation(NPC, -32.01, -0.6, -25.92, 2, 0)
+ MovementLoopAddLocation(NPC, -28.24, 0, -21.21, 2, 0)
+ MovementLoopAddLocation(NPC, -26.01, 0, -19.59, 2, 0)
+ MovementLoopAddLocation(NPC, -18.45, 0, -11.97, 2, 1)
+ MovementLoopAddLocation(NPC, -18.45, 0, -11.97, 2, MakeRandomInt(25,35),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -18.45, 0, -11.97, 2, 0)
+ MovementLoopAddLocation(NPC, -21.01, 0.09, -15.92, 2, 0)
+ MovementLoopAddLocation(NPC, -22.24, 0.07, -17.82, 2, 0)
+end
+
+function FishHead(NPC)
+ SetHeading(NPC,155)
+end
diff --git a/server/SpawnScripts/Longshadow/VelaMRev.lua b/server/SpawnScripts/Longshadow/VelaMRev.lua
new file mode 100755
index 000000000..a101917f2
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/VelaMRev.lua
@@ -0,0 +1,91 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/VelaMRev.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 07:10:58
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 12.43, 0, -8.14, 2, 1)
+ MovementLoopAddLocation(NPC, 12.43, 0, -8.14, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 10.41, 0, -8.72, 2, 0)
+ MovementLoopAddLocation(NPC, 9.42, 0, -11.26, 2, 0)
+ MovementLoopAddLocation(NPC, 11.8, 0, -16.48, 2, 0)
+ MovementLoopAddLocation(NPC, 18.99, -0.22, -21.2, 2, 0)
+ MovementLoopAddLocation(NPC, 24.03, -0.81, -22.76, 2, 0)
+ MovementLoopAddLocation(NPC, 30.74, -1.39, -22.92, 2, 0)
+ MovementLoopAddLocation(NPC, 36.59, -1.48, -21.92, 2, 0)
+ MovementLoopAddLocation(NPC, 39.62, -1.38, -16.36, 2, 0)
+ MovementLoopAddLocation(NPC, 40.63, -1.45, -5.15, 2, 0)
+ MovementLoopAddLocation(NPC, 36.57, -0.31, 7.03, 2, 0)
+ MovementLoopAddLocation(NPC, 29.77, 0.74, 13.76, 2, 0)
+ MovementLoopAddLocation(NPC, 24.08, 1.37, 19.58, 2, 0)
+ MovementLoopAddLocation(NPC, 13.63, 2.22, 27.07, 2, 0)
+ MovementLoopAddLocation(NPC, 6.36, 2.87, 31.15, 2, 0)
+ MovementLoopAddLocation(NPC, 4.75, 3, 34.07, 2, 0)
+ MovementLoopAddLocation(NPC, 9.06, 3, 39.71, 2, 1)
+ MovementLoopAddLocation(NPC, 9.06, 3, 39.71, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 8.87, 3, 41.31, 2, 0)
+ MovementLoopAddLocation(NPC, 11.1, 3, 47.96, 2, 0)
+ MovementLoopAddLocation(NPC, 12.2, 3, 49.77, 2, 0)
+ MovementLoopAddLocation(NPC, 15.69, 3, 51.01, 2, 0)
+ MovementLoopAddLocation(NPC, 22.75, 3, 53.09, 2, 0)
+ MovementLoopAddLocation(NPC, 30.46, 3, 59.64, 2, 1)
+ MovementLoopAddLocation(NPC, 30.46, 3, 59.64, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 26.71, 3, 58.61, 2, 0)
+ MovementLoopAddLocation(NPC, 22.74, 3, 55.11, 2, 0)
+ MovementLoopAddLocation(NPC, 19.3, 3, 52, 2, 0)
+ MovementLoopAddLocation(NPC, 12.96, 3, 51.65, 2, 0)
+ MovementLoopAddLocation(NPC, 6.14, 2.99, 44.79, 2, 0)
+ MovementLoopAddLocation(NPC, 3.73, 3, 37.84, 2, 0)
+ MovementLoopAddLocation(NPC, 2.85, 3, 35.26, 2, 0)
+ MovementLoopAddLocation(NPC, 7.51, 2.83, 27.62, 2, 0)
+ MovementLoopAddLocation(NPC, 16.48, 1.84, 23.54, 2, 0)
+ MovementLoopAddLocation(NPC, 21.5, 1.41, 18.96, 2, 0)
+ MovementLoopAddLocation(NPC, 27.08, 0.78, 11.81, 2, 0)
+ MovementLoopAddLocation(NPC, 33.63, -0.57, 3.57, 2, 0)
+ MovementLoopAddLocation(NPC, 36.27, -1.28, -3.52, 2, 0)
+ MovementLoopAddLocation(NPC, 36.58, -1.4, -13.16, 2, 2)
+ MovementLoopAddLocation(NPC, 34.03, -1.13, -14.1, 2, 0)
+ MovementLoopAddLocation(NPC, 30.98, -1.15, -15.54, 2, 1)
+ MovementLoopAddLocation(NPC, 30.98, -1.15, -15.54, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 31.42, -1.23, -13.45, 2, 1)
+ MovementLoopAddLocation(NPC, 31.42, -1.23, -13.45, 2, 10,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 32.95, -1.23, -14.21, 2, 2)
+ MovementLoopAddLocation(NPC, 36.46, -1.38, -13.73, 2, 0)
+ MovementLoopAddLocation(NPC, 37.17, -1.37, -15.76, 2, 0)
+ MovementLoopAddLocation(NPC, 35.62, -1.25, -20.12, 2, 0)
+ MovementLoopAddLocation(NPC, 29.31, -1.25, -20.83, 2, 0)
+ MovementLoopAddLocation(NPC, 23.7, -0.67, -20.18, 2, 0)
+ MovementLoopAddLocation(NPC, 16.84, 0, -17.25, 2, 0)
+ MovementLoopAddLocation(NPC, 12.35, 0, -3.4, 2, 0)
+ MovementLoopAddLocation(NPC, 13.6, 0, -2.11, 2, 1)
+ MovementLoopAddLocation(NPC, 13.6, 0, -2.11, 2, 12,"EcologyEmotes")
+end
+
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380080)
+ UseWidget(door)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/VerinaGYul.lua b/server/SpawnScripts/Longshadow/VerinaGYul.lua
new file mode 100755
index 000000000..acaf61750
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/VerinaGYul.lua
@@ -0,0 +1,123 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/VerinaGYul.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 07:10:21
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+ function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,2)then
+ Garbled(NPC,Spawn)
+ --PlayFlavor(NPC,"","","shrug",0,0,Spawn)
+ else
+ GenericEcology2Hail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,2)then
+ if math.random(0,100)<40 then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ --PlayFlavor(NPC,"","","",0,0,Spawn)
+ end
+ else
+ GenericEcology2Hail(NPC, Spawn, faction)
+end
+end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+function Forge(NPC)
+ SetHeading(NPC,235)
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -11.85, 0, 17.41, 2, 1)
+ MovementLoopAddLocation(NPC, -11.85, 0, 17.41, 2, 20,"Action")
+ MovementLoopAddLocation(NPC, -11.85, 0, 17.41, 2, 0)
+ MovementLoopAddLocation(NPC, -14.04, 0, 11.82, 2, 0)
+ MovementLoopAddLocation(NPC, -15.24, 0, 3.05, 2, 0)
+ MovementLoopAddLocation(NPC, -10.72, 0, -7.44, 2, 0)
+ MovementLoopAddLocation(NPC, -7.79, 0.08, -12.29, 2, 0)
+ MovementLoopAddLocation(NPC, -0.02, 0, -14.69, 2, 0)
+ MovementLoopAddLocation(NPC, 7.15, 0, -13.02, 2, 0)
+ MovementLoopAddLocation(NPC, 11.95, 0, -11.39, 2, 0)
+ MovementLoopAddLocation(NPC, 19.32, -0.01, -12.65, 2, 0)
+ MovementLoopAddLocation(NPC, 19.92, -0.01, -15.37, 2, 1,"Forge")
+ MovementLoopAddLocation(NPC, 19.92, -0.01, -15.37, 2, 30,"Action")
+ MovementLoopAddLocation(NPC, 20.15, -0.01, -15.09, 2, 0)
+ MovementLoopAddLocation(NPC, 20.13, -0.01, -13.18, 2, 0)
+ MovementLoopAddLocation(NPC, 18.56, 0.11, -12.06, 2, 0)
+ MovementLoopAddLocation(NPC, 15.06, 0, -11.69, 2, 0)
+ MovementLoopAddLocation(NPC, 16.34, 0, -19, 2, 0)
+ MovementLoopAddLocation(NPC, 20.45, -0.31, -21.46, 2, 0)
+ MovementLoopAddLocation(NPC, 31.95, -1.41, -23.31, 2, 0)
+ MovementLoopAddLocation(NPC, 38.68, -1.33, -20.08, 2, 0)
+ MovementLoopAddLocation(NPC, 39.94, -1.58, -10.09, 2, 0)
+ MovementLoopAddLocation(NPC, 40.16, -1.22, -0.38, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, 47.39, -1.02, 1.42, 2, 0,"Door")
+ MovementLoopAddLocation(NPC, 52.01, -1.02, 6.16, 2, 0)
+ MovementLoopAddLocation(NPC, 55.11, -1.02, 12.28, 2, 1)
+ MovementLoopAddLocation(NPC, 55.11, -1.02, 12.28, 2, 40,"Action")
+ MovementLoopAddLocation(NPC, 51.16, -1.02, 5.38, 2, 0)
+ MovementLoopAddLocation(NPC, 45.43, -1.02, 1.5, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, 39.12, -1.26, -0.42, 2, 0,"Door")
+ MovementLoopAddLocation(NPC, 35.37, -0.2, 8.62, 2, 0)
+ MovementLoopAddLocation(NPC, 28.26, 0.84, 15.61, 2, 0)
+ MovementLoopAddLocation(NPC, 20.7, 1.87, 23.56, 2, 0)
+ MovementLoopAddLocation(NPC, 12.77, 2.36, 28.43, 2, 0)
+ MovementLoopAddLocation(NPC, 5.44, 2.9, 31.5, 2, 0)
+ MovementLoopAddLocation(NPC, -3.18, 2.98, 33.59, 2, 0)
+ MovementLoopAddLocation(NPC, -19.51, 3.89, 30.97, 2, 0)
+ MovementLoopAddLocation(NPC, -26.83, 4.32, 28.36, 2, 0)
+ MovementLoopAddLocation(NPC, -42.03, 4.19, 20.98, 2, 0)
+ MovementLoopAddLocation(NPC, -54.29, 3.75, 13.73, 2, 0)
+ MovementLoopAddLocation(NPC, -55.57, 2.04, -0.34, 2, 0)
+ MovementLoopAddLocation(NPC, -51.23, 0.27, -12.31, 2, 0)
+ MovementLoopAddLocation(NPC, -43.92, 0, -13.95, 2, 0)
+ MovementLoopAddLocation(NPC, -40.01, 0.07, -12.29, 2, 0)
+ MovementLoopAddLocation(NPC, -33.9, 0, -11.07, 2, 0)
+ MovementLoopAddLocation(NPC, -24.54, 0.08, -8.37, 2, 0)
+ MovementLoopAddLocation(NPC, -21.42, 0, -6.68, 2, 0)
+ MovementLoopAddLocation(NPC, -18.34, 0, -1.79, 2, 0)
+ MovementLoopAddLocation(NPC, -18.32, 0, 3.61, 2, 1)
+ MovementLoopAddLocation(NPC, -18.32, 0, 3.61, 2, 11,"Action")
+ MovementLoopAddLocation(NPC, -15.16, 0, 8.3, 2, 0)
+ MovementLoopAddLocation(NPC, -14.23, 0, 16.4, 2, 0)
+end
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380081)
+ UseWidget(door)
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "mood_angry", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/VorsharLFaz.lua b/server/SpawnScripts/Longshadow/VorsharLFaz.lua
index 25965325b..a1241a1ec 100755
--- a/server/SpawnScripts/Longshadow/VorsharLFaz.lua
+++ b/server/SpawnScripts/Longshadow/VorsharLFaz.lua
@@ -1,13 +1,40 @@
--[[
Script Name : SpawnScripts/Longshadow/VorsharLFaz.lua
Script Purpose : Vorshar L`Faz
- Script Author : John Adams
- Script Date : 2008.09.29
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Author : Dorbin
+ Script Date : 2022.10.13
--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+local TimeCheck = false -- used to delay between hail uses
+local CalloutTimeCheck = false -- used to delay between callout uses
+
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ waypoints(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if MakeRandomInt(1, 100) <= 30 and CalloutTimeCheck == false then
+ CalloutTimeCheck = true
+ FaceTarget(NPC, Spawn)
+ AddTimer(NPC,60000,"ResetCalloutTimer")
+ Talk(NPC, Spawn)
+ end
+ end
+end
+
+function ResetTimer(NPC) -- resets hail timer after initial use
+ TimeCheck = false
+end
+
+function ResetCalloutTimer(NPC) -- resets callout timer after use
+ CalloutTimeCheck = false
end
function respawn(NPC)
@@ -15,25 +42,175 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- SaySomethingRandom(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ FactionChecking(NPC, Spawn, faction)
+ else
+ if TimeCheck == false then -- checks timer
+ TimeCheck = true -- turns on timer to stop player spamming
+ AddTimer(NPC,2500,"ResetTimer")
+ FaceTarget(NPC, Spawn)
+ Talk(NPC, Spawn)
+ end
+ end
end
-function InRange(NPC, Spawn)
- SaySomethingRandom(NPC, Spawn)
+function Talk(NPC, Spawn)
+local FP_CrafterFaction = GetFactionAmount(Spawn, 101)
+ if FP_CrafterFaction >=10000 then
+ local choice = MakeRandomInt(1, 3) --Adds faction praise callout 33% of the time when applicable.
+ else
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 2 then
+ BasicTalk(NPC,Spawn)
+ elseif choice == 3 then
+ FactionTalk(NPC,Spawn)
+ end
+ end
end
-function LeaveRange(NPC, Spawn)
-end
-
-function SaySomethingRandom(NPC, Spawn)
- choice = math.random(1, 3)
+function BasicTalk(NPC,Spawn)
+ local choice = MakeRandomInt(1, 5)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_hail_gm_a8fbb723.mp3", "The arcane scientists hone their minds through the study of arcane arts, but they will never become as cunning as a skilled trader.", "", 4254147398, 134359674, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_hail_gm_cd3a748b.mp3", "The withering hands of the Dismal Rage priests look more like hands of death than hands that can heal people.", "", 2122145851, 2411357575, Spawn)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_hail_gm_263a8bb0.mp3", "Although they serve to protect the city, the individuals of the Freeport Militia are only loyal to their own self interest and nothing more.", "", 3104017481, 741752503, Spawn)
- end
-end
\ No newline at end of file
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_hail_gm_8702506b.mp3", "Those Seafury Buccaneers wouldn't know what a fair deal was if it hit them on the head.", "", 3039159838, 1799277697, Spawn)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_hail_gm_73c8a151.mp3", "There's nothing that the Coalition of Tradesfolke can't make a profit out of.", "", 1077955965, 3866305338, Spawn)
+ end
+end
+
+function FactionTalk(NPC,Spawn)
+local FP_CrafterFaction = GetFactionAmount(Spawn, 101)
+ if FP_CrafterFaction >=40000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_40_gm_3397b8bb.mp3", "The Coalition is fortunate to have your dedication! The sway you wield with them is worthy of awe!", "cheer", 0, 0, Spawn)
+ elseif FP_CrafterFaction >=30000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_30_gm_deefc882.mp3", "You have achieved quite a reputation for your work with the Coalition.", "", 0, 0, Spawn)
+ elseif FP_CrafterFaction >=20000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_20_gm_376317f5.mp3", "Although you still have quite a distance to go, the reputation you have managed to achieve is nevertheless impressive.", "", 2535649617, 1724444157, Spawn)
+ elseif FP_CrafterFaction >=10000 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_coalitionoftradesfolke/ft/eco/evil/darkelf_male_eco_evil_coalitionoftradesfolke_10_gm_bda4135a.mp3", "Are you willing to sacrifice yourself for the glory of Freeport, and the profit of the Coalition? Are you willing to endure days locked within a leaky cellar, your fingers bleeding as you work the loom and the forge?", "", 0, 0, Spawn)
+ end
+end
+
+
+
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","snicker",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ else
+ PlayFlavor(NPC,"","","grumble",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380077)
+ UseWidget(door)
+end
+
+function Door2(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380084)
+ UseWidget(door)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -10.65, 0, -9.32, 2, 0)
+ MovementLoopAddLocation(NPC, -7.19, 0.09, -12.52, 2, 0)
+ MovementLoopAddLocation(NPC, -1.44, 0, -16.95, 2, 0)
+ MovementLoopAddLocation(NPC, -0.84, 0, -18.25, 2, 0)
+ MovementLoopAddLocation(NPC, -1.73, 0, -19.28, 2, 0)
+ MovementLoopAddLocation(NPC, -1.73, 0, -19.28, 2, 1)
+ MovementLoopAddLocation(NPC, -1.73, 0, -19.28, 2, 18,"Drink")
+ MovementLoopAddLocation(NPC, -1.73, 0, -19.28, 2, 18,"Drink")
+ MovementLoopAddLocation(NPC, -1.73, 0, -19.28, 2, 0)
+ MovementLoopAddLocation(NPC, 2.18, 0, -17.5, 2, 0)
+ MovementLoopAddLocation(NPC, 5.2, 0.03, -16.12, 2, 0)
+ MovementLoopAddLocation(NPC, 13.75, 0, -19.66, 2, 0)
+ MovementLoopAddLocation(NPC, 28, -1.32, -24.03, 2, 0)
+ MovementLoopAddLocation(NPC, 35.28, -1.46, -22.63, 2, 0)
+ MovementLoopAddLocation(NPC, 37.88, -1.43, -21.25, 2, 0)
+ MovementLoopAddLocation(NPC, 40.77, -1.32, -16.38, 2, 0)
+ MovementLoopAddLocation(NPC, 41.3, -1.34, -3.85, 2, 0)
+ MovementLoopAddLocation(NPC, 37.27, -0.32, 6.42, 2, 0)
+ MovementLoopAddLocation(NPC, 31.13, 0.32, 12.03, 2, 0)
+ MovementLoopAddLocation(NPC, 23.18, 1.41, 20.19, 2, 0)
+ MovementLoopAddLocation(NPC, 18.47, 1.9, 24.94, 2, 0)
+ MovementLoopAddLocation(NPC, 11.31, 2.41, 29.18, 2, 0)
+ MovementLoopAddLocation(NPC, 4.64, 2.9, 31.72, 2, 0)
+ MovementLoopAddLocation(NPC, 4.93, 3, 34.11, 2, 0)
+ MovementLoopAddLocation(NPC, 9.25, 3, 43.84, 2, 0)
+ MovementLoopAddLocation(NPC, 11.17, 3, 49.16, 2, 0)
+ MovementLoopAddLocation(NPC, 11.38, 3, 53.33, 2, 1)
+ MovementLoopAddLocation(NPC, 11.38, 3, 53.33, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 11.38, 3, 53.33, 2, 0)
+ MovementLoopAddLocation(NPC, 7.16, 3, 47.68, 2, 0)
+ MovementLoopAddLocation(NPC, 4.02, 3, 39.33, 2, 0)
+ MovementLoopAddLocation(NPC, 1.67, 2.98, 33.35, 2, 0)
+ MovementLoopAddLocation(NPC, 1.18, 2.93, 32.35, 2, 0)
+ MovementLoopAddLocation(NPC, -9.52, 3, 33.59, 2, 0)
+ MovementLoopAddLocation(NPC, -15.36, 3.43, 31.98, 2, 0)
+ MovementLoopAddLocation(NPC, -18.91, 3.88, 31.15, 2, 0)
+ MovementLoopAddLocation(NPC, -20.14, 3.99, 31.98, 2, 0)
+ MovementLoopAddLocation(NPC, -20.14, 3.99, 31.98, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -24.03, 4, 36.84, 2, 0)
+ MovementLoopAddLocation(NPC, -29.12, 4, 35.32, 2, 0)
+ MovementLoopAddLocation(NPC, -35.21, 4, 32.81, 2, 1)
+ MovementLoopAddLocation(NPC, -35.21, 4, 32.81, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -35.21, 4, 32.81, 2, 1)
+ MovementLoopAddLocation(NPC, -34.91, 4, 33.43, 2, 0)
+ MovementLoopAddLocation(NPC, -31.54, 4, 34.83, 2, 0)
+ MovementLoopAddLocation(NPC, -24.33, 4, 37.72, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -24.33, 4, 37.72, 2, 0)
+ MovementLoopAddLocation(NPC, -20.52, 3.95, 31.12, 2, 0)
+ MovementLoopAddLocation(NPC, -27.94, 4.25, 27.43, 2, 0)
+ MovementLoopAddLocation(NPC, -35.69, 4.51, 23.89, 2, 0)
+ MovementLoopAddLocation(NPC, -45.88, 4.1, 18.89, 2, 0)
+ MovementLoopAddLocation(NPC, -53.58, 3.75, 14.19, 2, 0)
+ MovementLoopAddLocation(NPC, -56.52, 2.58, 5.12, 2, 0)
+ MovementLoopAddLocation(NPC, -55.84, 2.12, 1.23, 2, 0)
+ MovementLoopAddLocation(NPC, -51.88, 0.68, -6.22, 2, 0)
+ MovementLoopAddLocation(NPC, -47.93, 0.85, -4.43, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -43.72, 1, -3.25, 2, 0)
+ MovementLoopAddLocation(NPC, -37.99, 1.5, -1.96, 2, 1)
+ MovementLoopAddLocation(NPC, -37.99, 1.5, -1.96, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -40.66, 1.5, -1.56, 2, 0)
+ MovementLoopAddLocation(NPC, -44.48, 1, -2.92, 2, 2,"Door2")
+ MovementLoopAddLocation(NPC, -48.64, 0.8, -5.06, 2, 0)
+ MovementLoopAddLocation(NPC, -50.45, -0.08, -13.56, 2, 0)
+ MovementLoopAddLocation(NPC, -46.5, -0.49, -14.88, 2, 0)
+ MovementLoopAddLocation(NPC, -44.36, -0.03, -14.72, 2, 0)
+ MovementLoopAddLocation(NPC, -42.12, 0, -13.19, 2, 0)
+ MovementLoopAddLocation(NPC, -32.42, 0, -11.3, 2, 0)
+ MovementLoopAddLocation(NPC, -27.14, 0, -9.15, 2, 0)
+ MovementLoopAddLocation(NPC, -21.25, 0, -6.74, 2, 0)
+ MovementLoopAddLocation(NPC, -17.43, 0, -4.78, 2, 0)
+ MovementLoopAddLocation(NPC, -13.94, 0, -5.86, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/Longshadow/YaranaDVen.lua b/server/SpawnScripts/Longshadow/YaranaDVen.lua
index 389403e76..40f5f657c 100755
--- a/server/SpawnScripts/Longshadow/YaranaDVen.lua
+++ b/server/SpawnScripts/Longshadow/YaranaDVen.lua
@@ -1,10 +1,11 @@
--[[
Script Name : SpawnScripts/LongshadowAlley/YaranaDVen.lua
Script Purpose : Yarana D'Ven
- Script Author : torsten
+ Script Author : torsten//Dorbin
Script Date : 2022.07.18
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Notes : Added Dialog/VOs/Level & Faction checks -16/10/2023 Dorbin
--]]
+require "SpawnScripts/Generic/DialogModule"
local NoRivalsForYarana = 5675
@@ -17,30 +18,110 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, NoRivalsForYarana) and not HasCompletedQuest(Spawn, NoRivalsForYarana) then
- OfferQuest(NPC, Spawn, NoRivalsForYarana)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
end
- if GetQuestStep(Spawn, NoRivalsForYarana) == 2 then
- SetStepComplete(Spawn, NoRivalsForYarana, 2)
- end
- if GetQuestStep(Spawn, NoRivalsForYarana) == 4 then
- SetStepComplete(Spawn, NoRivalsForYarana, 4)
- end
- if GetQuestStep(Spawn, NoRivalsForYarana) == 6 then
- SetStepComplete(Spawn, NoRivalsForYarana, 6)
- end
-
- RandomGreeting(NPC, Spawn)
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
- if choice == 1 then
- PlayFlavor(NPC, "", "Do not waste my precious time by begging for attention.", "", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1007.mp3", 0, 0, Spawn)
- elseif choice == 3 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1007.mp3", 0, 0, Spawn)
- end
-end
\ No newline at end of file
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Do not waste my precious time by begging for attention.")
+ PlayFlavor(NPC, "","","no",0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven.mp3",1141324184,3432577979)
+
+ if CanReceiveQuest(Spawn, NoRivalsForYarana) then
+ Dialog.AddOption("Oh, sorry to bother you.", "Dialog1a")
+ elseif GetQuestStepProgress(Spawn, NoRivalsForYarana)==2 then
+ Dialog.AddOption("I found some of the ingredients you requested. Is this enough?", "Dialog2")
+ elseif GetQuestStepProgress(Spawn, NoRivalsForYarana)==4 then
+ Dialog.AddOption("These ingredients were hard to come by. Is this enough?", "Dialog3")
+ elseif GetQuestStepProgress(Spawn, NoRivalsForYarana)==6 then
+ Dialog.AddOption("Here. The deed is done... and I am done with all of this!", "Dialog4")
+ end
+
+ Dialog.AddOption("I wasn't even talking to you.")
+ Dialog.Start()
+end
+
+
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wait! Are you looking for work? My husband is an official in Longshadow. If you do as I ask, you won't find yourself on the wrong side of the militia, if you know what I mean...")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven000.mp3",1434779341,1687984253)
+ Dialog.AddOption("What is it you need?", "Dialog1b")
+ Dialog.AddOption("Seems like your husband has his hands full!","Pout")
+ Dialog.AddOption("I don't want ANYTHING to do with you!")
+ Dialog.Start()
+end
+
+function Pout (NPC,Spawn)
+ PlayFlavor(NPC, "","","pout",0,0, Spawn)
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I cannot risk being overheard. Come closer and I will whisper to you what I need. You must write these instructions down in your journal. Do what I say, and I will reward you.")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven001.mp3",4193738982,2153468807)
+ PlayFlavor(NPC, "","","snicker",0,0, Spawn)
+ Dialog.AddOption("It sounds like I don't have a choice.", "OfferQuest1")
+ Dialog.AddOption("I don't want ANYTHING to do with you!")
+ Dialog.Start()
+end
+
+
+function OfferQuest1(NPC,Spawn)
+ if CanReceiveQuest(Spawn, NoRivalsForYarana) then
+ OfferQuest(NPC, Spawn, NoRivalsForYarana)
+ end
+end
+
+function Dialog2(NPC,Spawn)
+ SetStepComplete(Spawn,NoRivalsForYarana,2)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Excellent. It seems one of my rivals is harvesting these things for revolutionary necromantic research--research I wish to halt. This brings me to your next task...")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven002.mp3",1415851457,630090694)
+ Dialog.AddOption("Fine. Here is my journal. Write down what is needed.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Her research nears completion. I must put an end to her once and for all. She cannot surpass my power! I have one last task for you.")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven004.mp3",2781035509,2447510323)
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddOption("You need me to end her and be done with all this?","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ SetStepComplete(Spawn,NoRivalsForYarana,4)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("I'll deal with her myself. But she's never alone. She often employs bodyguards. I need you to make the guards question their relationship with that horrible wretch. This note tells you where to find them.")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven005.mp3",4178387219,3896524803)
+ PlayFlavor(NPC, "","","no",0,0, Spawn)
+ Dialog.AddOption("Alright. I'll deal with them...")
+ Dialog.Start()
+end
+
+
+function Dialog4(NPC,Spawn)
+ SetStepComplete(Spawn,NoRivalsForYarana,6)
+ FaceTarget(QuestGiver, Player)
+ Dialog.New(QuestGiver, Player)
+ Dialog.AddDialog("Yes! With those bodyguards out of the way, nothing can protect her! I'll take her research, and she'll no longer plague my life or consort with my husband. Take this as a token of my thanks.")
+ Dialog.AddVoiceover("voiceover/english/yarana_d_ven/fprt_hood05/quests/yaranadven/yarana_dven006.mp3",4178387219,3896524803)
+ PlayFlavor(NPC, "","","yes",0,0, Spawn)
+ Dialog.AddOption("Finally! Thanks, but I hope we see less of eachother in the future.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/Longshadow/ZelinaTVon.lua b/server/SpawnScripts/Longshadow/ZelinaTVon.lua
index a2a1c40cf..a0b907aa7 100755
--- a/server/SpawnScripts/Longshadow/ZelinaTVon.lua
+++ b/server/SpawnScripts/Longshadow/ZelinaTVon.lua
@@ -5,6 +5,7 @@
Script Date : 2022.07.18
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local ASpecialPerfume = 5672
local ForThatSpecialSomeone = 5673
@@ -12,6 +13,8 @@ local ForThatSpecialSomeone = 5673
function spawn(NPC)
ProvidesQuest(NPC, ASpecialPerfume)
ProvidesQuest(NPC, ForThatSpecialSomeone)
+ SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
@@ -19,27 +22,205 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, ASpecialPerfume) and not HasCompletedQuest(Spawn, ASpecialPerfume) then
- OfferQuest(NPC, Spawn, ASpecialPerfume)
- end
- if HasCompletedQuest(Spawn, ASpecialPerfume) then
- if not HasQuest(Spawn, ForThatSpecialSomeone) and not HasCompletedQuest(Spawn, ForThatSpecialSomeone) then
- OfferQuest(NPC, Spawn, ForThatSpecialSomeone)
- end
- end
- if GetQuestStep(Spawn, ASpecialPerfume) == 2 then
- SetStepComplete(Spawn, ASpecialPerfume, 2)
- end
- if GetQuestStep(Spawn, ForThatSpecialSomeone) == 2 then
- SetStepComplete(Spawn, ForThatSpecialSomeone, 2)
- end
- RandomGreeting(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+if CanReceiveQuest(Spawn, ASpecialPerfume) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, ASpecialPerfume) and GetQuestStep(Spawn,ASpecialPerfume)==1 then
+ Dialog2(NPC,Spawn)
+elseif HasQuest(Spawn, ASpecialPerfume) and GetQuestStep(Spawn,ASpecialPerfume)==2 then
+ Dialog2a(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, ForThatSpecialSomeone) then
+ Dialog3 (NPC,Spawn)
+elseif HasQuest(Spawn, ForThatSpecialSomeone) then
+ Dialog4 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","threaten",0,0, Spawn)
+else
+ if not HasCompletedQuest(Spawn, ASpecialPerfume) and not HasQuest(Spawn, ASpecialPerfume) then
+ if MakeRandomInt(0, 100) <= 80 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "That no-good, two-timing, imp ... I'll teach him to stare at that trollop! ...What? What do you want, you babbling fool?", "grumble", 0, 0, Spawn, 0)
+ end
+ elseif HasCompletedQuest(Spawn, ASpecialPerfume) and not CanReceiveQuest(Spawn, ForThatSpecialSomeone) then
+ if MakeRandomInt(0, 100) <= 85 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "He is impossible! Why wouldn't he just... well, if he won't I'll make sure his eyes never shy away again!... You! Come here and speak with me again. I'll make it worth your while.", "pout", 0, 0, Spawn, 0)
+ end
+ end
+end
+end
- if choice == 1 then
- PlayFlavor(NPC, "voiceover/english/optional5/standard_dark_elf_female/fprt_hood05/quests/zelinatvon/pm_dztv_callout1_64.mp3", "That no-good, two-timing, imp ... I'll teach him to stare at that trollop! ...What? What do you want, you babbling fool?", "", 1206032882, 2859314838, Spawn, 0)
- end
-end
\ No newline at end of file
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("You ... you have nothing to offer me! Be gone!")
+ Dialog.AddVoiceover("voiceover/english/jezrina/fprt_hood02/20_streetfortuneteller_multhail1_569fa693.mp3", 424612651, 2476002427)
+ if CanReceiveQuest(Spawn, ASpecialPerfume) then
+ Dialog.AddOption("You seem preoccupied. Perhaps I can do something for you for a few coins?","Dialog1a")
+ end
+ Dialog.AddOption("I didn't want to be here anyway!")
+ Dialog.Start()
+end
+
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Do you always pry into people's business?! Can't you see I'm busy planning my next move against my love?!... UGH! He is obviously seeing someone else... Inexcusable!")
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ Dialog.AddOption("Look, I want work and you are OBVIOUSLY needing something. Tell me what he did.","Dialog1b")
+ Dialog.AddOption("With that, I'm done. Good luck with... whatever.")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddDialog("He promised he was going to make me dinner that night and I sent him a fine bottle of wine, to which I got a message back saying he was \"battling a horde.\" You and I both know that he was with someone else. You know what I want?")
+ Dialog.AddOption("Sounds like a lie!... But what does that have to do with me?","Dialog1c")
+ Dialog.AddOption("Perhaps you're reading too much into it.")
+ Dialog.Start()
+end
+
+function Dialog1c(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm trying to make myself more attractive to my mate. Lately, he has his eye on a certain huss ... er ... courtesan. He likes a wine with a sharp head, so I thought I could make a perfume that smells exactly like this wine. Would you be a dear and gather scent glands from some squalid vermin for my perfume?")
+ if CanReceiveQuest(Spawn, ASpecialPerfume) then
+ Dialog.AddOption("I won't ask why a scent gland, but I can get one if the price is right.","Offer1")
+ end
+ Dialog.AddOption("No ammount of perfume will help you. Sorry.")
+ Dialog.Start()
+end
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, ASpecialPerfume)
+end
+
+
+
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, ForThatSpecialSomeone)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("I see you don't have the scent glands for my \"perfume.\" What's the problem?")
+ Dialog.AddOption("I'm still working on it!")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stinky", 0, 0, Spawn)
+ Dialog.AddDialog("That scent... You have it! Give the gland now before it loses anymore potency!")
+ Dialog.AddOption("Please do. They are plenty potent.","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ SetStepComplete(Spawn, ASpecialPerfume, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddDialog("Let me have them. Yes, indeed ... he'll never know the difference. These are perfect! Now, I need to distill the slow-acting toxins from the rest of the juices -- so it's not harmful, of course. Thank you so much, my dear friend. Here are the coins I promised you earlier. Now leave me as I concoct this ... perfume.")
+ Dialog.AddOption("We'll see about that, Zelina.")
+ Dialog.Start()
+end
+
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddDialog("I'll never understand why a lover's eyes can wander. Imagine how effective removing them would be?")
+ if CanReceiveQuest(Spawn,ForThatSpecialSomeone) then
+ Dialog.AddOption("Did the perfume work like you expected?","Dialog3a")
+ end
+ Dialog.AddOption("I prefer eyes staying attached, thank you...")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddDialog("I - uh - used it, but he hasn't - uh - noticed it yet. I want to give him a bottle of wine, so he thinks of me when he smells the perfume. Perhaps you'll help me again?")
+ Dialog.AddOption("Perhaps, what are you talking about?","Offer2")
+ Dialog.AddOption("Oh, no. I've had enough from you.")
+ Dialog.Start()
+end
+
+
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "scheme", 0, 0, Spawn)
+ Dialog.AddDialog("And? Has he taken my gift? Have you done it yet?")
+ if GetQuestStep(Spawn,ForThatSpecialSomeone) ==2 then
+ Dialog.AddOption("Your husband liked it and will thank you later tonight.","Dialog4a")
+ else
+ Dialog.AddOption("...Not yet. Soon.")
+ end
+ Dialog.Start()
+end
+
+function Dialog4a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "cackle", 0, 0, Spawn)
+ Dialog.AddDialog("My husband? He's not my husband! That poisoned wine will show him what happens when he takes another mistress! I'll enjoy hearing his hacking coughs as the toxin slowly eats away his internal organs. Hahahahaha...")
+ Dialog.AddOption("You gave him poisoned wine?!?","Dialog4b")
+ Dialog.Start()
+end
+
+
+function Dialog4b(NPC,Spawn)
+ SetStepComplete(Spawn, ForThatSpecialSomeone, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ Dialog.AddDialog("Well, of course! One must learn that I am not to be trifled with. Show me that sort of disrespect and you're body parts might just start falling off. A price to pay for loyalty, wouldn't you say? Speaking of price, here - I've got some wine from other suitors that are most likley safe. Please, take them. I insist.")
+ Dialog.AddOption("Thank you... I'll be sure to stay out of your way from now on.")
+ Dialog.Start()
+end
+
+
+
+
+
+--I'm trying to make myself more attractive to my mate. Lately, he has his eye on a certain huss ... er ... courtesan. He likes a wine with a sharp head, so I thought I could make a perfume that smells exactly like this wine. Would you be a dear and gather scent glands from some squalid vermin for my perfume?
+--We'll see about that, Zelina.
+
+--Let me have them. Yes, indeed ... he'll never know the difference. These are perfect! Now, I need to distill the slow-acting toxins from the rest of the juices -- so it's not harmful, of course. Thank you so much, my dear friend. Here are the coins I promised you earlier. Now leave me as I concoct this ... perfume.
+
+--Did the perfume work like you expected?
+--I see you don't have the scent glands for my "perfume." What's the problem?
+
+--I - uh - used it, but he hasn't - uh - noticed it yet. I want to give him a bottle of wine, so he thinks of me when he smells the perfume. Perhaps you'll help me again?
+
+--He promised he was going to make me dinner that night and I sent him a fine bottle of wine, to which I got a message back saying he was "battling a horde." You and I both know that he was with someone else. You know what I want?
+--My partner is the banker for this horrid district, so you should find him at the bank--unless he's with that tram ... trainee, I mean. Give him this wine, and tell him I hope he enjoys it. When you return, I'll give you some coin.
+
+--Your husband liked it and will thank you later tonight.
+--My husband? He's not my husband! That poisoned wine will show him what happens when he takes another mistress! I'll enjoy hearing his hacking coughs as the toxin slowly eats away his internal organs. Hahahahaha...
+--You gave him poisoned wine?!?
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/abrinesifter.lua b/server/SpawnScripts/Longshadow/abrinesifter.lua
new file mode 100755
index 000000000..f80c995ff
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/abrinesifter.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/abrinesifter.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.16 03:10:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ if GetSpawnLocationID(NPC)==133787088 then
+ MovementLoopAddLocation(NPC, -49.07, -17.26, -112.17, 1, math.random(10,20))
+ MovementLoopAddLocation(NPC, -52.76, -17.94, -103.60, 1, math.random(6,20))
+ MovementLoopAddLocation(NPC, -53.88, -17.61, -109.86, 1, math.random(6,20))
+ MovementLoopAddLocation(NPC, -47.11, -17.36, -105.66, 1, math.random(6,20))
+
+ elseif GetSpawnLocationID(NPC)==133787089 then
+ MovementLoopAddLocation(NPC,-60.76, -18.16, -107.26, 1, math.random(6,20))
+ MovementLoopAddLocation(NPC, -62.21, -17.98, -100.15, 1, math.random(6,20))
+ MovementLoopAddLocation(NPC, -68.03, -16.41, -103.28, 1, math.random(10,20))
+ MovementLoopAddLocation(NPC,-58.41, -18.25, -103.04, 1, math.random(6,20))
+
+ elseif GetSpawnLocationID(NPC)==133787090 then
+ MovementLoopAddLocation(NPC, -55.81, -13.50, -69.65, 1, math.random(6,20))
+ MovementLoopAddLocation(NPC, -61.08, -14.65, -76.12, 1, math.random(10,20))
+ MovementLoopAddLocation(NPC, -58.91, -15.46, -81.00, 1, math.random(6,20))
+ MovementLoopAddLocation(NPC, -60.19, -13.80, -68.21, 1, math.random(6,20))
+ end
+end
diff --git a/server/SpawnScripts/Longshadow/aspiderhatchling.lua b/server/SpawnScripts/Longshadow/aspiderhatchling.lua
new file mode 100755
index 000000000..642a859c6
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/aspiderhatchling.lua
@@ -0,0 +1,96 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/aspiderhatchling.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.15 01:10:53
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ if GetSpawnLocationID(NPC) == 406177 or
+ GetSpawnLocationID(NPC) == 405853 or
+ GetSpawnLocationID(NPC) == 406036 or
+ GetSpawnLocationID(NPC) == 133787022 or
+ GetSpawnLocationID(NPC) == 133787023 or
+ GetSpawnLocationID(NPC) == 133787024 then
+ AddTimer(NPC,MakeRandomInt(0,4000),"ChooseMovement")
+ elseif GetSpawnLocationID(NPC) == 405595 then
+ AddTimer(NPC,MakeRandomInt(0,3500),"waypoints")
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -27.86, 4.13, 55.03, 6, math.random(11,15))
+ MovementLoopAddLocation(NPC, -21.53, 4.00, 48.61, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, -26.84, 4.00, 47.38,6, math.random(10,15))
+ MovementLoopAddLocation(NPC, -24.00, 4.41, 54.65, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, -24.70, 4.00, 45.53, 6, math.random(10,15))
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(6,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(10,15))
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(6,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(10,15))
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(6,10))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X + 7, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(10,15))
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(6,10))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X - 7, Y, Z, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 6, math.random(10,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 6, math.random(10,15))
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/Longshadow/aspiderhatchling1.lua b/server/SpawnScripts/Longshadow/aspiderhatchling1.lua
new file mode 100755
index 000000000..c3caae4b9
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/aspiderhatchling1.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/aspiderhatchling1.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.15 03:10:50
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/tofprtcitizenshiptrialLongshadow.lua b/server/SpawnScripts/Longshadow/tofprtcitizenshiptrialLongshadow.lua
new file mode 100755
index 000000000..dca9dfe75
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/tofprtcitizenshiptrialLongshadow.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/tofprtcitizenshiptrialLongshadow.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.26 12:06:10
+ Script Purpose : Freeport Citzenship Sign - Longshadow
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC, 5862, 13)
+SetRequiredQuest(NPC, 5868, 2)
+SetRequiredQuest(NPC, 5868, 3)
+SetRequiredQuest(NPC, 5868, 4)
+SetRequiredQuest(NPC, 5868, 5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+local TaskSheet = 9132
+local WelcomeQuest = 5862
+local TaskQuest = 5868
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Use citizenship sign' then
+ if HasQuest(Spawn,WelcomeQuest) and not HasCompletedQuest(Spawn,TaskQuest) and not HasItem(Spawn, TaskSheet,1) then
+ Quest = GetQuest(Spawn,WelcomeQuest)
+ SendMessage(Spawn, "You pull an application for citizenship from the wall.")
+ GiveQuestItem(Quest, Spawn, "I must complete this task to become a Citizen of Freeport.", TaskSheet)
+
+ elseif not HasQuest(Spawn, TaskQuest) and HasItem(Spawn, TaskSheet,1) or GetQuestStep(Spawn,TaskQuest)==1 and HasItem(Spawn, TaskSheet,1) then
+ SendMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.")
+ SendPopUpMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.", 200, 200, 200)
+
+ elseif HasQuest(Spawn, TaskQuest) and GetQuestStep(Spawn,TaskQuest)>=2 and GetQuestStep(Spawn,TaskQuest)<=5 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+end
+end
+end
+
+ function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ if GetQuestStep(Spawn,TaskQuest)==2 then
+ SetStepComplete(Spawn,TaskQuest,2)
+ end
+ ZoneRef = GetZone("FreeportCitizenshipTrialChamber")
+ Zone(ZoneRef,Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Longshadow/zonetofprtnorth0.lua b/server/SpawnScripts/Longshadow/zonetofprtnorth0.lua
new file mode 100755
index 000000000..c5fb79e47
--- /dev/null
+++ b/server/SpawnScripts/Longshadow/zonetofprtnorth0.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/Longshadow/zonetofprtnorth0.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 12:06:51
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn,SpellName)
+ local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter North Freeport' then
+ if not HasCompletedQuest(Spawn,5866) and
+ not HasCompletedQuest(Spawn,5867) and
+ not HasCompletedQuest(Spawn,5868) and
+ not HasCompletedQuest(Spawn,5869) and
+ not HasCompletedQuest(Spawn,5870) and
+ not HasCompletedQuest(Spawn,5871)
+ and GetFactionAmount(Spawn,12)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5862) and GetQuestStep(Spawn,5862)==10 then
+ SetStepComplete(Spawn,5862,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only Freeport citizens may enter the city.",255,50,50)
+ SendMessage(Spawn,"Only Freeport citizens may enter the city.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,12) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-79.65, -34.58, -369.01, 181.78)
+ end
+end
+end
diff --git a/server/SpawnScripts/MakeshiftArena/ArenaPedestal.lua b/server/SpawnScripts/MakeshiftArena/ArenaPedestal.lua
new file mode 100755
index 000000000..358e9b748
--- /dev/null
+++ b/server/SpawnScripts/MakeshiftArena/ArenaPedestal.lua
@@ -0,0 +1,95 @@
+--[[
+ Script Name : SpawnScripts/MakeshiftArena/ArenaPedestal.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 01:12:49
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetTempVariable(NPC,"Starting","false")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Address the Audience' and not IsInCombat(Spawn)then
+ local con = CreateConversation()
+ AddConversationOption(con, "[Taunt the crowd]","Taunt")
+ AddConversationOption(con, "[Show off your weapon]","Flex")
+ AddConversationOption(con, "[Howl in anger]","Yell")
+ AddConversationOption(con, "[Goof around]","Goof")
+ StartDialogConversation(con, 1, NPC, Spawn, "You stand before a crowd of onlookers hoping to enjoy the sight of combat. How will you address them?")
+ MoveToLocation(Spawn,7.23, 0.14, 5.61)
+ SetHeading(Spawn,230)
+end
+end
+
+function Taunt(NPC,Spawn)
+ PlayFlavor(Spawn,"","","taunt",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ AddTimer(NPC,5000,"Doors",1,Spawn)
+ AddTimer(NPC,7000,"Bears",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Flex(NPC,Spawn)
+ PlayFlavor(Spawn,"","","brandish",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ AddTimer(NPC,5000,"Doors",1,Spawn)
+ AddTimer(NPC,7000,"Bears",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Yell(NPC,Spawn)
+ PlayFlavor(Spawn,"","","howl",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ AddTimer(NPC,5000,"Doors",1,Spawn)
+ AddTimer(NPC,7000,"Bears",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Goof(NPC,Spawn)
+ PlayFlavor(Spawn,"","","neener",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ AddTimer(NPC,5000,"Doors",1,Spawn)
+ AddTimer(NPC,7000,"Bears",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Cheer(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Doors(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/doors/door_mech_close001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Doors to north open revealing your first opponents",250,250,250)
+end
+
+function Bears(NPC,Spawn)
+zone = GetZone(NPC)
+Bear1 = GetSpawnByLocationID(zone,133781388)
+Bear2 = GetSpawnByLocationID(zone,133781389)
+ if GetSpawnByGroupID(zone, 1053519) ==nil then
+ SpawnGroupByID(zone,1053519)
+ end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/MakeshiftArena/Spectator.lua b/server/SpawnScripts/MakeshiftArena/Spectator.lua
new file mode 100755
index 000000000..4c5200819
--- /dev/null
+++ b/server/SpawnScripts/MakeshiftArena/Spectator.lua
@@ -0,0 +1,233 @@
+--[[
+ Script Name : SpawnScripts/MakeshiftArena/Spectator.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.18 11:12:54
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetTempVariable(NPC,"Starting","false")
+SetTempVariable(NPC,"Bears","false")
+SetTempVariable(NPC,"Lions","false")
+AddTimer(NPC,(MakeRandomInt(2000,7000)),"EmoteLoop1")
+SetPlayerProximityFunction(NPC, 15, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+if IsPlayer(Spawn)==true then
+ SetTarget(NPC,Spawn)
+ AddTimer(NPC,MakeRandomInt(1500,5000),"Turning",1,Spawn)
+end
+end
+
+function Turning(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function EmoteLoop1(NPC,Spawn)
+zone = GetZone(NPC)
+Bear1 = GetSpawnByLocationID(zone,133781388)
+Bear2 = GetSpawnByLocationID(zone,133781389)
+if GetTempVariable(NPC,"Starting")=="false" and Bear1 == nil and Bear2 == nil then
+
+ local choice = math.random(1,12)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "shrug", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "", "yawn", 0, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "", "smirk", 0, 0)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "", "", "cough", 0, 0)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "", "", "sneeze", 0, 0)
+ elseif choice == 10 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 11 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ elseif choice == 12 then
+ PlayFlavor(NPC, "", "", "grumble", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(6000,9000)),"EmoteLoop1",1,Spawn)
+ AddTimer(NPC,MakeRandomInt(1500,4500),"Turning",1,Spawn)
+ else
+ SetTempVariable(NPC,"Starting","true")
+ AddTimer(NPC,(MakeRandomInt(4000,7000)),"EmoteLoop2",1,Spawn)
+end
+end
+
+
+function EmoteLoop2(NPC,Spawn)
+zone = GetZone(NPC)
+Bear1 = GetSpawnByLocationID(zone,133781388)
+Bear2 = GetSpawnByLocationID(zone,133781389)
+if GetTempVariable(NPC,"Bears")=="false" then
+ if IsAlive(Bear1) == true or IsAlive(Bear2) == true then
+ local choice = math.random(1,9)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "snicker", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "", "stare", 0, 0)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "", "", "applaude", 0, 0)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(4000,7000)),"EmoteLoop2",1,Spawn)
+ AddTimer(NPC,MakeRandomInt(1500,4500),"Turning",1,Spawn)
+ else
+ SetTempVariable(NPC,"Bears","true")
+ local choice = math.random(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_cheer001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "applaude", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "happy", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(8000,9500)),"EmoteLoop3",1,Spawn)
+ end
+end
+end
+
+function EmoteLoop3(NPC,Spawn)
+zone = GetZone(NPC)
+Lion1 = GetSpawnByLocationID(zone,133781385)
+Lion2 = GetSpawnByLocationID(zone,133781386)
+Lion3 = GetSpawnByLocationID(zone,133781387)
+if GetTempVariable(NPC,"Lions")=="false" then
+ if IsAlive(Lion1) == true or IsAlive(Lion2) == true or IsAlive(Lion3) == true then
+ local choice = math.random(1,9)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "snicker", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "", "stare", 0, 0)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "", "", "applaude", 0, 0)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(4000,7000)),"EmoteLoop3",1,Spawn)
+ AddTimer(NPC,MakeRandomInt(1500,4500),"Turning",1,Spawn)
+ else
+ SetTempVariable(NPC,"Lions","true")
+ local choice = math.random(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_cheer001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "applaude", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "happy", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(4000,7000)),"EmoteLoop4",1,Spawn)
+end
+end
+end
+
+function EmoteLoop4(NPC,Spawn)
+zone = GetZone(NPC)
+GoodbyeMaker = GetSpawnByLocationID(zone,133781404)
+if GetTempVariable(NPC,"Lions")=="true" and GoodbyeMaker~=nil then
+ local choice = math.random(1,9)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "snicker", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "happy", 0, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0)
+ elseif choice == 6 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 7 then
+ PlayFlavor(NPC, "", "", "stare", 0, 0)
+ elseif choice == 8 then
+ PlayFlavor(NPC, "", "", "applaude", 0, 0)
+ elseif choice == 9 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(4000,7000)),"EmoteLoop4",1,Spawn)
+ AddTimer(NPC,MakeRandomInt(1500,4500),"Turning",1,Spawn)
+ else
+ local choice = math.random(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_cheer001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "applaude", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "happy", 0, 0)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "cheer", 0, 0)
+ end
+ AddTimer(NPC,(MakeRandomInt(9000,15000)),"DespawnLoop",1,Spawn)
+
+end
+end
+
+function DespawnLoop(NPC,Spawn)
+ local choice = math.random(1,9)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "bye", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "smile", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "wave", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "happy", 0, 0)
+ end
+ Despawn(NPC)
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/MakeshiftArena/VictorPedestal.lua b/server/SpawnScripts/MakeshiftArena/VictorPedestal.lua
new file mode 100755
index 000000000..65d8ce683
--- /dev/null
+++ b/server/SpawnScripts/MakeshiftArena/VictorPedestal.lua
@@ -0,0 +1,94 @@
+--[[
+ Script Name : SpawnScripts/MakeshiftArena/VictorPedestal.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 03:12:10
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ zone = GetZone(NPC)
+ StartPodium = GetSpawnByLocationID(zone,133781327)
+ if StartPodium ~=nil then
+ Despawn(StartPodium)
+ end
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Address the Audience' and not IsInCombat(Spawn)then
+ local con = CreateConversation()
+ AddConversationOption(con, "[Bow in victory]","Bow")
+ AddConversationOption(con, "[Show off to the crowd]","Flex")
+ AddConversationOption(con, "[Threaten all that challenge you]","Taunt")
+ AddConversationOption(con, "[Blow your admirers a kiss]","Kiss")
+ AddConversationOption(con, "[Jump for joy]","Goof")
+ StartDialogConversation(con, 1, NPC, Spawn, "You were victorious! Proclaim yourself a true warrior.")
+ MoveToLocation(Spawn,7.23, 0.14, 5.61)
+ SetHeading(Spawn,230)
+end
+end
+
+function Taunt(NPC,Spawn)
+ PlayFlavor(Spawn,"","","feint",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Bow(NPC,Spawn)
+ PlayFlavor(Spawn,"","","bow",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Flex(NPC,Spawn)
+ PlayFlavor(Spawn,"","","flex",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Kiss(NPC,Spawn)
+ PlayFlavor(Spawn,"","","kiss",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Goof(NPC,Spawn)
+ PlayFlavor(Spawn,"","","heelclick",0,0)
+ AddTimer(NPC,2000,"Cheer",1,Spawn)
+ SetAccessToEntityCommand(Spawn,NPC,"Address the Audience", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ CloseConversation(NPC,Spawn)
+ PlaySound(Spawn,"sounds/e3_scripted/mage_ohh01.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Cheer(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_cheer001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ zone = GetZone(NPC)
+ StartPodium = GetSpawnByLocationID(zone,133781404)
+ if StartPodium ~=nil then
+ Despawn(StartPodium)
+ end
+ if HasQuest(Spawn,5791) then
+ SetStepComplete(Spawn,5791,3)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/MakeshiftArena/agrizzlybear.lua b/server/SpawnScripts/MakeshiftArena/agrizzlybear.lua
new file mode 100755
index 000000000..b22891b31
--- /dev/null
+++ b/server/SpawnScripts/MakeshiftArena/agrizzlybear.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/MakeshiftArena/agrizzlybear.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 05:12:31
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ AddTimer(NPC,2000,"Pop")
+end
+
+function Pop(NPC)
+ MoveToLocation(NPC,7.31, 0.14, 6.07,1)
+end
+
+function death(NPC, Spawn)
+zone = GetZone(NPC)
+Bear1 = GetSpawnByLocationID(zone,133781388)
+Bear2 = GetSpawnByLocationID(zone,133781389)
+Lion1 = GetSpawnByLocationID(zone,133781385)
+Lion2 = GetSpawnByLocationID(zone,133781386)
+Lion3 = GetSpawnByLocationID(zone,133781387)
+ if IsAlive(Bear1) or IsAlive(Bear2) then
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif not IsAlive(Bear1) and not IsAlive(Bear2) then
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_cheer001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+
+ if not IsAlive(Bear1) and not IsAlive(Bear2) then
+ if GetSpawnByGroupID(zone, 1053518) ==nil then
+ SpawnGroupByID(zone,1053518)
+ SendPopUpMessage(Spawn,"Doors to south rattle as your next opponents approach",250,250,250)
+ end
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/MakeshiftArena/arocklion.lua b/server/SpawnScripts/MakeshiftArena/arocklion.lua
new file mode 100755
index 000000000..0ce76340c
--- /dev/null
+++ b/server/SpawnScripts/MakeshiftArena/arocklion.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/MakeshiftArena/arocklion.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 01:12:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ AddTimer(NPC,9000,"Doors",1,Spawn)
+ AddTimer(NPC,12000,"Pop")
+ SpawnSet(NPC,"show_name",0)
+ SpawnSet(NPC,"faction",0)
+ SpawnSet(NPC,"model_type",0)
+ SpawnSet(NPC,"targetable",0)
+ SpawnSet(NPC,"attackable",0)
+end
+
+function death(NPC, Spawn)
+zone = GetZone(NPC)
+
+Lion1 = GetSpawnByLocationID(zone,133781385)
+Lion2 = GetSpawnByLocationID(zone,133781386)
+Lion3 = GetSpawnByLocationID(zone,133781387)
+ if IsAlive(Lion1) or IsAlive(Lion2) or IsAlive(Lion3) then
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_clap001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif not IsAlive(Bear1) and not IsAlive(Bear2) then
+ PlaySound(NPC,"sounds/widgets/ecology_city_sounds/ecology_crowd_cheer001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ VictorPodium = GetSpawnByLocationID(zone,133781407)
+ if VictorPodium ==nil then
+ SpawnByLocationID(zone,133781407)
+ end
+ end
+end
+
+function Doors(NPC,Spawn)
+ PlaySound(NPC,"sounds/widgets/doors/door_mech_close001.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Pop(NPC)
+ SpawnSet(NPC,"show_name",1)
+ SpawnSet(NPC,"faction",1)
+ SpawnSet(NPC,"model_type",303)
+ SpawnSet(NPC,"targetable",1)
+ SpawnSet(NPC,"attackable",1)
+ MoveToLocation(NPC,7.31, 0.14, 6.07,1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/MeetingOfTheMinds/Braxx.lua b/server/SpawnScripts/MeetingOfTheMinds/Braxx.lua
index be60a7f6c..88e984be7 100755
--- a/server/SpawnScripts/MeetingOfTheMinds/Braxx.lua
+++ b/server/SpawnScripts/MeetingOfTheMinds/Braxx.lua
@@ -15,19 +15,6 @@ function aggro(NPC, Spawn)
AddTimer(NPC, math.random(1500,2500), "spellLoop")
end
-function spellLoop(NPC, Spawn) -- referred from aggro. Loopback function for spellcasts.
- AddTimer(NPC, math.random(1500,2500), "spellChoice")
-end
-
-function spellChoice(NPC, Spawn) -- select a spell from table.
- local hated = GetMostHated(NPC)
- if hated ~= nil then
- FaceTarget(NPC, hated)
- -- CastSpell(hated, spells[math.random(#spells)], 3, NPC)
- end
- AddTimer(NPC, math.random(1500, 2500), "spellLoop")
-end
-
function hailed(NPC, Spawn)
end
diff --git a/server/SpawnScripts/MeetingOfTheMinds/Brixx.lua b/server/SpawnScripts/MeetingOfTheMinds/Brixx.lua
index d90f18c4a..d0e33a568 100755
--- a/server/SpawnScripts/MeetingOfTheMinds/Brixx.lua
+++ b/server/SpawnScripts/MeetingOfTheMinds/Brixx.lua
@@ -12,20 +12,6 @@ function spawn(NPC)
end
function aggro(NPC, Spawn)
- AddTimer(NPC, math.random(1500,2500), "spellLoop")
-end
-
-function spellLoop(NPC, Spawn) -- referred from aggro. Loopback function for spellcasts.
- AddTimer(NPC, math.random(1500,2500), "spellChoice")
-end
-
-function spellChoice(NPC, Spawn) -- select a spell from table.
- local hated = GetMostHated(NPC)
- if hated ~= nil then
- FaceTarget(NPC, hated)
- -- CastSpell(hated, spells[math.random(#spells)], 3, NPC)
- end
- AddTimer(NPC, math.random(1500, 2500), "spellLoop")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/MeetingOfTheMinds/OverlordOxulius.lua b/server/SpawnScripts/MeetingOfTheMinds/OverlordOxulius.lua
index a4a17910e..e0718f7a9 100755
--- a/server/SpawnScripts/MeetingOfTheMinds/OverlordOxulius.lua
+++ b/server/SpawnScripts/MeetingOfTheMinds/OverlordOxulius.lua
@@ -14,23 +14,9 @@ SetTempVariable(NPC, "addSpawn", "nil")
end
function aggro(NPC, Spawn)
- AddTimer(NPC, 1000, "spellLoop")
AddTimer(NPC, 1000, "tzkrLoop")
end
-function spellLoop(NPC, Spawn) -- Loopback function for spellcasts.
-AddTimer(NPC, math.random(1500,2500), "spellChoice")
-end
-
-function spellChoice(NPC, Spawn) -- select a spell from table.
- local hated = GetMostHated(NPC)
- if hated ~= nil then
- FaceTarget(NPC, hated)
--- CastSpell(hated, spells[math.random(#spells)], 3, NPC)
- end
- AddTimer(NPC, math.random(1500, 2500), "spellLoop")
-end
-
function tzkrLoop(NPC, Spawn)
if GetTempVariable(NPC, "addSpawn") == "nil" then
AddTimer(NPC, 3000, "tzkrCheck")
diff --git a/server/SpawnScripts/MeetingOfTheMinds/PkzwkTzkr.lua b/server/SpawnScripts/MeetingOfTheMinds/PkzwkTzkr.lua
index 1235779d5..41be96d53 100755
--- a/server/SpawnScripts/MeetingOfTheMinds/PkzwkTzkr.lua
+++ b/server/SpawnScripts/MeetingOfTheMinds/PkzwkTzkr.lua
@@ -13,21 +13,6 @@ end
function attacked(NPC, Spawn)
Say(NPC, "Reinforcement forces: notified.")
- AddTimer(NPC, 100, "spellLoop")
-end
-
-
-function spellLoop(NPC, Spawn) -- referred from aggro. Loopback function for spellcasts.
- AddTimer(NPC, math.random(1500, 2500), "spellChoice", Spawn) -- add timer to refer to spellchoice.
-end
-
-function spellChoice(NPC, Spawn) -- select a spell from table.
- local hated = GetMostHated(NPC)
- if hated ~= nil then
- FaceTarget(NPC, hated)
- CastSpell(hated, spells[math.random(#spells)], 3, NPC)
- end
- AddTimer(NPC, math.random(1500, 2500), "spellLoop") -- refer to loopback
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/MizansCellar/smashedbarrel.lua b/server/SpawnScripts/MizansCellar/smashedbarrel.lua
index 1bd51f0d9..d16c0587a 100755
--- a/server/SpawnScripts/MizansCellar/smashedbarrel.lua
+++ b/server/SpawnScripts/MizansCellar/smashedbarrel.lua
@@ -13,9 +13,13 @@ end
function casted_on(NPC, Spawn, Message)
if Message == "Put out fire" then
if QuestStepIsComplete(Spawn,5749,3)== false then
+ if GetClientVersion(Spawn) <= 546 then
+ PlayFlavor(Spawn,"","","kick",0,0)
+ else
PlayFlavor(Spawn,"","","tantrum_short",0,0)
+ end
SpawnSet(NPC,"visual_state","0")
- AddTimer(NPC,1200,"FireOut",1,Spawn)
+ AddTimer(NPC,800,"FireOut",1,Spawn)
end
end
end
diff --git a/server/SpawnScripts/Nektulos/AnAgedOldSkeleton.lua b/server/SpawnScripts/Nektulos/AnAgedOldSkeleton.lua
new file mode 100755
index 000000000..004612d81
--- /dev/null
+++ b/server/SpawnScripts/Nektulos/AnAgedOldSkeleton.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/Nektulos/AnAgedOldSkeleton.lua
+ Script Author : Premierio015
+ Script Date : 2023.05.06 03:05:36
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Nektulos/DaisyWinterhope.lua b/server/SpawnScripts/Nektulos/DaisyWinterhope.lua
new file mode 100755
index 000000000..4a9af8a7c
--- /dev/null
+++ b/server/SpawnScripts/Nektulos/DaisyWinterhope.lua
@@ -0,0 +1,191 @@
+--[[
+ Script Name : SpawnScripts/Nektulos/DaisyWinterhope.lua
+ Script Author : Premierio015
+ Script Date : 2023.03.23 09:03:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local MaidForTheMistPartI = 5793
+
+function spawn(NPC)
+ ProvidesQuest(NPC, MaidForTheMistPartI)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasQuest(Spawn, MaidForTheMistPartI) and not HasCompletedQuest(Spawn, MaidForTheMistPartI) then
+ Option0(NPC, Spawn)
+ elseif GetQuestStep(Spawn, MaidForTheMistPartI) == 1 or GetQuestStep(Spawn, MaidForTheMistPartI) == 2 then
+ Progress(NPC, Spawn)
+ elseif GetQuestStep(Spawn, MaidForTheMistPartI) == 3 or GetQuestStep(Spawn, MaidForTheMistPartI) == 4 then
+ Progress3(NPC, Spawn)
+ elseif HasCompletedQuest(Spawn, MaidForTheMistPartI) then
+ PlayFlavor(NPC, "voiceover/english/daisy_winterhope/nektulos/quest/sea_of_mist/daisy_winterhope_iscompletedquest1_713506fb.mp3", "The Maid for the Mist is quite a ship, isn't she?", "", 3723150789, 3507860620, Spawn)
+end
+ end
+
+function Option0(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog000.mp3", 4292848348, 1971351352)
+ Dialog.AddOption("That depends; what makes it worthwhile?", "Option1")
+ Dialog.AddOption("Just passing through.")
+ Dialog.AddDialog("Are you looking for something worthwhile to do? Or are you just passing by and being polite?")
+ Dialog.Start()
+end
+
+function Option1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog001.mp3" , 1343801945, 1370855896)
+ Dialog.AddOption("Not in any detail. What is it?", "Option2")
+ Dialog.AddOption("I've heard more than enough, thanks, but no thanks.")
+ Dialog.AddDialog("You see my vessel off shore there, the \"Maid for the Mist?\" I'm making her ship-shape for another perilous journey. This time, to the Sea of Mist. Ever heard tell of the Sea of Mist? Hmmm?")
+ Dialog.Start()
+end
+
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog002.mp3" , 4072677891, 2389434454)
+ Dialog.AddOption("(continue)", "Option3")
+ Dialog.AddOption("I don't have time for stories at the moment.")
+ Dialog.AddDialog("A long time ago, afore the world was all tore up in the Shattering, Halflings like me lived in a beautiful place called the Misty Thicket. A real nice spot it was. Then everything changed.")
+ Dialog.Start()
+end
+
+function Option3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog003.mp3", 4284841395, 232118033)
+ Dialog.AddOption("There's a lot of fog?", "Option4")
+ Dialog.AddOption("I don't have time for this.")
+ Dialog.AddDialog("Now there ain't as many Halflings as once was, and the Thicket came to be an island: the Enchanted Lands. All around the Enchanted Lands is the Sea of Mist. You can kind of guess how it got its name.")
+ Dialog.Start()
+end
+
+function Option4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog004.mp3", 1475216550, 442077487)
+ Dialog.AddOption("Your ship will go through the Sea of Mist?", "Option5")
+ Dialog.AddOption("Good luck to you.")
+ Dialog.AddDialog("Yep, fog and mist that's so thick, you could cut it with a blade. That's not the only reason it's dangerous, though. But I gotta know what's on the other side. I gotta get my ship ready to go.")
+ Dialog.Start()
+end
+
+function Option5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog005.mp3", 3310931020, 634373134)
+ Dialog.AddOption("Sure, count me in.", "offer")
+ Dialog.AddOption("Sounds a bit risky. Perhaps later.")
+ Dialog.AddDialog("All I need's a few more things and my shipwright can finish the job. Whaddya say, can you help me get a few odds and ends? If you help me out, I'll make sure you can get there and back on any of my ships.")
+ Dialog.Start()
+end
+
+function Option6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog009.mp3", 1416362062, 802909289)
+ Dialog.AddOption("What do you need now?", "Option7")
+ Dialog.AddOption("Perhaps later.")
+ Dialog.AddDialog("Let me see! Let me see! Ahhhh ... Perfect! You done a great job! Now, maybe you could do just one more thing for me?")
+ Dialog.Start()
+end
+
+function Option7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog010.mp3", 3773144692, 2188381399)
+ Dialog.AddOption("Leaks!?", "Option8")
+ Dialog.AddOption("I've no desire to end up at the bottom of the sea.")
+ Dialog.AddDialog("This one's pretty easy. I'm sealing up a few leaks...")
+ Dialog.Start()
+end
+
+function Option8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog011.mp3", 3544729025, 2906249482)
+ Dialog.AddOption("How fortunate. How many will you need?", "Option9")
+ Dialog.AddOption("I haven't got time for this right now.")
+ Dialog.AddDialog("Now, now, they're minor leaks. What works real well is to tighten up some of the connections with reinforcements of bear sinew. And the best bear sinews happen to be right here in Nektulos. How lucky is that?")
+ Dialog.Start()
+end
+
+function Option9(NPC, Spawn)
+ SetStepComplete(Spawn, MaidForTheMistPartI, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog012.mp3", 3115159860, 1253570402)
+ Dialog.AddOption("Ready and willing. I will return with thirteen ash owlbear sinews.")
+ Dialog.AddOption("I will have to do this some other time.")
+ Dialog.AddDialog("Only thirteen ash owlbear sinews from Nektulos Forest will do! Are you ready for a good hunt?")
+ Dialog.Start()
+end
+
+
+
+
+function Option10(NPC, Spawn)
+ SetStepComplete(Spawn, MaidForTheMistPartI, 4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog014.mp3", 3402799783, 3066435780)
+ Dialog.AddOption("Glad to be of assistance.")
+ Dialog.AddDialog("Terrific! The 'Maid for the Mist' will be ready to sail very soon! I haven't forgotten my promise! You ride for free, friend! Just talk to Captain Corrigan when you're ready to go!")
+ Dialog.Start()
+end
+
+
+
+function offer(NPC, Spawn)
+OfferQuest(NPC, Spawn, MaidForTheMistPartI)
+end
+
+function Progress(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog007.mp3", 1674078797, 2006281337)
+ if GetQuestStep(Spawn, MaidForTheMistPartI) == 2 then
+ Dialog.AddOption("Here are 25 of them, as promised.", "Option6")
+ end
+ Dialog.AddOption("I haven't gotten them all yet.", "Progress2")
+ Dialog.AddDialog("I've gotten most of my other materials; how's it coming with them ironshell carapaces?")
+Dialog.Start()
+end
+
+function Progress2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog008.mp3", 3949737600, 247544336)
+ Dialog.AddOption("I'll be back.")
+ Dialog.AddDialog("Oh, All right, but hurry back. We need to get this ship in shape for the journey!")
+ Dialog.Start()
+end
+
+
+function Progress3(NPC, Spawn)
+
+ Dialog.New(NPC, Spawn)
+ Dialog.AddVoiceover("voiceover/english/daisy_winterhope/hallmark/sea_of_mist/winterhope_dialog013.mp3", 1791255202, 617071081)
+ if GetQuestStep(Spawn, MaidForTheMistPartI) == 4 then
+ Dialog.AddOption("The hunt is over. Here are thirteen ash owlbear sinews.", "Option10")
+ end
+ Dialog.AddOption("Still hunting.", "Progress2")
+ Dialog.AddDialog("How's the hunt for the ash owlbears?")
+ Dialog.Start()
+end
+
+
+
+
+
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Nektulos/Theeralthenomad.lua b/server/SpawnScripts/Nektulos/Theeralthenomad.lua
new file mode 100755
index 000000000..b3fa16613
--- /dev/null
+++ b/server/SpawnScripts/Nektulos/Theeralthenomad.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/Nektulos/Theeralthenomad.lua
+ Script Author : Premierio015
+ Script Date : 2023.05.06 03:05:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/GenericUriParser/DialogModule"
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Sit and chat. I've been waiting for you. I know where you're going.")
+ Dialog.AddVoiceover("voiceover/english/theeral/nektulos/theeral000.mp3", 1126460949, 1988970207)
+ Dialog.AddOption("How can an old nomad know my destination? ")
+ Dialog.AddOption("No thanks, you're a bit creepy.")
+ Dialog.Start()
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Nettleville/Ajarn.lua b/server/SpawnScripts/Nettleville/Ajarn.lua
index b8c4a1b70..2133eb0c2 100755
--- a/server/SpawnScripts/Nettleville/Ajarn.lua
+++ b/server/SpawnScripts/Nettleville/Ajarn.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Nettleville/AldinDunwick.lua b/server/SpawnScripts/Nettleville/AldinDunwick.lua
index 6db2c0b36..d4d58a5f9 100755
--- a/server/SpawnScripts/Nettleville/AldinDunwick.lua
+++ b/server/SpawnScripts/Nettleville/AldinDunwick.lua
@@ -12,7 +12,7 @@ end
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/AndrewLeicester.lua b/server/SpawnScripts/Nettleville/AndrewLeicester.lua
index c8cc60c1c..17eddbec2 100755
--- a/server/SpawnScripts/Nettleville/AndrewLeicester.lua
+++ b/server/SpawnScripts/Nettleville/AndrewLeicester.lua
@@ -70,24 +70,24 @@ end
SetHeading(NPC,153)
end
- function Drink(NPC)
- PlayAnimation(NPC,11422)
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","chuckle",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
- else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Nettleville/AnevayaStarchaser.lua b/server/SpawnScripts/Nettleville/AnevayaStarchaser.lua
index 41012f232..b06ef5709 100755
--- a/server/SpawnScripts/Nettleville/AnevayaStarchaser.lua
+++ b/server/SpawnScripts/Nettleville/AnevayaStarchaser.lua
@@ -61,25 +61,25 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","hungry",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Nettleville/BarmaidLollaCotgrove.lua b/server/SpawnScripts/Nettleville/BarmaidLollaCotgrove.lua
index 7ef1b78fa..3324be4d7 100755
--- a/server/SpawnScripts/Nettleville/BarmaidLollaCotgrove.lua
+++ b/server/SpawnScripts/Nettleville/BarmaidLollaCotgrove.lua
@@ -96,7 +96,7 @@ end
function Helping(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I apologize for my rude behaviour, friend. I'm wound up tighter than an ogre's bootstraps because the tavern isn't built yet! Until construction is complete, I'm stuck outside. S-say, could you help me? I need to check on a order I placed for some special gnome kegs.")
+ Dialog.AddDialog("I apologize for my rude behaviour, friend. I'm wound up tighter than an ogre's bootstraps because the tavern isn't built yet! Until construction is complete, I'm stuck outside. S-say, would you help me? I need to check on a order I placed for some special gnome kegs.")
Dialog.AddVoiceover("voiceover/english/lolla_cotgrove/qey_village01/lollacotgrove001.mp3", 1554521756, 1693439173)
Dialog.AddOption("I'm guessing a gnome has the order?", "Helping2")
Dialog.AddOption("Sorry, I can't help right now.")
diff --git a/server/SpawnScripts/Nettleville/BowyerFesante.lua b/server/SpawnScripts/Nettleville/BowyerFesante.lua
index 7acd74668..42c63b463 100755
--- a/server/SpawnScripts/Nettleville/BowyerFesante.lua
+++ b/server/SpawnScripts/Nettleville/BowyerFesante.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Nettleville/CarolineCopperstone.lua b/server/SpawnScripts/Nettleville/CarolineCopperstone.lua
index e0d4215ed..6db140abf 100755
--- a/server/SpawnScripts/Nettleville/CarolineCopperstone.lua
+++ b/server/SpawnScripts/Nettleville/CarolineCopperstone.lua
@@ -60,9 +60,12 @@ function Dialog2a(NPC, Spawn)
Dialog.AddOption("Adventurer","Dialog2b")
Dialog.AddOption("Crafter","Dialog2b")
if GetRace(Spawn)==9 then
- Dialog.AddOption("Formly a used horse salesperson before the cataclysm.","Dialog2b")
+ Dialog.AddOption("Formerly a used horse salesperson before the cataclysm.","Dialog2b")
+ Dialog.AddOption("Jack-of-all-trades?","Dialog2b")
elseif GetRace(Spawn)==11 then
Dialog.AddOption("I'd say box inspector, but I guess I should just put down Adventurer.","Dialog2b")
+ elseif GetRace(Spawn)==19 then
+ Dialog.AddOption("Moonlighter, perhaps? I prefer to be discrete.","Dialog2b")
end
Dialog.Start()
end
@@ -85,7 +88,7 @@ if HasQuest(Spawn,5763) and GetQuestStep(Spawn,5763)==4 then
end
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Excellent! Your account is open, and a spot is reserved for you in the vaults. Please visit us anytime with your banking needs. Do you need anything else?")
+ Dialog.AddDialog("Excellent! Your account with our bank is open. We've reserved a spot in the vault for you. Please feel free to visit us anytime with your banking needs. Do you need anything else?")
Dialog.AddVoiceover("voiceover/english/banker_caroline_copperstone/qey_village01/banker_carolyn_copperstone005.mp3", 2301459090, 3948003852)
PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
Dialog.AddOption("Not right now.")
diff --git a/server/SpawnScripts/Nettleville/DuniDiiun.lua b/server/SpawnScripts/Nettleville/DuniDiiun.lua
index b4b6e96a7..c49f6f09e 100755
--- a/server/SpawnScripts/Nettleville/DuniDiiun.lua
+++ b/server/SpawnScripts/Nettleville/DuniDiiun.lua
@@ -75,25 +75,25 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","hungry",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Nettleville/EhuraaRotherham.lua b/server/SpawnScripts/Nettleville/EhuraaRotherham.lua
index a763ab746..addaaa12c 100755
--- a/server/SpawnScripts/Nettleville/EhuraaRotherham.lua
+++ b/server/SpawnScripts/Nettleville/EhuraaRotherham.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Nettleville/Falkener.lua b/server/SpawnScripts/Nettleville/Falkener.lua
index 3a181220b..3f18a2549 100755
--- a/server/SpawnScripts/Nettleville/Falkener.lua
+++ b/server/SpawnScripts/Nettleville/Falkener.lua
@@ -5,7 +5,7 @@
Script Purpose :
:
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -14,7 +14,12 @@ function spawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
if GetFactionAmount(Spawn,11)>0 then
if math.random(1,100)<15 then
GenericGuardHail(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/FrancineTalino.lua b/server/SpawnScripts/Nettleville/FrancineTalino.lua
index 87b9edc4e..0a96b35a5 100755
--- a/server/SpawnScripts/Nettleville/FrancineTalino.lua
+++ b/server/SpawnScripts/Nettleville/FrancineTalino.lua
@@ -11,6 +11,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
waypoints(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/GarionDunam.lua b/server/SpawnScripts/Nettleville/GarionDunam.lua
index 78ffe5015..0ea60fc89 100755
--- a/server/SpawnScripts/Nettleville/GarionDunam.lua
+++ b/server/SpawnScripts/Nettleville/GarionDunam.lua
@@ -14,6 +14,7 @@ local Delivery = 5499
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
ProvidesQuest(NPC, Delivery)
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Nettleville/GuardEssex.lua b/server/SpawnScripts/Nettleville/GuardEssex.lua
new file mode 100755
index 000000000..010608c3a
--- /dev/null
+++ b/server/SpawnScripts/Nettleville/GuardEssex.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/Nettleville/GuardEssex.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.26 04:08:11
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ CheckFaction(NPC, Spawn, "Qeynos")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/Nettleville/IssakTeech.lua b/server/SpawnScripts/Nettleville/IssakTeech.lua
index f331e7c36..529b12335 100755
--- a/server/SpawnScripts/Nettleville/IssakTeech.lua
+++ b/server/SpawnScripts/Nettleville/IssakTeech.lua
@@ -62,24 +62,24 @@ function waypoints(NPC)
MovementLoopAddLocation(NPC, 626.7, -22.41, 362.63, 2, 0)
end
- function Drink(NPC)
- PlayAnimation(NPC,11422)
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
- else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Nettleville/KennethAshburnDayTime.lua b/server/SpawnScripts/Nettleville/KennethAshburnDayTime.lua
index 0ea691c48..a0dd64517 100755
--- a/server/SpawnScripts/Nettleville/KennethAshburnDayTime.lua
+++ b/server/SpawnScripts/Nettleville/KennethAshburnDayTime.lua
@@ -112,25 +112,25 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","flirt",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Nettleville/KuraBalik.lua b/server/SpawnScripts/Nettleville/KuraBalik.lua
index eb8602ca7..406aedcd0 100755
--- a/server/SpawnScripts/Nettleville/KuraBalik.lua
+++ b/server/SpawnScripts/Nettleville/KuraBalik.lua
@@ -13,6 +13,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
waypoints(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/MarjaniKenan.lua b/server/SpawnScripts/Nettleville/MarjaniKenan.lua
index 83095ec61..a14821c0e 100755
--- a/server/SpawnScripts/Nettleville/MarjaniKenan.lua
+++ b/server/SpawnScripts/Nettleville/MarjaniKenan.lua
@@ -9,6 +9,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "flirt")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Nettleville/NawalTahri.lua b/server/SpawnScripts/Nettleville/NawalTahri.lua
index 6412c7902..dd7a95a0c 100755
--- a/server/SpawnScripts/Nettleville/NawalTahri.lua
+++ b/server/SpawnScripts/Nettleville/NawalTahri.lua
@@ -48,13 +48,15 @@ function hailed(NPC, Spawn)
else
conversation = CreateConversation()
GenericHail(NPC, Spawn)
-
- if not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
AddConversationOption(conversation, "No, not at the moment.")
StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
else
- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in Qeynos Harbor. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
end
@@ -62,11 +64,21 @@ end
function dlg_39_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
- -- artisan essentials volume 2
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
- AddConversationOption(conversation, "I will start on that now.", "dlg_39_2")
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
end
function Dialog1(NPC,Spawn)
@@ -100,7 +112,7 @@ function CanDo2(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other players. A very handy connection, indeed!")
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
Dialog.AddOption("Thank you for all the information!")
if GetTradeskillLevel(Spawn)<2 then
Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
diff --git a/server/SpawnScripts/Nettleville/Nea.lua b/server/SpawnScripts/Nettleville/Nea.lua
new file mode 100755
index 000000000..b0e3f6b24
--- /dev/null
+++ b/server/SpawnScripts/Nettleville/Nea.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : SpawnScripts/Nettleville/Nea.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.27 03:08:29
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ if GetFactionID(Spawn) ==1 then
+ Attack(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Nettleville/NiaJaja.lua b/server/SpawnScripts/Nettleville/NiaJaja.lua
index 329220f08..654f20e50 100755
--- a/server/SpawnScripts/Nettleville/NiaJaja.lua
+++ b/server/SpawnScripts/Nettleville/NiaJaja.lua
@@ -12,6 +12,7 @@ dofile("SpawnScripts/Generic/UnknownLanguage.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
ProvidesQuest(NPC,5598)
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Nettleville/RalkeshOrto.lua b/server/SpawnScripts/Nettleville/RalkeshOrto.lua
index ceb3fa44e..01b8ac954 100755
--- a/server/SpawnScripts/Nettleville/RalkeshOrto.lua
+++ b/server/SpawnScripts/Nettleville/RalkeshOrto.lua
@@ -5,12 +5,14 @@
Script Date : 2008.09.24
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
-- Quest ID's
local UNFORTUNATE_MISTAKES = 303
function spawn(NPC)
SetTempVariable(NPC, "Ready", "true")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
@@ -18,6 +20,11 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
+ if not HasLanguage(Spawn,13)then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ else
if GetTempVariable(NPC, "AllowQuestProgress") == "true" then
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
@@ -26,8 +33,12 @@ function hailed(NPC, Spawn)
if GetQuestStep(Spawn, UNFORTUNATE_MISTAKES) == 1 then
SomethingIMustDo(NPC, Spawn)
end
- end
end
+ else
+ PlayFlavor(NPC, "voiceover/english/tutorial_revamp/ralkesh_orto/qey_village01/qst_ralkesh_orto_onemoment_89f15716.mp3", "One moment please, this is important.", "", 4271869261, 3070926903, Spawn, 13)
+
+ end
+end
end
function SomethingIMustDo(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/StewardLoralei.lua b/server/SpawnScripts/Nettleville/StewardLoralei.lua
index d8ad8bf08..8a2081d41 100755
--- a/server/SpawnScripts/Nettleville/StewardLoralei.lua
+++ b/server/SpawnScripts/Nettleville/StewardLoralei.lua
@@ -17,7 +17,7 @@ function InRange(NPC, Spawn) --Quest Callout
if GetFactionAmount(Spawn,11)<0 then
PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
FaceTarget(NPC, Spawn)
-elseif GetRace(Spawn)== 9 or GetRace(Spawn)== 11 then
+elseif GetRace(Spawn)== 9 or GetRace(Spawn)== 11 or GetRace(Spawn) == 19 or GetRace(Spawn) == 11 or GetRace(Spawn) == 10 or GetRace(Spawn) >= 12 or GetRace(Spawn)<= 14 then
if not HasQuest(Spawn,5763) and not HasCompletedQuest(Spawn, 5763) and HasQuest(Spawn, 5762) and not HasCompletedQuest(Spawn, 5762)then
Talk(NPC,Spawn)
elseif CalloutTimer == false then
@@ -41,7 +41,7 @@ end
function hailed(NPC, Spawn)
-if GetRace(Spawn)== 9 or GetRace(Spawn)== 11 then
+if GetRace(Spawn)== 9 or GetRace(Spawn)== 11 or GetRace(Spawn) == 19 or GetRace(Spawn) == 11 or GetRace(Spawn) == 10 or GetRace(Spawn) >= 12 or GetRace(Spawn)<= 14 then
if not HasQuest(Spawn,5763) and not HasCompletedQuest(Spawn, 5763) and not HasQuest(Spawn, 5762) and not HasCompletedQuest(Spawn, 5762) then
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/Valerie.lua b/server/SpawnScripts/Nettleville/Valerie.lua
index 7dc1ee01e..720b4ffe8 100755
--- a/server/SpawnScripts/Nettleville/Valerie.lua
+++ b/server/SpawnScripts/Nettleville/Valerie.lua
@@ -5,7 +5,7 @@
Script Purpose :
:
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -14,6 +14,11 @@ function spawn(NPC)
end
function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
CheckFaction(NPC, Spawn, "Qeynos")
if GetFactionAmount(Spawn,11)>0 then
if math.random(1,100)<25 then
diff --git a/server/SpawnScripts/Nettleville/WillimBarclay.lua b/server/SpawnScripts/Nettleville/WillimBarclay.lua
index 1a61bfcc5..d32808234 100755
--- a/server/SpawnScripts/Nettleville/WillimBarclay.lua
+++ b/server/SpawnScripts/Nettleville/WillimBarclay.lua
@@ -9,6 +9,7 @@ require "SpawnScripts/Generic/DialogModule"
local Mage2 = 5768
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
@@ -115,7 +116,7 @@ function Dialog5a(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("...")
- PlayFlavor(NPC, "", "", "pout", 0, 0, Spawn)
+ PlayFlavor(NPC, "", "", "sulk", 0, 0, Spawn)
Dialog.AddOption("...I mean, I think you need a magical charm to help you","Dialog6")
Dialog.Start()
end
@@ -175,7 +176,7 @@ function Dialog11(NPC,Spawn)
Dialog.AddDialog("Let me try another! \"M'lady, would you care to take a stroll?\" And how's this one? \"Darlina, would you like to step in for a nightcap?\"")
Dialog.AddVoiceover("voiceover/english/willim_barclay/qey_village01/willimbarclay011.mp3", 2824359761, 59383061)
PlayFlavor(NPC, "", "", "flirt", 0, 0, Spawn)
- Dialog.AddOption("...","Dialog11")
+ Dialog.AddOption("...","Dialog12")
Dialog.Start()
end
@@ -183,13 +184,13 @@ function Dialog12(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Here, let me try another: \"Don't worry, ladies, there's enough of me to go around.\"")
- Dialog.AddVoiceover("voiceover/english/willim_barclay/qey_village01/willimbarclay012.mp3", 2824359761, 59383061)
+ Dialog.AddVoiceover("voiceover/english/willim_barclay/qey_village01/willimbarclay012.mp3", 437548265, 1378409043)
PlayFlavor(NPC, "", "", "flex", 0, 0, Spawn)
- Dialog.AddOption("...","Dialog13")
+ Dialog.AddOption("Watch out, friend. If you get too proud, the charm will turn you into a toad.","Dialog13")
Dialog.Start()
end
-function Dialog12(NPC,Spawn)
+function Dialog13(NPC,Spawn)
SetStepComplete(Spawn,Mage2,1)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
diff --git a/server/SpawnScripts/Nettleville/zonetoqeysouth.lua b/server/SpawnScripts/Nettleville/zonetoqeysouth.lua
index 4788fb1b3..7a12905a6 100755
--- a/server/SpawnScripts/Nettleville/zonetoqeysouth.lua
+++ b/server/SpawnScripts/Nettleville/zonetoqeysouth.lua
@@ -5,19 +5,32 @@
Script Purpose :
:
--]]
-
-function spawn(NPC)
- SetRequiredQuest(NPC,5718,14,0,1,1)
- SetRequiredQuest(NPC,5719,14,0,1,1)
- SetRequiredQuest(NPC,5720,14,0,1,1)
- SetRequiredQuest(NPC,5721,14,0,1,1)
- SetRequiredQuest(NPC,5722,14,0,1,1)
- SetRequiredQuest(NPC,5723,14,0,1,1)
-end
-
-function hailed(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter South Qeynos' then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723)
+ and GetFactionAmount(Spawn,11)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5763) and GetQuestStep(Spawn,5763)==10 then
+ SetStepComplete(Spawn,5763,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only citizens may enter the city of Qeynos.",255,50,50)
+ SendMessage(Spawn,"Only citizens may enter the city of Qeynos.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,11) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("SouthQeynos")
+ Zone(ZoneRef,Spawn,678.57, -20.56, 271.52, 289.21)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/ArcanistSonius.lua b/server/SpawnScripts/NorthFreeport/ArcanistSonius.lua
new file mode 100755
index 000000000..c14975ea8
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/ArcanistSonius.lua
@@ -0,0 +1,312 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/ArcanistSonius.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.29 06:09:41
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+local Mage1 = 5902
+local Sorc = 5904
+local Summ = 5905
+local Ench = 5903
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Mage1)
+ ProvidesQuest(NPC, Sorc)
+ ProvidesQuest(NPC, Summ)
+ ProvidesQuest(NPC, Ench)
+end
+
+--The Arcanist sent you to me? She's made my promotion to sorcerer so easy!
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetLevel(Spawn) ==7 and HasCompletedQuest(Spawn,Mage1) then
+ DoneToday(NPC,Spawn)
+ elseif GetLevel(Spawn) >=9 and HasCompletedQuest(Spawn,Mage1) and GetClass(Spawn)==21 and not HasQuest(Spawn, Ench) and not HasQuest(Spawn, Sorc) and not HasQuest(Spawn, Summ) then
+ FinalClassTest(NPC,Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Don't talk to me unless you're devoted to academic research. Unlocking the secrets of arcane powers takes devotion. The lazy need not apply in this field...")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius001.mp3", 3905512775, 1010931746)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ if GetClass(Spawn)== 21 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Mage1) and not HasCompletedQuest(Spawn,Mage1) then
+ Dialog.AddOption("I am interested in learning how to enhance my magic abilities.","Dialog1")
+ end
+ if HasQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==2 then
+ Dialog.AddOption("The infestation of slimes has been slowed now that I have destroyed a number of the monstrous goos.","Dialog2")
+ end
+ if HasQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==4 then
+ Dialog.AddOption("He's written up a contract for forty bottles at five silver pieces each.","Dialog3")
+ end
+ if GetClass(Spawn)== 21 and GetLevel(Spawn)>=8 and GetQuestStep(Spawn,Mage1)==5 then
+ Dialog.AddOption("I would like to continue my lessons, Arcanist.","Dialog4")
+ elseif GetClass(Spawn)== 21 and GetLevel(Spawn)< 8 and GetQuestStep(Spawn,Mage1)==5 then
+ Dialog.AddOption("I will return once I've reviewed my studies, Arcanist.")
+ end
+ if HasQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==9 then
+ Dialog.AddOption("I have collected the information on what was summoned. It looks like three different things were summoned into existence.","Dialog5")
+ end
+ if HasCompletedQuest(Spawn,Ench) or HasCompletedQuest(Spawn,Sorc) or HasCompletedQuest(Spawn,Summ) then
+ Dialog.AddOption("Arcanist. I still reflect on your lessons. Thank you.")
+ end
+ if GetLevel(Spawn) <9 and HasCompletedQuest(Spawn,Mage1) and GetClass(Spawn)==21 and not HasQuest(Spawn, Ench) and not HasQuest(Spawn, Sorc) and not HasQuest(Spawn, Summ) then
+ Dialog.AddOption("I will return for my final exam once I've reviewed my studies, Arcanist.")
+ end
+ Dialog.AddOption("In that case, I'll let you get back to work. Goodbye.")
+ Dialog.Start()
+end
+end
+
+--I convinced Bulz the troll to defeat a couple of Seafuries for me. I handled the first mate myself.
+
+--Precisely! The mage summoned an elephant! One witness felt its ears drape her head, another ran into its tusks, and the last witness felt the elephant's trunk wrap around his neck. Even though each witness experienced something different, there is only one reality. A summoner can identify this reality and change it to suit his needs. I know who is responsible for summoning the elephant, but this is not your concern. You completed your lessons, my apt pupil. Now it is time for your final exam.
+--I do not have time to speak to you unless you are seriously devoted to academic research. This is not something to take lightly, for true research does not just happen all by itself. You must devote your life to unlocking the secrets of arcane powers. Therefore, the lazy need not apply.
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Or so you say... Many people dabble in the arcane for the promise of great power. Yet, when the time comes, they're too lazy to wrest secrets from the grasp of mystery. How far will you go to unlock the power that knowledge can grant you?")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius002.mp3", 2674482409, 809985473)
+ Dialog.AddOption("I will wield powers yet to be seen in this world!","OfferMage1")
+ Dialog.AddOption("I... should be going.")
+ Dialog.Start()
+end
+
+
+function OfferMage1(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Mage1)
+ FaceTarget(NPC,Spawn)
+end
+
+--I would like to continue my lessons, Arcanist.
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm ... you return and in a timely manner. You may be a prize pupil after all. Even though you can't see it, these Slime specimens contain residue of the life force that animated them. You will learn that life is a never-ending resource that surrounds us. Knowledge, on the other hand, is far more difficult to obtain. Thus, the lesson learned is knowledge is far more precious than life. Remember this.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius004.mp3", 3551708297, 2303353482)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I see. So my path to knowing will be paved by the bodies before me.","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Next, I shall teach you how to avoid letting other people's concerns disrupt your research. The Coalition of Tradesfolke raised the price of ink this morning. This is unacceptable. Go speak with Aulus in Torlig's Shop. Convince him that the price increase of ink shouldn't apply to someone of my stature.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius005.mp3", 4176304101, 1577206553)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("How would I do that?","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ SetStepComplete(Spawn,Mage1,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("An enchanter would mesmerise Alus with a simple spell, but you haven't learned these skills. It shall be a difficult task, but mesmerizing Aulus will teach you the skills of an enchanter. Start with the words you use in everyday life, then you will begin to understand how to enhance people with magic.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius006.mp3", 2931456206, 3429721696)
+ Dialog.AddOption("Alright. I'll return once I've spoken with them.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Amazing! He charges ten gold pieces for a bottle and you lowered it to five silver pieces? Well, my pupil, I think you have what it takes to be an enchanter.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius007.mp3", 1459390682, 2672790255)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ SetStepComplete(Spawn,Mage1,4)
+ if GetClass(Spawn)== 21 and GetLevel(Spawn)>=8 and GetQuestStep(Spawn,Mage1)==5 then
+ Dialog.AddOption("I rather enjoyed manipulating the conversation to my desire...","Dialog4")
+ elseif GetClass(Spawn)== 21 and GetLevel(Spawn)< 8 and GetQuestStep(Spawn,Mage1)==5 then
+ Dialog.AddOption("I rather enjoyed manipulating the conversation to my desire...","DoneToday")
+ end
+ Dialog.Start()
+end
+
+function DoneToday(NPC,Spawn)
+ if GetQuestStep(Spawn,Mage1)==4 then
+ SetStepComplete(Spawn,Mage1,4)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm pleased with your progress. Unfortunately, today's lesson is over. I must write this postulate before I forget it. Please study what I taught you thus far. We can continue your lessons at another time.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius008.mp3", 0, 0)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ if GetClass(Spawn)== 21 and GetLevel(Spawn)>=8 then
+ Dialog.AddOption("I would like to continue my lessons, Arcanist. I'm eager to start","Dialog4")
+ else
+ Dialog.AddOption("Thank you. I'll return soon for more lessons.")
+ end
+ Dialog.Start()
+end
+
+
+---MAGE2
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Excellent! I noticed that one of my students dropped out of my course and is attempting home schooling. Without my signature of academic achievement, I cannot tolerate this. I don't know who this dropout is, but I need you to find out. In turn, you will learn the skills of a summoner.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius009.mp3", 3430145629, 2951724267)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("What does a dropout have to do with summoning?","Dialog4a")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I heard that earlier today several people in the districts witnessed the summoning of some kind of creature. Go question these witnesses. After interviewing them, identify the summoned creature. Let me know when you solve this mystery. When I find out who is responsible, I shall kill him for his disobedience! Let me have your journal. I'll write down the names of the witnesses.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius010.mp3", 1221218294, 850810550)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Here is my journal. I will get to the bottom of this.","OfferMage2")
+ Dialog.Start()
+end
+
+
+
+function OfferMage2(NPC,Spawn)
+ SetStepComplete(Spawn,Mage1,5)
+ FaceTarget(NPC,Spawn)
+end
+
+function Dialog5(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You have a list? Let me see it. ... One person was draped in a sheet of leather, another was impaled by a stake, and another felt a snake ... this is rubbish! A novice summoner could never summon three objects at once! From this list, I can tell what that delinquent student summoned. To pass this test, you must understand that people's realities differ. Three objects weren't summoned today, only one was. What was it?")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius011.mp3", 1663368472, 4059713499)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddOption("a goblin","Wrong")
+ Dialog.AddOption("a really big snake","Wrong")
+ Dialog.AddOption("an orc","Wrong")
+ Dialog.AddOption("a sewer slime","Wrong")
+ Dialog.AddOption("Lucan D'lere","WrongLucan")
+ Dialog.AddOption("an elephant","Correct")
+ Dialog.AddOption("a coat-wearing snake wielding spears?","WrongSnake")
+ Dialog.Start()
+end
+
+function Wrong(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Sadly, you fail. Using the facts you presented me, your answer is ridiculous; you obviously put no thought into it. If you continue at this rate, you will never be anything more than a simple mage. Review the clues again, and speak with me when you have the correct answer.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius012.mp3", 2718680677, 1828842152)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I'll consider my list again...","Dialog5")
+ Dialog.Start()
+end
+
+function WrongLucan(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Fool! The Overlord is watching you as we speak.")
+ Dialog.AddVoiceover("voiceover/english/optional2/darkelf_eco_evil_3/ft/darkelf/darkelf_eco_evil_3_notcitizen_gf_e5838bd0.mp3", 644059683, 1813641447)
+ Dialog.AddVoiceover("voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_notcitizen_gf_e5838bd0.mp3", 3487310419, 1932819422)
+ PlayFlavor(NPC, "", "", "cringe", 0, 0, Spawn)
+ Dialog.AddOption("Err...")
+ Dialog.Start()
+end
+
+function WrongSnake(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius012.mp3", 0, 0)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddOption("Uhhh... Only kidding.","Wrong")
+ Dialog.Start()
+end
+
+function Correct(NPC,Spawn)
+ SetStepComplete(Spawn,Mage1,9)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Precisely! The mage summoned an elephant! One witness felt its ears drape her head, another ran into its tusks, and the last witness felt the elephant's trunk wrap around his neck. Even though each witness experienced something different, there is only one reality. A summoner can identify this reality and change it to suit his needs. I know who is responsible for summoning the elephant, but this is not your concern. You completed your lessons, my apt pupil. Now it is time for your final exam.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius013.mp3", 1007657081, 1911291450)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("A final exam? What must I do?","FinalClassTest")
+ Dialog.Start()
+end
+
+
+
+--FINAL Test
+function FinalClassTest(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I taught you three different methods of exploring the secrets of mystical power. Now you must dedicate your arcane studies to one discipline... Which shall it be?")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius014.mp3", 196403467, 3470342687)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("I feel the destructive arts are to my liking. I shall study to be a sorcerer.","Sorcery")
+ Dialog.AddOption("The complex weaves of enchantment are compelling. I will study to be an enchanter.","Enchanter")
+ Dialog.AddOption("Bending truths to create something from nothing is intriguing. I will be a summoner.","Summoner")
+ Dialog.Start()
+end
+
+
+
+function Summoner(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Summ)
+end
+
+
+function Sorcery(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Craving such immense power is tempting, but beware, others crave it too. They will destroy you in the blink of an eye to obtain even a small portion of your power. Students of the arcane arts must learn to combat these power plays by testing their skills. Now it is your time to test your skills and face your first opponent.")
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius018.mp3", 2784462451, 4251950023)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+ Dialog.AddOption("I am ready. Who will I be testing my skills on?","Sorcery2")
+ Dialog.AddOption("Perhaps I should reconsider this...","FinalClassTest")
+ Dialog.Start()
+end
+
+
+
+function Sorcery2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Sorc)
+end
+
+function Enchanter(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You'll be an enchanter... yes... perhaps ... First, let's see how you deal with an angry crowd. Not everyone is cut out to deal with the thought required behind this choice ... we need to make sure that you are.")
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/arcanist_sonius/fprt_north/arcanistsonius012.mp3", 0, 0)
+ Dialog.AddOption("If it is like my lesson before, I can handle a crowd.","Enchanter2")
+ Dialog.AddOption("Actually, I better rethink this.","FinalClassTest")
+ Dialog.Start()
+end
+
+function Enchanter2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Ench)
+end
+
+function GoodbyeSumm(NPC,Spawn) -- ALSO SORC
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You don't need to return to me. You'll have proved your worth and readiness. Take care, though. You'll be alone and these elementals will not go down without a fight. I hope to see you again one day.")
+ Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel031.mp3", 980785219, 3713600865)
+ PlayFlavor(NPC, "", "", "bye", 0, 0, Spawn)
+ Dialog.AddOption("Thank you Magister Niksel.")
+ Dialog.Start()
+end
+
+
+function GoodbyeEnch(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Once you've quelled the crowd you'll have more than proven yourself to be a capable enchanter. You won't need to return to me, but I hope to see you again. Take care, and good luck!")
+ PlayFlavor(NPC, "", "", "bye", 0, 0, Spawn)
+ Dialog.AddOption("Thank you Magister Niksel.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/NorthFreeport/AulusCrispian.lua b/server/SpawnScripts/NorthFreeport/AulusCrispian.lua
index 179b8d3e1..2ee8a6f28 100755
--- a/server/SpawnScripts/NorthFreeport/AulusCrispian.lua
+++ b/server/SpawnScripts/NorthFreeport/AulusCrispian.lua
@@ -7,6 +7,7 @@
--]]
require "SpawnScripts/Generic/DialogModule"
+local Mage1 = 5902
function spawn(NPC)
end
@@ -25,10 +26,31 @@ function Dialog1(NPC, Spawn)
Dialog.AddDialog("Welcome to Torlig's Herbs and Potions. I sell many magicial reagents and herbs. But, I warn you, you must possess amazing skill to handle them properly.")
Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian.mp3", 3874372728, 2977782311)
Dialog.AddOption("These herbs are not my cup of tea. I think I will look elsewhere.")
+ if HasQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1) == 3 then
+ Dialog.AddOption("Arcanist Sonius is concerned with the price increases on research supplies.", "Dialog3")
+ end
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
Dialog.AddOption("Do you know how to handle them properly?", "Dialog2")
Dialog.Start()
end
+
+
+
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "heckno", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian000.mp3", 0, 0)
+ Dialog.AddDialog("I will NOT expose my suppliers to the likes of you! So, unless you have an order from the Overlord, take up your questions with Torlig.")
+ Dialog.AddOption("Fine! Sorry.")
+ Dialog.Start()
+end
+
+
+
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
@@ -39,4 +61,121 @@ function Dialog2(NPC, Spawn)
Dialog.Start()
end
+function Dialog3(NPC, Spawn)
+ SetTempVariable(NPC,"TalkCheck",nil)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well the Arcanist can stuff it. She can pay the same price as everyone else - ten pieces of gold for a bottle of ink. What do you expect me to do? I've got seven mouths to feed at home!")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian002.mp3", 229896023, 3473249453)
+ PlayFlavor(NPC, "","", "glare", 0, 0, Spawn)
+ Dialog.AddOption("Surely, you can make an exception for someone of such standing as the Arcanist.","Fail1")
+ Dialog.AddOption("Then I won't disturb you. Farewell.")
+ Dialog.AddOption("If she paid half the price, but bought twice as much, would that be acceptable?","Dialog5")
+ Dialog.Start()
+end
+function Fail1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not a chance, buddy. Either she pays the same price, or she doesn't get any supplies.")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian003.mp3", 1664391901, 419184967)
+ Dialog.AddOption("Then I won't disturb you. Farewell.")
+ PlayFlavor(NPC, "","", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("If she paid half the price, but bought twice as much, would that be acceptable?","Dialog5")
+ Dialog.Start()
+end
+
+function Fail1a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not a chance, buddy. Either she pays the same price, or she doesn't get any supplies.")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian003.mp3", 1664391901, 419184967)
+ Dialog.AddOption("Then I won't disturb you. Farewell.")
+ PlayFlavor(NPC, "","", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("You wouldn't lose half the price unless she buys eight of them for one fourth the price.","Dialog6")
+ Dialog.Start()
+end
+
+function Fail2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not a chance, buddy. Either she pays the same price, or she doesn't get any supplies.")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian003.mp3", 1664391901, 419184967)
+ Dialog.AddOption("Then I won't disturb you. Farewell.")
+ PlayFlavor(NPC, "","", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("If she orders twenty for one tenth the price, you wouldn't.","Dialog7")
+ Dialog.Start()
+end
+
+function Fail3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not a chance, buddy. Either she pays the same price, or she doesn't get any supplies.")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian003.mp3", 1664391901, 419184967)
+ Dialog.AddOption("Then I won't disturb you. Farewell.")
+ PlayFlavor(NPC, "","", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("Think about it... If you lock her into a contract, the more you sell, the more you make!","Dialog8")
+ Dialog.Start()
+end
+
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No, because I'd still be making only half the profit on the deal.")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian004.mp3", 646291804, 527889935)
+ PlayFlavor(NPC, "","", "no", 0, 0, Spawn)
+ Dialog.AddOption("I see. Sorry for bothering you.")
+ Dialog.AddOption("Not unless she buys eight of them for one fourth the price.","Dialog6")
+ Dialog.AddOption("But she is the Arcanist! She deserves respect!","Fail1a")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No... uh... I think I might still lose money on that deal.")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian005.mp3", 1685923289, 1600136933)
+ Dialog.AddOption("Perhaps I should let you think about this.")
+ Dialog.AddOption("But not by much. Surely you could accept that?","Fail2")
+ Dialog.AddOption("If she orders twenty for one tenth the price, you wouldn't.","Dialog7")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Umm... lemme think about that one... if she orders twenty - umm... won't I still lose money on that one?")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian006.mp3", 766951483, 1605764330)
+ PlayFlavor(NPC, "","", "confused", 0, 0, Spawn)
+ Dialog.AddOption("Only a little bit, but you would be serving a greater purpose than your own.","Fail3")
+ Dialog.AddOption("If you lock her into a contract, you won't. The more you sell, the more you make!","Dialog8")
+ Dialog.AddOption("Wait. On second thought, that might not be a good idea.")
+ Dialog.Start()
+end
+
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good thinking... Heh heh heh.... I can make her sign a contract to buy them at one tenth the price, but she'll have to buy twenty, right? So what you're saying is that... if I change it to.... one twentieth the price... she'll have to buy FORTY! FORTY BOTTLES!!! I'll be rich!")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian007.mp3", 1563774963, 3399420898)
+ PlayFlavor(NPC, "","", "scheme", 0, 0, Spawn)
+ Dialog.AddOption("Well, you better create a contract now then! You don't want to miss out on this opportunity, do you?","Dialog9")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ SetTempVariable(NPC,"TalkCheck",nil)
+ SetStepComplete(Spawn,Mage1,3)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Of course, of course, of course I do! Just sign this paper here... and here. HA! I'm rich! I'm rich!!! You let Miss Stuffy-Britches know that this contract is permanent! She HAS to buy all forty bottles from me!!! HAHAHA!!! Leave me alone while I count all of my upcoming money. let's see... one twentieth of ten gold pieces times forty... hmmm... carry the four.... add three... nonono... let me start over...")
+ Dialog.AddVoiceover("voiceover/english/alchemist_aulus_crispian/fprt_north/mer_auluscrispian009.mp3", 3567139814, 490741090)
+ PlayFlavor(NPC, "","", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Nice doing business with you...","continue")
+ Dialog.Start()
+end
+
+function continue(NPC,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/BardLoganius.lua b/server/SpawnScripts/NorthFreeport/BardLoganius.lua
new file mode 100755
index 000000000..e7dc1684b
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/BardLoganius.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/BardLoganius.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.05 03:10:03
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "cast_bard_stringed_persist")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/Caphion.lua b/server/SpawnScripts/NorthFreeport/Caphion.lua
new file mode 100755
index 000000000..5fded0408
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/Caphion.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/Caphion.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.09 05:10:42
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 1817378690, 2459690771, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_7d521aa2.mp3", "Hello! Can I offer you one of our new lifetime extended warranties for any merchandise you purchase? ", "nod", 1377121065, 1621186679, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1299723818, 3048193330, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 2963689917, 1457704094, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 2632179815, 4191292693, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/ClaudiaQuarto.lua b/server/SpawnScripts/NorthFreeport/ClaudiaQuarto.lua
new file mode 100755
index 000000000..ea53b7592
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/ClaudiaQuarto.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/ClaudiaQuarto.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.15 04:11:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local ShivosRod = 5928
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+local ShivosRod = 5928
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Who goes there? Are you a true believer in the Powers? Have you conviction enough to smite your enemies and empower your allies? Only those who are worthy may touch these magical wares. If you dare defile them, then be gone!")
+ Dialog.AddVoiceover("voiceover/english/claudia_quarto/fprt_north/mer_claudiaquarto.mp3", 2823488041, 2173657542)
+ if GetQuestStep(Spawn,ShivesRod)==1 then
+ Dialog.AddOption("I found this rod on a ratonga in the Sprawl. Can you determine its magical properties?","Dialog2")
+ end
+ Dialog.AddOption("I may be back later. I haven't decided yet. Until we meet again!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ SetStepComplete(Spawn,ShivosRod,1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A ratonga, you say? A ratonga was slinking about, pretending to be a mage. He stole a magic rod from me and although the item had little power, he committed a grave insult. I'll reward you for its return.")
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("Certainly better than nothing. Thank you.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/NorthFreeport/CommandantTychus.lua b/server/SpawnScripts/NorthFreeport/CommandantTychus.lua
new file mode 100755
index 000000000..887cfca6c
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/CommandantTychus.lua
@@ -0,0 +1,309 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/CommandantTychus.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.03 04:10:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5898
+local Crusader = 5900
+local Brawler = 5899
+local Warrior = 5901
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Quest1)
+ ProvidesQuest(NPC, Crusader)
+ ProvidesQuest(NPC, Brawler)
+ ProvidesQuest(NPC, Warrior)
+end
+
+function hailed(NPC, Spawn)
+ local int = MakeRandomInt(1,3)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You dare address me in a casual manner, worm! Who do you think you are, you pathetic excuse for a dung beetle's lunch? From now on you will refer to me as \"sir,\" understand?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..int.."_1043.mp3", 0, 0)
+ if GetClass(Spawn)== 1 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("Sir, I want to increase my fighting skills, sir!","Dialog1")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==2 then
+ Dialog.AddOption("Sir, the Guttersnipe Crooks are dead, sir!","Dialog2")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==6 then
+ Dialog.AddOption("Sir, the tavern owners have a new appreciation of the law, sir.","Dialog3")
+ end
+
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==10 then
+ Dialog.AddOption(" I've convinced the people in the districts to no longer associate with the Guttersnipes.","Dialog4")
+ end
+
+
+ if HasCompletedQuest(Spawn,Quest1) and not HasQuest(Spawn,Crusader) and not HasQuest(Spawn,Brawler) and not HasQuest(Spawn,Warrior) and GetClass(Spawn)==1 and GetLevel(Spawn) >=9 then
+ Dialog.AddOption("I've proven myself. I'm ready for my final task.","Dialog4")
+ end
+
+ Dialog.AddOption("I was just leaving... Sir!")
+ if not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn, Quest1) then
+ Dialog.AddOption("No one is telling ME what to do, fool!","Uhoh1")
+ end
+ Dialog.Start()
+end
+
+
+function Uhoh1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddOption("Your puny head probably can't understand what I'm saying anyway!","Uhoh2")
+ Dialog.AddOption("...I'm sorry. I don't know what came over me, Sir.")
+ Dialog.Start()
+end
+
+function Uhoh2 (NPC,Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ SendPopUpMessage(Spawn,"Commandant Tychus eyes the guards and nods in your direction.",200,200,200)
+ SendMessage(Spawn,"Commandant Tychus eyes the guards and nods in your direction.","white")
+ AddTimer(NPC,2000,"Uhoh3",1,Spawn)
+ local zone = GetZone(NPC)
+ local Guard1 = GetSpawnByLocationID(zone,391337)
+ local Guard2 = GetSpawnByLocationID(zone,391545)
+ if Guard1 == nil then
+ SpawnByLocationID(zone,391337)
+ end
+ if Guard2 == nil then
+ SpawnByLocationID(zone,391545)
+ end
+end
+
+function Uhoh3 (NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Guard1 = GetSpawnByLocationID(zone,391337)
+ local Guard2 = GetSpawnByLocationID(zone,391545)
+ if Guard1 ~= nil then
+ Attack(Guard1,Spawn)
+ end
+ if Guard2 ~= nil then
+ Attack(Guard2,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Just looking at you I can tell you don't know the first thing about fighting. Look at those pitiful arms, those knobby knees, and that stupid look on your face. You're a complete waste of time. Get out of my face!")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Sir, I didn't ask for your opinion, sir. I was telling you I wanted training. Sir!","Quest1Offer")
+ Dialog.AddOption("I suppose I meant something else. Good luck on those bounties.")
+ Dialog.Start()
+end
+
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You'll find trash called the Dervishes living there. Find the ones called the Crooks, and slaughter a few of them. If you make it back alive, I might continue your training...")
+ Dialog.AddOption("Yes sir!")
+ Dialog.Start()
+end
+
+
+function Quest1Offer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Quest1)
+end
+
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, really. I'm surprised you didn't run back to your momma the moment you saw the Guttersnipes. But you do look a bit scratched up, so maybe you did kill them. Okay, I'll continue your training. Those Guttersnipes are not only robbing the people, but more importantly, they're violating the laws of Freeport by visiting our fine city's taverns.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("It is only a scratch, sir!","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, you're still alive, so I guess my training helped. You taught those Guttersnipe crooks a lesson, but now those goons are getting sympathy from the trash living in the districts. If you want to continue your training, you must sharpen your words as you sharpen your sword.")
+ Dialog.AddOption("Understood, sir! Who should I speak with, sir?","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn,Quest1,2)
+ Dialog.AddDialog("That won't stop them from breaking the law, fool! I want you to take care of the problem the way a brawler would. Go visit the tavern owners of the Seafarer's Roost, the Back Alley Brewhouse, and the Jade Tiger. Beat them up and let them know that the Overlord can give as much as he can take.")
+ PlayFlavor(NPC, "", "", "threaten", 0, 0, Spawn)
+ Dialog.AddOption("Sir, yes, sir!")
+ Dialog.Start()
+end
+
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So it WAS you who instigated these guard reports. You may be puny... but let's see how you handle being a more calculated in your fury.")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("What must I do, sir?","Dialog3a")
+
+ Dialog.Start()
+end
+
+
+function Dialog3a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Though all warriors fight for a cause, none have as strong a conviction as a crusader. Crusaders live to fight another day ... and another ... and another... They never stop, for they know their next opponent waits to take everything they've earned.")
+ Dialog.AddOption("I can do that, sir!","Dialog3b")
+ Dialog.Start()
+end
+
+
+--
+
+function Dialog3b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("We'll see about that, whelp. In the districts, a few people have gained respect from the rest of the rubbish living there. I want you to tell these people that if they allow Guttersnipes into the slums the Lucanic Knights will be on them faster than they can blink. Show them a velvet glove, but make them fear your concealed steel gauntlet. Understand?")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddOption("Understood, sir! Who needs handling, sir?","Dialog3c")
+ Dialog.Start()
+end
+
+
+
+function Dialog3c(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn,Quest1,6)
+ Dialog.AddDialog("Let's see ... A human in Beggar's Court leads a gang of three hoodlums, speak with him. In Scale Yard, find the iksar who starves his servants and straighten him out. Finally, talk to the dark elf who runs the impromptu tavern in Longshadow Alley; she can spread the message from there.")
+ Dialog.AddOption("It will be done, sir!")
+ Dialog.Start()
+end
+
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You didn't refer to me as sir, soldier. Next time, show some respect! Hmmm ... By the solid look in your eyes, I'd say it worked. Now the Guttersnipes won't find it as easy to -- quit looking at me like that, maggot! As I was saying, you learned the skills of a warrior, brawler, and a crusader. Now it's time to test your knowledge.")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ if GetLevel(Spawn) >=9 then
+ Dialog.AddOption("I'm glad to have had the chance to prove myself, Sir.","Decide")
+ else
+ Dialog.AddOption("I hate to admit it, but I need a rest after that. I'll return once I'm ready, sir.")
+ end
+ Dialog.Start()
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1) ==10 then
+ SetStepComplete(Spawn,Quest1,10)
+ end
+end
+
+--CLASS SELECTION
+
+function Decide(NPC,Spawn)
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1) ==10 then
+ SetStepComplete(Spawn,Quest1,10)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I mean, what do you want to do with your life? Eventually you must choose a path, and now is as good a time as any. I taught you three different fighting skills, so make up your mind -- what type of fighter do you want to be?")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I like the intense fury of battle. I want to be a warrior.","Warrior1")
+ Dialog.AddOption("I like relying on my fists in battle. I want to be a brawler.","Brawler1")
+ Dialog.AddOption("I like having a commanding presence in battle. I want to be a crusader.","Crusader1")
+ Dialog.Start()
+end
+
+--WARRIOR
+function Warrior1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A warrior, are ya? You're sayin' that the best way to fix a problem is with a bit of hammered steel? Aye, I agree with that! When you got a slaverin' gnoll runnin' at you, hard bent for leather, well, you'd be a ninny not to draw steel. So, the life of the warrior is your path in life, is it?")
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Yes. I prefer to take care of a problem, rather than let it take care of me. I am a warrior!","WarriorOffer")
+ Dialog.AddOption("On second thought, what were my options again?","Decide")
+ Dialog.Start()
+end
+
+function WarriorOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Warrior)
+end
+
+--BRAWLER
+
+function Brawler1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Brawlers use their brains, they do. They don't need armor if their enemies can't hit 'em. They also know they can't be disarmed if they have built-in weapons. Well, they can, but that' messy business that we don't need to discuss. So, are ya willin' to push yourself to the limit as a brawler?")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Yes. I will train everyday to master the art of pugilism. I am a brawler.","BrawlerOffer")
+ Dialog.AddOption("On second thought, what were my options again?","Decide")
+ Dialog.Start()
+end
+
+function BrawlerOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Brawler)
+end
+
+--CRUSADER
+
+function Crusader1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's not as easy as that, youngin'. You don't just declare yourself a crusader, or did you learn nothing from my previous lessons? No, crusader is a title earned by those with enough heart to consider the fair city of Qeynos and its inhabitants first and themselves a distant second.")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I like having a commanding presence in battle. I want to be a crusader.","CrusaderOffer")
+ Dialog.AddOption("On second thought, what were my options again?","Decide")
+ Dialog.Start()
+end
+
+function CrusaderOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Crusader)
+end
+
+--[[
+Brawlers use their brains, they do. They don't need armor if their enemies can't hit 'em. They also know they can't be disarmed if they have built-in weapons. Well, they can, but that' messy business that we don't need to discuss. So, are ya willin' to push yourself to the limit as a brawler?
+Warriors run to the front line in battle and care only about slaughtering the enemy and oiling their weapons with their foe's blood. Warriors know might makes right. Do you choose this path?
+None matches the conviction of a crusader. Crusaders fight for a cause. This cause gives them the strength to crush their opponents beneath their feet. The last thing that people see when they fight a crusader is a cold, dead look -- their own reflection in the crusader's eyes. Do you choose this path?
+]]--
+
+
+--[FINAL SELECTION]
+--You have to make a choice! You got potential, you do, and it would be a sore shame to see you waste it! But you can't be a fighter your entire life. You gotta focus on one of the styles I showed you, if you wanna go places. So what will it be, eh?
+
+
+
+--Brawlers use their brains, they do. They don't need armor if their enemies can't hit 'em. They also know they can't be disarmed if they have built-in weapons. Well, they can, but that' messy business that we don't need to discuss. So, are ya willin' to push yourself to the limit as a brawler?
+--Brawlers don't waste their time strapping on bulky armor. Sometimes the only weapons they use are their fists, and they dodge their opponent's blows with the swiftness of a hawk. Do you choose this path?
+--If you're a true brawler, you need to undergo a challenge. In order to join the ranks of the brawlers here in Qeynos, you gotta prove your skills. Enter the dojo and go fist to fist against another brawler. If you manage to defeat 'em, you'll become that which you seek.
+
+--Thank you, Dagorel. I won't forget your lessons.
+--Aye, aye. The watchmen informed me. They say you held your own. That's what I want to hear! You had to prove your fightin' skills--I don't want anyone accusing ol' Dagorel of sending ill-equipped kids off to their deaths. You proved you got what it takes, kid. Good work.
+
+--Yes. I will train everyday to master the art of pugilism. I am a brawler.
+--I like relying on my fists in battle. I want to be a brawler.
+--
+--Understand one more thing as well ... when you defeat your last opponent, meditate at the altar in the dojo. A brawler is not only strong of body but also of mind. Strengthening both is mandatory. Once you do this, you'll have proven yourself.
+
+--BRAWLER ALTAR A cool breeze swirls around you, sending a tingle up the back of your spine. You arise from the altar and know in your soul that you are a brawler.
+--CRUSADER START It's not as easy as that, youngin'. You don't just declare yourself a crusader, or did you learn nothing from my previous lessons? No, crusader is a title earned by those with enough heart to consider the fair city of Qeynos and its inhabitants first and themselves a distant second.
+--
+--A warrior, are ya? You're sayin' that the best way to fix a problem is with a bit of hammered steel? Aye, I agree with that! When you got a slaverin' gnoll runnin' at you, hard bent for leather, well, you'd be a ninny not to draw steel. So, the life of the warrior is your path in life, is it?
+--I like having a commanding presence in battle. I want to be a crusader.
+--
+--Though all warriors fight for a cause, none have as strong a conviction as a crusader. Crusaders live to fight another day ... and another ... and another... They never stop, for they know their next opponent waits to take everything they've earned.
+--It's not as easy as that, youngin'. You don't just declare yourself a crusader, or did you learn nothing from my previous lessons? No, crusader is a title earned by those with enough heart to consider the fair city of Qeynos and its inhabitants first and themselves a distant second.
+--Yes. I prefer to take care of a problem, rather than let it take care of me. I am a warrior!
+--Whoa, now! Not yet, you're not! You have to prove you can last in the fray. You didn't think I'd wave a magic wand and make you a warrior, did you? No, no, we got a make shift arena set up in the warehouse, where you'll prove yourself, a true warrior of Qeynos. No need to return to me, I've taught you all I can.
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/CourtesanAconiaAngelus.lua b/server/SpawnScripts/NorthFreeport/CourtesanAconiaAngelus.lua
index 87aa01424..be461328f 100755
--- a/server/SpawnScripts/NorthFreeport/CourtesanAconiaAngelus.lua
+++ b/server/SpawnScripts/NorthFreeport/CourtesanAconiaAngelus.lua
@@ -9,7 +9,6 @@
dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
- waypoints(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
diff --git a/server/SpawnScripts/NorthFreeport/ElectraJventius.lua b/server/SpawnScripts/NorthFreeport/ElectraJventius.lua
index eedf7cbe6..c1dbd696d 100755
--- a/server/SpawnScripts/NorthFreeport/ElectraJventius.lua
+++ b/server/SpawnScripts/NorthFreeport/ElectraJventius.lua
@@ -10,7 +10,6 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
- waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthFreeport/ElmaLowe.lua b/server/SpawnScripts/NorthFreeport/ElmaLowe.lua
index d52616b3e..7503ac60d 100755
--- a/server/SpawnScripts/NorthFreeport/ElmaLowe.lua
+++ b/server/SpawnScripts/NorthFreeport/ElmaLowe.lua
@@ -5,8 +5,8 @@
Script Purpose :
:
--]]
-
require "SpawnScripts/Generic/DialogModule"
+local Fighter = 5898
function spawn(NPC)
end
@@ -24,7 +24,53 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Come in. Come in. Welcome to the Jade Tiger's Den, the finest tavern in all of Freeport. Feel free to browse our menu. I personally guarantee that we serve only the highest-quality food and brews. ")
Dialog.AddVoiceover("voiceover/english/elma_lowe/fprt_north/elmalowe000.mp3", 3610495310, 1230069492)
+ if HasQuest(Spawn,Fighter) and GetQuestStep(Spawn,Fighter)>=3 and GetQuestStep(Spawn,Fighter)<=5 and GetQuestStepProgress(Spawn,Fighter,3)==0 then
+ Dialog.AddOption("[Hit her to get her attention]","Dialog1a")
+ end
Dialog.AddOption("I'll take a look around. ")
Dialog.Start()
end
+function Dialog1a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ AddTimer(NPC,800,"Dialog2",1,Spawn)
+ PlayFlavor(Spawn, "", "", "pugilist_attack01", 0, 0, NPC)
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ouch! Why did you do that?")
+ PlayFlavor(NPC, "", "", "1h_thrown_ouch_down", 0, 0, Spawn)
+ ApplySpellVisual(NPC,249)
+ Dialog.AddVoiceover("voiceover/english/elma_lowe/fprt_north/elmalowe001.mp3", 434677831, 1032175372)
+ Dialog.AddOption("Lucan doesn't want you serving the Gutternsnipes. [punch her again, harder]","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog2b",1,Spawn)
+end
+
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(NPC, "", "", "1h_thrown_ouch_forehand", 0, 0, Spawn)
+ ApplySpellVisual(NPC,249)
+ AddTimer(NPC,1300,"Dialog3",1,Spawn)
+end
+
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Okay, okay!!!! I won't serve them anymore!")
+ SetStepComplete(Spawn,Fighter,3)
+ PlayFlavor(NPC, "", "", "cringe", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/elma_lowe/fprt_north/elmalowe002.mp3", 2594071441, 2925543161)
+ Dialog.AddOption("Good.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/EmissaryMillia.lua b/server/SpawnScripts/NorthFreeport/EmissaryMillia.lua
new file mode 100755
index 000000000..1862563d8
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/EmissaryMillia.lua
@@ -0,0 +1,258 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/EmissaryMillia.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.06 05:10:10
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5910
+local Bard = 5911
+local Predator = 5912
+local Rogue = 5913
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Quest1)
+ ProvidesQuest(NPC, Bard)
+ ProvidesQuest(NPC, Predator)
+ ProvidesQuest(NPC, Rogue)
+end
+
+function hailed(NPC, Spawn)
+ local int = MakeRandomInt(1,3)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you certain you wish to speak to me? One of the Overlord's eyes? If you're not careful, you may find your coin pouch a bit lighter... in the name of the Overlord, of course.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..int.."_1043.mp3", 0, 0)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ if GetClass(Spawn)== 31 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I'd like to add to my repertoire of tricks. Maybe you're the one who could show me?","Dialog1")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==2 then
+ Dialog.AddOption("I've cleared out some of the rust monsters. The sticky situation has been dealt with.","Dialog2")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==5 then
+ Dialog.AddOption("The other bartender wasn't paying attention to his money. Here's a gold coin I swiped right from underneath his nose... I got this for you as proof.","Dialog3")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==7 then
+ Dialog.AddOption("I was more than willing to slay the Darkblades on your behalf.","Dialog4")
+ end
+
+ if HasCompletedQuest(Spawn,Quest1) and not HasQuest(Spawn,Bard) and not HasQuest(Spawn,Rogue) and not HasQuest(Spawn,Predator) and GetClass(Spawn)==31 and GetLevel(Spawn) >= 9 then
+ Dialog.AddOption("I think I understand what you're saying. Sooo... what should I do now??","Decide")
+ end
+ if HasQuest(Spawn,Rogue) and GetQuestStep(Spawn,Rogue)==2 then
+ Dialog.AddOption("I managed to grab the lieutenant's orders out from under the watchful eye of the Qeynos guard. I'm sure they'll be put through some rigorous training after this to help them keep a sharper eye out in the future, but that's not my concern now!","RogueDone")
+ end
+--[[ if not HasCompletedQuest(Spawn, Rogue) and not HasCompletedQuest(Spawn, Predator) and not HasCompletedQuest(Spawn, Bard) then
+ Dialog.AddOption("I've got more important things to do than watch people. Good day.")
+ else
+ Dialog.AddOption("Never a dull moment with you, Counselor. Good to see you again.","RogueDone2")
+ end]]--
+ Dialog.AddOption("My coins are my business! I'm out of here.")
+ Dialog.Start()
+end
+
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Shifty eyes, spry fingers... yes... Yes!... Perhaps?... You... that ODER! Bleh!! Did you just come off a boat?! I've been looking to add some new skilled blood into the mix, but you still have sea water coming out of your ears! Do you think you can stomach some scouting tricks?")
+ PlayFlavor(NPC, "", "", "stinky", 0, 0, Spawn)
+ Dialog.AddOption("I bet I could run circles around you! Give me a challenge!","Quest1Offer")
+ Dialog.AddOption("I'm still pouring water out of my shoes! Perhaps another time.")
+ Dialog.Start()
+end
+
+
+
+function Quest1Offer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Quest1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Anyone can defeat a mighty adversary in battle, but being remembered for it is an entirely different matter. A bard regales others with tales of the past through their melodies and stories. The bard who writes the past is the same one who guides the future. And don't forget all the attention you get, too! That's my favorite part!")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("That sounds easy! I'll wrap this up quick.","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Famous last words. You're young so I'm gonna give ya a break. A rogue is somethin' everyone needs. We are the ones who pick the locks, opening vast treasure chests or hallways that would otherwise go unexplored. Thieves are rogues that concentrate on their physical prowess. They can backstab or wield weapons effectively, and can sneak around things others might find impassable. Bards are rogues as well, but they concentrate on performing inspirational poems and songs to inspire themselves, and cause their enemies to despair.")
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddOption("Writting a song? What must I do?","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I want you to go to a few of the taverns around the city and charm the patrons with your beautiful voice. Heheheee... You do have one, don't you? Go visit these two taverns and convince the bartenders that you're the life of the party. I don't care how you embarrass yourself -- sing a ballad, dance a jig -- just make them think you're an idiot. And if you don't, then no more tricks from me, got it?")
+ PlayFlavor(NPC, "", "", "giggle", 0, 0, Spawn)
+ Dialog.AddOption("Of course! I'll bring the tavern down.","Leg")
+ Dialog.AddOption("I suppose I can improvise.","Leg")
+ Dialog.AddOption("Uhh... wish me luck?","Leg")
+ Dialog.Start()
+end
+
+function Leg(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,2)
+ PlayFlavor(NPC, "", "Break a leg!... Just don't break anyone's I know.", "wink", 0, 0, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'll take your word that you stole this from him. Well, since you pulled off the other tricks, I guess I teach you a few more. Instead of being a freelance rogue or a deceptive bard, you can also ply your trade as a hunter or a predator. After I show you the tricks they use, maybe you decide what kind of scout you wants to be.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("What should I know about predators?","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Predators are only happy when they are pursuing their quarry. Once they catch what they're tracking, well, the game's over, so they say. Therefore, a smart predator always finds something else to hunt down. If you've got a big imagination, then being a predator might be for you.")
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("[Continue]","Dialog3b")
+ Dialog.Start()
+end
+
+function Dialog3b(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Predators stay in the shadows; they know that the best way to defeat an enemy is to sneak up on it and slit its throat! You can practice skulking by heading down into the sewer and looking for your competitors - the ones called the Darkblade Scouts. Hunt down some of these creatures and dispose of them before they even see you. ")
+ Dialog.AddOption("Alright. They won't know what hit them.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,7)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes. yes. The Overlord will certainly be pleased to have a few less annoyances. Hopefully the hunt proved insightful enough to help you decide your next steps... A tavern will only take you so far.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I could go for a drink right about now.","Decide")
+ Dialog.AddOption("A lie down sounds pretty nice right about now.","Decide")
+ Dialog.AddOption("Perhaps. I'd rather go make a bit of coin anyway.","Decide")
+ Dialog.Start()
+end
+
+
+function Decide(NPC,Spawn)
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1) ==7 then
+ SetStepComplete(Spawn,Quest1,7)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I didn't teach you the tricks of the trade just so you could waste my time! Choose a scouting technique and start practicing! Scouts are a silver a dozen around here. Some people with less class might even call them thieves. Is this what you want to be? A common thief? No! No! I think you know what you want to be. Am I right?")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Thief is such a vulgar word. I think the term rogue is more to my liking.","Rogue2")
+ Dialog.AddOption("I feel the bard's art of deception through entertainment is in my future.","Bard1")
+ Dialog.AddOption("I confess - I enjoyed stalking my prey... a little too much, perhaps. I'm a predator at heart.","Predator1")
+ Dialog.Start()
+end
+
+
+--ROGUE CLASS
+function Rogue1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("One does not choose to be a rogue, but rather life makes that choice for them. Rogues live lives free of the bonds that society places on others. Tricky little fellows, rogues are always around when you need them. Look behind you and you just might find one... So, is this where you will focus your talents?")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I'm pretty certain the life of a rogue will be quite... rewarding. Yes, I'm a rogue.","Rogue2")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function Rogue2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahh, the life of the rogue! Stealth, cunning and wealth -- if you're successful in your endeavors. Why don't I arrange a test for you? We'll see if you have what it takes to be a thief.")
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("Bring it on! I will pass any test you can muster.","RogueOffer")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function RogueOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Rogue)
+end
+
+function Rogue3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Grab their mission orders. The lieutenant will have them guarded. Knowing him, he'll keep them behind a locked door guarded by his most brawny men. Return to me when you're done, and I'll verify the orders.")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Alright. I'll bring you the documents as quick as I can!")
+ Dialog.Start()
+end
+
+function RogueDone(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Let me make certain that you didn't just forge these ... No you succeeded where others before you have failed. The lieutenant will have to double his efforts. You certainly deserve the title of \"rogue.\"")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Thank you Counselor. I will use my new skills wisely.","RogueDone2")
+ Dialog.Start()
+end
+
+function RogueDone2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,Rogue) then
+ SetStepComplete(Spawn,Rogue,2)
+ end
+ PlayFlavor(NPC, "", "", "wink", 0, 0, Spawn)
+end
+
+--BARD CLASS
+
+function Bard1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Successful bards have a sharp tongue and a quick wit. I must test you to see if you possess these qualities. A small party of wealthy merchants from the Coalition of Tradesfolke has gathered together...")
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("A group of wealthy merchants? I enjoy being the center of attention...","BardOffer")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+
+
+function BardOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Bard)
+end
+
+--PREDATOR CLASS
+
+function Predator1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, a predator? Can you smell your prey far before you see it? If you close your eyes, can you hear the heartbeat of your game and know how many beats are left, yes? Yes ... a stalker's instinct runs in your blood. You are the top of the food chain.")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I'm too focused to be anything other than a predator.","PredatorOffer")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+
+function PredatorOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Predator)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/FlaeriusRubico.lua b/server/SpawnScripts/NorthFreeport/FlaeriusRubico.lua
index 64fd8f886..845a5eefc 100755
--- a/server/SpawnScripts/NorthFreeport/FlaeriusRubico.lua
+++ b/server/SpawnScripts/NorthFreeport/FlaeriusRubico.lua
@@ -11,7 +11,6 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
- waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthFreeport/GiraferLUn.lua b/server/SpawnScripts/NorthFreeport/GiraferLUn.lua
index 3ab6c7963..7bcdec4f4 100755
--- a/server/SpawnScripts/NorthFreeport/GiraferLUn.lua
+++ b/server/SpawnScripts/NorthFreeport/GiraferLUn.lua
@@ -24,6 +24,19 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Welcome to the Blue Building. If you're here, then you know what we sell. You can see it sparkling before you, sparkling with the allure that only gems and jewelry of such perfection exude. Look around and see what we have for sale. I'll be here to take your money when you decide which of our decadent pieces you desire.")
Dialog.AddVoiceover("voiceover/english/merchant_girafer_l_un/fprt_north/mer_giraferlun.mp3", 3286802657, 1724885978)
- Dialog.AddOption("I have no interest in trinkets....")
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
+ Dialog.AddOption("I have no interest in trinkets....")
+ Dialog.Start()
+end
+
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "boggle", 0, 0, Spawn)
+ Dialog.AddDialog("Foreign plant? Are you stupid? What the heck would I do with a foreign plant? This isn't Qeynos, fool. Now either buy something or quit wasting my time.")
+ Dialog.AddVoiceover("voiceover/english/merchant_girafer_l_un/fprt_north/mer_giraferlun.mp3", 0, 0)
+ Dialog.AddOption("Fine! Sorry.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/NorthFreeport/JuliaFlorens.lua b/server/SpawnScripts/NorthFreeport/JuliaFlorens.lua
index 842e064f1..53fa7e869 100755
--- a/server/SpawnScripts/NorthFreeport/JuliaFlorens.lua
+++ b/server/SpawnScripts/NorthFreeport/JuliaFlorens.lua
@@ -25,7 +25,10 @@ function Dialog1(NPC, Spawn)
Dialog.AddDialog("Come in, please come in. Welcome to the Jade Tiger's Den. I'm Hostess Julia. Perhaps you came to try a Jade Tiger cocktail?")
Dialog.AddVoiceover("voiceover/english/julia_florens/fprt_north/mer_juliaflorens.mp3", 381228226, 4204129286)
Dialog.AddOption("What's a Jade Tiger cocktail?", "Dialog2")
- Dialog.AddOption("Argh! Leave me be....")
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
+ Dialog.AddOption("Argh! Leave me be....")
Dialog.Start()
end
@@ -38,3 +41,13 @@ function Dialog2(NPC, Spawn)
Dialog.Start()
end
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "shrug", 0, 0, Spawn)
+ Dialog.AddDialog("Foreign plant? You won't find that sort of thing here. You're best to try the shops near the docks. They have better access to that sort of ... 'thing'.")
+ Dialog.AddVoiceover("voiceover/english/julia_florens/fprt_north/mer_juliaflorens.mp3", 0, 0)
+ Dialog.AddOption("Alright. Thank you.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/NorthFreeport/MordinRageblade.lua b/server/SpawnScripts/NorthFreeport/MordinRageblade.lua
index c403a1692..1477749c4 100755
--- a/server/SpawnScripts/NorthFreeport/MordinRageblade.lua
+++ b/server/SpawnScripts/NorthFreeport/MordinRageblade.lua
@@ -10,7 +10,6 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
- waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthFreeport/NavariusOrvalis.lua b/server/SpawnScripts/NorthFreeport/NavariusOrvalis.lua
new file mode 100755
index 000000000..3d77c5a37
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/NavariusOrvalis.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/NavariusOrvalis.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.01 01:07:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+if HasQuest(Spawn,5865) and GetQuestStepProgress(Spawn,5865,3) ==0 then --FREEPORT OPPORTUNITY
+ SetStepComplete(Spawn,5865,3)
+end
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Search for the relics of the past Age of Turmoil. Their discovery will gain you great power and prestige!")
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
+ Dialog.AddOption("Thanks for the information, I just might do that.")
+ Dialog.Start()
+end
+
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("Look around. What do you see? Plants?... No. I have no plants for you - only knowledge.")
+ Dialog.AddOption("Fine! Sorry.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/OraclePorciaAponius.lua b/server/SpawnScripts/NorthFreeport/OraclePorciaAponius.lua
index a9c182787..6242b1089 100755
--- a/server/SpawnScripts/NorthFreeport/OraclePorciaAponius.lua
+++ b/server/SpawnScripts/NorthFreeport/OraclePorciaAponius.lua
@@ -55,7 +55,6 @@ local CHANNELER = 44
function spawn(NPC)
--SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange") --PORCIA SHOULD ONLY RESPOND TO HAIL. Script copied from Soothsayer Tabina w/ VOs switched.
-waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthFreeport/PriestKelian.lua b/server/SpawnScripts/NorthFreeport/PriestKelian.lua
new file mode 100755
index 000000000..659763121
--- /dev/null
+++ b/server/SpawnScripts/NorthFreeport/PriestKelian.lua
@@ -0,0 +1,285 @@
+--[[
+ Script Name : SpawnScripts/NorthFreeport/PriestKelian.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.02 12:10:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5906
+local Cleric = 5907
+local Druid = 5908
+local Shaman = 5909
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Quest1)
+ ProvidesQuest(NPC, Cleric)
+ ProvidesQuest(NPC, Druid)
+ ProvidesQuest(NPC, Shaman)
+end
+
+function hailed(NPC, Spawn)
+
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Speak to me if you are one of the faithful. If you are devoid of any spiritual guidance, you are lost to me, for I cannot save your soul if you've sold it.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian000.mp3", 1741103906, 2475357432)
+ if GetClass(Spawn)== 11 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I am still possession of my soul and my faith. What can you offer me?","Dialog1")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==2 then
+ Dialog.AddOption("I have stopped the suffering of five Diseased Ratonga by sending them to the sweet embrace of death.","Dialog2")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==4 then
+ Dialog.AddOption("The only foreign plant I was able to find was a purple flower given to me by Annia Kaeso.","Dialog3")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==6 then
+ Dialog.AddOption("I have collected the venom sacs.","Dialog4")
+ end
+ if GetQuestStep(Spawn,Cleric)==1 or GetQuestStep(Spawn,Druid)==1 or GetQuestStep(Spawn,Shaman)==1 then
+ Dialog.AddOption("I am still working to complete my trial. I will return.")
+ end
+ if HasCompletedQuest(Spawn,Cleric) or HasCompletedQuest(Spawn,Druid) or HasCompletedQuest(Spawn,Shaman) then
+ Dialog.AddOption("My soul is still my own thanks to you, Kelian.","Thanks")
+ else
+ Dialog.AddOption("My soul is to use as I wish!")
+ end
+ if GetLevel(Spawn) >=9 and HasCompletedQuest(Spawn,Quest1) and GetClass(Spawn)==11 and not HasQuest(Spawn, Cleric) and not HasQuest(Spawn, Druid) and not HasQuest(Spawn, Shaman) then
+ Dialog.AddOption("My soul is ready. What paths lie before me?","FinalClassTest")
+ end
+ Dialog.Start()
+end
+
+function Thanks(NPC)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("One of the greatest gifts we possess is the freedom to pursue spiritual enlightenment. You may spend your entire life seeking enlightenment and think you failed, but in your heart you know you succeeded. If you want to continue on this path, then I offer you my guidance.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian001.mp3", 3572439854, 118398468)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("I must succeed! I will listen to your words for now.","OfferQuest1")
+ Dialog.AddOption("I don't need 'guidance' from you or anyone else!","Shrug")
+ Dialog.Start()
+end
+
+function Shrug(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
+end
+
+
+function OfferQuest1(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Quest1)
+ FaceTarget(NPC,Spawn)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahh ... You have a good soul, child. You performed a brave and merciful act down in the sewers. Remember, sometimes death is the only cure, no matter how much it hurts you. Though we couldn't save those poor diseased creatures, we can try to stop the illness from spreading by finding its source.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian003.mp3", 597628700, 3290145578)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("Surely the gods will answer for this! Although, I did not see another priest spreading the disease in the sewer...","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hehehehee ... so innocent, you are. Not all spirituality comes from divine origin, child. The world around us holds power within its soil, plants and rain, which the druids know well. I suspect that the ratongas' disease came from these tempestuous forces. I want you to speak with some merchants in town who may have imported some type of foreign plant. Let me write the list in your journal.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian004.mp3", 412624098, 719870239)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ Dialog.AddOption("A plant? I will ask the merchants if someone has been selling such things.","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,2)
+end
+
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Let me see those flowers ... ahh ... yes, I'm familiar with this blossom. No, this didn't cause the ratongas' disease. This flower makes people happy through its odd... errr... appearance. I thought about what we can do for the diseased ratonga in the sewers. I think I have a solution. Are you ready for the rest of your guidance?")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian005.mp3", 3413963093, 236391412)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("So if not the plant, what else could I do about the disease?","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The last path is that of the shaman. The shaman forsakes both the divine and the natural and looks to the spirits surrounding us. You must go to the Sprawl and find the Gravel Vipers that reside there. Let the spirits guide you to the asps with the most poisonous venom.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian006.mp3", 3929146556, 1034072743)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("As you wish.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good, good. Hopefully an alchemist can recreate this poison in quantities large enough to fill the water in the sewers below. The ratongas' disease will no longer threaten the citizens of Freeport. As for you, my eager child, I cannot guide your spiritual development much further. It is time for you to decide what path moves your soul.")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian007.mp3", 2544827648, 3067664425)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I'm glad the ratongas' fate is decided, but my soul is still needs direction.","FinalClassTest")
+ Dialog.Start()
+ SetStepComplete(Spawn,Quest1,6)
+end
+
+
+
+--CLASS QUESTS
+ function FinalClassTest(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What shall it be? Do you believe in the gods? Perhaps the forces of nature move your soul, or do you feel the pull of the spirit world?")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian008.mp3", 3156932879, 525367195)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I have faith in the gods. I believe I am a Cleric.","Cleric1")
+ Dialog.AddOption("I realize now that my calling is to the forces of nature. I think I'm a Druid!","Druid1")
+ Dialog.AddOption("The spirits speak to me and tell me that my destiny lies in being a Shaman. ","Shaman1")
+ Dialog.Start()
+end
+
+--CLERIC
+function Cleric1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Clerics devote themselves to a god and give their life and soul to that deity. In return for this small sacrifice, the divine force provides a touch of its powers. Only those who believe that the gods are still with us should take this route, for an apathetic believer believes in an apathetic god. Do you have faith in the gods?")
+ Dialog.AddVoiceover("voiceover/english/priest_kelian/fprt_north/priestkelian009.mp3", 1397579314, 3728059728)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("With the help of the gods, I accept. There is nothing I cannot do as long as they are with me. I shall become a cleric.","OfferCleric" )
+ Dialog.AddOption("What were my options again?","FinalClassTest" )
+ Dialog.Start()
+end
+
+function OfferCleric(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Cleric)
+ FaceTarget(NPC,Spawn)
+end
+
+function ClericAccept(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Then I will facilitate a prayer trance for you. You will experience a struggle unlike any you've known before... but upon exiting the trance, should you prove successful, you will emerge with the emotional strength to survive and prosper in the re-forged Norrath. Are you ready?")
+ --Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 2729819197, 1238324646) WE DON"T HAVE THE VO FOR THIS
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I am.","ClericPort" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+end
+
+function ClericFail(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Though you were not successful in your previous attempt, one of the most valuable lessons an aspiring cleric can learn is perseverance. Are you ready to attempt the trial again?")
+ --Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 2729819197, 1238324646) WE DON"T HAVE THE VO FOR THIS
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Yes, Aldalad, I am.","ClericPort" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+end
+
+function ClericPort(NPC,Spawn)
+ Trial = GetZone("TheDisconcertingMeditation")
+ Zone(Trial,Spawn,-47.02, -45.79, -49.3, 272)
+end
+
+
+--DRUID
+function Druid1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("As a druid, you will become Nature's servant and companion, not her master. Nature is everywhere. If you respect her, she will become the greatest ally you have ever known. With your wisdom and her power, nothing shall defeat you.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad021.mp3", 2608345231, 3745599287)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("It is clear to me. I am called to be a druid.","Druid2" )
+ Dialog.AddOption("What were my options again?","FinalClassTest" )
+ Dialog.Start()
+end
+
+
+function Druid2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The path of a druid often requires more than just nurturing the land and its inhabitants. Often blights will have to be physically driven out, and this requires not only an awareness of one's surroundings, but also the strength to perform these feats. To this end, I have devised a test to determine your readiness to become a druid.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad028.mp3", 774916388, 145472560)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("What sort of challenges must I face?","Druid3" )
+ Dialog.Start()
+end
+
+
+
+function Druid3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I cannot tell you exactly what you will face - only that you must use the skills and spells you have learned up to this point in order to win your way past it and become a druid. Remember that you will be alone with this. Are you ready to begin?")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad029.mp3", 3326972063, 1689451744)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I am.","OfferDruid" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+end
+
+function OfferDruid(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Druid)
+ FaceTarget(NPC,Spawn)
+end
+
+
+function DruidAccepted(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There will be no need to return to me when you have completed this trial, but go forth and put what you have learned into practice. You will know when you have earned the right to call yourself a druid. I will send you to where you need to go.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad030.mp3", 110213528, 850594761)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I am ready.","DruidPort" )
+ Dialog.Start()
+end
+
+
+function DruidPort(NPC,Spawn)
+ Trial = GetZone("BurningAbode")
+ Zone(Trial,Spawn,6.91, -0.20, 3.77, 348.55)
+end
+--SHAMAN
+function Shaman1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A shaman knows that death is but a journey to another adventure. If you choose this path, then those who have gone before you will guide your way through this mortal coil. By communing with your ancestors, the wisdom of the past is always within reach. The shaman speaks for the dead, and acts as a vessel to help others.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad022.mp3", 921764949, 3161713723)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("The spirits are with me and will always be my guide. I am a shaman.","OfferShaman" )
+ Dialog.AddOption("What were my options again?","FinalClassTest" )
+ Dialog.Start()
+end
+
+
+function OfferShaman(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Shaman)
+ FaceTarget(NPC,Spawn)
+end
+
+function ShamanAccept(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Then you must travel to the Southern part of the city where a home has reportedly become a site of restless spirits. Use the skills you have gained to unshackle them from this world and you will have proven yourself as a shaman. There will be no need to return to me, but be wary, spirits have powers even they can fathom.")
+-- Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad030.mp3", 110213528, 850594761)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Thank you, Aldalad. I will pass this trial." )
+ Dialog.Start()
+end
+
+
diff --git a/server/SpawnScripts/NorthFreeport/SpeculatorMontanlooa.lua b/server/SpawnScripts/NorthFreeport/SpeculatorMontanlooa.lua
index d96c3fe7d..beb5e294c 100755
--- a/server/SpawnScripts/NorthFreeport/SpeculatorMontanlooa.lua
+++ b/server/SpawnScripts/NorthFreeport/SpeculatorMontanlooa.lua
@@ -11,7 +11,6 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
- waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthFreeport/TorgaAnun.lua b/server/SpawnScripts/NorthFreeport/TorgaAnun.lua
index 7c7433468..761f3ca22 100755
--- a/server/SpawnScripts/NorthFreeport/TorgaAnun.lua
+++ b/server/SpawnScripts/NorthFreeport/TorgaAnun.lua
@@ -11,7 +11,6 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
- waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthFreeport/TorligtheAlchemist.lua b/server/SpawnScripts/NorthFreeport/TorligtheAlchemist.lua
index 4a0ad6262..54606f73b 100755
--- a/server/SpawnScripts/NorthFreeport/TorligtheAlchemist.lua
+++ b/server/SpawnScripts/NorthFreeport/TorligtheAlchemist.lua
@@ -24,6 +24,20 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Shhhh! Don't distract me ... I need a steady hand to ensure I combine this potion correctly. One mistake and the blast will reduce this building to rubble. Deal with my apprentices if you want to buy something.")
Dialog.AddVoiceover("voiceover/english/torlig_the_alchemist/fprt_north/torlig_the_alchemist.mp3", 4161370754, 1751042550)
- Dialog.AddOption("Fine then, I will leave you to your perfumes and snake oils.")
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
+ Dialog.AddOption("Fine then, I will leave you to your perfumes and snake oils.")
Dialog.Start()
end
+
+
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "boggle", 0, 0, Spawn)
+ Dialog.AddDialog("Foreign plant? Are you stupid? What the heck would I do with a foreign plant? This isn't Qeynos, fool. Now either buy something or quit wasting my time.")
+ Dialog.AddVoiceover("voiceover/english/torlig_the_alchemist/fprt_north/quests/proctorfergus/torlig_fergus_x1_initial.mp3", 3361820512, 517804863)
+ Dialog.AddOption("Alright. Sorry to bother you.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthFreeport/VenetiaGalatea.lua b/server/SpawnScripts/NorthFreeport/VenetiaGalatea.lua
index aae4d8f66..7a185e39d 100755
--- a/server/SpawnScripts/NorthFreeport/VenetiaGalatea.lua
+++ b/server/SpawnScripts/NorthFreeport/VenetiaGalatea.lua
@@ -11,7 +11,6 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
- waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthQeynos/AndreaDovesong.lua b/server/SpawnScripts/NorthQeynos/AndreaDovesong.lua
index 34565fdeb..c9957ab30 100755
--- a/server/SpawnScripts/NorthQeynos/AndreaDovesong.lua
+++ b/server/SpawnScripts/NorthQeynos/AndreaDovesong.lua
@@ -6,6 +6,7 @@
:
--]]
dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+require "SpawnScripts/Generic/DialogModule"
local claymore = 5547
local papers = 5536
@@ -15,6 +16,7 @@ function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
ProvidesQuest(NPC, claymore)
ProvidesQuest(NPC, papers)
+ SetInfoStructString(NPC, "action_state", "orate")
end
@@ -47,26 +49,34 @@ function hailed(NPC, Spawn)
else
FaceTarget(Spawn, NPC)
local conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/andrea_dovesong/qey_north/andreadovesong000.mp3", "", "hello", 2876603945, 556916518, Spawn)
local conversation = CreateConversation()
- if not HasQuest(Spawn,claymore) and not HasCompletedQuest(Spawn, claymore) and HasQuest(Spawn,papers) or HasCompletedQuest(Spawn, papers) and not HasQuest(Spawn,claymore)and not HasCompletedQuest(Spawn, claymore) then
- AddConversationOption(conversation, "You were saying there are more statues like this one?", "Claymore2")
+
+ StartConversation(conversation, NPC, Spawn, "")
+
+
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("'Tis a lovely day for a tune, isn't it?")
+ Dialog.AddVoiceover("voiceover/english/andrea_dovesong/qey_north/andreadovesong000.mp3", 2876603945, 556916518)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ if not HasQuest(Spawn,claymore) and not HasCompletedQuest(Spawn, claymore) and HasQuest(Spawn,papers) or HasCompletedQuest(Spawn, papers) and not HasQuest(Spawn,claymore)and not HasCompletedQuest(Spawn, claymore) then
+ Dialog.AddOption("You were saying there are more statues like this one?", "Claymore2")
end
if GetQuestStep(Spawn,papers)==2 then
- AddConversationOption(conversation, "Here is the parchment you requested from Duvo. He said he has plenty more if you need.", "Delivered")
+ Dialog.AddOption("Here is the parchment you requested from Duvo. He said he has plenty more if you need.", "Delivered")
end
if not HasQuest(Spawn,claymore) and not HasCompletedQuest(Spawn, claymore) and not HasQuest(Spawn,papers) and not HasCompletedQuest(Spawn, papers)then
- AddConversationOption(conversation, "What kind of songs do you sing?", "Work")
+ Dialog.AddOption("What kind of songs do you sing?", "Work")
end
if HasQuest(Spawn,claymore) or HasCompletedQuest(Spawn, claymore) then
- AddConversationOption(conversation, "Tell me again what you like to sing about.", "Work")
+ Dialog.AddOption("Tell me again what you like to sing about.", "Work")
end
if not HasQuest(Spawn,papers) and not HasCompletedQuest(Spawn, papers) and HasQuest(Spawn, claymore) or not HasQuest(Spawn,papers) and not HasCompletedQuest(Spawn, papers) and HasCompletedQuest(Spawn, claymore)then
- AddConversationOption(conversation, "You seem quite busy here. Can I help you with anything while you perform?", "Work2")
+ Dialog.AddOption("You seem quite busy here. Can I help you with anything while you perform?", "Work2")
end
AddConversationOption(conversation, "It is indeed!","kiss")
AddConversationOption(conversation, "If you say so.")
- StartConversation(conversation, NPC, Spawn, "'Tis a lovely day for a tune, isn't it?")
+ Dialog.Start()
end
end
@@ -80,28 +90,30 @@ end
function Work(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/andrea_dovesong/qey_north/andreadovesong001.mp3", "", "orate", 3368204937, 3549759451, Spawn)
- local conversation = CreateConversation()
-
- AddConversationOption(conversation, "The claymore must be quite powerful to do with such a storied history.", "Claymore1")
- AddConversationOption(conversation, "Fascinating. Thanks for sharing.","agree")
- StartConversation(conversation, NPC, Spawn, "I sing songs about many things, but my favorite songs are about this monument right here. The mighty Qeynos Claymore! I sing songs about ancient Valius Bayle who first brought the sword to our world from its planar home. I sing songs of Antonius Bayle winning the sword in tournaments between the early human clans and how we used it to unite the human people within one kingdom! Aye, the Qeynos Claymore has a long and storied history.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I sing songs about many different things. But my favorite songs are the ones about this monument right here, the mighty Qeynos Claymore. I sing songs that tell of ancient Vallius Bayle who first brought the sword to our world from its planar home. I sing stories of Antonius Bayle winning the sword in tournaments that were held between the early human clans, and how he used it to unite the human people within one kingdom. Aye, the Qeynos Claymore has a long and storied history.")
+ Dialog.AddVoiceover("voiceover/english/andrea_dovesong/qey_north/andreadovesong001.mp3", 3368204937, 3549759451)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("The claymore must be quite powerful with such a storied history.", "Claymore1")
+ Dialog.AddOption("Fascinating. Thanks for sharing.","agree")
+ Dialog.Start()
end
function Claymore1(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/andrea_dovesong/qey_north/andreadovesong002.mp3", "", "agree", 2179201684, 4109286437, Spawn)
- local conversation = CreateConversation()
-
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, it is! Now Antonia Bayle is the owner of the fine blade. Unfortunately it is hidden away in the castle for its protection. Many agents of evil would like nothing better than to lay their hands upon it. For now though, we only have these monuments to remind us of the Claymore.")
+ Dialog.AddVoiceover("voiceover/english/andrea_dovesong/qey_north/andreadovesong001.mp3", 2179201684, 4109286437)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
if not HasQuest(Spawn,claymore) and not HasCompletedQuest(Spawn, claymore) then
- AddConversationOption(conversation, "There are monuments like this one somewhere else?", "Claymore2")
+ Dialog.AddOption("There are monuments like this one somewhere else?", "Claymore2")
end
if HasQuest(Spawn,claymore) or HasCompletedQuest(Spawn, claymore) then
- AddConversationOption(conversation, "Wait, I've forgotten. You said there are more monuments like this one?", "Claymore2")
+ Dialog.AddOption("Wait, I've forgotten. You said there are more monuments like this one?", "Claymore2")
end
- AddConversationOption(conversation, "Well, thankfully we can enjoy reflecting unpon our city's history with places like this.","agree")
- StartConversation(conversation, NPC, Spawn, "Aye, it is! Now, Antonia Bayle is the owner of the fine blade. And fortunately it is hidden away in the castle for its protection. Many agents of evil would like nothing better than to lay a hand upon it. For now, though, we only have these monuments to remind us of the claymore.")
+ Dialog.AddOption("Well, thankfully we can enjoy reflecting unpon our city's history with places like this.","agree")
+ Dialog.Start()
end
function agree(NPC,Spawn)
@@ -112,20 +124,21 @@ end
function Claymore2(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/andrea_dovesong/qey_north/andreadovesong003.mp3", "", "nod", 4096047886, 1484152928, Spawn)
- local conversation = CreateConversation()
-
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, there are others. In fact, another monument stands out in the Antonican hills. A small contingent of guards look over the Claymore monument. People often visit there to pray and meditate. Good travels to you if you plan on venturing out to see it.")
+ Dialog.AddVoiceover("voiceover/english/andrea_dovesong/qey_north/andreadovesong003.mp3", 4096047886, 1484152928)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
if not HasQuest(Spawn,claymore) and not HasCompletedQuest(Spawn, claymore) then
- AddConversationOption(conversation, "I think I will. Thank you for sharing the story.", "Claymore3")
+ Dialog.AddOption("I think I will. Thank you for sharing the story.", "Claymore3")
end
if HasCompletedQuest(Spawn, claymore) then
- AddConversationOption(conversation, "I've been to the one in Antonica since we last spoke. It is quite the sight overlooking the hills and coastline.", "agree")
+ Dialog.AddOption("I've been to the one in Antonica since we last spoke. It is quite the sight overlooking the hills and coastline.", "agree")
end
if not HasQuest(Spawn,papers) and not HasCompletedQuest(Spawn, papers) then
- AddConversationOption(conversation, "You seem quite busy here. Can I help you with anything while you perform?", "Work2")
+ Dialog.AddOption("You seem quite busy here. Can I help you with anything while you perform?", "Work2")
end
- AddConversationOption(conversation, "Well, thankfully we can enjoy reflecting unpon our city's history with places like this.","agree")
- StartConversation(conversation, NPC, Spawn, "Aye, there are others. In fact, another monument stands out in the Antonican hills. A small contingent of guards look over this Claymore Monument, and people often visit there to pray and meditate. Good travels to you if you plan on venturing out to see it.")
+ Dialog.AddOption("Well, thankfully we can enjoy reflecting unpon our city's history with places like this.","agree")
+ Dialog.Start()
end
function Claymore3(NPC, Spawn)
@@ -137,14 +150,16 @@ end
function Work2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/andrea_dovesong/qey_north/andreadovesong004.mp3", "", "ponder", 2245604238, 844371971, Spawn)
- local conversation = CreateConversation()
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Looking for work are you? Well, I could use some new parchment to scribe my sonata. Scribe Duvo always has plenty. You'll find him at the Elddar Grove. Bring me the parchment and I'll pay you for your troubles.")
+ Dialog.AddVoiceover("voiceover/english/andrea_dovesong/qey_north/andreadovesong004.mp3", 2245604238, 844371971)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
if HasQuest(Spawn,duvo) or HasCompletedQuest(Spawn, duvo) then
- AddConversationOption(conversation, "I've actually had dealings with Duvo. I'll stop by and see him.", "StartPapers")
+ Dialog.AddOption("I've actually had dealings with Duvo. I'll stop by and see him.", "StartPapers")
end
- AddConversationOption(conversation, "Gladly. I'll be back with the parchment", "StartPapers")
- AddConversationOption(conversation, "Parchment? Afraid I don't have the time.", "shrug")
- StartConversation(conversation, NPC, Spawn, "Looking for work are you? I could use some parchment to transcribe my sonnta. Scribe Duvo always has pleanty. You'll find him at the Elddar Grove. Bring me the parchment and I'll pay you for your troubles.")
+ Dialog.AddOption("Gladly. I'll be back with the parchment", "StartPapers")
+ Dialog.AddOption("Parchment? Afraid I don't have the time.", "shrug")
+ Dialog.Start()
end
function shrug(NPC,Spawn)
@@ -159,10 +174,12 @@ function StartPapers(NPC, Spawn)
function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/andrea_dovesong/qey_north/andreadovesong005.mp3", "", "thanks", 3610265582, 997287857, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Thank you.", "FinishPapers")
- StartConversation(conversation, NPC, Spawn, "How sweet and swift you are! Take these coins as a token of my appreciation.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How sweet and swift you are! Take these coins as a token of my appreciation.")
+ Dialog.AddVoiceover("voiceover/english/andrea_dovesong/qey_north/andreadovesong005.mp3", 3610265582, 997287857)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("Thank you.", "FinishPapers")
+ Dialog.Start()
end
function FinishPapers(NPC,Spawn)
diff --git a/server/SpawnScripts/NorthQeynos/BakerVoleen.lua b/server/SpawnScripts/NorthQeynos/BakerVoleen.lua
index 95a0b9f34..d1f8ba159 100755
--- a/server/SpawnScripts/NorthQeynos/BakerVoleen.lua
+++ b/server/SpawnScripts/NorthQeynos/BakerVoleen.lua
@@ -65,10 +65,10 @@ function Dialog1(NPC, Spawn)
Dialog.AddDialog("I see you enjoying my pastries. Perhaps you can do me a small favor in exchange for a treat?")
Dialog.AddVoiceover("voiceover/english/baker_voleen/qey_north/mer_bakervoleen.mp3", 1488479390, 237480726)
if not HasQuest(Spawn,Fhara) and not HasCompletedQuest(Spawn,Fhara) then
- Dialog.AddOption("I would be happy to help. What do you need?","Dialog2")
+ Dialog.AddOption("Sure, that sounds great. What can I help you with?","Dialog2")
end
if GetQuestStep(Spawn,Fhara)==2 then
- Dialog.AddOption("Fhara seemed quite happy to get her pastries.","Dialog3")
+ Dialog.AddOption("Fhara wanted to let you know that she loved the pastries!","Dialog3")
end
Dialog.AddOption("Sorry, just taking in the free smells.")
Dialog.Start()
@@ -90,7 +90,7 @@ function Dialog2(NPC, Spawn)
PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
Dialog.AddDialog("How kind of you. I need someone to bring Fhara her morning order. If you have the time, I would appreciate you bringing it to her.")
Dialog.AddVoiceover("voiceover/english/baker_voleen/qey_north/quests/bakervoleen/voleen_x1_initial.mp3", 4128977050, 2819913920)
- Dialog.AddOption("Sounds easy enough. I'll take it to her.","Offer")
+ Dialog.AddOption("Sure, I'd be happy to!","Offer")
Dialog.AddOption("Actually, I don't think I have the time. Sorry.")
Dialog.Start()
end
@@ -104,7 +104,7 @@ function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
- Dialog.AddDialog("I new she would! For your troubles, please accept a few loaves of fresh baked bread.")
+ Dialog.AddDialog("I knew she would! For your troubles, please accept a few loaves of fresh baked bread.")
Dialog.AddVoiceover("voiceover/english/baker_voleen/qey_north/quests/bakervoleen/voleen_x1_finish.mp3", 1749869048, 2865084547)
Dialog.AddOption("Gladly!","Finish")
Dialog.Start()
diff --git a/server/SpawnScripts/NorthQeynos/CouncilorVemerik.lua b/server/SpawnScripts/NorthQeynos/CouncilorVemerik.lua
index fdffe35e2..267c46fc6 100755
--- a/server/SpawnScripts/NorthQeynos/CouncilorVemerik.lua
+++ b/server/SpawnScripts/NorthQeynos/CouncilorVemerik.lua
@@ -6,22 +6,443 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5782
+local Quest2 = 5783
+local Bard = 5784
+local Predator = 5785
+local Rogue = 5786
function spawn(NPC)
-
+ ProvidesQuest(NPC, Quest1)
+ ProvidesQuest(NPC, Quest2)
+ ProvidesQuest(NPC, Bard)
+ ProvidesQuest(NPC, Predator)
+ ProvidesQuest(NPC, Rogue)
end
function hailed(NPC, Spawn)
+
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("And a good day to you, my friend! Nothing's more enjoyable than people watching. For instance, there's an amusing lad, that fellow there seems to be in a rush, and take a gander at that lady ... er ... the point is, nimble eyes are just as important as nimble fingers. You never know what you might see!")
Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik000.mp3", 1163089685, 181252460)
PlayFlavor(NPC,"","","hello",0,0,Spawn)
- Dialog.AddOption("I've got more important things to do than watch people. Good day.")
+ if GetClass(Spawn)== 31 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I take it you know a lot about scouting, even though you're a Counselor?","Dialog1")
+ end
+ if GetClass(Spawn)== 31 and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Quest2) and not HasCompletedQuest(Spawn,Quest2) and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("So... any more sage advice today, Counselor?","Dialog4")
+ elseif GetClass(Spawn)== 31 and GetLevel(Spawn)<8 and not HasQuest(Spawn,Quest2) and not HasCompletedQuest(Spawn,Quest2) and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("Thank you. I'll return soon for more advice.")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==2 then
+ Dialog.AddOption("I have slain the rock adders.","Dialog2")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==4 then
+ Dialog.AddOption("I've spoken with Dawson.","Dialog3")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==2 then
+ Dialog.AddOption("I understand predators better after dealing with those spiders.","Dialog5")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==4 then
+ Dialog.AddOption("I gave the guard the message. [Tell Vemerik what the guard said] ","Dialog6")
+ end
+ if HasCompletedQuest(Spawn,Quest2) and not HasQuest(Spawn,Bard) and not HasQuest(Spawn,Rogue) and not HasQuest(Spawn,Predator) and GetClass(Spawn)==31 and GetLevel(Spawn) >= 9 then
+ Dialog.AddOption("I think I understand what you're saying. Sooo... any more advice?","Decide")
+ end
+ if HasQuest(Spawn,Rogue) and GetQuestStep(Spawn,Rogue)==2 then
+ Dialog.AddOption("I managed to grab the lieutenant's orders out from under the watchful eye of the Qeynos guard. I'm sure they'll be put through some rigorous training after this to help them keep a sharper eye out in the future, but that's not my concern now!","RogueDone")
+ end
+ if not HasCompletedQuest(Spawn, Rogue) and not HasCompletedQuest(Spawn, Predator) and not HasCompletedQuest(Spawn, Bard) then
+ Dialog.AddOption("I've got more important things to do than watch people. Good day.")
+ else
+ Dialog.AddOption("Never a dull moment with you, Counselor. Good to see you again.","RogueDone2")
+ end
Dialog.AddOption("I'll keep that in mind...")
Dialog.Start()
end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Who better to take advice from than someone who spends his time watching instead of talking? And from what I observe of you, I'd say you're someone to keep an eye on... perhaps in more ways than one, yes? Count your lucky stars, friend, for today I offer you the counsel that will have every scout seething with envy.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik001.mp3", 2884977511, 461092227)
+ PlayFlavor(NPC, "", "", "wink", 0, 0, Spawn)
+ Dialog.AddOption("I doubt you've seen me that much of me!","Dialog1a")
+ Dialog.Start()
+end
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You think you're a sneaky little scamp, but there's always someone out there who's better than you. The only way to rise out of mediocrity is to find what you do best ... and do it better. That includes hiding in plain sight, tracking your quarry, or captivating an audience with tales of your prowess ... on the battlefield, that is.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik002.mp3", 867957619, 293298057)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddOption("Well, that does sound like what I'm looking for! What must I do?","Dialog1b")
+ Dialog.AddOption("Better than me?! Bah! Off with you! I don't need any of your silly advice!","smirk")
+ Dialog.Start()
+end
+
+function smirk(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Let's look at rogues for a moment. Due to their stealth and guile nature, people associate rogues with thieves and cutpurses. But we both know that rogues are just misunderstood, right? Perhaps you want to try your hand--and fingers--at being a rogue?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik003.mp3", 902455109, 2724236696)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I could always test out my dexterity. What do you have in mind?","Quest1Offer")
+ Dialog.Start()
+end
+
+function Quest1Offer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Quest1)
+end
+
function respawn(NPC)
spawn(NPC)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Congratulations, my stealthy friend. That was an impressive show, indeed. I really enjoyed the way you slipped up behind the one adder and struck it before it ever sensed your presence. Bravo, bravo!")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik005.mp3", 37517606, 3026987360)
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
+ Dialog.AddOption("Their fangs were more of a challenge than they appeared.","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Precisely! Remember how I told you there's always someone out there better than you? A word to the wise, friend: What looks like a safe, dark cave to hide in may be the mouth of a dragon. I'll let you ponder that one as we move on to my next piece of advice. I think an appreciation for bards would do you good.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik006.mp3", 729445515, 3345579135)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("A bard? What harm could someone who sings songs actually do?","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That reminds me of a riddle. Where's the safest place to hide a secret letter about an illicit tryst? In plain sight, right? If you answered \"yes,\" then you're wrong! The safest place to hide a letter is in an envelope.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik007.mp3", 3700473453, 592698849)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("Err... what are you trying to say?","Dialog2c")
+ Dialog.AddOption("Oh, I see.","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm saying that no one expects you to be daft enough to keep a letter of that type in the very envelope it was sent. In turn, no one expects some silly fop singing about love and happiness to secretly be a deadly adversary. Bards can be as deceptive as any master rogue by making people think they're not a threat. Then again, they can also be nothing more than silly fops.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik008.mp3", 2036298536, 1267180254)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddOption("Fight me then. I'm no weak fop!","Dialog2d")
+ Dialog.Start()
+end
+
+function Dialog2d(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perhaps, in your case, but that's beside the point. What I'm telling you is that words can be a weapon sharper than any sword. I think it's better if you saw this for yourself. A man by the name of Dawson here in the city is known for his witty banter. Why don't you try to best him at his own game?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik009.mp3", 3611834104, 1157473996)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("A challenge of wits then! I'll return after I speak with Dawson.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'd ask how it went, but since your cheeks aren't beet red, I assume Dawson met his match! Now, I showed you how bards use their skills with words to best their opponents, but bards have many other talents as well. These I will let you discover yourself. I said I'd offer you advice, not create unnecessary competition.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik010.mp3", 570326948, 4214364633)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ if GetLevel(Spawn)>=8 then
+ Dialog.AddOption("I think I understand what you're saying. Sooo... any more advice?","DoneToday")
+ else
+ Dialog.AddOption("I think I understand what you're saying. Sooo... any more advice?","DoneToday")
+ end
+ Dialog.Start()
+end
+
+function DoneToday(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're a good listener, I'd like to give you more advice, but alas, I must wet my whistle. For now, take what you learned and use it wisely. Come back after I've had time to imbibe in a fine wine. Never underestimate the power of a finely aged wine or the bouquet of a young one.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik011.mp3", 2937149827, 1212015107)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ if GetClass(Spawn)== 31 and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Quest2) and not HasCompletedQuest(Spawn,Quest2) and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("Please, I am ready for more advice... if you have some!","Dialog4")
+ elseif HasCompletedQuest(Spawn,Quest2) and not HasQuest(Spawn,Bard) and not HasQuest(Spawn,Rogue) and not HasQuest(Spawn,Predator) and GetClass(Spawn)==31 and GetLevel(Spawn) >= 9 then
+ Dialog.AddOption("I think I understand what you're saying. Sooo... any more advice?","Decide")
+ end
+ Dialog.AddOption("Thank you. I'll return soon for more advice.")
+ Dialog.Start()
+end
+
+--QUEST 2
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Of course! Early to bed and early to rise makes you a dull boy. Never put your hand in a gift horse's mouth. A copper saved is a copper not spent on a nip of sherry. A bird in the hand is never as good as a bird in the ... ah, yes. But I assume you're not here for this type of advice. You're interested in more scoutly tips, right?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik012.mp3", 3068538410, 2019549688)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("You have quite the skill for going on and on, don't you?","Dialog4a")
+ Dialog.AddOption("Nope. That is exactlly what I was looking for. I feel more counseled already!")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'll take that as a compliment, thank you very much. Very well ... you've had a taste of the skills rogues and bards use, but you haven't touched on those of the predator. Just like the rogue, the life of the predator is often misunderstood. This is why many a predator leaves society for the quiet of the wilderness.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik013.mp3", 3948645003, 3755795247)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddOption("Why would they want to remove themselves from society?","Dialog4b")
+ Dialog.Start()
+end
+
+function Dialog4b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Predators distill every ounce of patience and diligence from within their very being and direct that concentrate towards the quarry they tirelessly pursue. Just as if it was a precious jewel, nothing stops predators from acquiring their target.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik014.mp3", 252169765, 1039248114)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Like a hunter stalking its prey? ","Quest2Offer")
+ Dialog.AddOption("Like a spider and its web?","Quest2Offer")
+ Dialog.AddOption("Like a loan collector?","Quest2Offer")
+ Dialog.AddOption("Most interesting, but I'm in way over my head with all of this.")
+ Dialog.Start()
+end
+
+function Quest2Offer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Quest2)
+end
+
+function Dialog5(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The danger that forest creatures present is nothing compared to hunting something with two legs. Even more dangerous, is when you start to enjoy the hunt. When the exhilaration of the kill becomes more enjoyable than the hunt, that's when it's time to find a new profession.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik016.mp3", 406273156, 333036872)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Noted. The hunt should be more important than the kill.","Dialog5a")
+ Dialog.Start()
+end
+
+function Dialog5a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I think I've told you everything you need to know. Unless, of course, you're interested in putting some of these gems of wisdom to the test. As an advisor to the Queen, it's my duty to offer her as much information as possible in order for her to make wise decisions. Perhaps you're willing to help the Queen?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik017.mp3", 3570678330, 2381735310)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Help the Queen? It would be an honor! What must I do?","Dialog5b")
+ Dialog.AddOption("This sounds far too important for me to handle! I'll leave you to it.")
+ Dialog.Start()
+end
+
+function Dialog5b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, nothing more than delivering a message to one of her guards. There's a guard who's stationed out by one of the bridges within the wilds of Antonica. Unfortunately, I don't recall which bridge it is.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik018.mp3", 4227213140, 3986290744)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("What is the message I need to deliver?","Dialog5c")
+ Dialog.Start()
+end
+
+function Dialog5c(NPC,Spawn)
+ SetStepComplete(Spawn,Quest2,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I heard that his sister came down with an illness. I want him to know that she's in good hands. Would you be so kind as to tell him this?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik019.mp3", 3378010283, 3556160913)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Certainly!")
+ Dialog.Start()
+end
+
+function Dialog6(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I dare say, that if people kept their mouth shut, my job would be much harder. I owe you a bit of an explanation, but I will keep it brief. Save for trekking across Antonica, you were never in any danger. As for the message you sent, well, the guard would be quite distressed to hear that it was just a bluff.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik020.mp3", 900786324, 3703445499)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("So it was a lie?","Dialog6a")
+ Dialog.Start()
+end
+
+function Dialog6a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I trusted your ability to make it out alive. In the end, he revealed his hand, just as I expected him to. I'm a bit concerned that he has a rather negative opinion about me, though. I would have thought he didn't have enough common sense to look at things twice.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik021.mp3", 3903421606, 2087614120)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("So, was his sister actually involved?","Dialog6b")
+ Dialog.AddOption("Will the sentry face judgement for his actions?","Dialog6b")
+ Dialog.Start()
+end
+
+function Dialog6b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I can neither confirm nor deny that, adventurer. I will, though, offer you the most important piece of advice you need to know. Any amateur can look at something, but only a pro can see what they're looking at. How and where you use your talents is all that counts in the end. Remember that and you will go far.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik022.mp3", 2592596707, 887568372)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
+ if GetLevel(Spawn) <9 then
+ Dialog.AddOption("I think I understand what you're saying. Sooo... any more advice?","DoneToday")
+ else
+ Dialog.AddOption("I think I understand what you're saying. Sooo... any more advice?","Decide")
+ end
+ Dialog.Start()
+end
+
+function Decide(NPC,Spawn)
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2) ==4 then
+ SetStepComplete(Spawn,Quest2,4)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The time for advice is done, friend. Now it's time for you to take what you learned and use it. You've learned too much to idle around as a scout. Where do you plan on taking your talents?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik023.mp3", 698357632, 1164995124)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I enjoyed the stealthy nature of the rogue.","Rogue1")
+ Dialog.AddOption("I think I'll continue my hand at being a bard.","Bard1")
+ Dialog.AddOption("I'm too focused to be anything other than a predator.","Predator1")
+ Dialog.Start()
+end
+
+
+--ROGUE CLASS
+function Rogue1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("One does not choose to be a rogue, but rather life makes that choice for them. Rogues live lives free of the bonds that society places on others. Tricky little fellows, rogues are always around when you need them. Look behind you and you just might find one... So, is this where you will focus your talents?")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik024.mp3", 285925874, 319020481)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I'm pretty certain the life of a rogue will be quite... rewarding. Yes, I'm a rogue.","Rogue2")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function Rogue2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahh, the life of the rogue! Stealth, cunning and wealth -- if you're successful in your endeavors. Why don't I arrange a test for you? We'll see if you have what it takes to be a thief.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik028.mp3", 4162046262, 4084281734)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("Bring it on! I will pass any test you can muster.","RogueOffer")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function RogueOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Rogue)
+end
+
+function Rogue3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Grab their mission orders. The lieutenant will have them guarded. Knowing him, he'll keep them behind a locked door guarded by his most brawny men. Return to me when you're done, and I'll verify the orders.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik030.mp3", 1639577999, 2458872272)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Alright. I'll bring you the documents as quick as I can!")
+ Dialog.Start()
+end
+
+function RogueDone(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Let me make certain that you didn't just forge these ... No you succeeded where others before you have failed. The lieutenant will have to double his efforts. You certainly deserve the title of \"rogue.\"")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik031.mp3", 1723935766, 223407145)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Thank you Counselor. I will use my new skills wisely.","RogueDone2")
+ Dialog.Start()
+end
+
+function RogueDone2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,Rogue) then
+ SetStepComplete(Spawn,Rogue,2)
+ end
+ PlayFlavor(NPC, "", "", "wink", 0, 0, Spawn)
+end
+
+--BARD CLASS
+
+function Bard1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Anyone can defeat a mighty adversary in battle, but being remembered for it is an entirely different matter. A bard regales others with tales of the past through their melodies and stories. The bard who writes the past is the same one who guides the future. And don't forget all the attention you get, too! That's my favorite part!")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik025.mp3", 3456483414, 216988233)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("I enjoy being the center of attention. I'm going to love being a bard!","Bard2")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function Bard2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Perhaps you will, but first we must see how well you perform under pressure. The life of a bard isn't all song and dance, you know. A great amount of stress is placed upon performers and if you're not up to the task, there's no telling what can happen.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik032.mp3", 1067830729, 103418166)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I'm ready for anything.","Bard3")
+ Dialog.Start()
+end
+
+function Bard3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you prepared to see what happens when you perform poorly in front of the wrong audience? We're about to find out! It so happens, there's a group of rather sour individuals with a performer who... ahhh ... had an off night, so to speak.")
+ Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik033.mp3", 1412723823, 1711994068)
+ PlayFlavor(NPC, "", "", "scheme", 0, 0, Spawn)
+ Dialog.AddOption("Ok, so what do you want me to do about it?","BardOffer")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function BardOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Bard)
+end
+
+--PREDATOR CLASS
+
+function Predator1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Predators are only happy when they are pursuing their quarry. Once they catch what they're tracking, well, the game's over, so they say. Therefore, a smart predator always finds something else to hunt down. If you've got a big imagination, then being a predator might be for you.")
+-- Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik026.mp3", 3456483414, 216988233) UNKNOWN
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I like having something to do at all times. I'm a predator.","Predator2")
+ Dialog.AddOption("I'm not too sure anymore. Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function Predator2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, a predator? Can you smell your prey far before you see it? If you close your eyes, can you hear the heartbeat of your game and know how many beats are left, yes? Yes ... a stalker's instinct runs in your blood. You are the top of the food chain.")
+-- Dialog.AddVoiceover("voiceover/english/counselor_vemerik/qey_north/counselor_vemerik026.mp3", 3456483414, 216988233) UNKNOWN
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("I revel in the hunt. What must I do to prove my skill?","PredatorOffer")
+ Dialog.AddOption("Well, when you put it that way... Do you advise I specialize somewhere else?","Decide")
+ Dialog.Start()
+end
+
+function PredatorOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Predator)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthQeynos/DawsonMagnificent.lua b/server/SpawnScripts/NorthQeynos/DawsonMagnificent.lua
index ef5c8653a..b2a02b889 100755
--- a/server/SpawnScripts/NorthQeynos/DawsonMagnificent.lua
+++ b/server/SpawnScripts/NorthQeynos/DawsonMagnificent.lua
@@ -8,6 +8,7 @@
dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
local Message = 5546
+local Quest1 = 5782
function spawn(NPC)
ProvidesQuest(NPC,Message)
@@ -45,11 +46,14 @@ function hailed(NPC, Spawn)
end
else
local conversation = CreateConversation()
- FaceTarget(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1052.mp3", "", "bye", 0, 0, Spawn, 0)
if not HasQuest(Spawn,Message) and not HasCompletedQuest(Spawn, Message)then
AddConversationOption(conversation, "You seem torn about something, Dawson.","QuestStart")
end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==3 then
+ AddConversationOption(conversation,"Perhaps if you lost a few pounds, you wouldn't have that problem! Touche!","Dialog1")
+ end
if GetQuestStep(Spawn, Message) ==2 then
AddConversationOption(conversation, "I let Galsway know you would be late tonight.","Delivered")
end
@@ -69,6 +73,7 @@ end
function Act(NPC,Spawn)
PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ SendMessage(Spawn,"Dawson glares at you unapprovingly.")
end
function Delivery2(NPC, Spawn)
@@ -89,3 +94,75 @@ function FinishQuest(NPC,Spawn)
FaceTarget(NPC, Spawn)
SetStepComplete(Spawn,Message, 2)
end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "I'll take your word for it, friend. The \'man\' part, if you misundertood", "Dialog2")
+ AddConversationOption(conversation, "You... you smell!","Dialog1a")
+ AddConversationOption(conversation, "Perhaps... err... I should give this some more thought.")
+ StartConversation(conversation, NPC, Spawn, "Ha! You fancy yourself a wordsmith of the verbal sting. yes? I'm up for giving someone a good nose rubbing. I'll give you the first jab only because I'm a fair man.")
+end
+
+function Dialog1a(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "snicker", 0, 0, Spawn)
+ SendMessage(Spawn,"Dawson snickers at you in victory.")
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayAnimation(NPC,12172)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "I... uh... think you should go jump in the moat!... without pants?", "Dialog2a")
+ AddConversationOption(conversation, "I wouldn't want you to miss out, seeing this is your first time you've heard it.","Dialog3")
+ AddConversationOption(conversation, "Umm... I must be going!")
+ StartConversation(conversation, NPC, Spawn, "A bit droll, but I guess you're warming up. Just let me know when you get to the witty parts.")
+end
+
+function Dialog2a(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ SendMessage(Spawn,"Dawson chuckles at you in victory.")
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayAnimation(NPC,"point")
+ PlayFlavor(NPC, "", "", "point", 0, 0, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "I think you're mistaking that feeling for the broccoli you ate earlier.", "Dialog4")
+ AddConversationOption(conversation, "You...your face makes me laugh!","Dialog3a")
+ AddConversationOption(conversation, "Let's continue this... another time?")
+ StartConversation(conversation, NPC, Spawn, "But not the first time I've seen it. Just looking at you makes me laugh!")
+end
+
+function Dialog3a(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
+ SendMessage(Spawn,"Dawson shrugs at you in victory.")
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Hah! Toot.", "Dialog4a")
+ AddConversationOption(conversation, "Is your mother still paying for you lessons?","Dialog5")
+ AddConversationOption(conversation, "Let's continue this... another time?")
+ StartConversation(conversation, NPC, Spawn, "Yes, I've been known to toot my own horn on occasion, friend. But the crowds I draw attest to my skill!")
+end
+
+function Dialog4a(NPC,Spawn)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ AddConversationOption(conversation, "I mean...Is your mother still paying for you lessons?")
+ StartConversation(conversation, NPC, Spawn, "...")
+ SendMessage(Spawn,"Dawson rubs his head in confusion.")
+end
+
+function Dialog4(NPC, Spawn)
+ SetStepComplete(Spawn,Quest1,3)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "beg", 0, 0, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "Alright. Best of luck with the show. Try not to break any legs!")
+ StartConversation(conversation, NPC, Spawn, "Ugh! I yield! I don't have any more time for this. Please, take yourself and your sharp tongue elsewhere. I have a show to prepare.")
+end
diff --git a/server/SpawnScripts/NorthQeynos/Dingus.lua b/server/SpawnScripts/NorthQeynos/Dingus.lua
new file mode 100755
index 000000000..056ed0fe5
--- /dev/null
+++ b/server/SpawnScripts/NorthQeynos/Dingus.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/NorthQeynos/Dingus.lua
+ Script Author : Dorbin
+ Script Date : 2023.01.08 01:01:45
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthQeynos/DylanIronforge.lua b/server/SpawnScripts/NorthQeynos/DylanIronforge.lua
index 6bdaa7ee2..cd9dc7b7e 100755
--- a/server/SpawnScripts/NorthQeynos/DylanIronforge.lua
+++ b/server/SpawnScripts/NorthQeynos/DylanIronforge.lua
@@ -9,7 +9,7 @@
local CalcifiedBoneOfTheTortured = 527
function spawn (NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/NorthQeynos/FharaHanford.lua b/server/SpawnScripts/NorthQeynos/FharaHanford.lua
index f287e211c..3d64dc7c0 100755
--- a/server/SpawnScripts/NorthQeynos/FharaHanford.lua
+++ b/server/SpawnScripts/NorthQeynos/FharaHanford.lua
@@ -23,7 +23,7 @@ function hailed(NPC, Spawn)
AddConversationOption(conversation, "I was wondering if you had any odd tasks that needed to be done.","Jobs")
end
if GetQuestStep (Spawn,Fhara)==1 then
- AddConversationOption(conversation, "I have a pastry delivery for you from Voleen.","Delivery")
+ AddConversationOption(conversation, "I've brought over your order from Baker Voleen!","Delivery")
end
AddConversationOption(conversation, "I'll look around. Thank you.")
StartConversation(conversation, NPC, Spawn, "Good day! Please take a look around my shop. My fine furniture spruces up any home.")
@@ -54,9 +54,9 @@ function Delivery(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
- AddConversationOption(conversation, "Enjoy!","Delivered")
+ AddConversationOption(conversation, "I certainly will! Good day to you!","Delivered")
AddConversationOption(conversation, "Try not to eat them all in one sitting.","Delivered2")
- StartConversation(conversation, NPC, Spawn, "Oh, praise the gods! I've been craving these delectible treats all day. Tell Voleen thank you for me.")
+ StartConversation(conversation, NPC, Spawn, "Mmmm ... Mmmmm ... These pastries smell delicious! Voleen's delicacies always brighten my day. If you see her again, please, give her my thanks.")
end
function Delivered(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthQeynos/GavinIronforge.lua b/server/SpawnScripts/NorthQeynos/GavinIronforge.lua
index eb5392778..9110ad2cb 100755
--- a/server/SpawnScripts/NorthQeynos/GavinIronforge.lua
+++ b/server/SpawnScripts/NorthQeynos/GavinIronforge.lua
@@ -5,6 +5,8 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
+
local Delivery = 5542
function spawn(NPC)
@@ -54,27 +56,30 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC, "", "", "heckno", 1584866727, 581589457, Spawn)
end
else
- PlayFlavor(NPC, "voiceover/english/gavin_ironforge/qey_north/gavinironforge000.mp3", "", "hello", 57706546, 3929365008, Spawn)
- local conversation = CreateConversation()
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A hail and well met! Welcome to the Jewel Box. I am Gavin Ironforge, an apprentice in this shop. I help Tara with her duties, but we're unusually busy today.")
+ Dialog.AddVoiceover("voiceover/english/gavin_ironforge/qey_north/gavinironforge000.mp3", 57706546, 3929365008)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
if not HasQuest(Spawn,Delivery) and not HasCompletedQuest(Spawn, Delivery) then
- AddConversationOption(conversation, "Is there anything you need doing?", "Delivery1")
+ Dialog.AddOption("What is it that you can't get to today?", "Delivery1")
end
if GetQuestStep(Spawn,Delivery)==2 then
- AddConversationOption(conversation, "Rowena seemed quite pleased with your craftsmanship.", "Delivered")
+ Dialog.AddOption("The Temple of Life was most pleased with Tara's etchings.", "Delivered")
end
- AddConversationOption(conversation, "Just browsing your wares.")
- StartConversation(conversation, NPC, Spawn, "A hail and well met! Welcome to the Jewel Box. I am Gavin Ironforge, an apprentice in this shop. I help Tara with her duties, but we're unusually busy today.")
-
+ Dialog.AddOption("Thank you. I'll browse around. ")
+ Dialog.Start()
end
end
function Delivery1(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/gavin_ironforge/qey_north/gavinironforge001.mp3", "", "", 3182974274, 1240192562, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Sure thing. What needs delivering?", "Delivery2")
- AddConversationOption(conversation, "Sounds too important for me. I'll leave it for someone else.")
- StartConversation(conversation, NPC, Spawn, "I must send a package to the Temple of Life. The priests are eagerly waiting for it! I could use someone to deliver it for me if you have any free time. We will both benefit.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I must send a package to the Temple of Life. The priests are eagerly waiting for it. I could use someone to deliver it for me, if you've any free time. We will both benefit!")
+ Dialog.AddVoiceover("voiceover/english/gavin_ironforge/qey_north/gavinironforge001.mp3", 3182974274, 1240192562)
+ Dialog.AddOption("If the priests of Rodcet Nife need a delivery, then they'll get one!", "Delivery2")
+ Dialog.AddOption("Sounds too important for me. I'll leave it for someone else.")
+ Dialog.Start()
end
function Delivery2(NPC, Spawn)
@@ -85,10 +90,12 @@ function Delivery2(NPC, Spawn)
function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/gavin_ironforge/qey_north/gavinironforge003.mp3", "", "thanks", 1393179376, 3856557471, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Think nothing of it.", "FinishQuest")
- StartConversation(conversation, NPC, Spawn, "You preserve my faith in Qeynos! Qeynos citizens continue to be the most trustworthy citizens in all of Norrath.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You preserve my faith in Qeynos. Qeynosians continue to be the most trustworthy citizens in all of Norrath! Thank you!")
+ Dialog.AddVoiceover("voiceover/english/gavin_ironforge/qey_north/gavinironforge003.mp3", 1393179376, 3856557471)
+ PlayFlavor(NPC, "", "", "thank", 0, 0, Spawn)
+ Dialog.AddOption("And thank you for adding a bit more jingle to my coin pouch!", "FinishQuest")
+ Dialog.Start()
end
function FinishQuest(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthQeynos/GrayMagnificent.lua b/server/SpawnScripts/NorthQeynos/GrayMagnificent.lua
index 3ee20ef74..57cfaa618 100755
--- a/server/SpawnScripts/NorthQeynos/GrayMagnificent.lua
+++ b/server/SpawnScripts/NorthQeynos/GrayMagnificent.lua
@@ -7,8 +7,9 @@
--]]
function spawn(NPC)
-AddTimer(NPC, 5000, "EmoteLoop")
-AddTimer(NPC, 12000,"Swooning")
+AddTimer(NPC, 5000, "EmoteLoop",1)
+AddTimer(NPC, 12000,"SwooningLilly",1)
+AddTimer(NPC, 12000,"SwooningLaura",1)
end
function hailed(NPC, Spawn)
@@ -42,33 +43,41 @@ function EmoteLoop(NPC)
end
end
-function Swooning(NPC,Spawn)
+function SwooningLaura(NPC,Spawn)
local Laura = GetSpawn(NPC, 2220056)
- local Lilly = GetSpawn(NPC, 2220115)
if Laura ~= nil then
FaceTarget(Laura,NPC)
SetTarget(Laura,NPC)
- choice = math.random(1,3)
+ choice = MakeRandomInt(1,4)
if choice == 1 then
PlayFlavor(Laura, "","", "flustered", 0, 0)
- elseif choice == 2 then
- PlayFlavor(Laura, "","", "cheer", 0, 0)
- elseif choice == 2 then
+ elseif choice == 2 then
+ PlayFlavor(Laura, "","", "cheer", 0, 0)
+ elseif choice == 3 then
PlayFlavor(Laura, "","", "snicker", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(Laura, "","", "applaude", 0, 0)
end
end
+end
+
+function SwooningLilly(NPC,Spawn)
+ local Lilly = GetSpawn(NPC, 2220115)
if Lilly ~=nil then
FaceTarget(Lilly,NPC)
SetTarget(Lilly,NPC)
- choice = math.random(1,3)
+ choice = MakeRandomInt(1,4)
if choice == 1 then
PlayFlavor(Lilly, "","", "happy", 0, 0)
elseif choice == 2 then
- PlayFlavor(Lilly, "","", "giggle", 0, 0)
+ PlayFlavor(Lilly, "","", "giggle", 0, 0)
elseif choice == 3 then
- PlayFlavor(Lilly, "","", "nod", 0, 0)
+ PlayFlavor(Lilly, "","", "nod", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(Lilly, "","", "applaude", 0, 0)
end
end
- AddTimer(NPC, MakeRandomInt(25000,32000), "Swooning")
+ AddTimer(NPC, MakeRandomInt(25000,32000), "SwooningLaura",1)
+ AddTimer(NPC, MakeRandomInt(25000,32000), "SwooningLilly",1)
end
diff --git a/server/SpawnScripts/NorthQeynos/GrettaSteinbeard.lua b/server/SpawnScripts/NorthQeynos/GrettaSteinbeard.lua
index 0ca40018a..25c29c410 100755
--- a/server/SpawnScripts/NorthQeynos/GrettaSteinbeard.lua
+++ b/server/SpawnScripts/NorthQeynos/GrettaSteinbeard.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local fish = 5535
@@ -26,27 +27,31 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
end
else
- FaceTarget(Spawn, NPC)
- PlayFlavor(NPC, "voiceover/english/gretta_steinbeard/qey_north/grettasteinbeard_x1.mp3", "", "hello", 35615365, 1303938108, Spawn)
- local conversation = CreateConversation()
- if GetQuestStep(Spawn,fish)==2 then
- AddConversationOption(conversation, "Here are your fish! You didn't warn me the smell would nearly knock me out.", "Delivered")
- end
- if not HasQuest(Spawn,fish) and not HasCompletedQuest(Spawn, fish) then
- AddConversationOption(conversation, "You do have quite a nice place here.", "Work")
- end
- AddConversationOption(conversation, "I plan to enjoy myself. Thanks.")
- StartConversation(conversation, NPC, Spawn, "Greetings, traveler! My tavern's warm, and the company's good.")
- end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings, traveler! My tavern's warm, and the company's good.")
+ Dialog.AddVoiceover("voiceover/english/gretta_steinbeard/qey_north/grettasteinbeard_x1.mp3", 35615365, 1303938108)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ if not HasQuest(Spawn,fish) and not HasCompletedQuest(Spawn, fish) then
+ Dialog.AddOption("You do have quite a nice place here.", "Work")
+ end
+ if GetQuestStep(Spawn,fish)==2 then
+ Dialog.AddOption("Here's your fish, take them before they make me pale with disgust!", "Delivered")
+ end
+ Dialog.AddOption("I plan to enjoy myself. Thanks.")
+ Dialog.Start()
+ end
end
function Work(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x000.mp3", "", "ponder", 612712171, 2321965832, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I've got some time. What do you need?", "Delivery2")
- AddConversationOption(conversation, "I really don't. Sorry.","sigh")
- StartConversation(conversation, NPC, Spawn, "Why thank you sir! Say, would you be willing to spend a little time to help a busy woman?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Why thank you sir! Say, would you be willing to spend a little time to help a busy woman?")
+ Dialog.AddVoiceover("voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x000.mp3", 612712171, 2321965832)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I've got some time. What do you need?", "Delivery2")
+ Dialog.AddOption("I really don't. Sorry.","sigh")
+ Dialog.Start()
end
function sigh(NPC,Spawn)
@@ -55,11 +60,12 @@ end
function Delivery2(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x001.mp3", "", "", 179611746, 3337706668, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "I would be happy to lend a hand.", "Delivery3")
- AddConversationOption(conversation, "Sounds too fishy for me.", "sigh")
- StartConversation(conversation, NPC, Spawn, "Well, I need a delivery of fish for tonight's supper. I'm making my specialty. Fish stuffed with fish smothered in a fish sauce and served over a bed of fish, but I'm so busy here doing all the things I have to do that I haven't been able to go to Umli's Fish Market. If I don't get the fish, it will be turnip stew... again.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, I need a delivery of fish for tonight's supper. I'm making my specialty. Fish stuffed with fish smothered in a fish sauce and served over a bed of fish, but I'm so busy here doing all the things I have to do that I haven't been able to go to Umli's Fish Market. If I don't get the fish, it will be turnip stew... again.")
+ Dialog.AddVoiceover("voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x001.mp3", 179611746, 3337706668)
+ Dialog.AddOption("I would be happy to lend a hand.", "Delivery3")
+ Dialog.AddOption("Sounds too fishy for me.", "sigh")
+ Dialog.Start()
end
function Delivery3(NPC, Spawn)
@@ -70,11 +76,13 @@ function Delivery3(NPC, Spawn)
function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/gretta_steinbeard/qey_north/grettasteinbeard_x003.mp3", "", "thanks", 3675257953, 3697234196, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Thanks.", "FinishQuest")
- AddConversationOption(conversation, "Great. Now have I have to get rid of this fish smell.", "Chuckle")
- StartConversation(conversation, NPC, Spawn, "That last comment aside, I thank you. And some of the mudglub tavern patrons who don't have the courage to face that shell-skinned Umli and yet complain about the turnip stew! Well, here's some coin for your pocket. You have no idea how valuable your service has been.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That last comment aside, I thank ye, and so will the mudglud tavern patrons who don't have the courage to face that shale-skin Umli, and yet, complain about the turnip stew! Well, here's some coin for your pocket. You have no idea how valuable your service has been.")
+ Dialog.AddVoiceover("voiceover/english/merchant_gretta_steinbeard/qey_north/grettasteinbeard_x003.mp3", 3675257953, 3697234196)
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("Thanks.", "FinishQuest")
+ Dialog.AddOption("Great. Now have I have to get rid of this fish smell.", "Chuckle")
+ Dialog.Start()
end
function Chuckle(NPC,Spawn)
diff --git a/server/SpawnScripts/NorthQeynos/HeirophantAldalad.lua b/server/SpawnScripts/NorthQeynos/HeirophantAldalad.lua
index 7abe719d3..810bf4aa2 100755
--- a/server/SpawnScripts/NorthQeynos/HeirophantAldalad.lua
+++ b/server/SpawnScripts/NorthQeynos/HeirophantAldalad.lua
@@ -2,149 +2,412 @@
Script Name : SpawnScripts/NorthQeynos/HeirophantAldalad.lua
Script Author : Dorbin
Script Date : 2022.10.27 05:10:49
- Script Purpose :
+ Script Purpose : Hierophant Aldalad- Prima listed him as Heirophant Aldalad (typo?)
:
--]]
require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5772
+local Quest2 = 5773
+local Cleric = 5774
+local Druid = 5775
+local Shaman = 5776
function spawn(NPC)
-
+ ProvidesQuest(NPC, Quest1)
+ ProvidesQuest(NPC, Quest2)
+ ProvidesQuest(NPC, Cleric)
+ ProvidesQuest(NPC, Druid)
+ ProvidesQuest(NPC, Shaman)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
+
+ FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?")
Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad000.mp3", 1851949262, 3385195061)
PlayFlavor(NPC,"","","nod",0,0,Spawn)
- Dialog.AddOption("Thank you for your blessing. I wish you a good day as well, Hierophant")
+ if GetClass(Spawn)== 11 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("Your faith seems to buoy you, Hierophant. I wish to be as filled as you!","Dialog1")
+ end
+ if GetClass(Spawn)== 11 and GetLevel(Spawn)==7 and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I am still reflecting on what you've taught me. I'll return later once I've made more progress.")
+ end
+ if GetClass(Spawn)== 11 and GetLevel(Spawn)==8 and HasCompletedQuest(Spawn,Quest2) then
+ Dialog.AddOption("I am still reflecting on what you've taught me. I'll return later once I've made more progress.")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==3 then
+ Dialog.AddOption("I have cured them both. One was stubborn; the other was a bit stupid ... and disgusting.","Dialog2")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==5 then
+ Dialog.AddOption("I've dispatched the Oakmyst Spirits. They will bother people no longer.","Dialog3")
+ end
+ if GetClass(Spawn)== 11 and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Quest2) and not HasCompletedQuest(Spawn,Quest2) and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I believe I am ready to learn more. Tell me of your own beliefs, Hierophant.","Dialog4")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==2 then
+ Dialog.AddOption("I've whittled the Carnivorous Slug population down a bit.","Dialog5")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==6 then
+ Dialog.AddOption("I healed those three soldiers, but ... I regret I couldn't save the rest.","Dialog6")
+ end
+ if HasQuest(Spawn,Cleric) and GetQuestStep(Spawn,Cleric)==1 then
+ Dialog.AddOption("Sadly, I was not successful, Aldalad.","ClericFail")
+ end
+ if HasQuest(Spawn,Druid) then
+ Dialog.AddOption("Aldalad, I need to perform my task to become a druid.","DruidAccepted" )
+ end
+ if HasCompletedQuest(Spawn,Cleric) or HasCompletedQuest(Spawn,Druid) or HasCompletedQuest(Spawn,Shaman) then
+ Dialog.AddOption("May your blessings continue to provide, Aldalad. It is good to see you again.","Thanks")
+ end
+ if GetLevel(Spawn) >=9 and HasCompletedQuest(Spawn,Quest2) and GetClass(Spawn)==11 and not HasQuest(Spawn, Cleric) and not HasQuest(Spawn, Druid) and not HasQuest(Spawn, Shaman) then
+ Dialog.AddOption("I want to learn even more! What is my next lesson?","FinalClassTest")
+ end
+ Dialog.AddOption("Thank you for your blessing. I wish you a good day as well, Hierophant")
Dialog.Start()
end
+function Thanks(NPC)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "bow", 0, 0, Spawn)
+end
+
function respawn(NPC)
spawn(NPC)
end
---[[(1117833299)[Fri Jun 03 17:14:59 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?"
-(1117833300)[Fri Jun 03 17:15:00 2005] You say to Hierophant Aldalad,"Your faith seems to buoy you, Hierophant. I wish to be as filled as you!"
-(1117833300)[Fri Jun 03 17:15:00 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"It warms my heart to hear you say that. Norrath has seen so much tragedy, but here in Qeynos, our spirits have never been shattered. I believe it is our faith that preserves us."
-(1117833303)[Fri Jun 03 17:15:03 2005] You say to Hierophant Aldalad,"I wish you would teach me more about such faith."
-(1117833304)[Fri Jun 03 17:15:04 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"The lessons of faith are often hidden at first, and the path obscured. A priest such as myself may give direction, but you are the one who must make the journey. And even the longest journey begins with a single first step."
-(1117833305)[Fri Jun 03 17:15:05 2005] You say to Hierophant Aldalad,"This is true, but what journey would you have me make?"
-(1117833305)[Fri Jun 03 17:15:05 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"A journey to bring comfort and reassurance to these troubled times.There is much despair in this world, for many believe the gods have turned their backs to us. Certain clerics tell us that we are merely being tested in this age, or that we are paying for transgressions in our collective past."
-(1117833305)[Fri Jun 03 17:15:05 2005] You say to Hierophant Aldalad,"There is some disagreement about spiritual matters. But what of clerical magic? From where do we draw our healing abilities, if not from the gods?"
-(1117833306)[Fri Jun 03 17:15:06 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Aye, healing abilities come from the gods. You may believe that, my child. And when you have faith, you can heal even the most grievous of injuries and illnesses. It is my hope that you will seek out those in need of healing, and use your gifts to restore them."
-(1117833307)[Fri Jun 03 17:15:07 2005] You say to Hierophant Aldalad,"Is that the journey you would have me make?"
-(1117833307)[Fri Jun 03 17:15:07 2005] Your quest journal has been updated.
-(1117833307)[Fri Jun 03 17:15:07 2005] You gain experience!
-(1117833307)[Fri Jun 03 17:15:07 2005] Your quest journal has been updated.
-(1117833307)[Fri Jun 03 17:15:07 2005] Your quest journal has been updated.
-(1117833307)[Fri Jun 03 17:15:07 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Such devotion would make me glad indeed! Take your special healing gifts to the people and restore their faith! People are suffering right here in Qeynos. To begin your work, seek out a fletcher named Armsdealer Nightbow in the Elddar, and the carpenter Jorgie Icearmor down by the harbor. One is wounded; the other is ill. Heal them, and return to me."
-(1117833308)[Fri Jun 03 17:15:08 2005] You say to Hierophant Aldalad,"A fletcher is someone who makes bows and arrows, right? I'll find Nightbow and Jorgie, and heal them right away."
-(1117833314)[Fri Jun 03 17:15:14 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?"
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It warms my heart to hear you say that. Norrath has seen so much tragedy, but here in Qeynos, our spirits have never been shattered. I believe it is our faith that preserves us.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad001.mp3", 498751224, 1226875703)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("I wish you would teach me more about such faith.","Dialog1a")
+ Dialog.AddOption("Wise insight. Thank you, and good day!")
+ Dialog.Start()
+end
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The lessons of faith are often hidden at first, and the path obscured. A priest such as myself may give direction, but you are the one who must make the journey. And even the longest journey begins with a single first step.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad002.mp3", 3849793338, 2792721451)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("This is true, but what journey would you have me make?","Dialog1b")
+ Dialog.AddOption("Well, if I had the time I would take that first step.")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A journey to bring comfort and reassurance to these troubled times.There is much despair in this world, for many believe the gods have turned their backs to us. Certain clerics tell us that we are merely being tested in this age, or that we are paying for transgressions in our collective past.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad003.mp3", 2581238696, 821414596)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("There is some disagreement about spiritual matters. But what of clerical magic? From where do we draw our healing abilities, if not from the gods?","Dialog1c")
+ Dialog.Start()
+end
+
+function Dialog1c(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, healing abilities come from the gods. You may believe that, my child. And when you have faith, you can heal even the most grievous of injuries and illnesses. It is my hope that you will seek out those in need of healing, and use your gifts to restore them.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad004.mp3", 576044661, 2436380839)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Is that the journey you would have me make?","OfferQuest1")
+ Dialog.Start()
+end
+
+function OfferQuest1(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Quest1)
+ FaceTarget(NPC,Spawn)
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Do not be so quick to criticize. We must be compassionate and caring toward others. This is how we strengthen faith in Qeynos – by bearing witness and healing. ")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad006.mp3", 2653080394, 679982418)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("A heavy mace upside the head is also pretty effective.","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Goodness, child! Where did you learn such talk? I see you will need much more spiritual instruction. You are not yet ready to touch the Gray Fields.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad007.mp3", 3123928085, 2751213248)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("The Gray Fields? What's that?","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You have many gifts, but they are undeveloped. Are you familiar with our shamanic traditions? A shaman communes with spirits to touch the Gray Fields -- the land between mortality and eternity. Spirits act as guides. But a shaman must beware, for not all spirits are good. There are dark entities who prey upon the living.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad008.mp3", 859073595, 4091023392)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("This sounds interesting! How may I learn more?","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,3)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Travel to the Oakmyst Forest, and you will see some of these errant spirits. But do not try to communicate with them! Dispatch five of them, and send them back to the dark realms from whence they came. Then return to me.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad009.mp3", 2641653074, 4170087056)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("That sounds clear enough. I'll enjoy ridding Norrath of a few evil spirits.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So you have! For a time, at least. But the druids understand that, no matter what is accomplished by mortal hands, Nature will have her final say. You must learn to respect her, and she will reward you with increased powers. Now, go apply what you have learned to your own life.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad010.mp3", 1188368287, 4134144195)
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
+ Dialog.AddOption("I shall.")
+ Dialog.Start()
+end
+
+--QUEST 2
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My beliefs are orthodox, but my spirit is inspired by many things: the forces of nature, the miracle of life, the mystery of death. Through all my long existence, not a day has passed when I have not been amazed by the things of nature.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad012.mp3", 3270003865, 3440354773)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Why, you almost sound like a Druid!","Dialog4a")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, the druids. Their spiritual path is often misunderstood. They once worshipped the forces of nature as embodied by Tunare and Karana. And some say there are no real druids today, but the druids themselves disagree. They will tell you that, if you watch the plants and trees around you, Tunare's face will appear. And in the skies you will see Karana's breath.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad013.mp3", 324086451, 1587586978)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("But if Nature is sacred, then how do you explain the Shattering?","Dialog4b")
+ Dialog.Start()
+end
+
+function Dialog4b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Because Nature does not exist merely to serve us, and because Nature always seeks a balance. It is neither good nor evil. It just is. A druid could explain it to you.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad014.mp3", 2859399241, 1801474661)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("So what exactly is the Druid's role in Nature's grand scheme?","OfferQuest2")
+ Dialog.Start()
+end
+
+function OfferQuest2(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Quest2)
+ FaceTarget(NPC,Spawn)
+end
+
+function Dialog5(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("For now you have, but only time will tell. The druid understands that no matter what is done by mortal hands, nature has the final say. Learn to respect the world and the world will offer back that same respect in the way of granted powers. Now it is time for you to take what you have learned and apply it to your own life.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad016.mp3", 2729819197, 1238324646)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("What do you mean by that?","Dialog5a")
+ Dialog.Start()
+end
+
+function Dialog5a(NPC,Spawn)
+ SetStepComplete(Spawn,Quest2,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I want you to go out to into the world and let your heart guide you. Some of those who help defend Qeynos from danger have found themselves in some of their own. Use the faith within you to help them prevail today. I will write in your journal where you can find these brave men and women. Come back when they are safe.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 937883467, 3105057313)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("Believe in your heart that it will be done.")
+ Dialog.Start()
+end
-(1117892072)[Sat Jun 04 09:34:32 2005] You say to Hierophant Aldalad,"I have cured them both. One was stubborn; the other was a bit stupid ... and disgusting."
-(1117892072)[Sat Jun 04 09:34:32 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Do not be so quick to criticize. We must be compassionate and caring toward others. This is how we strengthen faith in Qeynos – by bearing witness and healing. "
-(1117892073)[Sat Jun 04 09:34:33 2005] You say to Hierophant Aldalad,"A heavy mace upside the head is also pretty effective."
-(1117892074)[Sat Jun 04 09:34:34 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Goodness, child! Where did you learn such talk? I see you will need much more spiritual instruction. You are not yet ready to touch the Gray Fields."
-(1117892075)[Sat Jun 04 09:34:35 2005] You say to Hierophant Aldalad,"The Gray Fields? What's that?"
-(1117892075)[Sat Jun 04 09:34:35 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"You have many gifts, but they are undeveloped. Are you familiar with our shamanic traditions? A shaman communes with spirits to touch the Gray Fields -- the land between mortality and eternity. Spirits act as guides. But a shaman must beware, for not all spirits are good. There are dark entities who prey upon the living."
-(1117892075)[Sat Jun 04 09:34:35 2005] You say to Hierophant Aldalad,"This sounds interesting! How may I learn more?"
-(1117892076)[Sat Jun 04 09:34:36 2005] Your quest journal has been updated.
-(1117892076)[Sat Jun 04 09:34:36 2005] Your quest journal has been updated.
-(1117892076)[Sat Jun 04 09:34:36 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Travel to the Oakmyst Forest, and you will see some of these errant spirits. But do not try to communicate with them! Dispatch five of them, and send them back to the dark realms from whence they came. Then return to me."
-(1117892076)[Sat Jun 04 09:34:36 2005] You say to Hierophant Aldalad,"That sounds clear enough. I'll enjoy ridding Norrath of a few evil spirits."
+function Dialog6(NPC,Spawn)
+ SetStepComplete(Spawn,Quest2,6)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It is enough, my child. You were brave and true, and risked your own life to save others. I am proud of you. Your faith has made you strong.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad018.mp3", 1015192558, 567006981)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ if GetLevel(Spawn)>=9 then
+ Dialog.AddOption("I want to learn even more! What is my next lesson?","FinalClassTest")
+ else
+ Dialog.AddOption("You've given me much to think about. Once I've reflected on this experience I will return to you.")
+ end
+ Dialog.Start()
+end
+
+--CLASS QUESTS
+ function FinalClassTest(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That is up to you. I have taught you all I can for now. You must continue on the path without me, at least for a while. Look in your heart, for it holds many answers. Where do you feel your faith leads you in this world?")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad019.mp3", 3131761726, 4109382879)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("My faith is more important than anything to me. I ... I will be a cleric!","Cleric1")
+ Dialog.AddOption("I feel the forces of nature surrounding me. I believe I am a druid.","Druid1")
+ Dialog.AddOption("Benevolent spirits will guide me until I finally join them. I think I am called to become a shaman. ","Shaman1")
+ Dialog.Start()
+end
+
+--CLERIC
+function Cleric1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Faith in the divine is what empowers a cleric. You shall heal wounds both corporeal and spiritual. And you shall be bound to serve, even in the face of mortal danger. Will you accept such a yoke?")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad020.mp3", 4011008360, 2488359907)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("With the help of the gods, I accept. There is nothing I cannot do as long as they are with me. I shall become a cleric.","Cleric2" )
+ Dialog.AddOption("What were my options again?","FinalClassTest" )
+ Dialog.Start()
+end
+
+function Cleric2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("To fully realize your own faith, you will need to undergo a trial of your own beliefs. I cannot assist you with this, beyond pointing out what you must do. Will you permit such an ordeal?")
+ --Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 2729819197, 1238324646) WE DON"T HAVE THE VO FOR THIS
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I stand resolute in the face of any such trial.","OfferCleric" )
+ Dialog.Start()
+end
+
+function OfferCleric(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Cleric)
+ FaceTarget(NPC,Spawn)
+end
+
+function ClericAccept(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Then I will facilitate a prayer trance for you. You will experience a struggle unlike any you've known before... but upon exiting the trance, should you prove successful, you will emerge with the emotional strength to survive and prosper in the re-forged Norrath. Are you ready?")
+ --Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 2729819197, 1238324646) WE DON"T HAVE THE VO FOR THIS
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I am.","ClericPort" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+end
+
+function ClericFail(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Though you were not successful in your previous attempt, one of the most valuable lessons an aspiring cleric can learn is perseverance. Are you ready to attempt the trial again?")
+ --Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad017.mp3", 2729819197, 1238324646) WE DON"T HAVE THE VO FOR THIS
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Yes, Aldalad, I am.","ClericPort" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+end
+
+function ClericPort(NPC,Spawn)
+ Trial = GetZone("TheDisconcertingMeditation")
+ Zone(Trial,Spawn,-47.02, -45.79, -49.3, 272)
+end
-(1117901916)[Sat Jun 04 12:18:36 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?"
-(1117901917)[Sat Jun 04 12:18:37 2005] You say to Hierophant Aldalad,"I've whittled the Carnivorous Slug population down a bit."
-(1117901917)[Sat Jun 04 12:18:37 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"For now you have, but only time will tell. The druid understands that no matter what is done by mortal hands, nature has the final say. Learn to respect the world and the world will offer back that same respect in the way of granted powers. Now it is time for you to take what you have learned and apply it to your own life."
-(1117901919)[Sat Jun 04 12:18:39 2005] You say to Hierophant Aldalad,"What do you mean by that?"
-(1117901919)[Sat Jun 04 12:18:39 2005] Your quest journal has been updated.
-(1117901919)[Sat Jun 04 12:18:39 2005] Your quest journal has been updated.
-(1117901919)[Sat Jun 04 12:18:39 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"I want you to go out to into the world and let your heart guide you. Some of those who help defend Qeynos from danger have found themselves in some of their own. Use the faith within you to help them prevail today. I will write in your journal where you can find these brave men and women. Come back when they are safe."
-(1117901920)[Sat Jun 04 12:18:40 2005] You say to Hierophant Aldalad,"Believe in your heart that it will be done."
+--DRUID
+function Druid1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("As a druid, you will become Nature's servant and companion, not her master. Nature is everywhere. If you respect her, she will become the greatest ally you have ever known. With your wisdom and her power, nothing shall defeat you.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad021.mp3", 2608345231, 3745599287)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("It is clear to me. I am called to be a druid.","Druid2" )
+ Dialog.AddOption("What were my options again?","FinalClassTest" )
+ Dialog.Start()
+end
+
+
+function Druid2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The path of a druid often requires more than just nurturing the land and its inhabitants. Often blights will have to be physically driven out, and this requires not only an awareness of one's surroundings, but also the strength to perform these feats. To this end, I have devised a test to determine your readiness to become a druid.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad028.mp3", 774916388, 145472560)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("What sort of challenges must I face?","Druid3" )
+ Dialog.Start()
+end
+
+
+
+function Druid3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I cannot tell you exactly what you will face - only that you must use the skills and spells you have learned up to this point in order to win your way past it and become a druid. Remember that you will be alone with this. Are you ready to begin?")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad029.mp3", 3326972063, 1689451744)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I am.","OfferDruid" )
+ Dialog.AddOption("I will be shortly. I will return.")
+ Dialog.Start()
+end
+
+function OfferDruid(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Druid)
+ FaceTarget(NPC,Spawn)
+end
+
+
+function DruidAccepted(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There will be no need to return to me when you have completed this trial, but go forth and put what you have learned into practice. You will know when you have earned the right to call yourself a druid. I will send you to where you need to go.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad030.mp3", 110213528, 850594761)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I am ready.","DruidPort" )
+ Dialog.Start()
+end
+
+
+function DruidPort(NPC,Spawn)
+ Trial = GetZone("BurningAbode")
+ Zone(Trial,Spawn,6.91, -0.20, 3.77, 348.55)
+end
+--SHAMAN
+function Shaman1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A shaman knows that death is but a journey to another adventure. If you choose this path, then those who have gone before you will guide your way through this mortal coil. By communing with your ancestors, the wisdom of the past is always within reach. The shaman speaks for the dead, and acts as a vessel to help others.")
+ Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad022.mp3", 921764949, 3161713723)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("The spirits are with me and will always be my guide. I am a shaman.","Shaman2" )
+ Dialog.AddOption("What were my options again?","FinalClassTest" )
+ Dialog.Start()
+end
+
+function Shaman2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("This may be the case, but not all spirits are here to help you along your life's path. Some poor souls remain attached to this existence - unable to transend to the Gray Fields and beyond. Some can be found near, even in the city of Qeynos. Are you up for the task of setting their souls to rest?")
+-- Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad022.mp3", 921764949, 3161713723) UNKNOWN VO
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I will gladly help put these spirits to rest.","OfferShaman" )
+ Dialog.Start()
+end
+
+function OfferShaman(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Shaman)
+ FaceTarget(NPC,Spawn)
+end
+
+function ShamanAccept(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Then you must travel to the Southern part of the city where a home has reportedly become a site of restless spirits. Use the skills you have gained to unshackle them from this world and you will have proven yourself as a shaman. There will be no need to return to me, but be wary, spirits have powers even they can fathom.")
+-- Dialog.AddVoiceover("voiceover/english/hierophant_aldalad/qey_north/hierophant_aldalad030.mp3", 110213528, 850594761)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Thank you, Aldalad. I will pass this trial." )
+ Dialog.Start()
+end
-(1117902808)[Sat Jun 04 12:33:28 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?"
-(1117902810)[Sat Jun 04 12:33:30 2005] You say to Hierophant Aldalad,"I healed those three soldiers, but ... I regret I couldn't save the rest."
-(1117902810)[Sat Jun 04 12:33:30 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"It is enough, my child. You were brave and true, and risked your own life to save others. I am proud of you. Your faith has made you strong. "
-(1117902811)[Sat Jun 04 12:33:31 2005] You say to Hierophant Aldalad,"I want to learn even more! What is my next lesson?"
-(1117902811)[Sat Jun 04 12:33:31 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"That is up to you. I have taught you all I can for now. You must continue on the path without me, at least for a while. Look in your heart, for it holds many answers. Where do you feel your faith leads you in this world?"
-(1117902815)[Sat Jun 04 12:33:35 2005] You say to Hierophant Aldalad,"My faith is more important than anything to me. I ... I will be a cleric! "
-(1117902815)[Sat Jun 04 12:33:35 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Faith in the divine is what empowers a cleric. You shall heal wounds both corporeal and spiritual. And you shall be bound to serve, even in the face of mortal danger. Will you accept such a yoke?"
-(1117902817)[Sat Jun 04 12:33:37 2005] You say to Hierophant Aldalad,"With the help of the gods, I accept. There is nothing I cannot do as long as they are with me. I shall become a cleric. "
-(1117902817)[Sat Jun 04 12:33:37 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"To fully realize your own faith, you will need to undergo a trial of your own beliefs. I cannot assist you with this, beyond pointing out what you must do. Will you permit such an ordeal? "
-(1117902818)[Sat Jun 04 12:33:38 2005] You say to Hierophant Aldalad,"I stand resolute in the face of any such trial."
-(1117902818)[Sat Jun 04 12:33:38 2005] Your quest journal has been updated.
-(1117902818)[Sat Jun 04 12:33:38 2005] You gain experience!
-(1117902818)[Sat Jun 04 12:33:38 2005] Your quest journal has been updated.
-(1117902818)[Sat Jun 04 12:33:38 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Then I will facilitate a prayer trance for you. You will experience a struggle unlike any you've known before... but upon exiting the trance, should you prove successful, you will emerge with the emotional strength to survive and prosper in the re-forged Norrath. Are you ready?"
-(1117902819)[Sat Jun 04 12:33:39 2005] You say to Hierophant Aldalad,"I am."
-(1117902819)[Sat Jun 04 12:33:39 2005] Your courage fades.
-(1117902822)[Sat Jun 04 12:33:42 2005] You have entered The Disconcerting Meditation.
-(1117902829)[Sat Jun 04 12:33:49 2005] You feel that the meditation will only last a short time. You must hurry!
-(1117902874)[Sat Jun 04 12:34:34 2005] You begin to feel the meditation wane...
-(1117902905)[Sat Jun 04 12:35:05 2005] Only a short time remains before you return to your body...
-(1117902915)[Sat Jun 04 12:35:15 2005] Your vision blurs, and the world begins to shift...
-(1117902920)[Sat Jun 04 12:35:20 2005] The mediation ends.
-(1117902920)[Sat Jun 04 12:35:20 2005] You strike A disturbing shadow with a smiting force!
-(1117902920)[Sat Jun 04 12:35:20 2005] YOUR Smite hits a disturbing shadow for 16 points of divine damage.
-(1117902920)[Sat Jun 04 12:35:20 2005] A disturbing shadow is struck with a smiting force!
-(1117902920)[Sat Jun 04 12:35:20 2005] Your courage fades.
-(1117902922)[Sat Jun 04 12:35:22 2005] You have entered North Qeynos.
-(1117902963)[Sat Jun 04 12:36:03 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?"
-(1117902969)[Sat Jun 04 12:36:09 2005] You say to Hierophant Aldalad,"Sadly, I was not successful, Aldalad."
-(1117902969)[Sat Jun 04 12:36:09 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Though you were not successful in your previous attempt, one of the most valuable lessons an aspiring cleric can learn is perseverance. Are you ready to attempt the trial again?"
-(1117902977)[Sat Jun 04 12:36:17 2005] You say to Hierophant Aldalad,"Yes, Aldalad, I am."
-(1117902978)[Sat Jun 04 12:36:18 2005] Your courage fades.
-(1117902980)[Sat Jun 04 12:36:20 2005] You have entered The Disconcerting Meditation.
-(1117902987)[Sat Jun 04 12:36:27 2005] You feel that the meditation will only last a short time. You must hurry!
-(1117902996)[Sat Jun 04 12:36:36 2005] You strike A disturbing shadow with a smiting force!
-(1117902996)[Sat Jun 04 12:36:36 2005] YOUR Smite hits a disturbing shadow for 16 points of divine damage.
-(1117902996)[Sat Jun 04 12:36:36 2005] A disturbing shadow is struck with a smiting force!
-(1117902997)[Sat Jun 04 12:36:37 2005] a disturbing shadow hits YOU for 5 points of crushing damage.
-(1117902999)[Sat Jun 04 12:36:39 2005] a disturbing shadow hits YOU for 3 points of crushing damage.
-(1117903001)[Sat Jun 04 12:36:41 2005] a disturbing shadow tries to crush YOU, but misses.
-(1117903002)[Sat Jun 04 12:36:42 2005] You start fighting.
-(1117903003)[Sat Jun 04 12:36:43 2005] a disturbing shadow hits YOU for 3 points of crushing damage.
-(1117903003)[Sat Jun 04 12:36:43 2005] You strike A disturbing shadow with a smiting force!
-(1117903003)[Sat Jun 04 12:36:43 2005] YOUR Smite hits a disturbing shadow for 17 points of divine damage.
-(1117903003)[Sat Jun 04 12:36:43 2005] A disturbing shadow is struck with a smiting force!
-(1117903003)[Sat Jun 04 12:36:43 2005] YOU hit a disturbing shadow for 5 points of crushing damage.
-(1117903003)[Sat Jun 04 12:36:43 2005] You trigger a starter chain.
-(1117903005)[Sat Jun 04 12:36:45 2005] YOU hit a disturbing shadow for 3 points of crushing damage.
-(1117903005)[Sat Jun 04 12:36:45 2005] a disturbing shadow's Wild Swing hits YOU for 5 points of crushing damage.
-(1117903008)[Sat Jun 04 12:36:48 2005] You strike A disturbing shadow with a smiting force!
-(1117903008)[Sat Jun 04 12:36:48 2005] YOUR Smite hits a disturbing shadow for 18 points of divine damage.
-(1117903008)[Sat Jun 04 12:36:48 2005] A disturbing shadow is struck with a smiting force!
-(1117903008)[Sat Jun 04 12:36:48 2005] You triggered Divine Judgment.
-(1117903008)[Sat Jun 04 12:36:48 2005] You get better at Defense (45/46).
-(1117903008)[Sat Jun 04 12:36:48 2005] a disturbing shadow tries to crush YOU, but misses.
-(1117903008)[Sat Jun 04 12:36:48 2005] YOU hit a disturbing shadow for 5 points of crushing damage.
-(1117903010)[Sat Jun 04 12:36:50 2005] a disturbing shadow hits YOU for 5 points of crushing damage.
-(1117903010)[Sat Jun 04 12:36:50 2005] YOU hit a disturbing shadow for 3 points of crushing damage.
-(1117903012)[Sat Jun 04 12:36:52 2005] a disturbing shadow's Wild Swing hits YOU for 9 points of crushing damage.
-(1117903013)[Sat Jun 04 12:36:53 2005] You strike A disturbing shadow with a smiting force!
-(1117903013)[Sat Jun 04 12:36:53 2005] YOUR Smite hits a disturbing shadow for 18 points of divine damage.
-(1117903013)[Sat Jun 04 12:36:53 2005] A disturbing shadow is struck with a smiting force!
-(1117903013)[Sat Jun 04 12:36:53 2005] You complete Divine Judgment.
-(1117903013)[Sat Jun 04 12:36:53 2005] YOUR Divine Judgment hits a disturbing shadow for 45 points of divine damage.
-(1117903013)[Sat Jun 04 12:36:53 2005] You have killed a disturbing shadow.
-(1117903013)[Sat Jun 04 12:36:53 2005] You stop fighting.
-(1117903013)[Sat Jun 04 12:36:53 2005] You gain experience!
-(1117903013)[Sat Jun 04 12:36:53 2005] A disturbing shadow is struck with great force.
-(1117903023)[Sat Jun 04 12:37:03 2005] Calming yourself after the combat with the shade proves to be difficult. Looking back on the recent events, you attempt to focus your mind and will yourself into a state of relaxation.
-(1117903026)[Sat Jun 04 12:37:06 2005] The creature you faced seems to bear some significance, for you know you have never faced one. You can think of nothing that you have done to draw the ire of something like this, but it seems to be your destiny to cross paths with them... at least, if this meditation serves its purpose.
-(1117903029)[Sat Jun 04 12:37:09 2005] Your quest journal has been updated.
-(1117903029)[Sat Jun 04 12:37:09 2005] You gain experience!
-(1117903029)[Sat Jun 04 12:37:09 2005] You gain experience!
-(1117903029)[Sat Jun 04 12:37:09 2005] Your quest journal has been updated.
-(1117903029)[Sat Jun 04 12:37:09 2005] You turn your attention back to a more worldly task and begin trying to wake yourself from the state. Soon, the room fades out, and your body begins to stir.
-(1117903031)[Sat Jun 04 12:37:11 2005] Your courage fades.
-(1117903034)[Sat Jun 04 12:37:14 2005] You have entered North Qeynos.
-(1117903064)[Sat Jun 04 12:37:44 2005] \aNPC 10879 Lilli Anya:Lilli Anya\/a says,"The Celestial Watch preserves the rituals of servitude to the gods so that all might experience through worship the return of the ancient deities."
-(1117903081)[Sat Jun 04 12:38:01 2005] \aNPC 11373 Hierophant Aldalad:Hierophant Aldalad\/a says to you,"Blessings to you and yours, child. Qeynos is gladdened by your presence this fine day! Sharing a few kind words can lift one's spirit, yes?"
-(1117903082)[Sat Jun 04 12:38:02 2005] You say to Hierophant Aldalad,"Thank you for your blessing. I wish you a good day as well, Hierophant"
-]]--
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthQeynos/Knight-LieutenantAlesso.lua b/server/SpawnScripts/NorthQeynos/Knight-LieutenantAlesso.lua
index 3d5c06c34..4acd2115e 100755
--- a/server/SpawnScripts/NorthQeynos/Knight-LieutenantAlesso.lua
+++ b/server/SpawnScripts/NorthQeynos/Knight-LieutenantAlesso.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local QeynosianCivilService = 463
@@ -21,33 +22,40 @@ end
function hailed(NPC, Spawn)
local count = GetQuestCompleteCount(Spawn, QeynosianCivilService)
+ if HasQuest(Spawn,5766) and GetQuestStepProgress(Spawn,5766,7) ==0 then --WELCOME TO QEYNOS,CITIZEN
+ SetStepComplete(Spawn,5766,7)
+ end
+
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sir_alesso/qey_north/sir_alesso000.mp3", "", "", 3475003342, 4075821182, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You may not enter the citadel at this time. You'll find better adventuring elsewhere.")
+ Dialog.AddVoiceover("voiceover/english/sir_alesso/qey_north/sir_alesso000.mp3",3475003342, 4075821182)
if not HasQuest(Spawn, QeynosianCivilService) and count <= 5 then
- AddConversationOption(conversation, "Yes, but where?", "dlg_1_1")
- elseif GetQuestStep(Spawn, QeynosianCivilService) == 4 then
- AddConversationOption(conversation, "I've completed my service to Qeynos", "dlg1_2")
+ Dialog.AddOption("Yes, but where?", "dlg_1_1")
+ elseif GetQuestStep(Spawn, QeynosianCivilService) == 4 then
+ Dialog.AddOption("I've completed my service to Qeynos", "dlg1_2")
end
- AddConversationOption(conversation, "I'll be on my way.")
- StartConversation(conversation, NPC, Spawn, "You may not enter the citadel at this time. You'll find better adventuring elsewhere.")
+ Dialog.AddOption("I'll be on my way.")
+ Dialog.Start()
end
function dlg1_2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
+ FaceTarget(NPC, Spawn)
SetStepComplete(Spawn, QeynosianCivilService, 4)
- PlayFlavor(NPC, "voiceover/english/sir_alesso/qey_north/sir_alesso003.mp3", "", "", 4137826818, 1228273355, Spawn)
- AddConversationOption(conversation, "Thanks.")
- StartConversation(conversation, NPC, Spawn, "You served Qeynos well and shall be rewarded.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You served Qeynos well and shall be rewarded.")
+ Dialog.AddVoiceover("voiceover/english/sir_alesso/qey_north/sir_alesso003.mp3", 4137826818, 1228273355)
+ Dialog.AddOption("Thanks.")
+ Dialog.Start()
end
function dlg_1_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/sir_alesso/qey_north/sir_alesso001.mp3", "", "", 446291068, 907364683, Spawn)
- AddConversationOption(conversation, "Okay, but what exactly should I do?", "offer")
- StartConversation(conversation, NPC, Spawn, "Outside the gates of Qeynos, Antonica is riddled with vermin. Serve Qeynos by destroying these infectious beasts.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Outside the gates of Qeynos, Antonica is riddled with vermin. Serve Qeynos by destroying these infectious beasts.")
+ Dialog.AddVoiceover("voiceover/english/sir_alesso/qey_north/sir_alesso001.mp3", 446291068, 907364683)
+ Dialog.AddOption("Ok, but what exactly should I do?", "offer")
+ Dialog.Start()
end
diff --git a/server/SpawnScripts/NorthQeynos/Knight-LieutenantLaughlin.lua b/server/SpawnScripts/NorthQeynos/Knight-LieutenantLaughlin.lua
index 97786f4b6..0364aa05b 100755
--- a/server/SpawnScripts/NorthQeynos/Knight-LieutenantLaughlin.lua
+++ b/server/SpawnScripts/NorthQeynos/Knight-LieutenantLaughlin.lua
@@ -3,12 +3,13 @@
Script Purpose : Knight-Lieutenant Laughlin
Script Author : Dorbin
Script Date : 2022.04.23
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
local Gnolls = 5543
+local Quest2 = 5788 --Fighter Quest pt2
function spawn(NPC)
ProvidesQuest(NPC,Gnolls)
@@ -33,12 +34,12 @@ function Dialog2(NPC, Spawn)
PlayFlavor(NPC, "","", "shrug", 0, 0,Spawn)
Dialog.AddDialog("Famous, eh? Best keep your feet planted before your head floats off. Though, if you're looking for some recognition, I've been having some problems with the gnolls outside the gates here. I can't spare the men to go hunt them down, you wouldn't be interested in helping out, would you?")
Dialog.AddVoiceover("voiceover/english/optional1/knight-lieutenant_laughlin/qey_north/quests/sirlaughlin/grd_laughlin_x1_initial.mp3", 2796593065, 1366994589)
- Dialog.AddOption("I'd be more than happy to carry the banner of Qeynos into battle with the gnolls!", "Dialog1")
+ Dialog.AddOption("I'd be more than happy to carry the banner of Qeynos into battle with the gnolls!", "OfferGnollQuest")
Dialog.AddOption("Gnolls? Send a new recruit out to deal with the problem.")
Dialog.Start()
end
-function Dialog1(NPC, Spawn)
+function OfferGnollQuest(NPC, Spawn)
FaceTarget(NPC, Spawn)
OfferQuest(NPC, Spawn,Gnolls)
end
@@ -59,7 +60,7 @@ function QuestFinish(NPC, Spawn)
PlayFlavor(Spawn, "","", "salute", 0, 0)
end
-function Dialog4(NPC, Spawn)
+function Dialog4(NPC, Spawn) --hail
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "","", "salute", 0, 0,Spawn)
@@ -72,8 +73,36 @@ function Dialog4(NPC, Spawn)
Dialog.AddOption("I won't let danger stand in my way. I'm going to be famous one day!", "Dialog2")
Dialog.AddOption("Erk! Dangerous creatures? I think I'll stay inside the gates!")
end
- Dialog.AddOption("Well met to you as well.")
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)>=1 and GetQuestStep(Spawn,Quest2)<=3 and not QuestStepIsComplete(Spawn,Quest2,1) then
+ Dialog.AddOption("What made you decide to be a guard?","Dialog1")
+ end
+ Dialog.AddOption("Well met to you as well.")
+ Dialog.Start()
+end
+
+function Dialog1(NPC, Spawn) --NO VOs for the below fighter quest pt2
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "ponder", 0, 0,Spawn)
+ Dialog.AddDialog("Hmm, in my younger years I sought adventure like you. I suppose after being picked up a number of times by guards on patrol I thought - \"Hey, I could do that!\". I've enjoyed being able to repay the kindness to citizens of Qeynos.")
+ --Dialog.AddVoiceover("voiceover/english/optional1/knight-lieutenant_laughlin/qey_north/quests/sirlaughlin/grd_laughlin_x1_finish.mp3", 689966140, 111412847)--
+ Dialog.AddOption("We all certainly have the guard to thank.","Dialog1a")
Dialog.Start()
end
+function Dialog1a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "agree", 0, 0,Spawn)
+ Dialog.AddDialog("I believe so as well, but not often do I hear appreciatation like that. Thank you! So many seem to treat the guard as part of the background, but it our vigilance that keeps Qeynos safe.")
+ --Dialog.AddVoiceover("voiceover/english/optional1/knight-lieutenant_laughlin/qey_north/quests/sirlaughlin/grd_laughlin_x1_finish.mp3", 689966140, 111412847)
+ Dialog.AddOption("Keep up the great work!","Dialog1b")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SetStepComplete(Spawn,Quest2, 1)
+ PlayFlavor(NPC, "","", "salute", 0, 0)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthQeynos/LodoBightn.lua b/server/SpawnScripts/NorthQeynos/LodoBightn.lua
index 5843fe1a5..4470fae44 100755
--- a/server/SpawnScripts/NorthQeynos/LodoBightn.lua
+++ b/server/SpawnScripts/NorthQeynos/LodoBightn.lua
@@ -10,6 +10,7 @@ require "SpawnScripts/Generic/DialogModule"
local Dagger = 5558
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/NorthQeynos/MedicRowena.lua b/server/SpawnScripts/NorthQeynos/MedicRowena.lua
index cafc72878..f377040d6 100755
--- a/server/SpawnScripts/NorthQeynos/MedicRowena.lua
+++ b/server/SpawnScripts/NorthQeynos/MedicRowena.lua
@@ -37,7 +37,7 @@ function Dialog1(NPC, Spawn)
Dialog.AddDialog("Rodcet's blessings upon you. How may the Temple of Life assist you today?")
Dialog.AddVoiceover("voiceover/english/medic_rowena/qey_north/medicrowena000.mp3", 59000523, 1158708704)
if GetQuestStep(Spawn,Delivery)==1 then
- Dialog.AddOption("I have a delivery for you from The Jewel Box.","Delivered")
+ Dialog.AddOption("Gavin Ironforge has sent me here to deliver a box to you for the Temple.","Delivered")
end
Dialog.AddOption("Nothing at the moment.")
Dialog.Start()
@@ -49,9 +49,9 @@ function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
- Dialog.AddDialog("We were not expecting this package so soon! High Preistess Kassandra will be most pleased! We can use these silver etchings in channeling the Prime Healer's power. Please accept our thanks for their early delivery.")
+ Dialog.AddDialog("We were not expecting this package so soon. High Priestess Cassondra will be most pleased. We can use these silver etchings in channeling the Prime Healer's power. Please accept our thanks for their early delivery.")
Dialog.AddVoiceover("voiceover/english/medic_rowena/qey_north/medicrowena001.mp3", 3448930744, 2802964919)
- Dialog.AddOption("Glad I could be of assistance.","FinishQuest")
+ Dialog.AddOption("Praise be to Rodcet! I'll return to the Jewel Box to inform Gavin of the delivery.","FinishQuest")
Dialog.Start()
end
diff --git a/server/SpawnScripts/NorthQeynos/MervosStadrin.lua b/server/SpawnScripts/NorthQeynos/MervosStadrin.lua
index 9d8b0242f..ee1bce65c 100755
--- a/server/SpawnScripts/NorthQeynos/MervosStadrin.lua
+++ b/server/SpawnScripts/NorthQeynos/MervosStadrin.lua
@@ -16,6 +16,9 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
+if HasQuest(Spawn,5766) and GetQuestStepProgress(Spawn,5766,1) ==0 then
+ SetStepComplete(Spawn,5766,1)
+end
Dialog2(NPC, Spawn)
end
diff --git a/server/SpawnScripts/NorthQeynos/NoelleDering.lua b/server/SpawnScripts/NorthQeynos/NoelleDering.lua
index 370a76409..4a0a4fe38 100755
--- a/server/SpawnScripts/NorthQeynos/NoelleDering.lua
+++ b/server/SpawnScripts/NorthQeynos/NoelleDering.lua
@@ -37,7 +37,7 @@ function Dialog1(NPC, Spawn)
Dialog.AddDialog("Greetings! I welcome you to Irontoes East! Please speak with Harold or Gretta if you need help!")
Dialog.AddVoiceover("voiceover/english/noelle_dering/qey_north/noelledering.mp3", 2170111717, 1186191258)
if GetQuestStep(Spawn,Sword)==1 then
- Dialog.AddOption("I have your 'gift' for you from Walter Channing. He said your husband needs to check the if the balance needs to be adjusted.","Delivered")
+ Dialog.AddOption("I've been sent to deliver a sword to you by the Call to Arms.","Delivered")
end
Dialog.AddOption("Thanks, I'll keep that in mind")
Dialog.Start()
@@ -49,7 +49,7 @@ function Delivered(NPC, Spawn)
PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
Dialog.AddDialog("Praise the gods! You've come just in time. Oh, I must not be too loud or Nicola will suspect something! If you wouldn't mind, would you mind slipping out the back door so he doesn't see you leave?")
Dialog.AddVoiceover("voiceover/english/noelle_dering/qey_north/noelledering000.mp3", 2834883607, 1827900597)
- Dialog.AddOption("I'll be discrete.","Update")
+ Dialog.AddOption("Of course, I'd hate to spoil a good surprise.","Update")
Dialog.Start()
end
diff --git a/server/SpawnScripts/NorthQeynos/PTIrontoe.lua b/server/SpawnScripts/NorthQeynos/PTIrontoe.lua
index 6cdfa91a1..b6589b55a 100755
--- a/server/SpawnScripts/NorthQeynos/PTIrontoe.lua
+++ b/server/SpawnScripts/NorthQeynos/PTIrontoe.lua
@@ -9,7 +9,7 @@
local TheMotleyMerchantManifest = 5368
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
diff --git a/server/SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua b/server/SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua
index 5ef079a2e..99be3b266 100755
--- a/server/SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua
+++ b/server/SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua
@@ -7,6 +7,7 @@
--]]
+--Good citizens of Qeynos, many brave souls have undertaken the daunting task of expanding our horizons through exploration. Those of you who helped discover the Feerrott faced dangers of an unearthly and terrifying nature. Qeynos is enriched by your courageous deeds. We bow to you in gratitude. However, we have received alarming reports about that most haunted of places in the Feerrott- the Temple of Cazic Thule. How it appeared in Norrath is yet a mystery.
function spawn(NPC)
end
diff --git a/server/SpawnScripts/NorthQeynos/TaraIronforge.lua b/server/SpawnScripts/NorthQeynos/TaraIronforge.lua
index 9434221c0..db7d65834 100755
--- a/server/SpawnScripts/NorthQeynos/TaraIronforge.lua
+++ b/server/SpawnScripts/NorthQeynos/TaraIronforge.lua
@@ -5,22 +5,24 @@
Script Purpose : Jewelery Pickup for Taneran quest
:
--]]
+require "SpawnScripts/Generic/DialogModule"
local Taneran = 5459
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "artificing_idle")
end
function hailed(NPC, Spawn)
- conversation = CreateConversation()
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/tara_ironforge/qey_north/taraironforge.mp3", "", "", 1778772317, 1476685213, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello, friend! I've just received some fine gems from the hard-working dwarves in the village! Take a look. See if anything strikes your fancy.")
+ Dialog.AddVoiceover("voiceover/english/tara_ironforge/qey_north/taraironforge.mp3", 1778772317, 1476685213)
if GetQuestStep (Spawn, Taneran)==1 then
- AddConversationOption(conversation, "I'm here to pick up an order for Taneran. Here is the order form.","Order")
+ Dialog.AddOption("I'm here to pick up an order for Taneran. Here is the order form.","Order")
end
- AddConversationOption(conversation, "Thank you. I'll browse around.")
- StartConversation(conversation, NPC, Spawn, "Hello, friend! I've just received some fine gems from the hard-working dwarves in the village! Take a look. See if anything strikes your fancy.")
+ Dialog.AddOption("Thank you. I'll browse around. ")
+ Dialog.Start()
end
@@ -29,11 +31,13 @@ function respawn(NPC)
end
function Order(NPC, Spawn)
- conversation = CreateConversation()
FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh! Let's look. Yes, I believe I have just what he's looking for. Take this to him. I am certain he will be pleased.")
+ Dialog.AddVoiceover("voiceover/english/tara_ironforge/qey_north/taraironforge001.mp3", 829541547, 700812740)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
- AddConversationOption(conversation, "I'll get it to him. Thank you.","Pickup")
- StartConversation(conversation, NPC, Spawn, "Oh! Let's look. Yes, I believe I have just what he's looking for. Take this to him. I am certain he will be pleased.")
+ Dialog.AddOption("I'll get it to him. Thank you.","Pickup")
+ Dialog.Start()
end
function Pickup(NPC, Spawn)
diff --git a/server/SpawnScripts/NorthQeynos/ThardrinSteeleye.lua b/server/SpawnScripts/NorthQeynos/ThardrinSteeleye.lua
index 3b24a1e51..c632c8278 100755
--- a/server/SpawnScripts/NorthQeynos/ThardrinSteeleye.lua
+++ b/server/SpawnScripts/NorthQeynos/ThardrinSteeleye.lua
@@ -13,6 +13,7 @@ function spawn(NPC)
AddTimer(NPC, 5000, "EmoteLoop")
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
ProvidesQuest(NPC,Delivery)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/NorthQeynos/Wingus.lua b/server/SpawnScripts/NorthQeynos/Wingus.lua
new file mode 100755
index 000000000..0fe00c54d
--- /dev/null
+++ b/server/SpawnScripts/NorthQeynos/Wingus.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/NorthQeynos/Wingus.lua
+ Script Author : Dorbin
+ Script Date : 2023.01.08 01:01:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function hailed(NPC, Spawn)
+ GenericRaceCheckHail(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/NorthQeynos/zonetoqeyepic01intp19cache.lua b/server/SpawnScripts/NorthQeynos/zonetoqeyepic01intp19cache.lua
new file mode 100755
index 000000000..56036746f
--- /dev/null
+++ b/server/SpawnScripts/NorthQeynos/zonetoqeyepic01intp19cache.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/NorthQeynos/zonetoqeyepic01intp19cache.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 03:12:30
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5791,1,0,0,1)
+ SetRequiredQuest(NPC,5791,2,0,0,1)
+ SetRequiredQuest(NPC,5791,3,0,0,1)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/AmbassadorJalanderra.lua b/server/SpawnScripts/Oakmyst_Classic/AmbassadorJalanderra.lua
index cb1cc541c..cd530d4e1 100755
--- a/server/SpawnScripts/Oakmyst_Classic/AmbassadorJalanderra.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/AmbassadorJalanderra.lua
@@ -6,9 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseFairy1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/AmbassadorKialee.lua b/server/SpawnScripts/Oakmyst_Classic/AmbassadorKialee.lua
index ea8f08049..326cc6697 100755
--- a/server/SpawnScripts/Oakmyst_Classic/AmbassadorKialee.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/AmbassadorKialee.lua
@@ -6,9 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseFairy1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/EmpressAnassa.lua b/server/SpawnScripts/Oakmyst_Classic/EmpressAnassa.lua
index 116db40c6..3d041f3f2 100755
--- a/server/SpawnScripts/Oakmyst_Classic/EmpressAnassa.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/EmpressAnassa.lua
@@ -24,8 +24,8 @@ function hailed(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Greetings and welcome to our hollowed grove. What is it you seek?")
Dialog.AddVoiceover("voiceover/english/empress_anassa/qey_adv01_oakmyst/empressanassa000.mp3", 122104258, 2418821305)
- if HasCompletedQuest(Spawn, QUEST_FROM_NEOLA) and HasCompletedQuest(Spawn, QUEST_FROM_JUDGE) and not HasQuest(Spawn, QUEST_1) and not HasCompletedQuest(Spawn, QUEST_1) then
- Dialog.AddOption("Your judge has sent me. ", "Dialog1")
+ if CanReceiveQuest(Spawn, QUEST_1) then
+ Dialog.AddOption("Your judge has sent me.", "Dialog1")
elseif HasQuest(Spawn, QUEST_1) and GetQuestStep(Spawn, QUEST_1) == 1 then
Dialog.AddOption("What is Rotweed?", "WhatIsRotweed")
elseif HasQuest(Spawn, QUEST_1) and GetQuestStep(Spawn, QUEST_1) == 2 then
@@ -65,8 +65,7 @@ function KilledRotweed(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("This is good, but others like Rotweed will return someday. We will watch and defend. We, of this woodland, thank you.")
- --Missing VoiceOver MP3 Keys (1/17/2022)- Dorbin
- Dialog.AddVoiceover("voiceover/english/empress_anassa/qey_adv01_oakmyst/empressanassa004.mp3", 0, 0)
+ Dialog.AddVoiceover("voiceover/english/empress_anassa/qey_adv01_oakmyst/empressanassa004.mp3", 3428637414, 1159660811)
Dialog.AddOption("Thank you, Empress Anassa.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/FerithAnar.lua b/server/SpawnScripts/Oakmyst_Classic/FerithAnar.lua
index d2d5b0289..9d5c586f9 100755
--- a/server/SpawnScripts/Oakmyst_Classic/FerithAnar.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/FerithAnar.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/Grubdigger.lua b/server/SpawnScripts/Oakmyst_Classic/Grubdigger.lua
index 45c77f93c..98cd4dd71 100755
--- a/server/SpawnScripts/Oakmyst_Classic/Grubdigger.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/Grubdigger.lua
@@ -12,14 +12,14 @@ function spawn(NPC)
local level2 = 16
local level3 = 17
local difficulty1 = 8
- local hp1 = 1905
- local power1 = 640
+ local hp1 = 2985
+ local power1 = 800
local difficulty2 = 8
- local hp2 = 2180
- local power2 = 670
+ local hp2 = 3410
+ local power2 = 840
local difficulty3 =8
- local hp3 = 2460
- local power3 = 725
+ local hp3 = 3990
+ local power3 = 910
if Level == level1 then
SpawnSet(NPC, "difficulty", difficulty1)
SpawnSet(NPC, "hp", hp1)
@@ -35,7 +35,10 @@ function spawn(NPC)
SpawnSet(NPC, "hp", hp3)
SpawnSet(NPC, "power", power3)
end
-
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/KarachtheSpiderQueen.lua b/server/SpawnScripts/Oakmyst_Classic/KarachtheSpiderQueen.lua
new file mode 100755
index 000000000..204057b46
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/KarachtheSpiderQueen.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/KarachtheSpiderQueen.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 06:09:54
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/Madeline.lua b/server/SpawnScripts/Oakmyst_Classic/Madeline.lua
index bc31b83d0..d0ce5557e 100755
--- a/server/SpawnScripts/Oakmyst_Classic/Madeline.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/Madeline.lua
@@ -6,9 +6,11 @@
:
--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function respawn(NPC)
@@ -18,4 +20,15 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
GenericGuardHail(NPC, Spawn)
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ if GetFactionID(Spawn) ==1 then
+ Attack(NPC,Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/NAlmiatheCorruptor.lua b/server/SpawnScripts/Oakmyst_Classic/NAlmiatheCorruptor.lua
new file mode 100755
index 000000000..e59a80728
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/NAlmiatheCorruptor.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/NAlmiatheCorruptor.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.11 02:09:27
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(5 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(15 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_garbled_gf_36e875b.mp3", "Atzeen fahrseh", "", 761026681, 962675039, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_garbled_gf_fab027b8.mp3", "Hach bahr neh jadh osh agh", "", 3272896968, 3465123316, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_garbled_gf_810a3ce3.mp3", "Dark in body and soul! Hah!", "", 1604363761, 647045676, Spawn, 2)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=100 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_aggro_gf_fb890c79.mp3", "I have no time for meddlers. Destroy them!", "", 1947039155, 2094447273, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_aggro_gf_8e7390a8.mp3", "Welcome to torment and destruction!", "", 3770648926, 2897017212, Spawn, 2)
+ end
+end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/Rotweed.lua b/server/SpawnScripts/Oakmyst_Classic/Rotweed.lua
index aecaa50ff..2cabc116f 100755
--- a/server/SpawnScripts/Oakmyst_Classic/Rotweed.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/Rotweed.lua
@@ -11,10 +11,10 @@ function spawn(NPC)
local level1 = 13
local level2 = 14
local difficulty1 = 8
- local hp1 = 1475
+ local hp1 = 1770
local power1 = 485
local difficulty2 = 8
- local hp2 = 1720
+ local hp2 = 1990
local power2 = 530
if Level == level1 then
SpawnSet(NPC, "difficulty", difficulty1)
@@ -26,6 +26,11 @@ function spawn(NPC)
SpawnSet(NPC, "hp", hp2)
SpawnSet(NPC, "power", power2)
end
+
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(12 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(24 + dmgMod))
end
function aggro(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/Solas.lua b/server/SpawnScripts/Oakmyst_Classic/Solas.lua
index f2d502883..595401264 100755
--- a/server/SpawnScripts/Oakmyst_Classic/Solas.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/Solas.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function respawn(NPC)
@@ -18,4 +19,15 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
GenericGuardHail(NPC, Spawn)
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ if GetFactionID(Spawn) ==1 then
+ Attack(NPC,Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/Truesteel.lua b/server/SpawnScripts/Oakmyst_Classic/Truesteel.lua
index 0226ed190..cd3502739 100755
--- a/server/SpawnScripts/Oakmyst_Classic/Truesteel.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/Truesteel.lua
@@ -5,9 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function respawn(NPC)
@@ -17,4 +19,15 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
GenericGuardHail(NPC, Spawn)
+end
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ if GetFactionID(Spawn) ==1 then
+ Attack(NPC,Spawn)
+ end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/aStaticBadgerl.lua b/server/SpawnScripts/Oakmyst_Classic/aStaticBadgerl.lua
index 835f0d9c4..efb9d5005 100755
--- a/server/SpawnScripts/Oakmyst_Classic/aStaticBadgerl.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/aStaticBadgerl.lua
@@ -5,8 +5,11 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/abadgercub.lua b/server/SpawnScripts/Oakmyst_Classic/abadgercub.lua
new file mode 100755
index 000000000..4a05b0dd7
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/abadgercub.lua
@@ -0,0 +1,104 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/abadgercub.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:15
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+ChooseMovement(NPC)
+end
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 2, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X + 3, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 3, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 2, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X - 3, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 3, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2,0)
+ MovementLoopAddLocation(NPC, X + 2, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X + 3, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 3, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X + 2, Y, Z - 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 2, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X - 3, Y, Z, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 3, Y, Z, 2, 0)
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 4, 2, math.random(7,15))
+ MovementLoopAddLocation(NPC, X - 2, Y, Z + 4, 2, 0)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+end
+math.random(10,15)
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/abearcub.lua b/server/SpawnScripts/Oakmyst_Classic/abearcub.lua
index ae4a763a3..c61490cd4 100755
--- a/server/SpawnScripts/Oakmyst_Classic/abearcub.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/abearcub.lua
@@ -5,36 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local level3 = 11
- local difficulty1 = 6
- local hp1 = 275
- local power1 = 110
- local difficulty2 = 6
- local hp2 = 370
- local power2 = 130
- local difficulty3 =6
- local hp3 = 430
- local power3 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/abearcubRoam.lua b/server/SpawnScripts/Oakmyst_Classic/abearcubRoam.lua
index e310cec87..59a41eb3e 100755
--- a/server/SpawnScripts/Oakmyst_Classic/abearcubRoam.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/abearcubRoam.lua
@@ -5,100 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local level3 = 11
- local difficulty1 = 6
- local hp1 = 275
- local power1 = 110
- local difficulty2 = 6
- local hp2 = 370
- local power2 = 130
- local difficulty3 =6
- local hp3 = 430
- local power3 = 160
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
+end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/Oakmyst_Classic/aclearwaterfrog.lua b/server/SpawnScripts/Oakmyst_Classic/aclearwaterfrog.lua
new file mode 100644
index 000000000..8721e9b19
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/aclearwaterfrog.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/aclearwaterfrog.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 07:12:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/aclearwaterfrogRoam.lua b/server/SpawnScripts/Oakmyst_Classic/aclearwaterfrogRoam.lua
new file mode 100644
index 000000000..6cc26e9f1
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/aclearwaterfrogRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/aclearwaterfrogRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 07:12:54
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/acorrupteddryad.lua b/server/SpawnScripts/Oakmyst_Classic/acorrupteddryad.lua
new file mode 100755
index 000000000..67c8321c5
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/acorrupteddryad.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/acorrupteddryad.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:00
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Dryad_Corrupt1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadPatrol.lua b/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadPatrol.lua
index bd440f6d3..46369f5b9 100755
--- a/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadPatrol.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadPatrol.lua
@@ -6,9 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Dryad_Corrupt1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadRoam.lua b/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadRoam.lua
new file mode 100644
index 000000000..998900fa1
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/acorrupteddryadRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/acorrupteddryadRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.07 07:01:40
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Dryad_Corrupt1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout1.lua b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout1.lua
index d954405ff..191ada5fd 100755
--- a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout1.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout1.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout2.lua b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout2.lua
index 1d07190dc..0aeb77036 100755
--- a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout2.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout2.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout3.lua b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout3.lua
index 9fb0c8128..72f60c489 100755
--- a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout3.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout3.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout4.lua b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout4.lua
index 0dfd74c64..0c0754b96 100755
--- a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout4.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout4.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout5.lua b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout5.lua
index 9e17d9f21..27ccfe14f 100755
--- a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout5.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout5.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout6.lua b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout6.lua
index 61763b179..fe8757362 100755
--- a/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout6.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/afreshwatertrout6.lua
@@ -5,8 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/aglowmystbeetle.lua b/server/SpawnScripts/Oakmyst_Classic/aglowmystbeetle.lua
new file mode 100755
index 000000000..0dd9da02e
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/aglowmystbeetle.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/aglowmystbeetle.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:30
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/aglowmystbeetleRoam.lua b/server/SpawnScripts/Oakmyst_Classic/aglowmystbeetleRoam.lua
new file mode 100644
index 000000000..dbb0c0033
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/aglowmystbeetleRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/aglowmystbeetleRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 07:12:37
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/amystailmatriarch.lua b/server/SpawnScripts/Oakmyst_Classic/amystailmatriarch.lua
new file mode 100755
index 000000000..ac81b7aa5
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/amystailmatriarch.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/amystailmatriarch.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:53
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/amystailyearling.lua b/server/SpawnScripts/Oakmyst_Classic/amystailyearling.lua
new file mode 100755
index 000000000..fa65ca97b
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/amystailyearling.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/amystailyearling.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:16
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystdoe.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystdoe.lua
new file mode 100644
index 000000000..503630a7c
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystdoe.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/anOakmystdoe.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 07:12:58
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystfairy.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystfairy.lua
index 9de1dca58..d82dd2249 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystfairy.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystfairy.lua
@@ -6,8 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseFairy1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
@@ -16,4 +19,5 @@ end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystfairyDif7.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystfairyDif7.lua
index 683de26a4..cadfcfec7 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystfairyDif7.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystfairyDif7.lua
@@ -6,72 +6,15 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseFairy1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 5, -5, 2, -2, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y+2, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbear.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbear.lua
index ed016961a..e4f2458fb 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbear.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbear.lua
@@ -5,36 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local level3 = 13
- local difficulty1 = 8
- local hp1 = 930
- local power1 = 360
- local difficulty2 = 8
- local hp2 = 1205
- local power2 = 400
- local difficulty3 =8
- local hp3 = 1420
- local power3 = 485
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol1.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol1.lua
index f1924db8b..a11df9669 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol1.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol1.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local level3 = 13
- local difficulty1 = 8
- local hp1 = 930
- local power1 = 360
- local difficulty2 = 8
- local hp2 = 1205
- local power2 = 400
- local difficulty3 =8
- local hp3 = 1420
- local power3 = 485
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol2.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol2.lua
index 80a2278b4..90aa59291 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol2.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystgreatbearPatrol2.lua
@@ -5,38 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local level3 = 13
- local difficulty1 = 8
- local hp1 = 930
- local power1 = 360
- local difficulty2 = 8
- local hp2 = 1205
- local power2 = 400
- local difficulty3 =8
- local hp3 = 1420
- local power3 = 485
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- elseif Level == level3
- then
- SpawnSet(NPC, "difficulty", difficulty3)
- SpawnSet(NPC, "hp", hp3)
- SpawnSet(NPC, "power", power3)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher.lua
index a6834467e..f58540dae 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher.lua
@@ -5,27 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher1.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher1.lua
index 531e0edbf..936c16e28 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher1.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher1.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher2.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher2.lua
index a005a120b..bee8c1b60 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher2.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher2.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher3.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher3.lua
index eb2810f08..8565e7039 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher3.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher3.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher4.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher4.lua
index c4d3df2cd..9b01ea8b6 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher4.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystpoacher4.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 5
- local level2 = 6
- local difficulty1 = 6
- local hp1 = 130
- local power1 = 65
- local difficulty2 = 6
- local hp2 = 150
- local power2 = 80
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystroyaldefender.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystroyaldefender.lua
index 8e66aeb5f..ecd14c069 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystroyaldefender.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystroyaldefender.lua
@@ -5,29 +5,12 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetSpawnAnimation(NPC, 13016)
- local Level = GetLevel(NPC)
- local level1 = 8
- local level2 = 9
- local difficulty1 = 8
- local hp1 = 485
- local power1 = 200
- local difficulty2 = 8
- local hp2 = 555
- local power2 = 240
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anOakmystspirit.lua b/server/SpawnScripts/Oakmyst_Classic/anOakmystspirit.lua
index 0a5c7a4ab..0b38487aa 100755
--- a/server/SpawnScripts/Oakmyst_Classic/anOakmystspirit.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/anOakmystspirit.lua
@@ -5,91 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 11
- local level2 = 12
- local difficulty1 = 8
- local hp1 = 930
- local power1 = 360
- local difficulty2 = 8
- local hp2 = 1205
- local power2 = 400
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 5, -5, 2, -2, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y+2, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
function respawn(NPC, Spawn)
spawn(NPC)
diff --git a/server/SpawnScripts/Oakmyst_Classic/anoakmystfawn.lua b/server/SpawnScripts/Oakmyst_Classic/anoakmystfawn.lua
new file mode 100644
index 000000000..e107fbab2
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/anoakmystfawn.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/anoakmystfawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 09:12:13
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/asunshimmersprite.lua b/server/SpawnScripts/Oakmyst_Classic/asunshimmersprite.lua
new file mode 100755
index 000000000..2413d1dca
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/asunshimmersprite.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/asunshimmersprite.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.10 03:09:27
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/Oakmyst_Classic/asunshimmerspriteDif7.lua b/server/SpawnScripts/Oakmyst_Classic/asunshimmerspriteDif7.lua
index bfae6b645..839165d64 100755
--- a/server/SpawnScripts/Oakmyst_Classic/asunshimmerspriteDif7.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/asunshimmerspriteDif7.lua
@@ -5,72 +5,14 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 5, -5, 2, -2, 2, 8, 15)
end
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y+2, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
function respawn(NPC, Spawn)
spawn(NPC)
@@ -78,4 +20,14 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
+end
+
+function casted_on(NPC, Spawn, Message)
+ if Message == "Catalogue Creature" then
+ if HasQuest(Spawn, Catalogue) and GetQuestStepProgress(Spawn,Catalogue,2) == 0 then
+ SetStepComplete(Spawn, Catalogue, 2)
+ local con = CreateConversation()
+ AddConversationOption(con, "Close the entry.")
+ StartDialogConversation(con, 1, NPC, Spawn, "Sunshimmer Sprite\n\n \"Sprites are a newer addition to the Oakmyst since The Cataclysm. Supposedly hailing from more enchanted waters, they were swept in from the torrential winds. It is hard to say what terms they have made with the resident fairies. Unlike the fairies here in Oakmyst, sprites are known to be true to their word.\"\n\n-Tracker Kelnis") end
+end
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/aviciousbadger.lua b/server/SpawnScripts/Oakmyst_Classic/aviciousbadger.lua
new file mode 100755
index 000000000..9cd9b6731
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/aviciousbadger.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/aviciousbadger.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 01:09:56
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/ayoungmystailrat.lua b/server/SpawnScripts/Oakmyst_Classic/ayoungmystailrat.lua
new file mode 100644
index 000000000..6c76cc504
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_Classic/ayoungmystailrat.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_Classic/ayoungmystailrat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 07:12:42
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Oakmyst_Classic/inspectrockpoem.lua b/server/SpawnScripts/Oakmyst_Classic/inspectrockpoem.lua
index 790bd21f1..52b32151c 100755
--- a/server/SpawnScripts/Oakmyst_Classic/inspectrockpoem.lua
+++ b/server/SpawnScripts/Oakmyst_Classic/inspectrockpoem.lua
@@ -20,7 +20,9 @@ end
function casted_on(NPC, Spawn, Message)
if Message == "inspect" then
local con = CreateConversation()
+ if CanReceiveQuest(Spawn,quest) then
AddConversationOption(con, "Read the Poem!", "ReadPoem")
+ end
AddConversationOption(con, "Stop inspecting", "CloseConversation")
StartDialogConversation(con, 1, NPC, Spawn, "This rock is deeply embedded into the ground. It must have been here for quite some time. There is writing etched onto the face of the rock. It looks like a poem.")
end
diff --git a/server/SpawnScripts/Oakmyst_classic/anoakmystspider.lua b/server/SpawnScripts/Oakmyst_classic/anoakmystspider.lua
index 3b65ccb49..60ce68b0f 100755
--- a/server/SpawnScripts/Oakmyst_classic/anoakmystspider.lua
+++ b/server/SpawnScripts/Oakmyst_classic/anoakmystspider.lua
@@ -5,9 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Oakmyst_classic/anoakmystspiderRoam.lua b/server/SpawnScripts/Oakmyst_classic/anoakmystspiderRoam.lua
new file mode 100644
index 000000000..9b96bfa06
--- /dev/null
+++ b/server/SpawnScripts/Oakmyst_classic/anoakmystspiderRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Oakmyst_classic/anoakmystspiderRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.25 09:12:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiate.lua b/server/SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiate.lua
new file mode 100755
index 000000000..aa2868cb0
--- /dev/null
+++ b/server/SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiate.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiate.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.24 11:09:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function aggro(NPC, Spawn)
+-- PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/guard/darkelf_guard_service_evil_1_kill_gf_1ec6eff4.mp3", "Death to the enemies of Lucan!", "", 4030922503, 1352663696, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function victory(NPC,Spawn)
+ if IsPlayer(Spawn) == true then
+ AddTimer(NPC,1500,"FailureExit",1,Spawn)
+ end
+end
+
+function FailureExit(NPC,Spawn)
+ FailExit = GetZone("SerpentSewer")
+ Zone(FailExit,Spawn,-133.56, -0.21, 28.15, 41.26)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiateMale.lua b/server/SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiateMale.lua
new file mode 100755
index 000000000..bafee424d
--- /dev/null
+++ b/server/SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiateMale.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/OverlordsPrivateChambers/LucanicKnightInitiateMale.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.24 11:09:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function aggro(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/lucanic_knight_initiate/fprt_ph_3r03/quest_f_betrayal_fightone_2_callout1_a40b5115.mp3", "This one's a bit puny, wouldn't you say?", "", 1414515790, 3686356188)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function victory(NPC,Spawn)
+ if IsPlayer(Spawn) == true then
+ AddTimer(NPC,1500,"FailureExit",1,Spawn)
+ end
+end
+
+function FailureExit(NPC,Spawn)
+ FailExit = GetZone("SerpentSewer")
+ Zone(FailExit,Spawn,-133.56, -0.21, 28.15, 41.26)
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/OverlordsPrivateChambers/TayilNVelex.lua b/server/SpawnScripts/OverlordsPrivateChambers/TayilNVelex.lua
new file mode 100755
index 000000000..24560bda3
--- /dev/null
+++ b/server/SpawnScripts/OverlordsPrivateChambers/TayilNVelex.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/OverlordsPrivateChambers/TayilNVelex.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.24 03:09:54
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "cast_4")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/Bashmouth.lua b/server/SpawnScripts/Peatbog_Classic/Bashmouth.lua
new file mode 100755
index 000000000..713314a87
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/Bashmouth.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/Bashmouth.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 08:09:38
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(10 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(22 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/GuardAndrews.lua b/server/SpawnScripts/Peatbog_Classic/GuardAndrews.lua
index c9f933980..a83ede93d 100755
--- a/server/SpawnScripts/Peatbog_Classic/GuardAndrews.lua
+++ b/server/SpawnScripts/Peatbog_Classic/GuardAndrews.lua
@@ -6,9 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 12, "InRange", "LeaveRange")
end
function respawn(NPC)
@@ -17,8 +19,13 @@ end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
- end
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/GuardDierdra.lua b/server/SpawnScripts/Peatbog_Classic/GuardDierdra.lua
index b8b1ab3f1..be97693f7 100755
--- a/server/SpawnScripts/Peatbog_Classic/GuardDierdra.lua
+++ b/server/SpawnScripts/Peatbog_Classic/GuardDierdra.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
diff --git a/server/SpawnScripts/Peatbog_Classic/GuardNander.lua b/server/SpawnScripts/Peatbog_Classic/GuardNander.lua
index 1b8973ba2..fe5dd1d1b 100755
--- a/server/SpawnScripts/Peatbog_Classic/GuardNander.lua
+++ b/server/SpawnScripts/Peatbog_Classic/GuardNander.lua
@@ -6,8 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
diff --git a/server/SpawnScripts/Peatbog_Classic/GuardVivian.lua b/server/SpawnScripts/Peatbog_Classic/GuardVivian.lua
index c172aee53..2b0a63500 100755
--- a/server/SpawnScripts/Peatbog_Classic/GuardVivian.lua
+++ b/server/SpawnScripts/Peatbog_Classic/GuardVivian.lua
@@ -5,10 +5,13 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 12, "InRange", "LeaveRange")
end
function respawn(NPC)
@@ -17,8 +20,13 @@ end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
- end
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/Lurkblister.lua b/server/SpawnScripts/Peatbog_Classic/Lurkblister.lua
index c7aef5ce6..d11494724 100755
--- a/server/SpawnScripts/Peatbog_Classic/Lurkblister.lua
+++ b/server/SpawnScripts/Peatbog_Classic/Lurkblister.lua
@@ -7,6 +7,10 @@
--]]
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
waypoints(NPC)
diff --git a/server/SpawnScripts/Peatbog_Classic/QueenEzeldra.lua b/server/SpawnScripts/Peatbog_Classic/QueenEzeldra.lua
index 8e9225acd..1a4b59023 100755
--- a/server/SpawnScripts/Peatbog_Classic/QueenEzeldra.lua
+++ b/server/SpawnScripts/Peatbog_Classic/QueenEzeldra.lua
@@ -8,6 +8,10 @@
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(12 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(24 + dmgMod))
end
diff --git a/server/SpawnScripts/Peatbog_Classic/Sicklejaw.lua b/server/SpawnScripts/Peatbog_Classic/Sicklejaw.lua
new file mode 100755
index 000000000..e79b91ca3
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/Sicklejaw.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/Sicklejaw.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 09:09:04
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/Stonegnasher.lua b/server/SpawnScripts/Peatbog_Classic/Stonegnasher.lua
new file mode 100755
index 000000000..c0d9caf76
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/Stonegnasher.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/Stonegnasher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 09:09:15
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/TheSunWolf.lua b/server/SpawnScripts/Peatbog_Classic/TheSunWolf.lua
new file mode 100755
index 000000000..71c54452c
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/TheSunWolf.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/TheSunWolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 09:09:27
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(14 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/abogfaerie.lua b/server/SpawnScripts/Peatbog_Classic/abogfaerie.lua
index 177b7bebe..e7a608ec1 100755
--- a/server/SpawnScripts/Peatbog_Classic/abogfaerie.lua
+++ b/server/SpawnScripts/Peatbog_Classic/abogfaerie.lua
@@ -6,3 +6,13 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn()
+end
diff --git a/server/SpawnScripts/Peatbog_Classic/abogfaerieRoam.lua b/server/SpawnScripts/Peatbog_Classic/abogfaerieRoam.lua
index b52e6b5ed..3643feaf8 100755
--- a/server/SpawnScripts/Peatbog_Classic/abogfaerieRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/abogfaerieRoam.lua
@@ -6,71 +6,12 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 2, -2, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/abogsludge.lua b/server/SpawnScripts/Peatbog_Classic/abogsludge.lua
index 3235baf54..c20f29b67 100755
--- a/server/SpawnScripts/Peatbog_Classic/abogsludge.lua
+++ b/server/SpawnScripts/Peatbog_Classic/abogsludge.lua
@@ -5,90 +5,12 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 =3
- local level2 = 4
- local difficulty1 = 6
- local hp1 = 75
- local power1 = 45
- local difficulty2 = 6
- local hp2 = 110
- local power2 = 55
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/abogslug.lua b/server/SpawnScripts/Peatbog_Classic/abogslug.lua
new file mode 100644
index 000000000..3537dd2a1
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/abogslug.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/abogslug.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 04:12:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/abogslughatchling.lua b/server/SpawnScripts/Peatbog_Classic/abogslughatchling.lua
new file mode 100644
index 000000000..8f71cac40
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/abogslughatchling.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/abogslughatchling.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 04:12:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/afaerieabbot.lua b/server/SpawnScripts/Peatbog_Classic/afaerieabbot.lua
new file mode 100755
index 000000000..5ad7ccf11
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/afaerieabbot.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/afaerieabbot.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/afaerieabbotRoam.lua b/server/SpawnScripts/Peatbog_Classic/afaerieabbotRoam.lua
index 1266e610d..309d89154 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaerieabbotRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaerieabbotRoam.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 7, -7, 4, 0, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/afaeriegatekeeper.lua b/server/SpawnScripts/Peatbog_Classic/afaeriegatekeeper.lua
index 19101440b..e2fd42540 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaeriegatekeeper.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaeriegatekeeper.lua
@@ -6,9 +6,22 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+end
+function InRange(NPC, Spawn)
+ local invul = IsInvulnerable(Spawn)
+
+ if GetLevel(Spawn)<20 and not IsInCombat(NPC) and GetFactionAmount(Spawn,365) >-40000 and invul == false then
+ if GetSpawnLocationID(NPC)== 133779861 or GetSpawnLocationID(NPC) == 133779859 then
+ Attack(NPC,Spawn)
+ SendPopUpMessage(Spawn,"The bog faerie gatekeepers don't take kindly to trespassers.",200,0,0)
+ end
+ end
end
diff --git a/server/SpawnScripts/Peatbog_Classic/afaerieguardianRoam.lua b/server/SpawnScripts/Peatbog_Classic/afaerieguardianRoam.lua
index c3d25e234..3da671f9e 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaerieguardianRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaerieguardianRoam.lua
@@ -6,71 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 7, -7, 4, 0, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/afaerienoblesse.lua b/server/SpawnScripts/Peatbog_Classic/afaerienoblesse.lua
index 1cac8ab8b..a9e4f8942 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaerienoblesse.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaerienoblesse.lua
@@ -6,9 +6,10 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
diff --git a/server/SpawnScripts/Peatbog_Classic/afaytangleroot1.lua b/server/SpawnScripts/Peatbog_Classic/afaytangleroot1.lua
index 2196deab1..f4923346a 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaytangleroot1.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaytangleroot1.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
@@ -20,7 +21,7 @@ function respawn(NPC)
end
function waypoints(NPC)
- MovementLoopAddLocation(NPC, 683.83, -33.19, 519.99, 2, 4)
+ MovementLoopAddLocation(NPC, 683.83, -33.19, 519.99, 2, 6)
MovementLoopAddLocation(NPC, 696.65, -32.55, 522.84, 2, math.random(5,10))
MovementLoopAddLocation(NPC, 696.65, -32.55, 522.84, 2, 0)
MovementLoopAddLocation(NPC, 702.71, -33.88, 511.03, 2, math.random(5,10))
diff --git a/server/SpawnScripts/Peatbog_Classic/afaytangleroot2.lua b/server/SpawnScripts/Peatbog_Classic/afaytangleroot2.lua
index 79e76809f..4e4cdd93c 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaytangleroot2.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaytangleroot2.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/afaytangleroot3.lua b/server/SpawnScripts/Peatbog_Classic/afaytangleroot3.lua
index 689d6a7bb..41107c7ce 100755
--- a/server/SpawnScripts/Peatbog_Classic/afaytangleroot3.lua
+++ b/server/SpawnScripts/Peatbog_Classic/afaytangleroot3.lua
@@ -5,10 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/afunguscrawler.lua b/server/SpawnScripts/Peatbog_Classic/afunguscrawler.lua
new file mode 100755
index 000000000..2ad66f006
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/afunguscrawler.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/afunguscrawler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerie.lua b/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerie.lua
index 298a0fb5b..d4a1441ee 100755
--- a/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerie.lua
+++ b/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerie.lua
@@ -5,90 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local difficulty1 = 8
- local hp1 = 555
- local power1 = 240
- local difficulty2 = 8
- local hp2 = 645
- local power2 = 300
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
----ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerieRoam.lua b/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerieRoam.lua
index ccf07dc8e..29f65bf75 100755
--- a/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerieRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/agreaterbogfaerieRoam.lua
@@ -6,91 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/Fairy_PeatBog.lua")
+require "SpawnScripts/Generic/NPCModule"
-
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 9
- local level2 = 10
- local difficulty1 = 8
- local hp1 = 555
- local power1 = 240
- local difficulty2 = 8
- local hp2 = 645
- local power2 = 300
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+4, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y+2, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y+4, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 7, -7, 4, 0, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/ajuvenileshriller.lua b/server/SpawnScripts/Peatbog_Classic/ajuvenileshriller.lua
index 0eb999d39..f94c624df 100755
--- a/server/SpawnScripts/Peatbog_Classic/ajuvenileshriller.lua
+++ b/server/SpawnScripts/Peatbog_Classic/ajuvenileshriller.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z, 2,math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y+2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y+2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 20, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 16, Y-2, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y+2, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 20, Y-2, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 16, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 20, -20, 2, -2, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/alargescavenger.lua b/server/SpawnScripts/Peatbog_Classic/alargescavenger.lua
index 016ba002e..ebeb17e2f 100755
--- a/server/SpawnScripts/Peatbog_Classic/alargescavenger.lua
+++ b/server/SpawnScripts/Peatbog_Classic/alargescavenger.lua
@@ -5,28 +5,10 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 6
- local level2 = 7
- local difficulty1 = 6
- local hp1 = 150
- local power1 = 80
- local difficulty2 = 6
- local hp2 = 200
- local power2 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/alargescavengerRoam.lua b/server/SpawnScripts/Peatbog_Classic/alargescavengerRoam.lua
index 7b5a34fd0..4552dd7bc 100755
--- a/server/SpawnScripts/Peatbog_Classic/alargescavengerRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/alargescavengerRoam.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 6
- local level2 = 7
- local difficulty1 = 6
- local hp1 = 150
- local power1 = 80
- local difficulty2 = 6
- local hp2 = 200
- local power2 = 90
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(5,10))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 9, Y, Z, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(5,10))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(5,10))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 9, -9, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/amarshhatchling.lua b/server/SpawnScripts/Peatbog_Classic/amarshhatchling.lua
new file mode 100755
index 000000000..439d4a5b7
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/amarshhatchling.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/amarshhatchling.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.11 02:09:24
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/random_pattern_small_med_delay.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/amarshmonitor.lua b/server/SpawnScripts/Peatbog_Classic/amarshmonitor.lua
new file mode 100755
index 000000000..189dd64f5
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/amarshmonitor.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/amarshmonitor.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/amarshmonitorRoam.lua b/server/SpawnScripts/Peatbog_Classic/amarshmonitorRoam.lua
index 0c4e3e601..bee57f59d 100755
--- a/server/SpawnScripts/Peatbog_Classic/amarshmonitorRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/amarshmonitorRoam.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/amisthunter.lua b/server/SpawnScripts/Peatbog_Classic/amisthunter.lua
index 31e5cfad9..db1255eb3 100755
--- a/server/SpawnScripts/Peatbog_Classic/amisthunter.lua
+++ b/server/SpawnScripts/Peatbog_Classic/amisthunter.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/amiststalker.lua b/server/SpawnScripts/Peatbog_Classic/amiststalker.lua
index f220333ef..bdb9a9d08 100755
--- a/server/SpawnScripts/Peatbog_Classic/amiststalker.lua
+++ b/server/SpawnScripts/Peatbog_Classic/amiststalker.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/amucktoad.lua b/server/SpawnScripts/Peatbog_Classic/amucktoad.lua
new file mode 100755
index 000000000..cce56ef38
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/amucktoad.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/amucktoad.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:25
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/amucktoadRoam.lua b/server/SpawnScripts/Peatbog_Classic/amucktoadRoam.lua
new file mode 100644
index 000000000..d6e0a8777
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/amucktoadRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/amucktoadRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 05:12:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/amudhopper.lua b/server/SpawnScripts/Peatbog_Classic/amudhopper.lua
new file mode 100644
index 000000000..f57a366f8
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/amudhopper.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/amudhopper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 05:12:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/amudseep.lua b/server/SpawnScripts/Peatbog_Classic/amudseep.lua
index 92aebc91b..606c12cda 100755
--- a/server/SpawnScripts/Peatbog_Classic/amudseep.lua
+++ b/server/SpawnScripts/Peatbog_Classic/amudseep.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/apunyscavenger.lua b/server/SpawnScripts/Peatbog_Classic/apunyscavenger.lua
new file mode 100755
index 000000000..45a1183fa
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/apunyscavenger.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/apunyscavenger.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:15
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/apunyscavengerRoam.lua b/server/SpawnScripts/Peatbog_Classic/apunyscavengerRoam.lua
new file mode 100644
index 000000000..6e96de893
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/apunyscavengerRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/apunyscavengerRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 05:12:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/aravenousbogslug.lua b/server/SpawnScripts/Peatbog_Classic/aravenousbogslug.lua
index 90397064a..0f4fa0d7b 100755
--- a/server/SpawnScripts/Peatbog_Classic/aravenousbogslug.lua
+++ b/server/SpawnScripts/Peatbog_Classic/aravenousbogslug.lua
@@ -5,11 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-
-
-function spawn(NPC)
- waypoints(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Peatbog_Classic/arotcrawler.lua b/server/SpawnScripts/Peatbog_Classic/arotcrawler.lua
new file mode 100755
index 000000000..17b2564aa
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/arotcrawler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/arotcrawler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/asiltsucker.lua b/server/SpawnScripts/Peatbog_Classic/asiltsucker.lua
new file mode 100644
index 000000000..f24e8c4a7
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/asiltsucker.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/asiltsucker.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 05:12:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/aswampseep.lua b/server/SpawnScripts/Peatbog_Classic/aswampseep.lua
new file mode 100755
index 000000000..d0ddb8b8a
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/aswampseep.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/aswampseep.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/atoxicbogslug.lua b/server/SpawnScripts/Peatbog_Classic/atoxicbogslug.lua
new file mode 100755
index 000000000..4f2ae0cb2
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/atoxicbogslug.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/atoxicbogslug.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/atoxicbogslugRoam.lua b/server/SpawnScripts/Peatbog_Classic/atoxicbogslugRoam.lua
new file mode 100644
index 000000000..a214f850c
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/atoxicbogslugRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/atoxicbogslugRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.27 05:12:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/awetlandmonitor.lua b/server/SpawnScripts/Peatbog_Classic/awetlandmonitor.lua
new file mode 100755
index 000000000..47793301a
--- /dev/null
+++ b/server/SpawnScripts/Peatbog_Classic/awetlandmonitor.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/Peatbog_Classic/awetlandmonitor.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.22 02:09:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Peatbog_Classic/awetlandmonitorRoam.lua b/server/SpawnScripts/Peatbog_Classic/awetlandmonitorRoam.lua
index 544ee6da2..280496be9 100755
--- a/server/SpawnScripts/Peatbog_Classic/awetlandmonitorRoam.lua
+++ b/server/SpawnScripts/Peatbog_Classic/awetlandmonitorRoam.lua
@@ -5,71 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
-ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(7,15))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2,math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X + 7, Y, Z - 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X - 7, Y, Z + 4, 2, math.random(7,15))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,15))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 7, -7, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/PillarsFlame/anomadiccarpetkeeper.lua b/server/SpawnScripts/PillarsFlame/anomadiccarpetkeeper.lua
index c88eef0b4..dc005f51d 100755
--- a/server/SpawnScripts/PillarsFlame/anomadiccarpetkeeper.lua
+++ b/server/SpawnScripts/PillarsFlame/anomadiccarpetkeeper.lua
@@ -10,6 +10,10 @@ function respawn(NPC)
spawn(NPC)
end
+function spawn(NPC)
+
+end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
diff --git a/server/SpawnScripts/Qeynos/AmrenTalbot.lua b/server/SpawnScripts/Qeynos/AmrenTalbot.lua
index fb2d74e9b..0c5a84747 100755
--- a/server/SpawnScripts/Qeynos/AmrenTalbot.lua
+++ b/server/SpawnScripts/Qeynos/AmrenTalbot.lua
@@ -11,7 +11,7 @@ local ACrumpledNote = 5374 -- A Crumpled Note Mages Version
local spellbookFrags = 5485
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "cast_priest_buff_01")
end
function respawn(NPC)
@@ -34,28 +34,23 @@ function hailed(NPC, Spawn)
end
function quest_complete2(NPC, Spawn)
+ SetStepComplete(Spawn, spellbookFrags, 1)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Have you? Let me take a look at that... Yes, this is what we are looking for! Allow me to defray any expenses you a incurred finding this piece. Here you are.")
Dialog.AddVoiceover("voiceover/english/amren_talbot/qey_south/amrentalbot001.mp3", 3750992893, 2423832468)
- Dialog.AddOption("Thank you.","Reward2")
+ Dialog.AddOption("Thank you.")
Dialog.Start()
end
-function Reward2 (NPC,Spawn)
- SetStepComplete(Spawn, spellbookFrags, 1)
- end
-
-function Reward1 (NPC,Spawn)
- SetStepComplete(Spawn, spellbookFrags, 1)
- end
function quest_complete(NPC, Spawn)
+ SetStepComplete(Spawn, ACrumpledNote, 1)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("An interesting find, though I doubt it bears much in the realm of truth. Nevertheless, I shall bring this to my superior's attention. I suppose I should grant you token for your time. Here you are.")
Dialog.AddVoiceover("voiceover/english/amren_talbot/qey_south/amrentalbot002.mp3", 2532326758, 3659967005)
- Dialog.AddOption("I would appreciate it if you would.","Reward1")
+ Dialog.AddOption("I would appreciate it if you would.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/Qeynos/CorrynMenai.lua b/server/SpawnScripts/Qeynos/CorrynMenai.lua
index ec72a4d13..34fc20b03 100755
--- a/server/SpawnScripts/Qeynos/CorrynMenai.lua
+++ b/server/SpawnScripts/Qeynos/CorrynMenai.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "cast_priest_buff_01")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Qeynos/EoradalanuOtuden.lua b/server/SpawnScripts/Qeynos/EoradalanuOtuden.lua
index d7d0d2579..abef7fa43 100755
--- a/server/SpawnScripts/Qeynos/EoradalanuOtuden.lua
+++ b/server/SpawnScripts/Qeynos/EoradalanuOtuden.lua
@@ -26,7 +26,7 @@ function hailed(NPC, Spawn)
AddConversationOption(conversation, "The tower is quite the sight!","QuestStart")
end
AddConversationOption(conversation, "Alright.")
- StartConversation(conversation, NPC, Spawn, "Welcome to the grounds of the Tree Towers. Walk... lightly. Speak... quietly. The mages within are deep in concentration. Disruptions can cause impediments to progress. Please move along.")
+ StartConversation(conversation, NPC, Spawn, "Welcome to the grounds of the Three Towers. Walk lightly, speak quietly. The mages within are deep in concentration, disruptions can cause impediments to progress. Please, move along.")
end
end
diff --git a/server/SpawnScripts/Qeynos/FredrickLosce.lua b/server/SpawnScripts/Qeynos/FredrickLosce.lua
index f5379b3c6..debd8fd52 100755
--- a/server/SpawnScripts/Qeynos/FredrickLosce.lua
+++ b/server/SpawnScripts/Qeynos/FredrickLosce.lua
@@ -5,6 +5,8 @@
Script Date : 2022.05.16
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
+
local Dryads = 5557
function spawn(NPC)
@@ -53,19 +55,27 @@ function hailed(NPC, Spawn)
end
else
- if GetQuestStep(Spawn,Dryads)==2 then
- PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1002.mp3", "I can tell by your face the deed is done. Thank you for ridding the forest of those corrupted beasts! Please, take this as a token for doing the world- and particularlly me- a favor. Now off with you.", "nod", 0, 0, Spawn)
- FaceTarget(NPC, Spawn)
+ if HasQuest (Spawn, Dryads) and GetQuestStep(Spawn,Dryads)==2 then
SetStepComplete(Spawn,Dryads, 2)
- elseif not HasCompletedQuest (Spawn, Dryads) then
- PlayFlavor(NPC, "voiceover/english/fredrick_losce/qey_south/fredricklosce000.mp3", "", "", 1020132754, 3906146647, Spawn)
- local conversation = CreateConversation()
- if not HasQuest(Spawn,Delivery) and not HasCompletedQuest(Spawn, Delivery) then
- AddConversationOption(conversation, "Perhaps. What would I be doing?", "Delivery1")
- end
- AddConversationOption(conversation, "Not really interested. Enjoy your drink.")
- StartConversation(conversation, NPC, Spawn, "Hail citizen. You seem to be looking for something to do? Might I tempt you with doing myself and the rest of the world a favor?")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC,"","","scheme", 0, 0, Spawn)
+ Dialog.AddDialog( "I can tell by your face the deed is done. Thank you for ridding the forest of those corrupted beasts! Please, take this as a token for doing the world- and particularlly me- a favor. Now off with you.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1002.mp3", 390832885, 49061382)
+ Dialog.AddOption("Your reward is thank you enough. I am glad I could help!")
+ Dialog.Start()
+ elseif not HasCompletedQuest (Spawn, Dryads) then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC,"","","nod", 0, 0, Spawn)
+ Dialog.AddDialog( "Hail citizen. You seem to be looking for something to do? Might I tempt you with doing myself and the rest of the world a favor?")
+ Dialog.AddVoiceover("voiceover/english/fredrick_losce/qey_south/fredricklosce000.mp3", 1020132754, 3906146647)
+ if not HasQuest(Spawn,Dryads) and not HasCompletedQuest(Spawn, Dryads) then
+ Dialog.AddOption("Perhaps. What would I be doing?", "Delivery2")
+ end
+ Dialog.AddOption("Not really interested. Enjoy your drink.")
+ Dialog.Start()
else
FaceTarget(NPC, Spawn)
PlayFlavor(NPC, "voiceover/english/fredrick_losce/qey_south/100_qst_fredrick_losce_multhail1_39997e53.mp3", "I'm sorry friend. I thought you were someone else.", "", 2011619923, 2423962881, Spawn)
@@ -73,14 +83,7 @@ function hailed(NPC, Spawn)
end
end
-function Delivery1(NPC,Spawn)
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/fredrick_losce/qey_south/fredricklosce001.mp3", "", "sniff", 2839949411, 2971198506, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Gladly. I'll take care of these dryads.", "Delivery2")
- AddConversationOption(conversation, "I'd rather not. Find someone else to clean up the forest for your 'walks'.")
- StartConversation(conversation, NPC, Spawn, "I love walking through the Oakmyst Forest, but in recent times corrupt dryads have taken over the area. These cretins love to ruins my walks. If you could rid the world of these horrid creatures it would be a noble task, indeed!")
-end
+
function Delivery2(NPC, Spawn)
PlayFlavor(NPC, "", "", "thanks",0 , 0, Spawn)
diff --git a/server/SpawnScripts/Qeynos/GreldaneIrongut.lua b/server/SpawnScripts/Qeynos/GreldaneIrongut.lua
index ebcbc09c1..c996fc994 100755
--- a/server/SpawnScripts/Qeynos/GreldaneIrongut.lua
+++ b/server/SpawnScripts/Qeynos/GreldaneIrongut.lua
@@ -9,6 +9,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Qeynos/IndisSurion.lua b/server/SpawnScripts/Qeynos/IndisSurion.lua
index adde78753..09a26826c 100755
--- a/server/SpawnScripts/Qeynos/IndisSurion.lua
+++ b/server/SpawnScripts/Qeynos/IndisSurion.lua
@@ -1,37 +1,30 @@
--[[
Script Name : SpawnScripts/SouthQeynos/IndisSurion.lua
Script Purpose : Indis Surion
- Script Author : Cynnar
- Script Date : 2020.04.12
+ Script Author : Dorbin
+ Script Date : 2023.06.21
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function InRange(NPC, Spawn)
-end
-
-function LeaveRange(NPC, Spawn)
-end
-
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
- AddConversationOption(conversation, "Thanks for the information. I just might do that.", "dlg_1_1")
- StartConversation(conversation, NPC, Spawn, "Search for the relics of the past Age of Turmoil. Their discovery will gain you great power and prestige!")
- if convo==18 then
- PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
- AddConversationOption(conversation, "Thanks for the information, I just might do that.", "dlg_18_1")
- StartConversation(conversation, NPC, Spawn, "Search for the relics of the past Age of Turmoil. Their discovery will gain you great power and prestige!")
- end
-
+if HasQuest(Spawn,5766) and GetQuestStepProgress(Spawn,5766,3) == 0 then --WELCOME TO QEYNOS,CITIZEN
+ SetStepComplete(Spawn,5766,3)
+end
+Dialog1(NPC, Spawn)
end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Search for the relics of the past Age of Turmoil. Their discovery will gain you great power and prestige!")
+ Dialog.AddOption("Thanks for the information, I just might do that.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/Qeynos/KatlynPaisley.lua b/server/SpawnScripts/Qeynos/KatlynPaisley.lua
index cab6a4110..ae3de4959 100755
--- a/server/SpawnScripts/Qeynos/KatlynPaisley.lua
+++ b/server/SpawnScripts/Qeynos/KatlynPaisley.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Qeynos/Khalilmun.lua b/server/SpawnScripts/Qeynos/Khalilmun.lua
index c37ae4a3c..d800b2118 100755
--- a/server/SpawnScripts/Qeynos/Khalilmun.lua
+++ b/server/SpawnScripts/Qeynos/Khalilmun.lua
@@ -17,6 +17,7 @@ function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
ProvidesQuest(NPC,potion)
ProvidesQuest(NPC,wings)
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
@@ -62,7 +63,7 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Come in! Come in. A mages greeting to you my friend! Now, what can I mix for you? A potion? A salve perhaps? Ah, I know you need alchemical supplies don't you?")
+ Dialog.AddDialog("Come in! Come in! A mage's greeting to you, my friend! And now, what can I mix for you? A potion? A salve, perhaps? Ahhh ... I know; you need alchemical supplies, don't you?")
Dialog.AddVoiceover("voiceover/english/merchant_khalil_mun/qey_south/khalilmun.mp3", 4229538394, 3475168559)
if not HasQuest(Spawn,potion) and not HasCompletedQuest(Spawn, potion) then
Dialog.AddOption("I would like to know if you have any insights on potion making.", "Potion1")
@@ -90,7 +91,7 @@ function Pickup(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
- Dialog.AddDialog("Ah, yes. Dyes. Always dyes. Well, she is one of my best customers! Here. Take these two tubs. That looks like Danielle's coin pouch- I'll empty that. Are you sure you can't use an alembic or two? They're on sale!")
+ Dialog.AddDialog("Ahh ... yes. Dyes. Always dyes. Well, she is one of my best customers. Here; take these two tubs. That looks like Danielle's coin pouch; I'll empty that! Are you sure you can't use an alembic or two? They're on sale!")
Dialog.AddVoiceover("voiceover/english/merchant_khalil_mun/qey_south/khalilmun000.mp3", 938827221, 1172248850)
Dialog.AddOption( "This will do just fine. Thanks.", "DyeUpdate")
Dialog.Start()
@@ -105,7 +106,7 @@ function DyeUpdate(NPC, Spawn)
function Potion1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Excellent! I shall explain. At its most basic level, potion is about combining specific reagents to produce specific effects. Take this cloudly looking potion for example. All it requires is a few simple ingredients I gather from the near by Peat Bog. Perhaps you could begin to understand the rudimentary elements of the process if you gather the components for this potion.")
+ Dialog.AddDialog("Excellent. I shall explain. At its most basic level, potion making is about combining specific reagents to produce specific effects. Take this cloudy-looking potion for example. All it requires are a few simple ingredients that I gather from the nearby peat bog. Perhaps you can begin to understand the rudimentary elements of the process if you gather the components for this potion.")
Dialog.AddVoiceover("voiceover/english/merchant_khalil_mun/qey_south/khalilmun001.mp3", 1469692776, 2022256144)
Dialog.AddOption("Sounds easy enough. Will I get to use the ingredients once I get them?", "Potion2")
Dialog.AddOption("I really don't feel like slogging through the muck today. Sorry.")
@@ -121,7 +122,7 @@ function Potion2(NPC, Spawn)
function PotionDone(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("My, you've done well! These are very acceptable specimines, especially for your first time. Perhaps in the future I could teach you more about gathering reagents. Here are a few coins for your pay. Back to studies now. Run along.")
+ Dialog.AddDialog("My, you've done well. These are very acceptable specimens, especially for your first time. Perhaps in the future I can teach you more about gathering reagents. Here are a few coins for your pay. Back to your studies now, run along.")
Dialog.AddVoiceover("voiceover/english/merchant_khalil_mun/qey_south/khalilmun003.mp3", 865923909, 1629870869)
Dialog.AddOption("Alright. Thank you.", "FinishQuest1")
Dialog.AddOption("Run along?! I need a bath after slogging through that mess.","FinishQuest2")
@@ -143,7 +144,7 @@ end
function Wings1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I've pleanty of work that needs to be done. I need rabid shriller wings, several of them. Go to the catacombs and there you'll find pleanty of the wings. Of course, you'll be rewarded for your efforts.")
+ Dialog.AddDialog("I've plenty of work that needs to be done. I need rabid shriller wings, several of them. Go to the catacombs and there you'll find plenty of the wings. Of course, you'll be rewarded for your efforts.")
Dialog.AddVoiceover("voiceover/english/merchant_khalil_mun/qey_south/khalilmun005.mp3", 1992360074, 1666083068)
Dialog.AddOption("Easy enough. I'll return once I have them.", "Wings2")
Dialog.AddOption("Catacombs? Rabid? Sounds like a combination I should avoid.")
diff --git a/server/SpawnScripts/Qeynos/LeonaWard.lua b/server/SpawnScripts/Qeynos/LeonaWard.lua
index 70ab60daf..1703b8f55 100755
--- a/server/SpawnScripts/Qeynos/LeonaWard.lua
+++ b/server/SpawnScripts/Qeynos/LeonaWard.lua
@@ -9,6 +9,7 @@ local Arrow = 5526
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Qeynos/LibrarianDalmas.lua b/server/SpawnScripts/Qeynos/LibrarianDalmas.lua
index 66a24219f..298b1bca8 100755
--- a/server/SpawnScripts/Qeynos/LibrarianDalmas.lua
+++ b/server/SpawnScripts/Qeynos/LibrarianDalmas.lua
@@ -24,7 +24,7 @@ function LeaveRange(NPC, Spawn)
end
function hailed(NPC, Spawn)
- Dialog1(NPC, Spawn)
+ Dialog4(NPC, Spawn)
end
function Dialog1(NPC, Spawn)
@@ -41,6 +41,7 @@ function Dialog2(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("What! You never heard of Hasten Bootstrutter the gnome? He is one of the most famous explorers in history! After the Cataclysms, he trekked all across the Shattered Lands, traveling here and there, writing extensively about points of interest. This field guide was the fruit of his last great journey.")
Dialog.AddVoiceover("voiceover/english/librarian_dalmas/qey_south/librariandalmas002.mp3", 3595613712, 3187372712)
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
Dialog.AddOption("Thank you for the information.")
Dialog.Start()
end
@@ -50,8 +51,10 @@ function Dialog3(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Ahh, what is this? A very famous explorer, Hasten Bootstrutter, wrote this book. This is a rare and valuable treasure, indeed. Thank you, good adventurer, for returning it to us. Our library will cherish it. Please accept this rare item as a token of our gratitude.")
Dialog.AddVoiceover("voiceover/english/librarian_dalmas/qey_south/librariandalmas001.mp3", 1552954276, 373652806)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
Dialog.AddOption("Thank you for the reward. ")
Dialog.Start()
+ SetStepComplete(Spawn,5806,16)
end
function Dialog4(NPC, Spawn)
@@ -59,8 +62,15 @@ function Dialog4(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("You do not look like as if you spend much time in libraries, but please browse around as you like, and close the door firmly when you leave.")
Dialog.AddVoiceover("voiceover/english/librarian_dalmas/qey_south/librariandalmas000.mp3", 1605600996, 1906658132)
+ if GetQuestStep(Spawn, 5806)==16 then
Dialog.AddOption("I've brought you 'Bootstrutter's Field Guide to Antonica.'", "Dialog3")
+ end
+ if HasQuest(Spawn,5806) and not HasCompletedQuest(Spawn,5806) then
Dialog.AddOption("Who is Hasten Bootstrutter?", "Dialog2")
+ end
+ if HasCompletedQuest(Spawn,5806) then
+ Dialog.AddOption("Remind me, who is Hasten Bootstrutter?", "Dialog2")
+ end
Dialog.AddOption("I shall be silent.")
Dialog.Start()
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Qeynos/PupilAdeptWazzlefop.lua b/server/SpawnScripts/Qeynos/PupilAdeptWazzlefop.lua
index 05b5b16f1..1c074f9c7 100755
--- a/server/SpawnScripts/Qeynos/PupilAdeptWazzlefop.lua
+++ b/server/SpawnScripts/Qeynos/PupilAdeptWazzlefop.lua
@@ -22,7 +22,11 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
+ dlg_6_1(NPC, Spawn)
+end
+
+--[[
+ conversation = CreateConversation()
PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
AddConversationOption(conversation, "I would like the writ: Followers of the Fang", "dlg_5_1")
@@ -38,13 +42,15 @@ function hailed(NPC, Spawn)
end
end
+]]--
function dlg_6_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
PlayFlavor(NPC, "voiceover/english/pupil_adept_wazzlefop/qey_south/100_soc_gnome_concordium_wazzlefop_greeting_fd45f78a.mp3", "", "", 4189930656, 304987589, Spawn)
- AddConversationOption(conversation, "Okay.", "dlg_6_2")
+-- AddConversationOption(conversation, "Okay.", "dlg_6_2")
+ AddConversationOption(conversation, "Not today.")
StartConversation(conversation, NPC, Spawn, "Are you a seeker of the arcane? Do you thirst for the knowledge of the mystical? You've come to the right place. Here at the Concordium, we serve the queen by using our mystical prowess to aid those in need. Take this writ and help us in our search for truth.")
end
diff --git a/server/SpawnScripts/Qeynos/SteveEchar.lua b/server/SpawnScripts/Qeynos/SteveEchar.lua
index 341877c45..f24e4710b 100755
--- a/server/SpawnScripts/Qeynos/SteveEchar.lua
+++ b/server/SpawnScripts/Qeynos/SteveEchar.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Qeynos/TibbyCopperpot.lua b/server/SpawnScripts/Qeynos/TibbyCopperpot.lua
index 50ed37306..b3e563f0b 100755
--- a/server/SpawnScripts/Qeynos/TibbyCopperpot.lua
+++ b/server/SpawnScripts/Qeynos/TibbyCopperpot.lua
@@ -43,7 +43,7 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1005.mp3", 0, 0, Spawn)
Dialog.AddDialog("I sure do love to cook. Yummy baked goods and cakes. I make my sister do all the selling. To tell you the truth I think she likes it.")
- if not HasQuest(Spawn,Cake) then
+ if not HasQuest(Spawn,Cake) and not HasCompletedQuest(Spawn,Cake) then
Dialog.AddOption("You must be pretty busy then. Anything I can help with?", "Dialog2")
end
if GetQuestStep(Spawn,Cake)==2 then
diff --git a/server/SpawnScripts/Qeynos/ilgar.lua b/server/SpawnScripts/Qeynos/ilgar.lua
index 2a1316ea1..b6468da69 100755
--- a/server/SpawnScripts/Qeynos/ilgar.lua
+++ b/server/SpawnScripts/Qeynos/ilgar.lua
@@ -1,17 +1,20 @@
--[[
Script Name : ilgar.lua
Script Purpose : Waypoint Path for ilgar.lua
- Script Author : Devn00b - Pathing. Dorbin - Dialogue/Quest
- Script Date : 04/11/2020 02:45:39 PM / 05.16.2022
- Script Notes : Locations collected from Live
+ Script Author : Dorbin
+ Script Date : 05.16.2022
+ Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
+
local Fairies = 5558
+local Quest2 = 5788 --Fighter Quest pt2
dofile("SpawnScripts/Generic/ExpelNonCitizen.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
waypoints(NPC)
-ProvidesQuest(NPC,Fairies)
+ ProvidesQuest(NPC,Fairies)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
@@ -30,38 +33,38 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC, "", "", "heckno", 1584866727, 581589457, Spawn)
end
else
- FaceTarget(NPC,Spawn)
- PlayFlavor(NPC, "voiceover/english/knight-lieutenant_ilgar/qey_south/lieutenantilgar.mp3", "", "no", 1779980030, 2184277232, Spawn)
- local conversation = CreateConversation()
- if not HasQuest(Spawn,Fairies) and not HasCompletedQuest(Spawn, Fairies) then
- AddConversationOption(conversation, "Busy you say? I'm available to assist if you need.", "Busy")
- end
- if GetQuestStep(Spawn, Fairies)==2 then
- AddConversationOption(conversation, "I've reduced the fairy population in the Peat Bog as you asked.", "BusyFinished")
- end
- AddConversationOption(conversation, "Alright. As you were.")
- StartConversation(conversation, NPC, Spawn, "Move along citizen. I'm extremely busy.")
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "no", 0, 0,Spawn)
+ Dialog.AddDialog("Move along citizen. I'm extremely busy.")
+ Dialog.AddVoiceover("voiceover/english/knight-lieutenant_ilgar/qey_south/lieutenantilgar.mp3", 1779980030, 2184277232)
+ if not HasQuest(Spawn,Fairies) and not HasCompletedQuest(Spawn, Fairies) then
+ Dialog.AddOption("Busy you say? I'm available to assist if you need.", "Busy")
+ end
+ if GetQuestStep(Spawn, Fairies)==2 then
+ Dialog.AddOption("I've reduced the fairy population in the Peat Bog as you asked.", "BusyFinished")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)>=1 and GetQuestStep(Spawn,Quest2)<=3 and not QuestStepIsComplete(Spawn,Quest2,2) then
+ Dialog.AddOption("I just wanted to give my thanks for everything the Qeynos Guard does for the city.","FighterQuest")
+ end
+ Dialog.AddOption("Alright. As you were.")
+ Dialog.Start()
end
end
function Busy(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/lieutenant_ilgar/qey_south/lieutenantilgar000.mp3", "", "", 1212038397, 2389104068, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Sounds fair enough. Would I be paid for my service?", "Busy2")
- AddConversationOption(conversation, "Err, I meant I'm 'not' available. Sorry.")
- StartConversation(conversation, NPC, Spawn, "It would be a great help if you can. I need someone to head to the nearby Peat Bog and put a sizable dent in the fairy population. It seems they have been sneaking into Nettleville and Starcrest and playing pranks on the good folks of the villages.")
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "", 0, 0,Spawn)
+ Dialog.AddDialog("It would be a great help if you can. I need someone to head to the nearby Peat Bog and put a sizable dent in the fairy population. It seems they have been sneaking into Nettleville and Starcrest and playing pranks on the good folks of the villages.")
+ Dialog.AddVoiceover("voiceover/english/lieutenant_ilgar/qey_south/lieutenantilgar000.mp3",1212038397, 2389104068)
+ Dialog.AddOption("Sounds fair enough. Would I be paid for my service?","OfferFairyQuest")
+ Dialog.AddOption("Err, I meant I'm 'not' available. Sorry.")
+ Dialog.Start()
end
-function Busy2(NPC,Spawn)
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/knight-lieutenant_ilgar/qey_south/lieutenantilgar001.mp3", "", "agree", 3441933918, 932340693, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Yes sir!", "Busy3")
- StartConversation(conversation, NPC, Spawn, "There's always payment for services rendered to the city. You needn't worry about that! We encourage citizens to perform kind acts of their own will, but everyone needs to eat. Teach those unrly fairies a lesson and keep them away from the locals. Understand?")
-end
-function Busy3(NPC, Spawn)
+function OfferFairyQuest(NPC, Spawn)
PlayFlavor(NPC, "", "", "salute",0 , 0, Spawn)
FaceTarget(NPC, Spawn)
OfferQuest(NPC, Spawn,Fairies)
@@ -69,10 +72,12 @@ function Busy3(NPC, Spawn)
function BusyFinished(NPC,Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/knight-lieutenant_ilgar/qey_south/lieutenantilgar002.mp3", "", "", 1911360769, 3372915409, Spawn)
- local conversation = CreateConversation()
- AddConversationOption(conversation, "Greatful I could be of assistance.", "QuestDone")
- StartConversation(conversation, NPC, Spawn, "Hmm, yes it looks like you did your job. Reports of the mischeivious fayfolk interfering in the villages have lessened considerably. Here is your payment for a job well done.")
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "", 0, 0,Spawn)
+ Dialog.AddDialog("Hmm, yes it looks like you did your job. Reports of the mischeivious fayfolk interfering in the villages have lessened considerably. Here is your payment for a job well done.")
+ Dialog.AddVoiceover("voiceover/english/lieutenant_ilgar/qey_south/lieutenantilgar002.mp3",1911360769, 3372915409)
+ Dialog.AddOption("Grateful I could be of assistance.", "QuestDone")
+ Dialog.Start()
end
function QuestDone(NPC,Spawn)
@@ -86,6 +91,32 @@ function respawn(NPC)
spawn(NPC)
end
+function BusyFinished(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "", 0, 0,Spawn)
+ Dialog.AddDialog("Hmm, yes it looks like you did your job. Reports of the mischeivious fayfolk interfering in the villages have lessened considerably. Here is your payment for a job well done.")
+ Dialog.AddVoiceover("voiceover/english/lieutenant_ilgar/qey_south/lieutenantilgar002.mp3",1911360769, 3372915409)
+ Dialog.AddOption("Greatful I could be of assistance.", "QuestDone")
+ Dialog.Start()
+end
+
+function FighterQuest(NPC,Spawn) --NO VO available, but actual text!
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","", "confused", 0, 0,Spawn)
+ Dialog.AddDialog("Really? Oh. Well, you know how it is ... you gotta do what you gotta do, you know? It's not as hard as it looks, all things considered. I figure I can do my part by keeping an eye out for any gnolls or threats to the city. Well, hey... thanks for saying something.")
+ --Dialog.AddVoiceover("voiceover/english/lieutenant_ilgar/qey_south/lieutenantilgar003.mp3",1911360769, 3372915409)
+ Dialog.AddOption("Keep it up!","FighterQuest2")
+ Dialog.Start()
+end
+
+function FighterQuest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "salute", 0, 0)
+ SetStepComplete(Spawn,Quest2,2)
+end
+
function waypoints(NPC)
MovementLoopAddLocation(NPC, 469.14, -20.96, 194.86, 2, 0)
MovementLoopAddLocation(NPC, 406.76, -20.87, 145.25, 2, 8)
diff --git a/server/SpawnScripts/Qeynos/lanalie.lua b/server/SpawnScripts/Qeynos/lanalie.lua
index 95a68362f..6f6633fbb 100755
--- a/server/SpawnScripts/Qeynos/lanalie.lua
+++ b/server/SpawnScripts/Qeynos/lanalie.lua
@@ -6,6 +6,7 @@
Script Notes : Locations collected from Live
--]]
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+dofile("SpawnScripts/Generic/ExpelNonCitizen.lua")
function spawn(NPC)
AddTimer(NPC, 1900, "follow_Raleigh")
diff --git a/server/SpawnScripts/Qeynos/morgessa.lua b/server/SpawnScripts/Qeynos/morgessa.lua
index 421cd16da..02405a11e 100755
--- a/server/SpawnScripts/Qeynos/morgessa.lua
+++ b/server/SpawnScripts/Qeynos/morgessa.lua
@@ -127,22 +127,22 @@ function Door1(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
- else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/Qeynos/theodoric.lua b/server/SpawnScripts/Qeynos/theodoric.lua
index 1fc5f053f..1043f7a64 100755
--- a/server/SpawnScripts/Qeynos/theodoric.lua
+++ b/server/SpawnScripts/Qeynos/theodoric.lua
@@ -60,22 +60,24 @@ MovementLoopAddLocation(NPC, 578.07, -8.48, 126.71, 2, 0)
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
- choice = math.random(1,3)
+ choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","hungry",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/Qeynos2Room1/CaretakerFairlee.lua b/server/SpawnScripts/Qeynos2Room1/CaretakerFairlee.lua
index 5f858fa1c..f69f553da 100755
--- a/server/SpawnScripts/Qeynos2Room1/CaretakerFairlee.lua
+++ b/server/SpawnScripts/Qeynos2Room1/CaretakerFairlee.lua
@@ -9,6 +9,8 @@ require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+
+ if GetSpawnLocationID(NPC)==133779441 then
SetRequiredQuest(NPC, 5760, 1, 1) --BAUBBLESHIRE
SetRequiredQuest(NPC, 5760, 2, 1)
SetRequiredQuest(NPC, 5760, 3, 1)
@@ -16,10 +18,13 @@ function spawn(NPC)
SetRequiredQuest(NPC, 5760, 5, 1)
SetRequiredQuest(NPC, 5760, 6, 1)
SetRequiredQuest(NPC, 5760, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133786867 then
SetRequiredQuest(NPC, 5760, 11, 1)
SetRequiredQuest(NPC, 5760, 12, 1)
SetRequiredQuest(NPC, 5760, 13, 1)
+ end
+ if GetSpawnLocationID(NPC)==133779441 then
SetRequiredQuest(NPC, 5761, 1, 1) --WILLOW WOOD
SetRequiredQuest(NPC, 5761, 2, 1)
SetRequiredQuest(NPC, 5761, 3, 1)
@@ -27,10 +32,13 @@ function spawn(NPC)
SetRequiredQuest(NPC, 5761, 5, 1)
SetRequiredQuest(NPC, 5761, 6, 1)
SetRequiredQuest(NPC, 5761, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133786867 then
SetRequiredQuest(NPC, 5761, 11, 1)
SetRequiredQuest(NPC, 5761, 12, 1)
SetRequiredQuest(NPC, 5761, 13, 1)
+ end
+ if GetSpawnLocationID(NPC)==133779441 then
SetRequiredQuest(NPC, 5762, 1, 1) --STARCREST
SetRequiredQuest(NPC, 5762, 2, 1)
SetRequiredQuest(NPC, 5762, 3, 1)
@@ -38,10 +46,13 @@ function spawn(NPC)
SetRequiredQuest(NPC, 5762, 5, 1)
SetRequiredQuest(NPC, 5762, 6, 1)
SetRequiredQuest(NPC, 5762, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133786867 then
SetRequiredQuest(NPC, 5762, 11, 1)
SetRequiredQuest(NPC, 5762, 12, 1)
SetRequiredQuest(NPC, 5762, 13, 1)
+ end
+ if GetSpawnLocationID(NPC)==133779441 then
SetRequiredQuest(NPC, 5763, 1, 1) --NETTLEVILLE
SetRequiredQuest(NPC, 5763, 2, 1)
SetRequiredQuest(NPC, 5763, 3, 1)
@@ -49,10 +60,13 @@ function spawn(NPC)
SetRequiredQuest(NPC, 5763, 5, 1)
SetRequiredQuest(NPC, 5763, 6, 1)
SetRequiredQuest(NPC, 5763, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133786867 then
SetRequiredQuest(NPC, 5763, 11, 1)
SetRequiredQuest(NPC, 5763, 12, 1)
SetRequiredQuest(NPC, 5763, 13, 1)
+ end
+ if GetSpawnLocationID(NPC)==133779441 then
SetRequiredQuest(NPC, 5764, 1, 1) --GRAYSTONE
SetRequiredQuest(NPC, 5764, 2, 1)
SetRequiredQuest(NPC, 5764, 3, 1)
@@ -60,10 +74,13 @@ function spawn(NPC)
SetRequiredQuest(NPC, 5764, 5, 1)
SetRequiredQuest(NPC, 5764, 6, 1)
SetRequiredQuest(NPC, 5764, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133786867 then
SetRequiredQuest(NPC, 5764, 11, 1)
SetRequiredQuest(NPC, 5764, 12, 1)
SetRequiredQuest(NPC, 5764, 13, 1)
+ end
+ if GetSpawnLocationID(NPC)==133779441 then
SetRequiredQuest(NPC, 5765, 1, 1) --CASTLEVIEW
SetRequiredQuest(NPC, 5765, 2, 1)
SetRequiredQuest(NPC, 5765, 3, 1)
@@ -71,9 +88,11 @@ function spawn(NPC)
SetRequiredQuest(NPC, 5765, 5, 1)
SetRequiredQuest(NPC, 5765, 6, 1)
SetRequiredQuest(NPC, 5765, 7, 1)
+ elseif GetSpawnLocationID(NPC)==133786867 then
SetRequiredQuest(NPC, 5765, 11, 1)
SetRequiredQuest(NPC, 5765, 12, 1)
SetRequiredQuest(NPC, 5765, 13, 1)
+ end
end
function InRange(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/MarshalGlorfel.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/MarshalGlorfel.lua
index 740943057..8729a087d 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/MarshalGlorfel.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/MarshalGlorfel.lua
@@ -38,14 +38,14 @@ end
function hailed(NPC, Spawn)
if GetQuestStep (Spawn,BQCitizen)==3 or GetQuestStep (Spawn,CVQCitizen)==3 or GetQuestStep (Spawn,GQCitizen)==3 or GetQuestStep (Spawn,NQCitizen)==3 or GetQuestStep (Spawn,SCQCitizen)==3 or GetQuestStep (Spawn,WWQCitizen)==3 then
Dialog1(NPC,Spawn)
-elseif GetQuestStep (Spawn,BQCitizen)==8 or GetQuestStep (Spawn,CVQCitizen)==8 or GetQuestStep (Spawn,GQCitizen)==8 or GetQuestStep (Spawn,NQCitizen)==8 or GetQuestStep (Spawn,SCQCitizen)==8 or GetQuestStep (Spawn,WWQCitizen)==8 then
+elseif GetQuestStep (Spawn,BQCitizen)==5 or GetQuestStep (Spawn,CVQCitizen)==5 or GetQuestStep (Spawn,GQCitizen)==5 or GetQuestStep (Spawn,NQCitizen)==5 or GetQuestStep (Spawn,SCQCitizen)==5 or GetQuestStep (Spawn,WWQCitizen)==5 then
Dialog2(NPC,Spawn)
-elseif GetQuestStep(Spawn,BQCitizen)<=7 and GetQuestStep(Spawn,BQCitizen)>=4 or
- GetQuestStep(Spawn,CVQCitizen)<=7 and GetQuestStep(Spawn,CVQCitizen)>=4 or
- GetQuestStep(Spawn,GQCitizen)<=7 and GetQuestStep(Spawn,GQCitizen)>=4 or
- GetQuestStep(Spawn,NQCitizen)<=7 and GetQuestStep(Spawn,NQCitizen)>=4 or
- GetQuestStep(Spawn,SCQCitizen)<=7 and GetQuestStep(Spawn,SCQCitizen)>=4 or
- GetQuestStep(Spawn,WWQCitizen)<=7 and GetQuestStep(Spawn,WWQCitizen)>=4 then
+elseif GetQuestStep(Spawn,BQCitizen)==4 or
+ GetQuestStep(Spawn,CVQCitizen)>=4 or
+ GetQuestStep(Spawn,GQCitizen)>=4 or
+ GetQuestStep(Spawn,NQCitizen)>=4 or
+ GetQuestStep(Spawn,SCQCitizen)>=4 or
+ GetQuestStep(Spawn,WWQCitizen)>=4 then
Dialog3(NPC,Spawn)
DoorCheck(NPC,Spawn)
@@ -60,7 +60,7 @@ end
function Dialog1(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Ya see, we got a problem with a group who decided to break away from Qeynos, and I heard of the fine things ya did on the Island of Refuge.")
+ Dialog.AddDialog("Ya see, we got a problem with a group who decided to break away from Qeynos, and I heard of the fine things ya did on the Island of Refuge.")
Dialog.AddVoiceover("voiceover/english/marshal_glorfel/qey_catacomb_epic01/marshalglorfel001.mp3", 1972383345, 185623710)
PlayFlavor(NPC,"","","nod",0,0,Spawn)
Dialog.AddOption("Who would want to do that?", "Option1A")
@@ -191,7 +191,7 @@ function Option1F(NPC,Spawn)
end
function DoorCheck(NPC,Spawn)
- Door = GetSpawn(NPC,22101355)
+ Door = GetSpawn(NPC,8250015)
if Door ~= nil then
Despawn(Door)
end
@@ -206,28 +206,28 @@ function Dialog2(NPC,Spawn)
Dialog.AddOption("I'm just glad I could serve Qeynos.")
Dialog.AddOption("As a citizen, what can I do now?", "Option2A")
Dialog.Start()
- if HasQuest(Spawn,BQCitizen) then
- SetStepComplete(Spawn,BQCitizen,8)
+ if HasQuest(Spawn,BQCitizen) and GetQuestStep(Spawn,BQCitizen)==5 then
+ SetStepComplete(Spawn,BQCitizen,5)
AddSpellBookEntry(Spawn, 8057, 1) --CALL TO QEYNOS
AddTimer(NPC,500,"Citizen",1,Spawn)
- elseif HasQuest(Spawn,CVQCitizen) then
- SetStepComplete(Spawn,CVQCitizen,8)
+ elseif HasQuest(Spawn,CVQCitizen) and GetQuestStep(Spawn,CVQCitizen)==5 then
+ SetStepComplete(Spawn,CVQCitizen,5)
AddSpellBookEntry(Spawn, 8057, 1) --CALL TO QEYNOS
AddTimer(NPC,500,"Citizen",1,Spawn)
- elseif HasQuest(Spawn,GQCitizen) then
- SetStepComplete(Spawn,GQCitizen,8)
+ elseif HasQuest(Spawn,GQCitizen) and GetQuestStep(Spawn,GQCitizen)==5 then
+ SetStepComplete(Spawn,GQCitizen,5)
AddSpellBookEntry(Spawn, 8057, 1) --CALL TO QEYNOS
AddTimer(NPC,500,"Citizen",1,Spawn)
- elseif HasQuest(Spawn,NQCitizen) then
- SetStepComplete(Spawn,NQCitizen,8)
+ elseif HasQuest(Spawn,NQCitizen) and GetQuestStep(Spawn,NQCitizen)==5 then
+ SetStepComplete(Spawn,NQCitizen,5)
AddSpellBookEntry(Spawn, 8057, 1) --CALL TO QEYNOS
AddTimer(NPC,500,"Citizen",1,Spawn)
- elseif HasQuest(Spawn,SCQCitizen) then
- SetStepComplete(Spawn,SCQCitizen,8)
+ elseif HasQuest(Spawn,SCQCitizen) and GetQuestStep(Spawn,SCQCitizen)==5 then
+ SetStepComplete(Spawn,SCQCitizen,5)
AddSpellBookEntry(Spawn, 8057, 1) --CALL TO QEYNOS
AddTimer(NPC,500,"Citizen",1,Spawn)
- elseif HasQuest(Spawn,WWQCitizen) then
- SetStepComplete(Spawn,WWQCitizen,8)
+ elseif HasQuest(Spawn,WWQCitizen) and GetQuestStep(Spawn,WWQCitizen)==5 then
+ SetStepComplete(Spawn,WWQCitizen,5)
AddSpellBookEntry(Spawn, 8057, 1) --CALL TO QEYNOS
AddTimer(NPC,500,"Citizen",1,Spawn)
end
@@ -251,7 +251,7 @@ end
SendMessage(Spawn, "You are now a Citizen of Qeynos!","yellow")
SendPopUpMessage(Spawn, "You are now a Citizen of Qeynos!",250,250,250)
PlaySound(Spawn, "sounds/test/endquest.wav", GetX(Spawn), GetY(Spawn), GetZ(Spawn), Spawn)
- ApplySpellVisual(Spawn, 323)
+ ApplySpellVisual(Spawn, 324)
end
function Option2A(NPC,Spawn)
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/TavithiNsari.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/TavithiNsari.lua
index 09d047674..a00ebf5a9 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/TavithiNsari.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/TavithiNsari.lua
@@ -6,6 +6,7 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
local BQCitizen = 5718
local CVQCitizen = 5719
@@ -14,17 +15,26 @@ local NQCitizen = 5721
local SCQCitizen = 5722
local WWQCitizen = 5723
-function spawn(NPC)
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SpawnSet(NPC,"model_type",79)
+ SpawnSet(NPC,"soga_model_type",4973)
+ SetTempVariable(NPC,"HailTimer",nil)
end
function InRange(NPC, Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HailTimer")~="1" then
PlayFlavor(NPC, "","No! Please don't hurt me!", "cringe", 0,0, Spawn)
end
+end
function hailed(NPC, Spawn)
+if GetTempVariable(NPC,"HailTimer")~="1" then
Dialog1(NPC, Spawn)
end
+end
function respawn(NPC)
spawn(NPC)
@@ -64,45 +74,126 @@ function Dialog3(NPC, Spawn)
end
function Dialog4(NPC, Spawn)
+ SetTempVariable(NPC,"HailTimer",1)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("You fool! You should've let me go when you had the chance! Prepare to be a stain on the floor of Innoruuk's realm!")
Dialog.AddVoiceover("voiceover/english/tavithi_n_sari/qey_catacomb_epic01/tavithinsari003.mp3", 3211336740, 2450849190)
PlayFlavor(NPC,"","","cackle",0,0,Spawn)
SpawnSet(NPC,"mood_state",11852)
- Dialog.AddOption("...", "AttackTimer")
+ AddTimer(NPC,4000,"Shimmer",1,Spawn)
+ AddTimer(NPC,6000,"Poof",1,Spawn)
+ AddTimer(NPC,8700,"AttackTimer",1,Spawn)
+ AddTimer(NPC,9100,"Poof2",1,Spawn)
+ Dialog.AddOption("...","Continue")
Dialog.Start()
end
+function Continue(NPC,Spawn)
+end
+
+function Shimmer(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_teleport_sparkle",0,0)
+
+end
+
+function Poof(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_teleport_appear",0,0)
+end
+
+function Poof2(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_dispell1_out",0,0)
+end
+
function AttackTimer(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ SpawnSet(NPC,"model_type",116)
+ SpawnSet(NPC,"soga_model_type",4965)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
AddTimer(NPC,1200,"Attacking",1,Spawn)
end
+
function Attacking(NPC,Spawn)
- SpawnSet(NPC,"attackable",1)
- SpawnSet(NPC,"show_level",1)
- SpawnSet(NPC,"command_primary",11)
Attack(NPC,Spawn)
end
function aggro(NPC,Spawn)
SpawnSet(NPC,"attackable",1)
SpawnSet(NPC,"show_level",1)
- SpawnSet(NPC,"command_primary",11)
+ SpawnSet(NPC,"command_primary","11")
+
end
function death(NPC,Spawn)
- if HasQuest(Spawn,BQCitizen) then
- SetStepComplete(Spawn,BQCitizen,7)
- elseif HasQuest(Spawn,CVQCitizen) then
- SetStepComplete(Spawn,CVQCitizen,7)
- elseif HasQuest(Spawn,GQCitizen) then
- SetStepComplete(Spawn,GQCitizen,7)
- elseif HasQuest(Spawn,NQCitizen) then
- SetStepComplete(Spawn,NQCitizen,7)
- elseif HasQuest(Spawn,SCQCitizen) then
- SetStepComplete(Spawn,SCQCitizen,7)
- elseif HasQuest(Spawn,WWQCitizen) then
- SetStepComplete(Spawn,WWQCitizen,7)
- end
- end
\ No newline at end of file
+local Mole = GetSpawn(NPC,8250011)
+local Refu = GetSpawn(NPC,8250012)
+local Part = GetSpawn(NPC,8250013)
+local Tavi = GetSpawn(NPC,8250014)
+if not HasLanguage(Spawn,2) then
+ PlayFlavor(NPC, "voiceover/english/optional3/darkelf_base_2/ft/darkelf/darkelf_base_2_1_garbled_gf_810a3ce3.mp3", "Dark in body and soul! Hah!", "", 1604363761, 647045676, Spawn, 2)
+end
+
+
+ if Mole == nil or not IsAlive(Mole) then
+ if Refu == nil or not IsAlive(Refu) then
+ if Part == nil or not IsAlive(Part) then
+ if Tavi == nil or not IsAlive(Tavi) then
+ if HasQuest(Spawn,BQCitizen) then
+ SetStepComplete(Spawn,BQCitizen,4)
+ elseif HasQuest(Spawn,CVQCitizen) then
+ SetStepComplete(Spawn,CVQCitizen,4)
+ elseif HasQuest(Spawn,GQCitizen) then
+ SetStepComplete(Spawn,GQCitizen,4)
+ elseif HasQuest(Spawn,NQCitizen) then
+ SetStepComplete(Spawn,NQCitizen,4)
+ elseif HasQuest(Spawn,SCQCitizen) then
+ SetStepComplete(Spawn,SCQCitizen,4)
+ elseif HasQuest(Spawn,WWQCitizen) then
+ SetStepComplete(Spawn,WWQCitizen,4)
+ end
+
+ end
+ end
+ end
+end
+end
+
+function FailureExit(NPC,Spawn)
+ if GetRace(Spawn)== 7 or GetRace(Spawn)== 5 then
+ BBShire = GetZone("Baubbleshire")
+ Zone(BBShire,Spawn,819.46, -20.60, -525.61, 200.47)
+
+ elseif GetRace(Spawn)== 0 or GetRace(Spawn)== 2 then
+ Gray = GetZone("graystone")
+ Zone(Gray,Spawn,865.03, -25.45, -97.91, 357.68)
+
+ elseif GetRace(Spawn)== 4 or GetRace(Spawn)== 8 then
+ CV = GetZone("castleview")
+ Zone(CV,Spawn,729.01, -21.10, -124.36, 290.81)
+
+ elseif GetRace(Spawn)== 9 or GetRace(Spawn)== 11 then
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+
+ elseif GetRace(Spawn)== 3 or GetRace(Spawn)== 8 then
+ SC = GetZone("starcrest")
+ Zone(SC,Spawn,704.07, -20.38, 264.40, 269.84)
+
+ elseif GetRace(Spawn)== 15 or GetRace(Spawn)== 16 or GetRace(Spawn)== 6 then
+ WW = GetZone("willowwood")
+ Zone(WW,Spawn,809.96, -21.30, -566.02, 323.13)
+
+ else
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+ end
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportmole.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportmole.lua
index c811f2600..c5402c107 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportmole.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportmole.lua
@@ -5,6 +5,7 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/CombatModule"
local BQCitizen = 5718
local CVQCitizen = 5719
local GQCitizen = 5720
@@ -12,7 +13,8 @@ local NQCitizen = 5721
local SCQCitizen = 5722
local WWQCitizen = 5723
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
local Level = GetLevel(NPC)
local level1 = 5
local level2 = 6
@@ -62,24 +64,38 @@ end
end
function death(NPC,Spawn)
- if HasQuest(Spawn,BQCitizen) then
- SetStepComplete(Spawn,BQCitizen,4)
- elseif HasQuest(Spawn,CVQCitizen) then
- SetStepComplete(Spawn,CVQCitizen,4)
- elseif HasQuest(Spawn,GQCitizen) then
- SetStepComplete(Spawn,GQCitizen,4)
- elseif HasQuest(Spawn,NQCitizen) then
- SetStepComplete(Spawn,NQCitizen,4)
- elseif HasQuest(Spawn,SCQCitizen) then
- SetStepComplete(Spawn,SCQCitizen,4)
- elseif HasQuest(Spawn,WWQCitizen) then
- SetStepComplete(Spawn,WWQCitizen,4)
- end
- if GetGender(NPC)== 2 then
- PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262, Spawn, 0)
- else
- PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn, 0)
-end
+local Mole = GetSpawn(NPC,8250011)
+local Refu = GetSpawn(NPC,8250012)
+local Part = GetSpawn(NPC,8250013)
+local Tavi = GetSpawn(NPC,8250014)
+
+ if Mole == nil or not IsAlive(Mole) then
+ if Refu == nil or not IsAlive(Refu) then
+ if Part == nil or not IsAlive(Part) then
+ if Tavi == nil or not IsAlive(Tavi) then
+ if HasQuest(Spawn,BQCitizen) then
+ SetStepComplete(Spawn,BQCitizen,4)
+ elseif HasQuest(Spawn,CVQCitizen) then
+ SetStepComplete(Spawn,CVQCitizen,4)
+ elseif HasQuest(Spawn,GQCitizen) then
+ SetStepComplete(Spawn,GQCitizen,4)
+ elseif HasQuest(Spawn,NQCitizen) then
+ SetStepComplete(Spawn,NQCitizen,4)
+ elseif HasQuest(Spawn,SCQCitizen) then
+ SetStepComplete(Spawn,SCQCitizen,4)
+ elseif HasQuest(Spawn,WWQCitizen) then
+ SetStepComplete(Spawn,WWQCitizen,4)
+ end
+
+ end
+ end
+ end
+ end
+ if GetGender(NPC)== 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gf_610c650e.mp3", "You must flee! I'll try to hold them.", "", 1612338229, 10301262, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/halfelf_base_1/ft/halfelf/halfelf_base_1_1_death_gm_610c650e.mp3", "You must flee! I'll try to hold them.", "", 3580386891, 3023137994, Spawn, 0)
+ end
end
function waypoints(NPC)
@@ -92,3 +108,37 @@ function waypoints(NPC)
end
+function FailureExit(NPC,Spawn)
+ if GetRace(Spawn)== 7 or GetRace(Spawn)== 5 then
+ BBShire = GetZone("Baubbleshire")
+ Zone(BBShire,Spawn,819.46, -20.60, -525.61, 200.47)
+
+ elseif GetRace(Spawn)== 0 or GetRace(Spawn)== 2 then
+ Gray = GetZone("graystone")
+ Zone(Gray,Spawn,865.03, -25.45, -97.91, 357.68)
+
+ elseif GetRace(Spawn)== 4 or GetRace(Spawn)== 8 then
+ CV = GetZone("castleview")
+ Zone(CV,Spawn,729.01, -21.10, -124.36, 290.81)
+
+ elseif GetRace(Spawn)== 9 or GetRace(Spawn)== 11 then
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+
+ elseif GetRace(Spawn)== 3 or GetRace(Spawn)== 8 then
+ SC = GetZone("starcrest")
+ Zone(SC,Spawn,704.07, -20.38, 264.40, 269.84)
+
+ elseif GetRace(Spawn)== 15 or GetRace(Spawn)== 16 or GetRace(Spawn)== 6 then
+ WW = GetZone("willowwood")
+ Zone(WW,Spawn,809.96, -21.30, -566.02, 323.13)
+
+ else
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+ end
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportpartisan.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportpartisan.lua
index 2755929bc..a6ddac4ba 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportpartisan.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/aFreeportpartisan.lua
@@ -6,6 +6,7 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
local BQCitizen = 5718
local CVQCitizen = 5719
local GQCitizen = 5720
@@ -13,13 +14,17 @@ local NQCitizen = 5721
local SCQCitizen = 5722
local WWQCitizen = 5723
-function spawn(NPC)
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function InRange(NPC, Spawn)
+if not IsInCombat(NPC) then
PlayFlavor(NPC, "","Hello, friend. You look like a sensible Qeynosian!", "", 0,0, Spawn)
end
+end
function hailed(NPC, Spawn)
Dialog1(NPC, Spawn)
@@ -59,7 +64,7 @@ function Dialog3(NPC, Spawn)
Dialog.AddDialog("I'm not asking you to trust my word ... trust my gold!")
Dialog.AddVoiceover("voiceover/english/a_freeport_partisan/qey_catacomb_epic01/bribingtraitor002.mp3", 298356076, 2184308899)
PlayFlavor(NPC,"","","whome",0,0,Spawn)
- Dialog.AddOption("Interesting. I will return shortly once I've considered this.")
+ Dialog.AddOption("A bribe, eh? I'm interested.","Fail")
Dialog.AddOption("Tempting, but I have a duty to Qeynos. You must face judgement for your deeds.", "AttackTimer")
Dialog.AddOption("No way!", "AttackTimer")
Dialog.Start()
@@ -72,10 +77,51 @@ end
function Attacking(NPC,Spawn)
SpawnSet(NPC,"attackable",1)
SpawnSet(NPC,"show_level",1)
- SpawnSet(NPC,"command_primary",11)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
Attack(NPC,Spawn)
end
+function Fail(NPC,Spawn)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"One who represents the city of Qeynos does not accept bribes.",255,50,50)
+ SendMessage(Spawn,"One who represents the city of Qeynos does not accept bribes.","red")
+ AddTimer(NPC,4500,"FailureExit",1,Spawn)
+end
+
+
+function FailureExit(NPC,Spawn)
+ if GetRace(Spawn)== 7 or GetRace(Spawn)== 5 then
+ BBShire = GetZone("Baubbleshire")
+ Zone(BBShire,Spawn,819.46, -20.60, -525.61, 200.47)
+
+ elseif GetRace(Spawn)== 0 or GetRace(Spawn)== 2 then
+ Gray = GetZone("graystone")
+ Zone(Gray,Spawn,865.03, -25.45, -97.91, 357.68)
+
+ elseif GetRace(Spawn)== 4 or GetRace(Spawn)== 8 then
+ CV = GetZone("castleview")
+ Zone(CV,Spawn,729.01, -21.10, -124.36, 290.81)
+
+ elseif GetRace(Spawn)== 9 or GetRace(Spawn)== 11 then
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+
+ elseif GetRace(Spawn)== 3 or GetRace(Spawn)== 8 then
+ SC = GetZone("starcrest")
+ Zone(SC,Spawn,704.07, -20.38, 264.40, 269.84)
+
+ elseif GetRace(Spawn)== 15 or GetRace(Spawn)== 16 or GetRace(Spawn)== 6 then
+ WW = GetZone("willowwood")
+ Zone(WW,Spawn,809.96, -21.30, -566.02, 323.13)
+
+ else
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+ end
+end
+
function aggro(NPC,Spawn)
SpawnSet(NPC,"attackable",1)
SpawnSet(NPC,"show_level",1)
@@ -84,17 +130,35 @@ function aggro(NPC,Spawn)
end
function death(NPC,Spawn)
- if HasQuest(Spawn,BQCitizen) then
- SetStepComplete(Spawn,BQCitizen,6)
- elseif HasQuest(Spawn,CVQCitizen) then
- SetStepComplete(Spawn,CVQCitizen,6)
- elseif HasQuest(Spawn,GQCitizen) then
- SetStepComplete(Spawn,GQCitizen,6)
- elseif HasQuest(Spawn,NQCitizen) then
- SetStepComplete(Spawn,NQCitizen,6)
- elseif HasQuest(Spawn,SCQCitizen) then
- SetStepComplete(Spawn,SCQCitizen,6)
- elseif HasQuest(Spawn,WWQCitizen) then
- SetStepComplete(Spawn,WWQCitizen,6)
- end
-end
\ No newline at end of file
+local Mole = GetSpawn(NPC,8250011)
+local Refu = GetSpawn(NPC,8250012)
+local Part = GetSpawn(NPC,8250013)
+local Tavi = GetSpawn(NPC,8250014)
+
+ if Mole == nil or not IsAlive(Mole) then
+ if Refu == nil or not IsAlive(Refu) then
+ if Part == nil or not IsAlive(Part) then
+ if Tavi == nil or not IsAlive(Tavi) then
+ if HasQuest(Spawn,BQCitizen) then
+ SetStepComplete(Spawn,BQCitizen,4)
+ elseif HasQuest(Spawn,CVQCitizen) then
+ SetStepComplete(Spawn,CVQCitizen,4)
+ elseif HasQuest(Spawn,GQCitizen) then
+ SetStepComplete(Spawn,GQCitizen,4)
+ elseif HasQuest(Spawn,NQCitizen) then
+ SetStepComplete(Spawn,NQCitizen,4)
+ elseif HasQuest(Spawn,SCQCitizen) then
+ SetStepComplete(Spawn,SCQCitizen,4)
+ elseif HasQuest(Spawn,WWQCitizen) then
+ SetStepComplete(Spawn,WWQCitizen,4)
+ end
+
+ end
+ end
+ end
+end
+end
+
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/adisgruntledrefugee.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/adisgruntledrefugee.lua
index a9b27dc63..7d5d01ae8 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/adisgruntledrefugee.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/adisgruntledrefugee.lua
@@ -6,6 +6,7 @@
:
--]]
require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
local BQCitizen = 5718
local CVQCitizen = 5719
@@ -14,18 +15,26 @@ local NQCitizen = 5721
local SCQCitizen = 5722
local WWQCitizen = 5723
-function spawn(NPC)
+
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"HailTimer",nil)
end
function InRange(NPC, Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HailTimer")==nil then
PlayFlavor(NPC, "","I'm so sorry... I didn't mean to do it!", "cry", 0,0, Spawn)
end
+end
function hailed(NPC, Spawn)
+if GetTempVariable(NPC,"HailTimer")==nil then
Dialog1(NPC, Spawn)
end
+end
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
@@ -38,7 +47,6 @@ function Dialog1(NPC, Spawn)
end
function Dialog2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("I made one mistake ... I cast my lot with these scoundrels, and yet, I've regretted it ever since. Can you not spare me? I wish only to go back to my former life and make amends to the Ironforges.")
Dialog.AddOption("Perhaps. I need to think upon this further.")
@@ -49,7 +57,6 @@ function Dialog2(NPC, Spawn)
end
function Dialog3(NPC, Spawn)
- FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("I'll do anything! I betrayed all who I loved by my actions, and I cannot bring myself to face the consequences.")
PlayFlavor(NPC,"","","beg",0,0,Spawn)
@@ -61,52 +68,83 @@ end
function ThankYou(NPC,Spawn)
- AddTimer(NPC,6400,"Runaway",1)
+ SetTempVariable(NPC,"HailTimer",1)
+ AddTimer(NPC,6400,"Runaway",1,Spawn)
+ AddTimer(NPC,8000,"Sigh",1,Spawn)
Update(NPC,Spawn)
PlayFlavor(NPC,"","","notworthy",0,0,Spawn)
+ CloseConversation(NPC,Spawn)
end
+function Sigh(NPC,Spawn)
+ Update(NPC,Spawn)
+ PlayFlavor(NPC,"","","sigh",0,0,Spawn)
+end
+
function Runaway(NPC,Spawn)
+ MovementLoopAddLocation(NPC, -3.64, -0.39, 2.39, 4,0,"Update")
+ MovementLoopAddLocation(NPC, -1.83, -0.39, -8.21, 4,0,"Update")
+ MovementLoopAddLocation(NPC, 16.44, -0.39, -9.29, 4,0,"Update")
+ MovementLoopAddLocation(NPC, 19.30, 1.17, -0.86, 4,0,"Leave")
+ MovementLoopAddLocation(NPC, -10.94, 0.99, 8.04 , 4,0,"Leave")
+end
+
+function Leave(NPC,Spawn)
Despawn(NPC)
- MoveToLocation(NPC, -10.91, -0.39, 1.64, 4)
--- MoveToLocation(NPC, -9.65, -0.39, -8.53, 4)
--- MoveToLocation(NPC, 16.44, -0.39, -9.29, 4)
--- MoveToLocation(NPC, 19.30, 1.17, -0.86, 4)
--- MoveToLocation(NPC, -10.94, 0.99, 8.04 , 4,"Leave")
+ Update(NPC,Spawn)
end
function death(NPC,Spawn)
Update(NPC,Spawn)
end
- function Update(NPC,Spawn)
- if HasQuest(Spawn,BQCitizen) then
- SetStepComplete(Spawn,BQCitizen,5)
- elseif HasQuest(Spawn,CVQCitizen) then
- SetStepComplete(Spawn,CVQCitizen,5)
- elseif HasQuest(Spawn,GQCitizen) then
- SetStepComplete(Spawn,GQCitizen,5)
- elseif HasQuest(Spawn,NQCitizen) then
- SetStepComplete(Spawn,NQCitizen,5)
- elseif HasQuest(Spawn,SCQCitizen) then
- SetStepComplete(Spawn,SCQCitizen,5)
- elseif HasQuest(Spawn,WWQCitizen) then
- SetStepComplete(Spawn,WWQCitizen,5)
- end
- end
+function Update(NPC,Spawn)
+local Mole = GetSpawn(NPC,8250011)
+local Refu = GetSpawn(NPC,8250012)
+local Part = GetSpawn(NPC,8250013)
+local Tavi = GetSpawn(NPC,8250014)
+ if Mole == nil or not IsAlive(Mole) then
+ --if Refu == nil or not IsAlive(Refu) then
+ if Part == nil or not IsAlive(Part) then
+ if Tavi == nil or not IsAlive(Tavi) then
+ if HasQuest(Spawn,BQCitizen) then
+ SetStepComplete(Spawn,BQCitizen,4)
+ elseif HasQuest(Spawn,CVQCitizen) then
+ SetStepComplete(Spawn,CVQCitizen,4)
+ elseif HasQuest(Spawn,GQCitizen) then
+ SetStepComplete(Spawn,GQCitizen,4)
+ elseif HasQuest(Spawn,NQCitizen) then
+ SetStepComplete(Spawn,NQCitizen,4)
+ elseif HasQuest(Spawn,SCQCitizen) then
+ SetStepComplete(Spawn,SCQCitizen,4)
+ elseif HasQuest(Spawn,WWQCitizen) then
+ SetStepComplete(Spawn,WWQCitizen,4)
+ end
+
+ --end
+ end
+ end
+end
+end
+
+
+
+
function Leave(NPC)
Despawn(NPC)
end
function AttackTimer(NPC,Spawn)
+ SpawnSet(NPC, "show_level", 1)
+ SpawnSet(NPC, "attackable", 1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
AddTimer(NPC,1200,"Attacking",1,Spawn)
end
function Attacking(NPC,Spawn)
- SpawnSet(NPC,"attackable",1)
- SpawnSet(NPC,"show_level",1)
- SpawnSet(NPC,"command_primary",11)
Attack(NPC,Spawn)
end
@@ -116,5 +154,38 @@ function aggro(NPC,Spawn)
SpawnSet(NPC,"command_primary",11)
end
+function FailureExit(NPC,Spawn)
+ if GetRace(Spawn)== 7 or GetRace(Spawn)== 5 then
+ BBShire = GetZone("Baubbleshire")
+ Zone(BBShire,Spawn,819.46, -20.60, -525.61, 200.47)
+
+ elseif GetRace(Spawn)== 0 or GetRace(Spawn)== 2 then
+ Gray = GetZone("graystone")
+ Zone(Gray,Spawn,865.03, -25.45, -97.91, 357.68)
+
+ elseif GetRace(Spawn)== 4 or GetRace(Spawn)== 8 then
+ CV = GetZone("castleview")
+ Zone(CV,Spawn,729.01, -21.10, -124.36, 290.81)
+
+ elseif GetRace(Spawn)== 9 or GetRace(Spawn)== 11 then
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+
+ elseif GetRace(Spawn)== 3 or GetRace(Spawn)== 8 then
+ SC = GetZone("starcrest")
+ Zone(SC,Spawn,704.07, -20.38, 264.40, 269.84)
+
+ elseif GetRace(Spawn)== 15 or GetRace(Spawn)== 16 or GetRace(Spawn)== 6 then
+ WW = GetZone("willowwood")
+ Zone(WW,Spawn,809.96, -21.30, -566.02, 323.13)
+
+ else
+ Net = GetZone("nettleville")
+ Zone(Net,Spawn,670.07, -20.39, 273.85, 114.78)
+ end
+end
+function victory(NPC,Spawn)
+ AddTimer(NPC,2500,"FailureExit",1,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/afallenknight.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/afallenknight.lua
index 0ed3f9aab..214823db9 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/afallenknight.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/afallenknight.lua
@@ -13,13 +13,13 @@ function spawn(NPC)
end
function InRange(NPC, Spawn)
- if GetQuestStep(Spawn, 5718) >=4 or GetQuestStep(Spawn, 5719) >=4 or GetQuestStep(Spawn, 5720) >=4 or GetQuestStep(Spawn, 5721) >=4 or GetQuestStep(Spawn, 5722) >=4 or GetQuestStep(Spawn, 5723) >=4 then
+ if GetQuestStep(Spawn, 5718) >=4 or GetQuestStep(Spawn, 5719) >=4 or GetQuestStep(Spawn, 5720) >=4 or GetQuestStep(Spawn, 5721) >=4 or GetQuestStep(Spawn, 5722) >=4 or GetQuestStep(Spawn, 5723) >=4 or GetFactionAmount(Spawn,11) >=30000 then
DoorCheck(NPC,Spawn)
end
end
function DoorCheck(NPC,Spawn)
- Door = GetSpawn(NPC,22101355)
+ Door = GetSpawn(NPC,8250015)
if Door ~= nil then
Despawn(Door)
end
diff --git a/server/SpawnScripts/QeynosCitizenshipTrialChamber/zonetoqeycity.lua b/server/SpawnScripts/QeynosCitizenshipTrialChamber/zonetoqeycity.lua
index 20de4b6f5..a3c40de31 100755
--- a/server/SpawnScripts/QeynosCitizenshipTrialChamber/zonetoqeycity.lua
+++ b/server/SpawnScripts/QeynosCitizenshipTrialChamber/zonetoqeycity.lua
@@ -5,14 +5,14 @@
Script Purpose :
:
--]]
+local BQCitizen = 5718
+local CVQCitizen = 5719
+local GQCitizen = 5720
+local NQCitizen = 5721
+local SCQCitizen = 5722
+local WWQCitizen = 5723
function spawn(NPC)
-SetRequiredQuest(NPC, 5718, 8, 0, 1)
-SetRequiredQuest(NPC, 5719, 8, 0, 1)
-SetRequiredQuest(NPC, 5720, 8, 0, 1)
-SetRequiredQuest(NPC, 5721, 8, 0, 1)
-SetRequiredQuest(NPC, 5722, 8, 0, 1)
-SetRequiredQuest(NPC, 5723, 8, 0, 1)
end
function respawn(NPC)
@@ -22,12 +22,22 @@ end
function casted_on(NPC, Player,SpellName)
if SpellName == 'Enter Qeynos' then
local con = CreateConversation()
+if not HasCompletedQuest(Player,BQCitizen) and
+not HasCompletedQuest(Player,CVQCitizen) and
+not HasCompletedQuest(Player,GQCitizen) and
+not HasCompletedQuest(Player,NQCitizen) and
+not HasCompletedQuest(Player,SCQCitizen) and
+not HasCompletedQuest(Player,WWQCitizen) then
+ SendMessage(Player,"You must be a citizen to enter the city.")
+ SendPopUpMessage(Player,"You must be a citizen to enter the city.",255,255,255)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+else
AddConversationOption(con, "Yes", "Leave")
AddConversationOption(con, "No","CloseConversation")
StartDialogConversation(con, 1, NPC, Player, "Do you wish to enter the city of Qeynos?")
end
end
-
+end
function Leave(NPC,Player)
CloseConversation(NPC,Player)
if GetRace(Player)== 7 or GetRace(Player)== 5 then -- Gnomes/Halflings
@@ -56,6 +66,6 @@ function Leave(NPC,Player)
else
SQ_Net = GetZone("southqeynos")
- Zone(SQ_Net,Spawn,680.79, -20.56, 270.90, 297.71)
+ Zone(SQ_Net,Player,680.79, -20.56, 270.90, 297.71)
end
end
diff --git a/server/SpawnScripts/QeynosHarbor/AerisLightwind.lua b/server/SpawnScripts/QeynosHarbor/AerisLightwind.lua
index 871509502..e37279854 100755
--- a/server/SpawnScripts/QeynosHarbor/AerisLightwind.lua
+++ b/server/SpawnScripts/QeynosHarbor/AerisLightwind.lua
@@ -59,10 +59,10 @@ function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
- Dialog.AddDialog("Look around? Freshest catch on the docks.")
+ Dialog.AddDialog("Look around! Freshest catch on the docks.")
Dialog.AddVoiceover("voiceover/english/merchant_aeris_lightwind/qey_harbor/aerislightwind000.mp3", 2050407066, 4101070387)
if not QuestStepIsComplete(Spawn,fishy,2) and HasQuest(Spawn,fishy) then
- Dialog.AddOption("Galsway looking for the best price for fish on the market. Might you have a deal for him?","FishQuestion")
+ Dialog.AddOption("Galsway is looking for the best price for fish on the market. Might you have a deal for him?","FishQuestion")
end
Dialog.AddOption("Not right now, thanks.")
Dialog.Start()
diff --git a/server/SpawnScripts/QeynosHarbor/AlfredIronforge.lua b/server/SpawnScripts/QeynosHarbor/AlfredIronforge.lua
index b32f25570..938f6f903 100755
--- a/server/SpawnScripts/QeynosHarbor/AlfredIronforge.lua
+++ b/server/SpawnScripts/QeynosHarbor/AlfredIronforge.lua
@@ -29,6 +29,8 @@ elseif GetTradeskillLevel(Spawn)==9 and GetTradeskillClass(Spawn)== 1 then
Dialog1(NPC,Spawn)
elseif GetTradeskillClass(Spawn)>1 then
AlreadySkilled(NPC,Spawn)
+elseif GetTradeskillClass(Spawn)<1 then
+ NotSkilled(NPC,Spawn)
end
end
diff --git a/server/SpawnScripts/QeynosHarbor/Aliindar.lua b/server/SpawnScripts/QeynosHarbor/Aliindar.lua
index 99368f3a3..166bcd7b5 100755
--- a/server/SpawnScripts/QeynosHarbor/Aliindar.lua
+++ b/server/SpawnScripts/QeynosHarbor/Aliindar.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
end
function respawn(NPC)
@@ -15,27 +15,29 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
+ if MakeRandomInt(1,100) >=66 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_aoi_99d45d79.mp3", "Let me guess -- you've come to pay tribute to Aliindar and request his services. Don't worry, I can make time on my schedule for your purchasing needs.", "point", 2303200858, 2955087046, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_aoi_1fefa590.mp3", "Hello there! Let's not waste any time shall we? What is it I can get for you?", "beckon", 1746996390, 2674526000, Spawn, 0)
+ end
+ end
end
+
function LeaveRange(NPC, Spawn)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
-
- local choice = math.random(1,5)
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_hail_3ff007fa.mp3", "Welcome, friend! The wares of an entire city are at your fingertips. So please make your selection.", "bye", 3892169564, 2246767706, Spawn)
elseif choice == 2 then
- PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_aoi_1fefa590.mp3", "Hello there! Let's not waste any time shall we? What is it I can get for you?", "beckon", 1746996390, 2674526000, Spawn)
+ PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_hail_52cd8074.mp3", "The Ironforge Exchange? The Far Seas Trading Company? Insects of industry, my friend, waiting to be crushed beneath my boot heel!", "royalwave", 946110005, 2012982404, Spawn)
elseif choice == 3 then
PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_hail_6a21669e.mp3", "Yes, I know you seek what I have access to. Then again, who doesn't? So what can I help you acquire?", "flustered", 224844673, 1559511128, Spawn)
- elseif choice == 4 then
- PlayFlavor(NPC, "", "Hello there. Could we please speed along this transaction? I have an appointment with Queen Antonia herself!", "nod", 1689589577, 4560189, Spawn)
- elseif choice == 5 then
- PlayFlavor(NPC, "voiceover/english/broker_aliindar/qey_harbor/031_con_merchant_aliindar_erudite_2_hail_52cd8074.mp3", "The Ironforge Exchange? The Far Seas Trading Company? Insects of industry, my friend, waiting to be crushed beneath my boot heel!", "royalwave", 946110005, 2012982404, Spawn)
- else
- end
-
+ end
end
diff --git a/server/SpawnScripts/QeynosHarbor/AnitaLandon.lua b/server/SpawnScripts/QeynosHarbor/AnitaLandon.lua
index fb062ff40..fb51dd75b 100755
--- a/server/SpawnScripts/QeynosHarbor/AnitaLandon.lua
+++ b/server/SpawnScripts/QeynosHarbor/AnitaLandon.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 3, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/ArrelSilvertongue.lua b/server/SpawnScripts/QeynosHarbor/ArrelSilvertongue.lua
index 23eca168d..db2b3be93 100755
--- a/server/SpawnScripts/QeynosHarbor/ArrelSilvertongue.lua
+++ b/server/SpawnScripts/QeynosHarbor/ArrelSilvertongue.lua
@@ -8,21 +8,21 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- if GetLevel(Spawn)==9 and GetClass(Spawn)==31 then
+ if GetLevel(Spawn)==19 and GetClass(Spawn)==31 then
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Hail nothing! Don't speak that foolishness to me! I can tell there is more to you than just adventuring. Ready to put your skills to a real test?")
Dialog.AddVoiceover("voiceover/english/arrell_silvertongue/qey_harbor/arrellsilvertongue001.mp3",1721901739, 3238691394)
- Dialog.AddOption("Not today. Thanks.")
+ Dialog.AddOption("Not today. Thanks.")
Dialog.Start()
else
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Oh bother! Is it really going to start hailing? I do so hate ill weather...")
--- Dialog.AddVoiceover("voiceover/english/arrell_silvertongue/qey_harbor/arrellsilvertongue000.mp3",1721901739, 3238691394)
+-- Dialog.AddVoiceover("voiceover/english/arrell_silvertongue/qey_harbor/arrellsilvertongue000.mp3",?, ?)
PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_3_1024.mp3","","sigh",0,0,Spawn)
Dialog.AddOption("No, not that kind of hail!")
Dialog.Start()
diff --git a/server/SpawnScripts/QeynosHarbor/AshildaMacHinry.lua b/server/SpawnScripts/QeynosHarbor/AshildaMacHinry.lua
index 773b8cc4a..fc378d91a 100755
--- a/server/SpawnScripts/QeynosHarbor/AshildaMacHinry.lua
+++ b/server/SpawnScripts/QeynosHarbor/AshildaMacHinry.lua
@@ -24,6 +24,7 @@ end
function spawn(NPC)
ProvidesQuest(NPC,pond)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "fishing_fight")
end
@@ -52,7 +53,7 @@ function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
- Dialog.AddDialog("Oh, I've tried just about everywhere. I get nibbles at most fishing holes, except for Crater Pond, outside the city gates. The big meteor that crashed in that pond poisoned and killed everything living in it's waters! Nothing grows in it's tainted waters now; not even pond scum.")
+ Dialog.AddDialog("Oh, I've tried just about everywhere. I get nibbles at most fishing holes -- except for Crater Pond outside the city gates. The bit of meteor that crashed in that pond poisoned and killed everything living in its waters. Nothing grows in its tainted waters now, not even pond scum.")
Dialog.AddVoiceover("voiceover/english/ashilda_machinry/qey_harbor/ashildamachinry001.mp3", 4148175362, 2095028620)
Dialog.AddOption("Interesting. Where is Crater Pond?", "Quest")
Dialog.AddOption("Wow, that sounds dreadful. Good luck out here!")
diff --git a/server/SpawnScripts/QeynosHarbor/AssistantHeckinfez.lua b/server/SpawnScripts/QeynosHarbor/AssistantHeckinfez.lua
index 93825eb3c..ae26fe2ec 100755
--- a/server/SpawnScripts/QeynosHarbor/AssistantHeckinfez.lua
+++ b/server/SpawnScripts/QeynosHarbor/AssistantHeckinfez.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/BackHallofSteeldoor.lua b/server/SpawnScripts/QeynosHarbor/BackHallofSteeldoor.lua
index f5988fdd4..adad91814 100755
--- a/server/SpawnScripts/QeynosHarbor/BackHallofSteeldoor.lua
+++ b/server/SpawnScripts/QeynosHarbor/BackHallofSteeldoor.lua
@@ -7,12 +7,25 @@
--]]
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 16, "InRange", "LeaveRange")
+end
+
+function InRange(NPC,Spawn)
+ if HasItem(Spawn,1001032,1) and not IsOpen(2210362) then
+ SetAccessToEntityCommand(Spawn,NPC,"Open", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+else
+ SetAccessToEntityCommand(Spawn,NPC,"Open", 1)
+ SpawnSet(NPC, "show_command_icon", 1)
+ SpawnSet(NPC, "display_hand_icon", 1)
+end
end
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Open' then
- if HasItem(Spawn,1001032,1) then
+ if HasItem(Spawn,1001032,1) and not IsOpen(2210362) then
local widget = GetSpawn(Spawn, 2210362)
OpenDoor(widget)
UseWidget(2210362)
@@ -25,6 +38,8 @@ function casted_on(NPC, Spawn, SpellName)
end
end
+
+
function CloseDoor(NPC)
local widget = GetSpawn(Spawn, 2210362)
CloseDoor(widget)
diff --git a/server/SpawnScripts/QeynosHarbor/BiddyFozletop.lua b/server/SpawnScripts/QeynosHarbor/BiddyFozletop.lua
index 94e4643cd..e0a338234 100755
--- a/server/SpawnScripts/QeynosHarbor/BiddyFozletop.lua
+++ b/server/SpawnScripts/QeynosHarbor/BiddyFozletop.lua
@@ -175,22 +175,22 @@ function Door3(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosHarbor/CordunBrenland.lua b/server/SpawnScripts/QeynosHarbor/CordunBrenland.lua
index 499c16d59..cd8f5623a 100755
--- a/server/SpawnScripts/QeynosHarbor/CordunBrenland.lua
+++ b/server/SpawnScripts/QeynosHarbor/CordunBrenland.lua
@@ -110,4 +110,4 @@ function FishDelivery2(NPC, Spawn)
SetStepComplete(Spawn,5585, 4)
end
-
\ No newline at end of file
+ --But while peace with Qeynos may serve my purposes for the moment, never let your guard falter. This shattered world needs strength, not mercy. And until there is but one nation on Norrath, we must always be prepared to strike against the weak.
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosHarbor/Frublestump.lua b/server/SpawnScripts/QeynosHarbor/Frublestump.lua
index 4c11dd957..85c9703de 100755
--- a/server/SpawnScripts/QeynosHarbor/Frublestump.lua
+++ b/server/SpawnScripts/QeynosHarbor/Frublestump.lua
@@ -58,7 +58,7 @@ function waypoints(NPC)
MovementLoopAddLocation(NPC, 877.09, -25.41, 47.16, 2, 0)
MovementLoopAddLocation(NPC, 865.11, -25.37, 55.39, 2, 20)
MovementLoopAddLocation(NPC, 864.66, -25.43, 27.11, 2, 0)
- MovementLoopAddLocation(NPC, 864.81, -25.43, 23.99, 2, 1)
+ MovementLoopAddLocation(NPC, 864.81, -25.43, 23.99, 2, 1,"Face")
MovementLoopAddLocation(NPC, 864.12, -25.43, 23.88, 2, 15,"EcologyEmotes")
MovementLoopAddLocation(NPC, 857.65, -25.47, 21.59, 2, 0)
MovementLoopAddLocation(NPC, 849.17, -25.46, 13.7, 2, 0)
@@ -117,24 +117,28 @@ function waypoints(NPC)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
+function Face(NPC)
+ SetHeading(NPC,205)
+end
+
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/QeynosHarbor/GerloffCrazyEyes.lua b/server/SpawnScripts/QeynosHarbor/GerloffCrazyEyes.lua
index 70cca8e82..dc95f235a 100755
--- a/server/SpawnScripts/QeynosHarbor/GerloffCrazyEyes.lua
+++ b/server/SpawnScripts/QeynosHarbor/GerloffCrazyEyes.lua
@@ -31,24 +31,24 @@ end
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/QeynosHarbor/GrisvaneStonearm.lua b/server/SpawnScripts/QeynosHarbor/GrisvaneStonearm.lua
index 548cbd0d4..c13438782 100755
--- a/server/SpawnScripts/QeynosHarbor/GrisvaneStonearm.lua
+++ b/server/SpawnScripts/QeynosHarbor/GrisvaneStonearm.lua
@@ -38,7 +38,7 @@ end
PlayFlavor(NPC, "voiceover/english/banker_grisvane_stonearm/qey_harbor/bankergrisvanestonearm000.mp3", "", "ponder", 959700799, 1039182816, Spawn)
local conversation = CreateConversation()
AddConversationOption(conversation, "Thank you.", "FinishQuest")
- StartConversation(conversation, NPC, Spawn, "Well then why didn't you just say so. Miss Nightbow is always first on my list! Let's see what we have here... hrmm- excellent! I'm glad to see she's done well this week! I can't say the same for last week. Let me write a recipt. I know she'll want one... Here you are! Good day. ")
+ StartConversation(conversation, NPC, Spawn, "Well then why didn't you just say so. Miss Nightbow is always first on my list! Let's see what we have here... hrmm- excellent! I'm glad to see she's done well this week! I can't say the same for last week. Let me write a receipt. I know she'll want one... Here you are! Good day. ")
end
function FinishQuest(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/HeatherAtherton.lua b/server/SpawnScripts/QeynosHarbor/HeatherAtherton.lua
index 5244a01aa..c17454746 100755
--- a/server/SpawnScripts/QeynosHarbor/HeatherAtherton.lua
+++ b/server/SpawnScripts/QeynosHarbor/HeatherAtherton.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
@@ -22,9 +23,16 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- local choice = MakeRandomInt(1,4)
-
+ local choice = MakeRandomInt(1,3)
if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/weaponsmith/human_weaponsmith_service_good_1_hail_gf_37dbcab8.mp3", "Welcome to my humble shop. We have quite a selection of weapons to choose from. See for yourself...", "salute", 4255221911, 515435702, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/weaponsmith/human_weaponsmith_service_good_1_hail_gf_46ed66f6.mp3", "Never go into battle without a tried and trusted weapon. Take a look at what we have in stock.", "no", 3298861742, 233264155, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/halfelf_eco_good_1/ft/service/weaponsmith/halfelf_weaponsmith_service_good_1_hail_gf_1248b278.mp3", "I just got a shipment in from the Far Sea's Trading Company. I don't just show anybody this stuff so, shhhh! ", "wink", 3358731085, 3359597024, Spawn)
+ end
+
+--[[ if choice == 1 then
PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/armorsmith/human_armorsmith_service_good_1_hail_gf_bb02310.mp3", "Coin is no object when gaining protection from your enemies. What price can be put on your safety? ", "glare", 93047397, 3216144520, Spawn, 0)
elseif choice == 2 then
PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/armorsmith/human_armorsmith_service_good_1_hail_gf_58a92b79.mp3", "You can never be too careful when it comes to protection. Here, try on one of these.", "agree", 3342234015, 3894819487, Spawn, 0)
@@ -33,6 +41,6 @@ function hailed(NPC, Spawn)
elseif choice == 4 then
PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/armorsmith/human_armorsmith_service_good_1_hail_gf_db7232a3.mp3", "Well, that suit is looking a mite worn. Can I interest you in a new suit of fine armor? ", "ponder", 2349039589, 2731635835, Spawn, 0)
end
-
+]]--
end
diff --git a/server/SpawnScripts/QeynosHarbor/IanCathlan.lua b/server/SpawnScripts/QeynosHarbor/IanCathlan.lua
old mode 100644
new mode 100755
diff --git a/server/SpawnScripts/QeynosHarbor/InnkeeperGalsway.lua b/server/SpawnScripts/QeynosHarbor/InnkeeperGalsway.lua
index c51be9735..23bb26b30 100755
--- a/server/SpawnScripts/QeynosHarbor/InnkeeperGalsway.lua
+++ b/server/SpawnScripts/QeynosHarbor/InnkeeperGalsway.lua
@@ -56,10 +56,11 @@ end
function Dialog3(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Looking for work, eh? Well, alright. Let's see what you can do. Go to the fisherman's market and find me the best price on three baskets of fresh fish. Here, let me write down the merchant's names for you. Let's just call this a test of your abiities!")
+ Dialog.AddDialog("Looking for work, eh? Well, alright. Let's see what you can do. Go to the fisherman's market and find me the best price on three baskets of fresh fish. Here, let me write down the merchants' names for you. Let's just call this a test of your abilities!")
Dialog.AddVoiceover("voiceover/english/innkeeper_galsway/qey_harbor/qst_innkeepergalsway000.mp3", 2510257560, 588326201)
Dialog.AddOption("Alright. I'll ask around the harbor market for you.", "QuestStart")
- Dialog.AddOption("Not sure what I expected coming from a place called 'Fish's Alehouse and Inn', but I'm not interested in this sorty of fishy business.")
+ Dialog.AddOption("Not sure what I expected coming from a place called \"Fish's Alehouse and Inn\" but I'm not interested in this sorty of fishy business.")
+ Dialog.AddOption("No thanks. I'm not going to run all over the place to check on your fish.")
Dialog.Start()
end
@@ -87,7 +88,7 @@ function MessageDelivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC,"","","sigh",0,0,Spawn)
- Dialog.AddDialog("Well, that is a shame. The patrons will be disappointed. I'll have to dock his wages, but at least the crowd can keep drinking until the troupe arives! Let Dawson know I'm anxiously awaiting his arrival.")
+ Dialog.AddDialog("Well, that is a shame. The patrons will be disappointed. I'll have to dock his wages, but at least the crowd can keep drinking until the troupe arrives! Let Dawson know I'm anxiously awaiting his arrival.")
Dialog.AddVoiceover("voiceover/english/dawson_magnificent/qey_north/quests/dawsonmagnificent/galsway_dawson_x1_initial.mp3", 1399252863, 3888111882)
Dialog.AddOption("I'll be sure to let him know. ","MessageFinished")
Dialog.Start()
diff --git a/server/SpawnScripts/QeynosHarbor/JandahThornbrush.lua b/server/SpawnScripts/QeynosHarbor/JandahThornbrush.lua
index 85a8c1018..1d8908d80 100755
--- a/server/SpawnScripts/QeynosHarbor/JandahThornbrush.lua
+++ b/server/SpawnScripts/QeynosHarbor/JandahThornbrush.lua
@@ -23,7 +23,7 @@ function InRange(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/QeynosHarbor/JarcolynOGallothen.lua b/server/SpawnScripts/QeynosHarbor/JarcolynOGallothen.lua
index a91f297c4..7dd731702 100755
--- a/server/SpawnScripts/QeynosHarbor/JarcolynOGallothen.lua
+++ b/server/SpawnScripts/QeynosHarbor/JarcolynOGallothen.lua
@@ -113,36 +113,36 @@ end
function Animate(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,12030) --square
+ PlayFlavor(NPC,"","","square",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,12978) --ponder
+ PlayFlavor(NPC,"","","ponder",0,0)
elseif choice == 3 then
- PlayAnimation(NPC,13056) --tapfoot
+ PlayFlavor(NPC,"","","tapfoot",0,0)
else
- PlayAnimation(NPC,12329)--sniff
+ PlayFlavor(NPC,"","","sniff",0,0)
end
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/QeynosHarbor/KatrinaMullner.lua b/server/SpawnScripts/QeynosHarbor/KatrinaMullner.lua
index 6c5e800a5..7ada23c17 100755
--- a/server/SpawnScripts/QeynosHarbor/KatrinaMullner.lua
+++ b/server/SpawnScripts/QeynosHarbor/KatrinaMullner.lua
@@ -43,24 +43,24 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
function waypoints(NPC)
diff --git a/server/SpawnScripts/QeynosHarbor/KeigwynMacinshire.lua b/server/SpawnScripts/QeynosHarbor/KeigwynMacinshire.lua
index d0c56c764..d023232df 100755
--- a/server/SpawnScripts/QeynosHarbor/KeigwynMacinshire.lua
+++ b/server/SpawnScripts/QeynosHarbor/KeigwynMacinshire.lua
@@ -9,6 +9,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/LindyDawn.lua b/server/SpawnScripts/QeynosHarbor/LindyDawn.lua
index b27f038b3..a2693664e 100755
--- a/server/SpawnScripts/QeynosHarbor/LindyDawn.lua
+++ b/server/SpawnScripts/QeynosHarbor/LindyDawn.lua
@@ -23,24 +23,24 @@ function InRange(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
function Door1(NPC,Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/Loomilias.lua b/server/SpawnScripts/QeynosHarbor/Loomilias.lua
index 537bc3824..c5d48f202 100755
--- a/server/SpawnScripts/QeynosHarbor/Loomilias.lua
+++ b/server/SpawnScripts/QeynosHarbor/Loomilias.lua
@@ -60,7 +60,7 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
diff --git a/server/SpawnScripts/QeynosHarbor/MadamIstynia.lua b/server/SpawnScripts/QeynosHarbor/MadamIstynia.lua
index 15fd91276..1444465c2 100755
--- a/server/SpawnScripts/QeynosHarbor/MadamIstynia.lua
+++ b/server/SpawnScripts/QeynosHarbor/MadamIstynia.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/QeynosHarbor/MaryDillon.lua b/server/SpawnScripts/QeynosHarbor/MaryDillon.lua
index 5df441fc9..8aa407e2d 100755
--- a/server/SpawnScripts/QeynosHarbor/MaryDillon.lua
+++ b/server/SpawnScripts/QeynosHarbor/MaryDillon.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_sad")
end
function respawn(NPC)
@@ -26,8 +27,8 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1053.mp3", "", "", 0, 0, Spawn)
AddConversationOption(conversation, "Nothing.", "dlg_11_1")
- StartConversation(conversation, NPC, Spawn, "What?")
- if convo==18 then
+ StartConversation(conversation, NPC, Spawn, "What?")
+--[[ if convo==18 then
PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1053.mp3", "", "", 0, 0, Spawn)
AddConversationOption(conversation, "Nothing.", "dlg_18_1")
StartConversation(conversation, NPC, Spawn, "What?")
@@ -41,7 +42,7 @@ function hailed(NPC, Spawn)
if convo==20 then
PlayFlavor(NPC, "", "Just leave me alone. Please!", "no", 1689589577, 4560189, Spawn)
- end
+ end]]--
end
diff --git a/server/SpawnScripts/QeynosHarbor/MirandaWhiting.lua b/server/SpawnScripts/QeynosHarbor/MirandaWhiting.lua
index 08d5daf5a..a09932121 100755
--- a/server/SpawnScripts/QeynosHarbor/MirandaWhiting.lua
+++ b/server/SpawnScripts/QeynosHarbor/MirandaWhiting.lua
@@ -10,7 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
--- waypoints(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/MitchellMcNolan.lua b/server/SpawnScripts/QeynosHarbor/MitchellMcNolan.lua
index 24eb6b45f..265b2a39b 100755
--- a/server/SpawnScripts/QeynosHarbor/MitchellMcNolan.lua
+++ b/server/SpawnScripts/QeynosHarbor/MitchellMcNolan.lua
@@ -23,24 +23,24 @@ function InRange(NPC,Spawn)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
function Door1(NPC,Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/NelisGreenpocket.lua b/server/SpawnScripts/QeynosHarbor/NelisGreenpocket.lua
index 83ec1dd19..b671c80f8 100755
--- a/server/SpawnScripts/QeynosHarbor/NelisGreenpocket.lua
+++ b/server/SpawnScripts/QeynosHarbor/NelisGreenpocket.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/QeynosHarbor/NimberFastfoot.lua b/server/SpawnScripts/QeynosHarbor/NimberFastfoot.lua
index 60584dd31..150cdd26d 100755
--- a/server/SpawnScripts/QeynosHarbor/NimberFastfoot.lua
+++ b/server/SpawnScripts/QeynosHarbor/NimberFastfoot.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/OverseerScarborough.lua b/server/SpawnScripts/QeynosHarbor/OverseerScarborough.lua
index 9d29bc289..7ef0d29d4 100755
--- a/server/SpawnScripts/QeynosHarbor/OverseerScarborough.lua
+++ b/server/SpawnScripts/QeynosHarbor/OverseerScarborough.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
AddTimer(NPC, 5000, "EmoteLoop")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/RoyalLibrarianBrinn.lua b/server/SpawnScripts/QeynosHarbor/RoyalLibrarianBrinn.lua
new file mode 100755
index 000000000..d318c5ba7
--- /dev/null
+++ b/server/SpawnScripts/QeynosHarbor/RoyalLibrarianBrinn.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/QeynosHarbor/RoyalLibrarianBrinn.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.22 04:09:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosHarbor/SamwellBrighton.lua b/server/SpawnScripts/QeynosHarbor/SamwellBrighton.lua
index ae470f410..7259a5e08 100755
--- a/server/SpawnScripts/QeynosHarbor/SamwellBrighton.lua
+++ b/server/SpawnScripts/QeynosHarbor/SamwellBrighton.lua
@@ -7,6 +7,7 @@
--]]
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
diff --git a/server/SpawnScripts/QeynosHarbor/SeanWellfayer.lua b/server/SpawnScripts/QeynosHarbor/SeanWellfayer.lua
index 3f12411fe..a7bd925c8 100755
--- a/server/SpawnScripts/QeynosHarbor/SeanWellfayer.lua
+++ b/server/SpawnScripts/QeynosHarbor/SeanWellfayer.lua
@@ -14,6 +14,7 @@ require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
ProvidesQuest(NPC,bait)
+ SetInfoStructString(NPC, "action_state", "fishing_fight")
end
@@ -64,8 +65,8 @@ function Dialog1(NPC, Spawn)
if not HasQuest(Spawn,bait) and not HasCompletedQuest(Spawn,bait) then
Dialog.AddOption("How are the fish biting today?", "Dialog2")
end
- if GetQuestStep(Spawn,bait)==2 then
- Dialog.AddOption("I've brought the fairy wings and slug meat you were looking for.", "Dialog3")
+ if GetQuestStep(Spawn,bait)==3 then
+ Dialog.AddOption("I've brought the fairy wings and slug meat you were looking for.", "JobDone")
end
Dialog.AddOption("Not interested right now. Good luck on your next catch.")
Dialog.Start()
@@ -98,5 +99,5 @@ end
function JobDone(NPC, Spawn)
FaceTarget(NPC, Spawn)
- SetStepComplete(Spawn,bait, 2)
+ SetStepComplete(Spawn,bait, 3)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/QeynosHarbor/SmithHolgren.lua b/server/SpawnScripts/QeynosHarbor/SmithHolgren.lua
index 2986a9cd3..c09dd5905 100755
--- a/server/SpawnScripts/QeynosHarbor/SmithHolgren.lua
+++ b/server/SpawnScripts/QeynosHarbor/SmithHolgren.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/QeynosHarbor/SquireMoorford.lua b/server/SpawnScripts/QeynosHarbor/SquireMoorford.lua
index 052b24585..f5828f313 100755
--- a/server/SpawnScripts/QeynosHarbor/SquireMoorford.lua
+++ b/server/SpawnScripts/QeynosHarbor/SquireMoorford.lua
@@ -1,37 +1,59 @@
--[[
Script Name : SpawnScripts/QeynosHarbor/SquireMoorford.lua
Script Purpose : Squire Moorford
- Script Author : Cynnar
- Script Date : 2020.04.12
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Author : Dorbin
+ Script Date : 2022.12.10
+ Script Notes : Quest script is fabricated, but based loosely from japanese translations
--]]
+require "SpawnScripts/Generic/DialogModule"
+local Quest2 = 5788
+
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function InRange(NPC, Spawn)
-end
-
-function LeaveRange(NPC, Spawn)
-end
-
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/squire_moorford/qey_harbor/privatemoorford000.mp3", "", "", 3116776153, 2836450585, Spawn)
- AddConversationOption(conversation, "Keep up the good work!", "dlg_1_1")
- StartConversation(conversation, NPC, Spawn, "Hello! How can I help you? It's my proud duty to help keep this harbor safe!")
- if convo==12 then
- PlayFlavor(NPC, "voiceover/english/squire_moorford/qey_harbor/privatemoorford000.mp3", "", "", 3116776153, 2836450585, Spawn)
- AddConversationOption(conversation, "Keep up the good work!", "dlg_12_1")
- StartConversation(conversation, NPC, Spawn, "Hello! How can I help you? It's my proud duty to help keep this harbor safe!")
- end
-
+Dialog1(NPC, Spawn)
end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello! How can I help you? It's my proud duty to help keep this harbor safe!")
+ Dialog.AddVoiceover("voiceover/english/squire_moorford/qey_harbor/privatemoorford000.mp3", 3116776153, 2836450585)
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)>=1 and GetQuestStep(Spawn,Quest2)<=3 and not QuestStepIsComplete(Spawn,Quest2,3) then
+ Dialog.AddOption("What drives you to be a guard?","Dialog2")
+ end
+ Dialog.AddOption("Keep up the good work!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh... I suppose I haven't thought about it in a while. I guess the idea that I am a protector from the troubles of the world, and all its chaos, gives me drive to keep our citizens safe. The bulwark against tyrany and all that. Sounds almost romantic, doesn't it?")
+ Dialog.AddVoiceover("voiceover/english/squire_moorford/qey_harbor/privatemoorford001.mp3", 3116776153, 2836450585) --WE DON'T HAVE THE KEYS 2022
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("Are you ever afraid? ","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Absolutely! I would be a fool to not experience fear occasionally. It is how I channel that fear which is the real test. That is why I became a guard, to give Qeynos and her citizens peace of mind to live their lives.")
+ Dialog.AddVoiceover("voiceover/english/squire_moorford/qey_harbor/privatemoorford002.mp3", 3116776153, 2836450585)--WE DON'T HAVE THE KEYS 2022
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Well don't lower your guard, and thank you for your protection!","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "salute", 0, 0)
+ SetStepComplete(Spawn,Quest2,3)
+end
diff --git a/server/SpawnScripts/QeynosHarbor/TipsyTina.lua b/server/SpawnScripts/QeynosHarbor/TipsyTina.lua
index 32b214873..e123f42f0 100755
--- a/server/SpawnScripts/QeynosHarbor/TipsyTina.lua
+++ b/server/SpawnScripts/QeynosHarbor/TipsyTina.lua
@@ -29,24 +29,24 @@ function respawn(NPC)
end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,3)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
function waypoints(NPC)
diff --git a/server/SpawnScripts/QeynosHarbor/ToraShadyleaf.lua b/server/SpawnScripts/QeynosHarbor/ToraShadyleaf.lua
index cf46e3397..c8feadcc4 100755
--- a/server/SpawnScripts/QeynosHarbor/ToraShadyleaf.lua
+++ b/server/SpawnScripts/QeynosHarbor/ToraShadyleaf.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/TymatIronnose.lua b/server/SpawnScripts/QeynosHarbor/TymatIronnose.lua
index 4018b255c..6e587a287 100755
--- a/server/SpawnScripts/QeynosHarbor/TymatIronnose.lua
+++ b/server/SpawnScripts/QeynosHarbor/TymatIronnose.lua
@@ -10,6 +10,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
SetPlayerProximityFunction(NPC, 2, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/QeynosHarbor/UmliGrayfist.lua b/server/SpawnScripts/QeynosHarbor/UmliGrayfist.lua
index 799f59a2e..8359deac9 100755
--- a/server/SpawnScripts/QeynosHarbor/UmliGrayfist.lua
+++ b/server/SpawnScripts/QeynosHarbor/UmliGrayfist.lua
@@ -72,7 +72,7 @@ function FishQuestion(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
- Dialog.AddDialog("My best price, eh? So the old grubber is shopping for a deal. Hmm, he does run a big place... and I really need to sell this stock! Okay, you tell Galsway I'll give him a five percent break- but the deal's off if he tells anyone how generous I am!")
+ Dialog.AddDialog("Me best price, eh? So, the old grubber is shopping for a better deal, hmm. He does run a big place, and I really need to sell this stock ... Okay, you tell Galsway I'll give him a five percent break. But the deal's off if he tells anyone how generous I am.")
Dialog.AddVoiceover("voiceover/english/merchant_umli_grayfist/qey_harbor/umligrayfist001.mp3", 4032126743, 224777324)
Dialog.AddOption("Fair enough. I'll let him know about your offer. Thanks!", "ThankYou")
Dialog.Start()
diff --git a/server/SpawnScripts/QeynosHarbor/VernonTinworthy.lua b/server/SpawnScripts/QeynosHarbor/VernonTinworthy.lua
index 181cd2f95..8f476ab5e 100755
--- a/server/SpawnScripts/QeynosHarbor/VernonTinworthy.lua
+++ b/server/SpawnScripts/QeynosHarbor/VernonTinworthy.lua
@@ -9,6 +9,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/QeynosHarbor/zonetoqeyepic06p12irontoes.lua b/server/SpawnScripts/QeynosHarbor/zonetoqeyepic06p12irontoes.lua
new file mode 100755
index 000000000..64bdc2b3b
--- /dev/null
+++ b/server/SpawnScripts/QeynosHarbor/zonetoqeyepic06p12irontoes.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/QeynosHarbor/zonetoqeyepic06p12irontoes.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.05 05:12:05
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5783,1,0,0,1)
+ SetRequiredQuest(NPC,5785,1,0,0,1)
+ SetRequiredQuest(NPC,5789,1,0,0,1)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Enter the Cache' then
+ if HasQuest(Spawn,5783) and not HasCompletedQuest(Spawn,5783) then
+ Rogue = GetZone("Rogue_Cache")
+ Zone(Rogue,Spawn)
+ elseif HasQuest(Spawn,5785) and not HasCompletedQuest(Spawn,5785) then
+ Predator = GetZone("Cache")
+ Zone(Predator,Spawn)
+ elseif HasQuest(Spawn,5789) and not HasCompletedQuest(Spawn,5789) then
+ Predator = GetZone("BuccaneersHideout")
+ Zone(Predator,Spawn)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QueensColony/Goblintent13.lua b/server/SpawnScripts/QueensColony/Goblintent13.lua
new file mode 100755
index 000000000..7b8be6cbb
--- /dev/null
+++ b/server/SpawnScripts/QueensColony/Goblintent13.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/QueensColony/Goblintent13.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.02 08:04:06
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/QueensColony/goblintent01.lua b/server/SpawnScripts/QueensColony/goblintent01.lua
new file mode 100755
index 000000000..d9e46a9a0
--- /dev/null
+++ b/server/SpawnScripts/QueensColony/goblintent01.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/QueensColony/goblintent01.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.02 08:04:37
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Rogue_IrontoeInn/LieutenantViceroy.lua b/server/SpawnScripts/Rogue_IrontoeInn/LieutenantViceroy.lua
new file mode 100755
index 000000000..60f00e58e
--- /dev/null
+++ b/server/SpawnScripts/Rogue_IrontoeInn/LieutenantViceroy.lua
@@ -0,0 +1,90 @@
+--[[
+ Script Name : SpawnScripts/Rogue_IrontoeInn/LieutenantViceroy.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.03 05:12:29
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+waypoints(NPC)
+ SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) >= 6 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,6000,"Checking",1,Spawn)
+ AddTimer(NPC,8500,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The Lieutenant heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm? I thought I heard something.", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) then
+ Attack(NPC,Spawn)
+ end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function ResetGuardEmote(NPC,Spawn)
+ if not IsInCombat(NPC) then
+ choice = MakeRandomInt(1,2)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function ResetGuard(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 0.15, 6.23, 2, 2, 0)
+ MovementLoopAddLocation(NPC, 1.82, 6.23, 0.64, 2, 6)
+ MovementLoopAddLocation(NPC, 1.82, 6.23, 0.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2.23, 6.23, 4.58, 2, 0)
+ MovementLoopAddLocation(NPC, -3.57, 6.23, 6.67, 2, 8,"Face")
+ MovementLoopAddLocation(NPC, -3.76, 6.23, 6.45, 2, 0)
+ MovementLoopAddLocation(NPC, -0.05, 6.23, 2.09, 2, 0)
+end
+
+function Face(NPC)
+ SetHeading(NPC,50)
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_notcitizen_gm_48350e59.mp3", "You're not allowed in here!", "", 1734668326, 429140096, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_notcitizen_gm_7a80a6a8.mp3", "I thought I smelled something foul.", "", 4043801631, 2162078490, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_kill_gm_2b7f45ad.mp3", "For the glory of Qeynos!", "", 1601992673, 279003315, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Rogue_IrontoeInn/aChest.lua b/server/SpawnScripts/Rogue_IrontoeInn/aChest.lua
new file mode 100755
index 000000000..6e0238707
--- /dev/null
+++ b/server/SpawnScripts/Rogue_IrontoeInn/aChest.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Rogue_IrontoeInn/aChest.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.03 03:12:08
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5786,1,0,0,1)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search Chest' and not IsInCombat(Spawn) and GetDistance(NPC,Spawn) <= 6 then
+ SetStepComplete(Spawn,5786,1)
+ SendMessage(Spawn,"You quickly grab the written orders from the chest.")
+ elseif SpellName == 'Search Chest' and not IsInCombat(Spawn) and GetDistance(NPC,Spawn) > 6 then
+ SendMessage(Spawn,"You are too far from the chest to get a clear look.")
+ elseif SpellName == 'Search Chest' and IsInCombat(Spawn) then
+ SendMessage(Spawn,"You have been caught!")
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Rogue_IrontoeInn/aQeynosCacheGuard.lua b/server/SpawnScripts/Rogue_IrontoeInn/aQeynosCacheGuard.lua
new file mode 100755
index 000000000..73cdcc340
--- /dev/null
+++ b/server/SpawnScripts/Rogue_IrontoeInn/aQeynosCacheGuard.lua
@@ -0,0 +1,142 @@
+--[[
+ Script Name : SpawnScripts/Rogue_IrontoeInn/aQeynosCacheGuard.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.03 05:12:25
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+waypoints(NPC)
+ SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) <=0 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,6000,"Checking",1,Spawn)
+ AddTimer(NPC,8000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,9000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The guard heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function LeaveRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=8 and HasMoved(Spawn) then
+ Attack(NPC,Spawn)
+ end
+end
+
+
+function ResetGuardEmote(NPC,Spawn)
+ if not IsInCombat(NPC) then
+ choice = MakeRandomInt(1,2)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function ResetGuard(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="false" then
+ SetTempVariable(NPC, "OnGuard", "true")
+ end
+end
+
+function waypoints(NPC)
+zone = GetZone(NPC)
+ if GetSpawnLocationID(NPC)==133780970 then
+ MovementLoopAddLocation(NPC, -4.92, -0.27, 10.28, 2, 0)
+ MovementLoopAddLocation(NPC, -4.92, -0.27, 10.28, 2, 0)
+ MovementLoopAddLocation(NPC, -4.92, -0.27, 10.28, 2, 12)
+ MovementLoopAddLocation(NPC, -4.92, -0.27, 10.28, 2, 0)
+ MovementLoopAddLocation(NPC, -4, -0.27, 8.64, 2, 0)
+ MovementLoopAddLocation(NPC, -2.29, -0.27, 6.19, 2, 0)
+ MovementLoopAddLocation(NPC, -1.76, -0.27, 5.77, 2, 12,"Face")
+ MovementLoopAddLocation(NPC, -1.71, -0.27, 6.49, 2, 0)
+ MovementLoopAddLocation(NPC, -4.5, -0.27, 8.27, 2, 0)
+ elseif GetSpawnLocationID(NPC)==133780971 then
+ MovementLoopAddLocation(NPC, -19.05, -0.27, 12.9, 2, 6)
+ MovementLoopAddLocation(NPC, -19.05, -0.27, 12.9, 2, 0)
+ MovementLoopAddLocation(NPC, -17.23, -0.27, 11.87, 2, 0)
+ MovementLoopAddLocation(NPC, -14.8, -0.27, 9.62, 2, 0)
+ MovementLoopAddLocation(NPC, -11.96, -0.27, 8.71, 2, 0)
+ MovementLoopAddLocation(NPC, -11.18, -0.27, 7.79, 2, 0)
+ MovementLoopAddLocation(NPC, -11.8, -0.27, 5.27, 2, 14)
+ MovementLoopAddLocation(NPC, -11.8, -0.27, 5.27, 2, 0)
+ MovementLoopAddLocation(NPC, -11.27, -0.27, 6.33, 2, 0)
+ MovementLoopAddLocation(NPC, -13.57, -0.27, 9.62, 2, 0)
+ MovementLoopAddLocation(NPC, -16.26, -0.27, 7.38, 2, 14)
+ MovementLoopAddLocation(NPC, -16.26, -0.27, 7.38, 2, 0)
+ MovementLoopAddLocation(NPC, -14.76, -0.27, 8.47, 2, 0)
+ MovementLoopAddLocation(NPC, -15.43, -0.27, 10.07, 2, 0)
+ MovementLoopAddLocation(NPC, -17.19, -0.27, 11.68, 2, 0)
+ elseif GetSpawnLocationID(NPC)==133780972 then
+ MovementLoopAddLocation(NPC, -28.18, -0.27, 3.56, 2, 10)
+ MovementLoopAddLocation(NPC, -28.18, -0.27, 3.56, 2, 0)
+ MovementLoopAddLocation(NPC, -25.8, -0.27, 0.91, 2, 0)
+ MovementLoopAddLocation(NPC, -23.95, -0.27, -1.04, 2, 0)
+ MovementLoopAddLocation(NPC, -23.05, -0.27, -2.91, 2, 2)
+ MovementLoopAddLocation(NPC, -23.05, -0.27, -2.91, 2, 0)
+ MovementLoopAddLocation(NPC, -19.03, -0.27, -0.99, 2, 0)
+ MovementLoopAddLocation(NPC, -17.47, -0.27, 1.89, 2, 0)
+ MovementLoopAddLocation(NPC, -21.66, -0.27, 6.59, 2, 0)
+ MovementLoopAddLocation(NPC, -23.87, -0.27, 8.39, 2, 12)
+ MovementLoopAddLocation(NPC, -23.87, -0.27, 8.39, 2, 0)
+ MovementLoopAddLocation(NPC, -20.83, -0.27, 5.5, 2, 0)
+ MovementLoopAddLocation(NPC, -20.55, -0.27, 4.26, 2, 0)
+ MovementLoopAddLocation(NPC, -24.97, -0.27, 0.2, 2, 0)
+ MovementLoopAddLocation(NPC, -26.55, -0.27, 1.61, 2, 0)
+ end
+end
+
+function Face(NPC)
+ SetHeading(NPC, 230)
+end
+
+function aggro(NPC,Spawn)
+ if GetGender(NPC)==1 then
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_notcitizen_gm_48350e59.mp3", "You're not allowed in here!", "", 1734668326, 429140096, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/human/human_eco_evil_1_notcitizen_gm_7a80a6a8.mp3", "I thought I smelled something foul.", "", 4043801631, 2162078490, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_kill_gm_2b7f45ad.mp3", "For the glory of Qeynos!", "", 1601992673, 279003315, Spawn)
+ end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/optional2/human_eco_evil_2/ft/human/human_eco_evil_2_notcitizen_gf_7a80a6a8.mp3", "I thought I smelled something foul.", "", 4060680490, 1058882345, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/human/human_eco_good_1_notcitizen_gf_48350e59.mp3", "You're not allowed in here!", "", 3258959596, 3448333109, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_kill_gf_2b7f45ad.mp3", "For the glory of Qeynos!", "", 2825851367, 3848266464, Spawn)
+end
+end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Rogue_IrontoeInn/adistractedQeynosCacheguard.lua b/server/SpawnScripts/Rogue_IrontoeInn/adistractedQeynosCacheguard.lua
new file mode 100755
index 000000000..011dbb173
--- /dev/null
+++ b/server/SpawnScripts/Rogue_IrontoeInn/adistractedQeynosCacheguard.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/Rogue_IrontoeInn/adistractedQeynosCacheguard.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.03 05:12:39
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "OnGuard", "true")
+ NPC_Y = GetY(NPC)
+end
+
+function InRange(NPC,Spawn)
+ if GetTempVariable(NPC,"OnGuard")=="true" and not IsInCombat(NPC) and GetY(Spawn) >= 6 then
+ FaceTarget(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "false")
+ AddTimer(NPC,2500,"Checking",1,Spawn)
+ AddTimer(NPC,6000,"Checking",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuard",1,Spawn)
+ AddTimer(NPC,10000,"ResetGuardEmote",1,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "What was that?", "peer", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "doubletake", 0, 0, Spawn, 0)
+ SendMessage(Spawn,"The guard heard something.")
+ elseif choice ==3 then
+ PlayFlavor(NPC, "", "Hmm?", "stare", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function Checking(NPC,Spawn)
+ if GetDistance(NPC,Spawn) <=6 and HasMoved(Spawn) then
+ Attack(NPC,Spawn)
+ end
+end
+
+
+function ResetGuardEmote(NPC,Spawn)
+ if not IsInCombat(NPC) then
+ choice = MakeRandomInt(1,2)
+ if choice ==1 then
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
+end
+end
+
+function ResetGuard(NPC,Spawn)
+ SetTempVariable(NPC, "OnGuard", "true")
+end
+
+function aggro(NPC,Spawn)
+ choice = MakeRandomInt(1,3)
+ if choice ==1 then
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gm_48350e59.mp3", "You're not allowed in here!", "", 237358955, 1041617020, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_1/ft/highelf/highelf_eco_good_1_notcitizen_gm_8236a789.mp3", "Remove yourself from my presence, outsider.", "", 3302310786, 2767017909, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_kill_gf_2b7f45ad.mp3", "For the glory of Qeynos!", "", 2825851367, 3848266464, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Rogue_IrontoeInn/aledger.lua b/server/SpawnScripts/Rogue_IrontoeInn/aledger.lua
new file mode 100755
index 000000000..948addc20
--- /dev/null
+++ b/server/SpawnScripts/Rogue_IrontoeInn/aledger.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/Rogue_IrontoeInn/aledger.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.03 04:12:48
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Read' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Quickly scan the recent pages.", "Entry")
+ AddConversationOption(con, "Leave the ledger.","Exit")
+ StartDialogConversation(con, 1, NPC, Spawn, "This ledger is one of many records for the movement of goods in the Qeynos Harbor Cache.")
+end
+end
+
+function Entry(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Leave the ledger.","Exit")
+ StartDialogConversation(con, 1, NPC, Spawn, "A note scribbled in the margins amongst recent arrivals. \'The lieutenant wants the new orders kept upstairs. For his eyes only!\' ")
+end
+
+function Exit(NPC, Spawn)
+ CloseConversation(NPC,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/RuinsVarsoon/bookcasewiththesecretpuzzleboxvault.lua b/server/SpawnScripts/RuinsVarsoon/bookcasewiththesecretpuzzleboxvault.lua
new file mode 100755
index 000000000..76e5a8ad4
--- /dev/null
+++ b/server/SpawnScripts/RuinsVarsoon/bookcasewiththesecretpuzzleboxvault.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/RuinsVarsoon/bookcasewiththesecretpuzzleboxvault.lua
+ Script Author : Premierio015
+ Script Date : 2023.05.05 07:05:25
+ Script Purpose :
+ :
+--]]
+
+local TheHiddenRiddle = 5531
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ AddConversationOption(con, "'Logbook - Varsoon Apprentices'")
+ AddConversationOption(con, "'Conflict and Harmony'", "ConflictAndHarmony")
+ AddConversationOption(con, "Leave the bookcase alone.")
+ StartDialogConversation(con, 1, NPC, Spawn, "This bookcase is filled with numerous tomes. Much of it is covered in dust as if these vaults of knowledge have not been utilized in centuries.")
+end
+end
+
+
+function ConflictAndHarmony(NPC, Spawn)
+ if GetQuestStep(Spawn, TheHiddenRiddle) == 1 then
+ SetStepComplete(Spawn, TheHiddenRiddle, 1)
+end
+ local con = CreateConversation()
+ AddConversationOption(con, "Leave the safe alone.")
+ if GetQuestStep(Spawn, TheHiddenRiddle) == 4 then
+ AddConversationOption(con, "Use the skull and star keys.", "UseSkullAndStarKeys")
+ end
+ StartDialogConversation(con, 1, NPC, Spawn, "This book is extremely thick and must have more pages than a gnomish tinker's design document! You attempt to slide it out, but instead the binding slides down to expose the false book as a secret vault. There are two keyholes on the lock. Above each is a small image. One image is a skull and the other is a star.")
+end
+
+function UseSkullAndStarKeys(NPC, Spawn)
+SetStepComplete(Spawn, TheHiddenRiddle, 4)
+local con = CreateConversation()
+ AddConversationOption(con, "Close the secret vault.")
+ StartDialogConversation(con, 1, NPC, Spawn, "You unlock the vault and it opens with a rush of cold air. You must be crazy because you thought you heard indecipherable whispers coming from the dark recess. You reach in and discover the puzzle box called 'The Riddle of Saryrn.' You take it.")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ScaleYard/BankerIzark.lua b/server/SpawnScripts/ScaleYard/BankerIzark.lua
index d11ffe18e..188bb22c5 100755
--- a/server/SpawnScripts/ScaleYard/BankerIzark.lua
+++ b/server/SpawnScripts/ScaleYard/BankerIzark.lua
@@ -1,30 +1,96 @@
--[[
Script Name : SpawnScripts/ScaleYard/BankerIzark.lua
Script Purpose : Banker Izark
- Script Author : torsten
- Script Date : 2022.07.25
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Author : Dorbin
+ Script Date : 2023.06.23
+ Script Notes : Missing original VOs. Using others to compensate.
--]]
require "SpawnScripts/Generic/DialogModule"
+local Citizenship = 5863
+
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/banker_quintius_calacicus/fprt_hood1/100_bankerquintiuscalacicus_housing_quest_1_22bf58bf.mp3", "Are you the one opening the new account?", "bye", 1249171681, 483955197, Spawn)
+end
+end
+
function hailed(NPC, Spawn)
- Dialog1(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+elseif HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+Dialog2(NPC, Spawn)
+else
+Dialog1(NPC, Spawn)
+end
end
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I'm very busy and can't talk to you right now.")
- Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1028.mp3", 0, 0)
- Dialog.AddOption("Fine! I'll find someone else to talk to, then!")
+ Dialog.AddDialog("Your money is safe with the Freeport Reserve. Trust us. Just provide us your guild association.")
+ Dialog.AddVoiceover("voiceover/english/banker_izark/fprt_hood06/banker_izark.mp3", 4233874879, 3981610343)
+ Dialog.AddOption("I'll have to take your word for it.")
Dialog.Start()
end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you look like the one Valthun described. Before we can open your account, we need some information from you. What's your name?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval006.mp3", 973761594, 631533180)
+ Dialog.AddOption(""..GetName(Spawn).."","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Occupation?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval007.mp3", 3366909671, 2696654878)
+ Dialog.AddOption("Adventurer","Dialog2b")
+ Dialog.AddOption("Crafter","Dialog2b")
+ if GetRace(Spawn)==0 then
+ Dialog.AddOption("Mercenary for hire","Dialog2b")
+ elseif GetRace(Spawn)==10 then
+ Dialog.AddOption("Ruler of my own destiny","Dialog2b")
+
+ end
+ Dialog.Start()
+end
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Any surviving relatives, do you ever leave your house unarmed, and are you a deep sleeper?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval008.mp3", 77874907, 3978664262)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No, no, and no.","Dialog2c")
+ Dialog.AddOption("[Lie] No, no, and no.","Dialog2c")
+ Dialog.AddOption("Huh?! Just... no!","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ SetStepComplete(Spawn, Citizenship,4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How convenient for you. Very well ... we've set aside a place for you within the Freeport Reserve vaults. Feel free to deposit large amounts of coin or valuable artifacts with us anytime. We'll be sure to keep it ... safe. Is there anything else?")
+ Dialog.AddVoiceover("voiceover/english/banker_t_val/fprt_hood05/bnk_banker_tval009.mp3", 3196985272, 4183310653)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ScaleYard/BartenderIcebrew.lua b/server/SpawnScripts/ScaleYard/BartenderIcebrew.lua
index 335114bc0..9251f83c6 100755
--- a/server/SpawnScripts/ScaleYard/BartenderIcebrew.lua
+++ b/server/SpawnScripts/ScaleYard/BartenderIcebrew.lua
@@ -22,48 +22,35 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if not HasQuest(Spawn, IcebrewSecretRecipe) and not HasCompletedQuest(Spawn, IcebrewSecretRecipe) then
- Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What are you drinking? Ya better not make it one of those sissy drinks.")
+ Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/mer_icebrew.mp3", 3301168939, 3443300522)
+ if not HasQuest(Spawn, IcebrewSecretRecipe) and not HasCompletedQuest(Spawn, IcebrewSecretRecipe) then
+ Dialog.AddOption("What's the strongest drink you have on tap?", "Dialog2")
end
- if HasCompletedQuest(Spawn, IcebrewSecretRecipe) then
- if not HasQuest(Spawn, BlindTasteTest) and not HasCompletedQuest(Spawn, BlindTasteTest) then
- Dialog10(NPC, Spawn)
- end
+ if CanReceiveQuest(Spawn, BlindTasteTest) then
+ Dialog.AddOption("Were you able to make any more of that Wheat Rust Stout?", "Dialog8")
end
if GetQuestStep(Spawn, IcebrewSecretRecipe) == 2 then
- Dialog3(NPC, Spawn)
- SetStepComplete(Spawn, IcebrewSecretRecipe, 2)
+ Dialog.AddOption("I have ten jars of liquid rust.", "Dialog6")
end
if GetQuestStep(Spawn, BlindTasteTest) == 2 then
- SetStepComplete(Spawn, BlindTasteTest, 2)
+ Dialog.AddOption("TI found a Dark Elf by the name of Modian K'Jarr to drink the Wheat Rust Stout. He immediately went blind and I think he might have died.","BlindTestDone")
end
if HasQuest(Spawn, BronaThralls) and not HasCompletedQuest(Spawn, BronaThralls) then
SetStepComplete(Spawn, BronaThralls, 1)
end
- Dialog7(NPC, Spawn)
-end
-
-function Dialog7(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("What are you drinking? Ya better not make it one of those sissy drinks.")
- Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/mer_icebrew.mp3", 3301168939, 3443300522)
Dialog.AddOption("Let me see what you have.")
Dialog.Start()
end
+
+
--====================Quest 1
-function Dialog11(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("What are you drinking? Ya better not make it one of those sissy drinks.")
- Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/mer_icebrew.mp3", 3301168939, 3443300522)
- Dialog.AddOption("What's the strongest drink you have on tap?", "Dialog2")
- Dialog.AddOption("Let me see what you have.")
- Dialog.Start()
-end
+
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
@@ -80,6 +67,7 @@ function Dialog5(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Well, now, that's a problem. Just enough of the brew is left for one mug, and I don't have rust to make another batch. I ran out of the liquid rust a few hours back and can't make another batch of brew until I get more.")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x1_initial2.mp3", 3007403188, 2444158205)
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
Dialog.AddOption("You actually use rust?", "Dialog4")
Dialog.AddOption("Then I guess I'll look at what else you have.")
Dialog.Start()
@@ -90,18 +78,14 @@ function Dialog4(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Are you dense, fool? Didn't I say I use it? Me dad brewed ale using molding wheat, but I found a better, tastier way. If you go and get me more rust, I'll give you some coin and throw in a brew on the house. Are you up for the task?")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x1_initial3.mp3", 2459588237, 3538627268)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
Dialog.AddOption("I sure am. Where should I look for it?", "Dialog12")
Dialog.AddOption("No, I'm too busy. Maybe another time.")
Dialog.Start()
end
function Dialog12(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Go to the Sunken City and slay the rust monsters that lurk there. Kill the beasts and squeeze them with all your might. Out of their bodies should pour about a jar's worth of pure, liquid rust. Come back with as many jars as you can, and we have a deal.")
- Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x1_accept.mp3", 2282916525, 4054783281)
- Dialog.AddOption("I can do this.", "Dialog9")
- Dialog.Start()
+ OfferQuest(NPC, Spawn, IcebrewSecretRecipe)
end
function Dialog9(NPC, Spawn)
@@ -109,9 +93,9 @@ function Dialog9(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("My customers are thirsty! You better get my liquid rust or I'll crush your skull!")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/mer_bartender_icebrew_multhail3_c40a6388.mp3", 3143807370, 1008038806)
+ PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
Dialog.AddOption("All right!")
Dialog.Start()
- OfferQuest(NPC, Spawn, IcebrewSecretRecipe)
end
--===== Quest 1 Step 2
@@ -121,16 +105,17 @@ function Dialog3(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("What are you drinking? Ya better not make it one of those sissy drinks.")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/mer_icebrew.mp3", 3301168939, 3443300522)
- Dialog.AddOption("I have ten jars of liquid rust.", "Dialog6")
Dialog.AddOption("Let me see what you have.")
Dialog.Start()
end
function Dialog6(NPC, Spawn)
+ SetStepComplete(Spawn, IcebrewSecretRecipe, 2)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Aye, you brought my rust. That's enough for a couple kegs. All it takes is one stein of the stuff and your eyes go blurrier than a warthog in heat! That's why it's my specialty, makes it easy to kick out these awful, drunk lugs when I close up -- they never see the club coming. Here's your coin and your round on the house.")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x1_finish.mp3", 4199522555, 1288818625)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
Dialog.AddOption("Thanks!")
Dialog.Start()
end
@@ -142,7 +127,6 @@ function Dialog10(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("What are you drinking? Ya better not make it one of those sissy drinks.")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/mer_icebrew.mp3", 3301168939, 3443300522)
- Dialog.AddOption("Were you able to make any more of that Wheat Rust Stout?", "Dialog8")
Dialog.AddOption("Let me see what you have.")
Dialog.Start()
end
@@ -152,19 +136,25 @@ function Dialog8(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Aye, I just brewed another batch, but I don't know if it's any good. If it's not perfect then my name isn't Icebrew! Never let anyone say that the Icebrews serve up a weak brew. Perhaps you can help me out again, eh?")
Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x2_initial.mp3", 3718305704, 4001640660)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
Dialog.AddOption("Sure. What do you want me to do?", "Dialog13")
Dialog.AddOption("Sorry, I'm a bit busy right now.")
Dialog.Start()
end
function Dialog13(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Take this tankard of Stout and head to Longshadow Alley where those prissy little Dark Elves live. The Iksar at my bar drink some strange things, so I can't use them to gauge the quality of my brew. Find one of those little purple freaks in a tavern and offer him a taste. Let me know how he likes it. Got it?")
- Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x2_accept.mp3", 1018004755, 1842224270)
- Dialog.AddOption("Will do. I'll let you know what he thinks.")
- Dialog.Start()
OfferQuest(NPC, Spawn, BlindTasteTest)
end
+function BlindTestDone(NPC,Spawn)
+ SetStepComplete(Spawn, BlindTasteTest, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Fell over blind, did he? Bah! Sissy little elves ... he'll get over it with bed rest. Well, that means this is a batch worth serving. BAH! Poison is the wine those sissies drink! This is a REAL BREW! Here's your coin. Now, order a drink and shut up.")
+ Dialog.AddVoiceover("voiceover/english/bartender_icebrew/fprt_hood06/quests/bartendericebrew/icebrew_x2_finish.mp3", 738559030, 4291660656)
+ PlayFlavor(NPC,"","","chuckle",0,0,Spawn)
+ Dialog.AddOption("Sure. What do you want me to do?", "Dialog13")
+ Dialog.AddOption("Sorry, I'm a bit busy right now.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/ScaleYard/BroodMatronVrimMalthyk.lua b/server/SpawnScripts/ScaleYard/BroodMatronVrimMalthyk.lua
index 97fc11a11..2594e472d 100755
--- a/server/SpawnScripts/ScaleYard/BroodMatronVrimMalthyk.lua
+++ b/server/SpawnScripts/ScaleYard/BroodMatronVrimMalthyk.lua
@@ -6,7 +6,7 @@
Script Notes :
--]]
-local Iksar = 14 --10
+local Iksar = 10 --10
QUEST_1 = 340 --A Puppy for your potion--
QUEST_2 = 341 --He said, he said--
QUEST_3 = 342 --Paying homage to the past--
@@ -79,7 +79,7 @@ function hailed(NPC, Spawn)
AddConversationOption(conversation, "My name is my own, witch. Leave me be!", "dlg_end")
StartConversation(conversation, NPC, Spawn, "Mmmm. Something wicked this way comes... Why hello there young broodling, I've not seen you here before. Tell me your name.")
else
- Say(NPC, "You're not an Iksar!", Spawn)
+ Say(NPC, "S-s-step away! I only deal with those of my brood.", Spawn)
end
end
end
diff --git a/server/SpawnScripts/ScaleYard/InnkeepFrosthome.lua b/server/SpawnScripts/ScaleYard/InnkeepFrosthome.lua
index d67156af6..ed627a0be 100755
--- a/server/SpawnScripts/ScaleYard/InnkeepFrosthome.lua
+++ b/server/SpawnScripts/ScaleYard/InnkeepFrosthome.lua
@@ -9,35 +9,80 @@
require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 18 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_aoi_gm_523a90f5.mp3", "Ah hello there! A traveling adventurer. You're in luck, we just had a recent death... err last minute cancellation.", "hello", 2939649453, 60816266, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "We don't serve your pathetic kind here. Get out of my sight!", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "We don't serve your pathetic kind here. Get out of my sight!", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
end
function RandomGreeting(NPC, Spawn)
- Dialog1(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+ FaceTarget(NPC, Spawn)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_252bf582.mp3", "Room rates are by the night not by the hour!", "no", 2290384264, 3204846441, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_a81dfaee.mp3", "Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ", "tapfoot", 1233544589, 3237948704, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", "What! What do you want?", "glare", 3188768809, 805088185, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_cac7726b.mp3", "Look I'm no cook, but I was going to have some fresh kidneys myself. You want me to get you a pair?", "shrug", 2965195375, 1753238152, Spawn, 0)
+ end
end
-function Dialog1(NPC, Spawn)
+--[[function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Hello Gaikichi, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
+ Dialog.AddDialog("Hello, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper010.mp3", 328655352, 2391913046)
Dialog.AddOption("Yes.", "Dialog9")
Dialog.AddOption("No thanks.")
Dialog.Start()
-end
+end]]--
-function Dialog9(NPC, Spawn)
+function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("What would you like to know?")
- Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper001.mp3", 1649814488, 96870422)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ Dialog.AddDialog("Room rates are by the night not by the hour!")
+ Dialog.AddVoiceover("voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_252bf582.mp3", 2290384264, 3204846441)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ Dialog.AddDialog("Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ")
+ Dialog.AddVoiceover("voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_a81dfaee.mp3", 1233544589, 3237948704)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ Dialog.AddDialog("What! What do you want?")
+ Dialog.AddVoiceover("voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", 3188768809, 805088185)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ Dialog.AddDialog("Look I'm no cook, but I was going to have some fresh kidneys myself. You want me to get you a pair?")
+ Dialog.AddVoiceover("voiceover/english/barbarian_eco_evil_1/ft/service/innkeeper/barbarian_innkeeper_service_evil_1_hail_gm_cac7726b.mp3", 2965195375, 1753238152)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
Dialog.AddOption("How can I place an item in my house?", "Dialog7")
Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
Dialog.AddOption("What is the marketboard for?", "Dialog6")
@@ -78,7 +123,7 @@ function Dialog2(NPC, Spawn)
Dialog.AddOption("How can I place an item in my house?", "Dialog7")
Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
Dialog.AddOption("What is the marketboard for?", "Dialog6")
- Dialog.AddOption("That’s enough for now, thanks.")
+ Dialog.AddOption("That's enough for now, thanks.")
Dialog.Start()
end
diff --git a/server/SpawnScripts/ScaleYard/MirinZilishia.lua b/server/SpawnScripts/ScaleYard/MirinZilishia.lua
index d31e4cb95..92bd33fc6 100755
--- a/server/SpawnScripts/ScaleYard/MirinZilishia.lua
+++ b/server/SpawnScripts/ScaleYard/MirinZilishia.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/ScaleYard/MirinZilishia.lua
Script Purpose : Mirin Zilishia
- Script Author : torsten
+ Script Author : torsten\\Dorbin
Script Date : 2022.07.15
Script Notes :
--]]
@@ -19,13 +19,6 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, AntiusPackage) == 1 then
- SetStepComplete(Spawn, AntiusPackage, 1)
- end
- if GetQuestStep(Spawn, WillWorkforWar) == 2 then
- SetStepComplete(Spawn, WillWorkforWar, 2)
- end
-
Dialog1(NPC, Spawn)
end
@@ -34,7 +27,35 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("If you bother me, I will act upon the thoughts that have been coursing through my head from the moment I saw you.")
Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1028.mp3", 0, 0)
- Dialog.AddOption("I'm not sure I want to know what those are. Bye.")
+ if GetQuestStep(Spawn,AntiusPackage) ==1 then
+ Dialog.AddOption("Here's a package for you. What in blazes is going on? I'm confused.", "Dialog2")
+ end
+ if GetQuestStep(Spawn,WillWorkforWar) ==3 then
+ Dialog.AddOption("Colin Stoutfist says he wants a job from you.", "Dialog3")
+ end
+ Dialog.AddOption("I'm not sure I want to know what those are. Bye.")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Why did Antius send you? Well, I guess you have the password, so I'll assume you're the one. What's that weasel up to? Ahhhhhh ... I think I see what he was doing. Hmmm ... Maybe he's smarter than he looks. Okay ... let him know it's getting bigger and that I'll need more of the hooks.")
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ SetStepComplete(Spawn, AntiusPackage, 1)
+ Dialog.AddOption("I'm not sure what this is all about... but I'll tell him.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Colin told you he wants a job, did he? You go back to Colin and tell him this: I don't have anything for him right now. Also tell him that if he opens his mouth one more time about what I do ... well, I think I'll have to make it simple so he understands. Tell him I'll kill him in his sleep, okay? And the same goes for you. Now go away.")
+ Dialog.AddVoiceover("voiceover/english/optional1/mirin_zilishia/fprt_hood06/quests/colinstoutfist/mirin_colin_x1_initial.mp3", 2135057299, 1207863474)
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ SetStepComplete(Spawn, WillWorkforWar, 3)
+ Dialog.AddOption("I'll be sure he gets the message...")
+ Dialog.Start()
+end
+
+
diff --git a/server/SpawnScripts/ScaleYard/OverseerSakkis.lua b/server/SpawnScripts/ScaleYard/OverseerSakkis.lua
index b75ff52f5..57caf7379 100755
--- a/server/SpawnScripts/ScaleYard/OverseerSakkis.lua
+++ b/server/SpawnScripts/ScaleYard/OverseerSakkis.lua
@@ -2,21 +2,103 @@
Script Name : SpawnScripts/ScaleYard/OverseerSakkis.lua
Script Author : Dorbin
Script Date : 2022.10.03 07:10:45
- Script Purpose :
+ Script Purpose : No VOs, so most is fabricated where mentioned
:
--]]
-function spawn(NPC)
+local Welcome = 5863
+require "SpawnScripts/Generic/DialogModule"
+local CalloutTimer = false
+
+function spawn(NPC)
+ProvidesQuest(NPC,Welcome)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+if GetFactionAmount(Spawn,12)<0 then
+PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+FaceTarget(NPC, Spawn)
+if GetRace(Spawn)== 10 or GetRace(Spawn) == 0 then
+ if CanReceiveQuest(Spawn, Welcome)then
+ PlayFlavor(NPC,"","Refugees will report to me at once!","wave",850117394,1406850605,Spawn)
+ elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+
+function ResetCallout(NPC,Spawn)
+ CalloutTimer = false
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","shame",0,0,Spawn)
+ else
+if GetRace(Spawn)== 10 or GetRace(Spawn) == 0 then
+ if not HasQuest(Spawn, Welcome) and not HasCompletedQuest(Spawn,Welcome)then --FABRICATED
FaceTarget(NPC, Spawn)
- if GetQuestStep(Spawn, 5758)==2 then
- SetStepComplete(Spawn, 5758,2)
- end
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You there! Sweat... salt... goblin... You have the ssscent of a refugee. The Overlord demands loyalty from all new blood from the isle. You must prove yourself worthy of his power.")
+-- Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg001.mp3", 2748948544, 618605369)
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_1_1028.mp3","","sniff",0,0,Spawn)
+ Dialog.AddOption("I'm always up for a challenge.","Dialog1")
+ Dialog.AddOption("I'll be right back.")
+ Dialog.Start()
+ else
+ Talk(NPC,Spawn)
+ end
+else
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+function Talk(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC,"","Refugees will report to me at once!","sniff",850117394,1406850605,Spawn)
+ else
+ PlayFlavor(NPC,"","Disturb me again and you will suffer the consequences.","glare",850117394,1406850605,Spawn)
+ end
end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function Dialog1(NPC, Spawn) --FABRICATED
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You survived thusss far, so you at least have a head on your shoulders. This is the City of Freeport. Stay in the Overlord's generous gaze and you'll keep your head where it belongs.")
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+-- Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg002.mp3", 3261798868, 2615741361)
+ Dialog.AddOption("What do you need from me?", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I need nothing from you. You are the one who needs me. The Overlord decreed I give you a house in Scale Yard, home of both Iksar and barbarians. Each time you wake, say a prayer thanking the Overlord for his divine wisdom.")
+-- Dialog.AddVoiceover("voiceover/english/overseer_travogg/fprt_hood1/overseer_travogg003.mp3", 2428117614, 1340985853)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("A house? I'd take anything after that boat ride.", "QuestStart")
+ Dialog.Start()
+end
+
+function QuestStart(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Welcome)
+end
diff --git a/server/SpawnScripts/ScaleYard/SavasDranak.lua b/server/SpawnScripts/ScaleYard/SavasDranak.lua
index 78a88337e..0cb424c9a 100755
--- a/server/SpawnScripts/ScaleYard/SavasDranak.lua
+++ b/server/SpawnScripts/ScaleYard/SavasDranak.lua
@@ -1,12 +1,13 @@
--[[
Script Name : SpawnScripts/ScaleYard/SavasDranak.lua
Script Purpose : Savas Dranak
- Script Author : torsten
+ Script Author : torsten/Dorbin
Script Date : 2022.07.25
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
require "SpawnScripts/Generic/DialogModule"
+local Fighter = 5898
function spawn(NPC)
end
@@ -24,7 +25,50 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("It is a shame this one didn't do what he was told. He was my favorite thrall too.")
Dialog.AddVoiceover("voiceover/english/savas_dranak/fprt_hood06/savasdranak000.mp3", 312427882, 4132285907)
+ if HasQuest(Spawn,Fighter) and GetQuestStep(Spawn,Fighter)>=7 and GetQuestStep(Spawn,Fighter)<=97 and GetQuestStepProgress(Spawn,Fighter,8)==0 then
+ Dialog.AddOption("By orders of Overlord Lucan, you are to ensure that no Guttersnipe tries to take up residence in Scale Yard.","Dialog2")
+ end
Dialog.AddOption("I don't want to see how you treat your least favorite. ")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I do not listen to orders from silly little messengers.")
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/savas_dranak/fprt_hood06/savasdranak001.mp3", 1404750927, 2071684844)
+ Dialog.AddOption("Does the Militia need to help you understand this message?","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ha! Who do you think you are, runt? Do you know whom you're talking to? I rule this district! I own everyone here!")
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/savas_dranak/fprt_hood06/savasdranak002.mp3", 503647552, 1623345428)
+ Dialog.AddOption("The Overlord will not tolerate anyone stealing his things. Refugees included. Perhaps a cell is in your future?","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "shakefist", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog4",1,Spawn)
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn,Fighter,8)
+ Dialog.AddDialog("I shall do as the Overlord demands only because it pleases me to do so. Now leave my district. You're not welcome here.")
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/savas_dranak/fprt_hood06/savasdranak003.mp3", 1045929350, 3685896097)
+ if GetRace(Spawn) == 0 or GetRace(Spawn) == 18 or GetRace(Spawn) == 10 then
+ Dialog.AddOption("This district is as much yours as it is mine, 'friend'.")
+ end
+ Dialog.AddOption("The Overlord will be pleased to hear it.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/ScaleYard/SkalVethiz.lua b/server/SpawnScripts/ScaleYard/SkalVethiz.lua
index 159eee133..9943db59f 100755
--- a/server/SpawnScripts/ScaleYard/SkalVethiz.lua
+++ b/server/SpawnScripts/ScaleYard/SkalVethiz.lua
@@ -5,6 +5,9 @@
Script Date : 2008.10.01
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+local Mage1 = 5902
+
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
end
@@ -14,20 +17,46 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/skal_vethiz/fprt_hood06/qst_skalvethiz.mp3", "", "", 632016145, 49250829, Spawn)
- AddConversationOption(conversation, "I don't really care. Bye.")
- AddConversationOption(conversation, "What empire?", "dlg_1_1")
- StartConversation(conversation, NPC, Spawn, "What have we iksar become? We live next to barbarians and accept it? We once had a great Empire.")
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC,"","","cutthroat",0,0,Spawn)
+ end
end
-function dlg_1_1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/skal_vethiz/fprt_hood06/qst_skalvethiz000.mp3", "", "", 4224301835, 4229334233, Spawn)
- AddConversationOption(conversation, "Sorry to hear it.")
- StartConversation(conversation, NPC, Spawn, "What? You know nothing of the greatest empire to dominate the face of Norrath?! We conquered the continent of Kunark! Kingdoms on Antonica and Faydwer trembled at the mere whisper of the iksar name. Before the Shattering, the Iksarian Empire held the entire world in its grasp! Now look at us. We're reduced to squatting in the corner of some human city.")
-end
\ No newline at end of file
+-- PlayFlavor(NPC, "", "What have we iksar become? We live next to barbarians and accept it? We once had a great Empire.", "pout", 0, 0, Spawn, 0)
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What have we iksar become? We live next to barbarians and accept it? We once had a great Empire.")
+ Dialog.AddVoiceover("voiceover/english/skal_vethiz/fprt_hood06/qst_skalvethiz.mp3", 632016145, 49250829)
+ Dialog.AddOption("I don't really care. Bye.")
+ Dialog.AddOption("What empire?", "Dialog2")
+ if HasQuest(Spawn,Mage1) and GetQuestStepProgress(Spawn,Mage1,8)== 0 then
+ Dialog.AddOption("I understand you witnessed a summoning today. What was summoned?", "Dialog3")
+ end
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What? You know nothing of the greatest empire to dominate the face of Norrath?! We conquered the continent of Kunark! Kingdoms on Antonica and Faydwer trembled at the mere whisper of the iksar name. Before the Shattering, the Iksarian Empire held the entire world in its grasp! Now look at us. We're reduced to squatting in the corner of some human city.")
+ Dialog.AddVoiceover("voiceover/english/skal_vethiz/fprt_hood06/qst_skalvethiz000.mp3", 4224301835, 4229334233)
+ Dialog.AddOption("Sorry to hear it.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ SetStepComplete(Spawn,Mage1,8)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I couldn't see anything because of the blinding light, but I could feel it. That crazy mage summoned a huge snake. I barely made it out of there with my life, I did. One moment I was wondering who turned off the sun, then I felt a snake wrap around my neck.")
+ Dialog.AddVoiceover("voiceover/english/skal_vethiz/fprt_hood06/qst_skalvethiz001.mp3", 3405726897, 4260366325)
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddOption("He summoned a snake... thank you.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/ScaleYard/TeganFrostfist.lua b/server/SpawnScripts/ScaleYard/TeganFrostfist.lua
index e17ae0080..6878119c6 100755
--- a/server/SpawnScripts/ScaleYard/TeganFrostfist.lua
+++ b/server/SpawnScripts/ScaleYard/TeganFrostfist.lua
@@ -5,22 +5,125 @@
Script Date : 2022.07.25
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
+
+-- Item ID's
+local ARTISAN_ESSENTIALS_VOLUME_2 = 31373
function spawn(NPC)
end
+function RandomGreeting(NPC,Spawn)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1042.mp3", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1002.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1002.mp3", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", 0, 0, Spawn)
+ end
+end
+
function respawn(NPC)
spawn(NPC)
end
function hailed(NPC, Spawn)
- RandomGreeting(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863) == 8 then
+ Dialog1(NPC,Spawn)
+ elseif GetTradeskillLevel(Spawn) <2 then
+ RandomGreeting(NPC,Spawn)
+
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ RandomGreeting(NPC,Spawn)
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ else
+ RandomGreeting(NPC,Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in West Freeport. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ end
end
-function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,1)
- if choice == 1 then
- PlayFlavor(NPC, "", "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your specialty.", "", 0, 0, Spawn, 0)
+function dlg_39_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5863)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
+ StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
+end
+
+function Dialog1(NPC,Spawn)
+ SetStepComplete(Spawn,5863,8)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ Dialog.AddDialog("Hail, friend! Don't be shy! The best part about working for The War Hagglers is that you get to meet so many new people.")
+ Dialog.AddVoiceover("voiceover/english/tegan_frostfist/fprt_hood06/100_trd_tegan_frostfist_joining_99e9b991.mp3",2604105254,1796655859)
+ Dialog.AddOption("Just looking around. As you were.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
end
+ Dialog.Start()
+end
+
+function CanDo(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddDialog("Many things can be done at a tradeskill society and there are many in the city... but ours is obviously the best! Each is equipped with quality crafting stations and fuels needed to become proficient at any tradeskill class you might desire.")
+ Dialog.AddOption("Anything else I should know?", "CanDo2")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function HelpMe(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("In order to be competitive in today's marketplace, The War Hagglers provides you with this basic guide to commerce. You will learn many things on your own over time, so do not consider this book your only guide to success. Rely on your own resources and skills and you will prosper.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn) <2 then
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+ Dialog.Start()
end
\ No newline at end of file
diff --git a/server/SpawnScripts/ScaleYard/VerinIthelz.lua b/server/SpawnScripts/ScaleYard/VerinIthelz.lua
index 0cb1b54aa..9e71e060f 100755
--- a/server/SpawnScripts/ScaleYard/VerinIthelz.lua
+++ b/server/SpawnScripts/ScaleYard/VerinIthelz.lua
@@ -45,4 +45,9 @@ function RandomGreeting(NPC, Spawn)
elseif choice == 2 then
PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1028.mp3", 0, 0, Spawn)
end
-end
\ No newline at end of file
+end
+--"You are no warrior in their eyes," said one of the woodcutters softly. He was one of the Dervin thralls, his ankles bound by chains to the table upon which he cut larger hunks of wood into smaller pieces.
+
+--I suppose. I have thralls of all kinds. Some are manacled, some are corralled. All are expensive ... especially the exotics, like the high elf here. Brona the slaver exacts a pretty bit of coin for such as these. If I don't find a cheaper source, my coffers will run dry. May I perhaps seek your assistance?
+--Yes, I did. I'm looking for ways to increase my horde of thralls without paying Brona's steep prices. My contacts tell me that Zekvila is capturing orcs to work as her thralls. That broodling must not have better thralls than me! You must prevent her from capturing more orcs!
+--Very good! Now let's see Zekvila upstage me! If she wants more thralls, she must empty her pockets to that thief Brona. Ha! Her entourage of thralls won't compete with my mighty force! If she tries, I'll sick my barbarian dogs on the wench! Here, add this coin to your purse.
\ No newline at end of file
diff --git a/server/SpawnScripts/ScaleYard/tofprtcitizenshiptrial.lua b/server/SpawnScripts/ScaleYard/tofprtcitizenshiptrial.lua
new file mode 100755
index 000000000..3a137e98d
--- /dev/null
+++ b/server/SpawnScripts/ScaleYard/tofprtcitizenshiptrial.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/ScaleYard/tofprtcitizenshiptrial.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.30 07:06:43
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC, 5863, 13)
+SetRequiredQuest(NPC, 5869, 2)
+SetRequiredQuest(NPC, 5869, 3)
+SetRequiredQuest(NPC, 5869, 4)
+SetRequiredQuest(NPC, 5869, 5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+local TaskSheet = 14235
+local WelcomeQuest = 5863
+local TaskQuest = 5869
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Use citizenship sign' then
+ if HasQuest(Spawn,WelcomeQuest) and not HasCompletedQuest(Spawn,TaskQuest) and not HasItem(Spawn, TaskSheet,1) then
+ Quest = GetQuest(Spawn,WelcomeQuest)
+ SendMessage(Spawn, "You pull an application for citizenship from the wall.")
+ GiveQuestItem(Quest, Spawn, "I must complete this task to become a Citizen of Qeynos.", TaskSheet)
+
+ elseif not HasQuest(Spawn, TaskQuest) and HasItem(Spawn, TaskSheet,1) or GetQuestStep(Spawn,TaskQuest)==1 and HasItem(Spawn, TaskSheet,1) then
+ SendMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.")
+ SendPopUpMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.", 200, 200, 200)
+
+ elseif HasQuest(Spawn, TaskQuest) and GetQuestStep(Spawn,TaskQuest)>=2 and GetQuestStep(Spawn,TaskQuest)<=5 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+end
+end
+end
+
+ function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ if GetQuestStep(Spawn,TaskQuest)==2 then
+ SetStepComplete(Spawn,TaskQuest,2)
+ end
+ ZoneRef = GetZone("FreeportCitizenshipTrialChamber")
+ Zone(ZoneRef,Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ScaleYard/zonetofprtsouth.lua b/server/SpawnScripts/ScaleYard/zonetofprtsouth.lua
new file mode 100755
index 000000000..6762a6c29
--- /dev/null
+++ b/server/SpawnScripts/ScaleYard/zonetofprtsouth.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/ScaleYard/zonetofprtsouth.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 01:06:36
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter South Freeport' then
+ if not HasCompletedQuest(Spawn,5866) and
+ not HasCompletedQuest(Spawn,5867) and
+ not HasCompletedQuest(Spawn,5868) and
+ not HasCompletedQuest(Spawn,5869) and
+ not HasCompletedQuest(Spawn,5870) and
+ not HasCompletedQuest(Spawn,5871)
+ and GetFactionAmount(Spawn,12)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5863) and GetQuestStep(Spawn,5863)==10 then
+ SetStepComplete(Spawn,5863,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only Freeport citizens may enter the city.",255,50,50)
+ SendMessage(Spawn,"Only Freeport citizens may enter the city.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,12) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("SouthFreeport")
+ Zone(ZoneRef,Spawn,-61.19, -25.02, 284.33, 24.62)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SerpentSewer/WatcherKenjedeau.lua b/server/SpawnScripts/SerpentSewer/WatcherKenjedeau.lua
new file mode 100755
index 000000000..93fe7cf43
--- /dev/null
+++ b/server/SpawnScripts/SerpentSewer/WatcherKenjedeau.lua
@@ -0,0 +1,133 @@
+--[[
+ Script Name : SpawnScripts/SerpentSewer/WatcherKenjedeau.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 06:09:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local Part2 = 5890
+local Part1 = 5889
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+if HasQuest(Spawn,Part2) then
+Retry(NPC,Spawn)
+else
+Dialog1(NPC, Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Blast these wretched sewers! Why do I have to lookout for alligators. I don't even know what an alligator LOOKS like!")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau001.mp3", 2265669441, 2172159195)
+ PlayFlavor(NPC, "", "", "grumble", 0, 0, Spawn)
+ if HasQuest(Spawn,Part1) or HasCompletedQuest(Spawn,Part1) then
+ if GetLevel(Spawn)<18 and not HasQuest(Spawn,Part2) and not HasCompletedQuest(Spawn,Part2) then
+ Dialog.AddOption("Nobility comes from personal sacrifice, friend.","Dialog2")
+ elseif HasQuest(Spawn,Part2) and not HasCompletedQuest(Spawn,Part2) then
+ Dialog.AddOption("I need to get to that meeting!","Retry")
+ end
+ end
+ Dialog.AddOption("I have no time for this. Get out of the way!")
+ Dialog.Start()
+end
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Shhh! Don't say that so loud! So... Stilus welcomed you into our fold. He has a good eye. You understand what joining us means, right? Treason. You can still back out before it's too late...")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau002.mp3", 1178065540, 4141402431)
+ PlayFlavor(NPC, "", "", "wince", 0, 0, Spawn)
+ Dialog.AddOption("I've come this far. Let's get on with it.","Dialog3")
+ Dialog.AddOption("On second thought...")
+ Dialog.Start()
+end
+
+function Dialog2_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I thought I smelled a coward. I want nothing to do with you until you come to your senses.")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau003.mp3", 1178065540, 4141402431)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddOption("Fine.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("We need you to complete a task that the rest of us cannot. Before I continue, you must understand the consequences of what I am about to ask you. If you agree to help us, you can never show your face in Freeport again.")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau004.mp3", 3378912922, 919692772)
+ Dialog.AddOption("Sound like something I'd be interested in.","Dialog4")
+ Dialog.AddOption("I would much rather keep my head than be a traitor."," Dialog2_1")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Since we're asking you to commit treason, you must prove your loyalty. Your only reward is the satisfaction of doing a good deed in this corrupt city. If you live through this, I can only imagine the severity of your punishment. Ask yourself: Are you willing to throw away your evil nature to live a life of goodwill?")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau005.mp3", 21064502, 1853527280)
+ Dialog.AddOption("Yes. This world needs all the help it can get.","Offer")
+ Dialog.AddOption("Good will? ... err, he idea of it makes me sick.")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ if GetLevel(Spawn) <18 then
+ OfferQuest(NPC,Spawn,Part2)
+ FaceTarget(NPC,Spawn)
+ else
+ CloseConversation(NPC,Spawn)
+ SendPopUpMessage(Spawn,"You are too late! The meeting has already occured.",250,50,50)
+ SendMessage(Spawn,"You are too late! The meeting has already occured.","red")
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+end
+
+function Retry(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'll cast a spell that will transport you to their meeting place. You must stop the official, using any means necessary. I think you know what you need to do.")
+ Dialog.AddVoiceover("voiceover/english/watcher_kenjedeau/fprt_sewer02/watcher_kenjedeau007.mp3", 3532484695, 507238338)
+ Dialog.AddOption("I'm ready.","Ready")
+ Dialog.Start()
+end
+
+function Ready(NPC,Spawn)
+ if GetLevel(Spawn) <18 then
+ CastSpell(NPC,95,1,1,NPC)
+ ApplySpellVisual(Spawn,73)
+ AddTimer(NPC,2500,"Port",1,Spawn)
+ else
+ CloseConversation(NPC,Spawn)
+ SendPopUpMessage(Spawn,"You are too late! The meeting has already occured.",250,50,50)
+ SendMessage(Spawn,"You are too late! The meeting has already occured.","red")
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ if HasQuest(Spawn,5890) and GetQuestStep(Spawn,5890) ==1 then
+ SetStepFailed(Spawn,5890,1)
+ end
+ end
+end
+
+function Port(NPC,Spawn)
+ Betrayal = GetZone("FreeportBetrayal")
+ Zone(Betrayal,Spawn,3.87, 0.33, 9.64, 44)
+end
diff --git a/server/SpawnScripts/ShatteredStillness/ArchLichUdalan.lua b/server/SpawnScripts/ShatteredStillness/ArchLichUdalan.lua
index 839175ff3..7fa2e191d 100755
--- a/server/SpawnScripts/ShatteredStillness/ArchLichUdalan.lua
+++ b/server/SpawnScripts/ShatteredStillness/ArchLichUdalan.lua
@@ -14,22 +14,6 @@ function spawn(NPC)
end
function aggro(NPC, Spawn)
- AddTimer(NPC, math.random(1500,2500), "spellLoop")
- AddTimer(NPC, 1000, "eleLoop")
-end
-
-function eleLoop(NPC, Spawn)
- Shout(NPC, "eleLoop firing.")
- AddTimer(NPC, 57000, "eleSpawns")
-end
-
-function eleSpawns(NPC, Spawn) -- spawns elementals on a timer. timer starts on aggro.
- AddTimer(NPC, 1000, "eleLoop")
--- CastSpell(NPC, summon chaotic elemental, 3, NPC)
-end
-
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/ShatteredStillnessEpic/achaoticelemental.lua b/server/SpawnScripts/ShatteredStillnessEpic/achaoticelemental.lua
index ec5b5fdc8..fa2fb7d9f 100755
--- a/server/SpawnScripts/ShatteredStillnessEpic/achaoticelemental.lua
+++ b/server/SpawnScripts/ShatteredStillnessEpic/achaoticelemental.lua
@@ -9,7 +9,6 @@
spells = {30159} -- Swirling Cloud of Blood, Stunning Shards}
function spawn(NPC)
- AddTimer(NPC, 1000, "spellLoop")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/SinkingSands/Fasul.lua b/server/SpawnScripts/SinkingSands/Fasul.lua
new file mode 100644
index 000000000..ea31849b7
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/Fasul.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/Fasul.lua
+ Script Author : premierio015
+ Script Date : 2023.12.17 01:12:36
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+MoveToLocation(NPC, -1123.05 -209.57, -247.38, 3, "", true)
+MoveToLocation(NPC, -1131.05, -210.41, -243.83, 3, "", true)
+MoveToLocation(NPC, -1147.28, -212.40, -236.22, 3, "", false)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function aggro(NPC, Spawn)
+PlayFlavor(NPC, "voiceover/english/exp01/human_sand_sea_pirates_1/ft/_exp01/human/human_sand_sea_pirates_1_aggro_gm_d96d04b.mp3", "'Tis not often a mark comes to me.", "", 967500505, 3452525704)
+end
+
+function killed(NPC, Spawn)
+PlayFlavor(NPC, "voiceover/english/exp01/human_sand_sea_pirates_1/ft/_exp01/human/human_sand_sea_pirates_1_victory_gm_8f919e22.mp3", "Take anything of worth, then throw them to sea.", "", 2264125921, 3311027459)
+end
+
+function healthchanged(NPC, Spawn)
+local chance = MakeRandomInt(1, 100)
+if chance <= 15 then
+local choice = MakeRandomInt(1, 3)
+if choice == 1 then
+PlayFlavor(NPC, "voiceover/english/exp01/human_sand_sea_pirates_1/ft/_exp01/human/human_sand_sea_pirates_1_battle_gm_129582bc.mp3", "Too scared to fight on the water?", "", 3449011253, 2221154827)
+elseif choice == 2 then
+PlayFlavor(NPC, "voiceover/english/exp01/human_sand_sea_pirates_1/ft/_exp01/human/human_sand_sea_pirates_1_battle_gm_f2ef67d0.mp3", "I thought scorpions crawled, not walked.", "", 3903435859, 1056182778)
+end
+end
+end
+
+
+
+
+
+
+
+function death(NPC, Spawn)
+PlayFlavor(NPC, "voiceover/english/exp01/human_sand_sea_pirates_1/ft/_exp01/human/human_sand_sea_pirates_1_death_gm_562e1d8a.mp3", "The sea, she calls to me.", "", 1233488773, 3203009163)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SinkingSands/Jaza.lua b/server/SpawnScripts/SinkingSands/Jaza.lua
new file mode 100644
index 000000000..81bcb6b9f
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/Jaza.lua
@@ -0,0 +1,144 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/Jaza.lua
+ Script Author : premierio015
+ Script Date : 2023.12.16 04:12:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local KallonsVengeance = 5938 -- Kallon's Vengeance Quest ID
+
+function spawn(NPC)
+ if GetSpawnLocationID(NPC) == 308200 then
+ SetPlayerProximityFunction(NPC, 15, "InRange")
+ end
+end
+
+function prespawn(NPC)
+ if GetSpawnLocationID(NPC) == 308201 then
+ SpawnSet(NPC, "model_type", 4922)
+ SetTempVariable(NPC, "NoDupe", "true")
+end
+ end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetSpawnLocationID(NPC) == 308200 then
+ if not HasQuest(Spawn, KallonsVengeance) and not HasCompletedQuest(Spawn, KallonsVengeance) then
+ PlayFlavor(NPC, "", "Go away, I am busy.", "heckno", 0, 0, Spawn)
+ elseif GetQuestStep(Spawn, KallonsVengeance) == 1 then
+ Option0(NPC, Spawn)
+ elseif GetQuestStep(Spawn, KallonsVengeance) == 2 then
+ PlayFlavor(NPC, "", "We shall meet at the oasis as i have indicated! Please leave so that i can prepare.", "", 0, 0, Spawn)
+ elseif GetQuestStep(Spawn, KallonsVengeance) == 5 then
+ PlayFlavor(NPC, "", "Thank you for sparing me, barrashar!", "", 1689589577, 4560189, Spawn)
+ end
+ elseif GetSpawnLocationID(NPC) == 308201 then
+ if HasQuest(Spawn, KallonsVengeance) then
+ Option2(NPC, Spawn)
+ elseif GetQuestStep(Spawn, KallonsVengeance) == 4 then
+ Option4(NPC, Spawn)
+ elseif not HasQuest(Spawn, KallonsVengeance) then
+ PlayFlavor(NPC, "", "There is nothing around here that interests you, move along!", "", 0, 0, Spawn)
+ Despawn(308201, 60000)
+ elseif GetQuestStep(Spawn, KallonsVengeance) == 5 or HasCompletedQuest(Spawn, KallonsVengeance) then
+ PlayFlavor(NPC, "", "I have heeded your warning, please do not harm me!", "", 1231512930, 1030010135, Spawn)
+ end
+end
+ end
+
+function Option0(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings, barrashar, my name is Jaza. Perhaps you are looking for a guide to Maj'Dul? This desert can be quite deadly without proper direction.")
+ Dialog.AddOption("Yes, I could use a guide.", "Option1")
+ Dialog.AddOption("No, I am not interested at this time.")
+ Dialog.Start()
+end
+
+
+function Option1(NPC, Spawn)
+ SetStepComplete(Spawn, KallonsVengeance, 1)
+ JazaSpawn(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Excellent! I am your man for this. I will meet you at the beginning of the route to Maj'Dul within the Oasis of Marr in a short while. We can negotiate payment at that time.")
+ Dialog.AddOption("I will meet you there.")
+ Dialog.Start()
+end
+
+function JazaSpawn(NPC, Spawn)
+if HasQuest(Spawn, KallonsVengeance) then
+local zone = GetZone(Spawn)
+local JazaID = GetSpawnByLocationID(zone, 308201)
+if JazaID == nil then
+SpawnByLocationID(zone, 308201)
+end
+end
+ end
+
+
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, welcome barrashar. Our escorts should be arriving any moment.")
+ Dialog.AddOption("Escorts?", "Option3")
+ Dialog.AddOption("I am not quite ready, I will return shortly.")
+ Dialog.Start()
+end
+
+
+function Option3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, perhaps I am being a bit unclear. MY escorts are coming. I suspect you will be none too pleased to meet them, especially Fasul.")
+ Dialog.AddOption("We shall see about that!", "escort_arriving")
+ Dialog.Start()
+end
+
+function Option4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Please do not kill me! Please! They forced me to do this, I did not wish to lure people here. Please spare me!")
+ Dialog.AddOption("Why should I?", "Option5")
+ Dialog.AddOption("I do not have time for your begging.")
+ Dialog.AddEmote("cringe")
+ Dialog.Start()
+end
+
+function Option5(NPC, Spawn)
+ SetStepComplete(Spawn, KallonsVengeance, 4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Because you are a just and kind person! If you spare me, I swear never to mislead travelers. Give me a chance, please!")
+ Dialog.AddOption("I'll let you live. However, if I hear of another incident involving you...")
+ Dialog.AddEmote("beg")
+ Dialog.Start()
+end
+
+
+function InRange(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "Welcome barrashar! Do you need a guide for this desert? If so, speak to me.", "", 1689589577, 4560189, Spawn)
+end
+
+
+function escort_arriving(NPC, Spawn) -- Spawns Fasul gang
+if GetTempVariable(NPC, "NoDupe") == "true" then
+AddTimer(NPC, 6000, "check")
+end
+ end
+
+
+function check(NPC, Spawn)
+if GetTempVariable(NPC, "NoDupe") == "true" then
+local zone = GetZone(NPC)
+SpawnGroupByID(zone, 1056891)
+SetTempVariable(NPC, "NoDupe", "false")
+end
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/SinkingSands/KallonEbbtide.lua b/server/SpawnScripts/SinkingSands/KallonEbbtide.lua
new file mode 100644
index 000000000..15b29c1ab
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/KallonEbbtide.lua
@@ -0,0 +1,337 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/KallonEbbtide.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 06:12:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local KallonsVengeance = 5938 -- Kallon's Vengeance Quest ID
+
+function spawn(NPC)
+ProvidesQuest(NPC, KallonsVengeance)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasQuest(Spawn, KallonsVengeance) and not HasCompletedQuest(Spawn, KallonsVengeance) then
+ Option0(NPC, Spawn)
+elseif GetQuestStep(Spawn, KallonsVengeance) == 1 or GetQuestStep(Spawn, KallonsVengeance) == 2 or GetQuestStep(Spawn, KallonsVengeance) == 3 or GetQuestStep(Spawn, KallonsVengeance) == 4 or GetQuestStep(Spawn, KallonsVengeance) == 5 then
+ KallonsVengeanceProgress(NPC, Spawn)
+elseif HasCompletedQuest(Spawn, KallonsVengeance) then
+ OptionCompleted(NPC, Spawn)
+end
+ end
+
+function Option0(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, a new face that looks eager to explore these lands! If you're looking for gainful employment, the Courts of Maj'Dul are looking for foreign adventurers to strengthen their ranks.")
+ Dialog.AddOption("Hello. I don't believe we've met, who are you?", "Option2")
+ Dialog.AddOption("What are the Courts of Maj'Dul?", "Option1")
+ Dialog.AddOption("Not interested, I will be on my way now.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1022.mp3", 0, 0)
+ Dialog.Start()
+end
+
+
+function Option1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The courts of Maj'Dul are three separate factions within the city that vie for power over the remnants of the Dervish empire. They have each established an outpost at the docks, and their goal is to attract new arrivals to their competing causes. Mahir Lu'ay represents the Court of the Blade, Thara Bashirah represents the Court of the Coin, and Taj As'ad represents the Court of Truth. I encourage you to converse with these individuals, as collectively the courts are the most powerful political force in these lands.")
+ Dialog.AddOption("I would like to hear more of your journey through these lands.", "Option4")
+ Dialog.AddOption("I appreciate the advice, but I must take my leave.")
+ Dialog.Start()
+end
+
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My name is Kallon Ebbtide, and I have had many adventures in these lands. Would you like to hear my tale? Perhaps, you would rather hear of the different lands or people? Either way, I would be honored to help a fellow adventurer with whatever information I may have.")
+ Dialog.AddOption("I would like to hear the tale of your personal adventures.", "Option5")
+ Dialog.AddOption("Another time, perhaps.")
+ Dialog.Start()
+end
+
+
+
+
+function Option4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My name is Kallon Ebbtide, and I have had many adventures in these lands. Would you like to hear my tale? Perhaps, you would rather hear of the different lands or people? Either way, I would be honored to help a fellow adventurer with whatever information I may have.")
+ Dialog.AddOption("I would like to hear the tale of your personal adventures.", "Option5")
+ Dialog.AddOption("I would like to hear more about the lands of this foreign shore.", "Option10")
+ Dialog.AddOption("I would like to hear more about the people of this land.", "Option21")
+ Dialog.AddOption("Another time, perhaps.")
+ Dialog.Start()
+end
+
+function Option5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Much like you, I came here searching for adventure and riches. What I found was a harsh and brutal land with an equally harsh people inhabiting it. My companions and I arrived and immediately sought a guide to take us to Maj'Dul. We found someone at the hunter camp further north of the nomad camp, and he agreed to take us.")
+ Dialog.AddOption("Please continue your story.", "Option6")
+ Dialog.AddOption("Unfortunately, I must take my leave.")
+ Dialog.Start()
+end
+
+function Option6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("This guide asked us to meet him at the oasis nearby. In reality, this person was leading us into a trap for his bandit comrades. We were ambushed at the oasis by a man named Fasul and his bandits. We resisted, and in the course of the fight all of my companions were slain and I was unconscious and left for dead.")
+ Dialog.AddOption("That is horrible! How did you survive?", "Option7")
+ Dialog.AddOption("That is an unfortunate tale, but I must leave now.")
+ Dialog.Start()
+end
+
+
+function Option7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("When I awoke, I had been saved by a merchant traveling to Maj'Dul. In gratitude, I offered to serve this merchant. For the next few moons, I traveled throughout this realm as the merchant's servant. Very recently, he became deathly ill and as a gesture of kindness released me from my service. I have now decided to return home, and I am working as an emissary of the courts for new arrivals to earn my fare home.")
+ if not HasQuest(Spawn, KallonsVengeance) and not HasCompletedQuest(Spawn, KallonsVengeance) then
+ Dialog.AddOption("What about this bandit? Did you ever avenge your comrades?", "Option9")
+ end
+ Dialog.AddOption("Please elaborate on these courts.", "Option8")
+ Dialog.AddOption("I would like to hear more of your stories.", "Option2")
+ Dialog.AddOption("An interesting story, but I must take my leave.")
+ Dialog.Start()
+end
+
+function Option8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The courts of Maj'Dul are three separate factions within the city that vie for power over the remnants of the Dervish empire. They have each established an outpost at the docks, and their goal is to attract new arrivals to their competing causes. Mahir Lu'ay represents the Court of the Blade, Thara Bashirah represents the Court of the Coin, and Taj As'ad represents the Court of Truth. I encourage you to converse with these individuals, as collectively the courts are the most powerful political force in these lands.")
+ Dialog.AddOption("I would like to hear more of your journey through these lands.", "Option4")
+
+ Dialog.AddOption("I appreciate the advice, but I must take my leave.")
+ Dialog.Start()
+end
+
+
+function Option9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("One last thing holds me to this realm. I never found Fasul to exact vengeance for my fallen friends. I expect he is still a menace to new arrivals and nomad merchants alike. Would you be interested in pursuing this man?")
+ Dialog.AddOption("Yes, I will be glad to act your stead in this matter.", "offer")
+ Dialog.AddOption("I am not interested in fighting someone else's battle.")
+ Dialog.Start()
+end
+
+
+function Option10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Desert of Ro is a harsh and unyielding place. The only major city remaining after the Shattering is Maj'Dul, and it is the seat of the Dervish empire. There are two distinct regions, both different in their harsh landscape. You have arrived here in the Sinking Sands, name for the large area of sandy dunes to our west. Far to the west, beyond the dunes, lie the Pillars of Flame.")
+ Dialog.AddOption("I would like to hear more about the city of Maj'Dul.", "Option11")
+ Dialog.AddOption("I am interested in hearing more about the Sinking Sands.", "Option17")
+ Dialog.AddOption("I am interested in hearing about the Pillars of Flame.", "Option19")
+ Dialog.AddOption("I would rather talk about something else.", "Option4")
+ Dialog.AddOption("I do not have time for further tales.")
+ Dialog.Start()
+end
+
+function Option11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Maj'Dul is the only city in the Desert of Ro. It was created by the first sultan of the Dervish empire, Ahkari. It is now a city of intrigue and danger. After Ahkari's death, his sons could not agree on who should lead, so they formed the Courts of Maj'Dul from their own followers and began to vie for power over the Dervish Empire.")
+ Dialog.AddOption("What are these Courts?", "Option12")
+ Dialog.AddOption("How did Ahkari die?", "Option16")
+ Dialog.AddOption("I would rather hear about other tales.", "Option4")
+ Dialog.Start()
+end
+
+
+function Option12(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Courts of Maj'Dul were originally distinct sects, each formed and controlled by a son of Ahkari. After Ahkari's death, each son established a court based on his sect. These are the Court of the Blade, the Court of the Coin, and the Court of Truth.")
+ Dialog.AddOption("I would like to hear more about the Court of the Blade.", "Option10")
+ Dialog.AddOption("I am interested in hearing more about the Court of the Coin.", "Option14")
+ Dialog.AddOption("Please tell me more about the Court of Truth.", "Option15")
+ Dialog.AddOption("What about the emissaries of the Courts at the docks?", "Option1")
+ Dialog.AddOption("I would like to hear more about Maj'Dul", "Option11")
+ Dialog.AddOption("I must take my leave, I will return another time.")
+ Dialog.Start()
+end
+
+
+function Option13(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Court of the Blade, currently headed by Dukarem, believes they must lead the Dervish empire through military force to expand it. Dukarem succeeded his father, Dukar, as the leader. Dukarem's son, Dukaris, is rumored to be quite the hero and is called the Champion of the People.")
+ Dialog.AddOption("I would like to hear more about the Courts.", "Option12")
+ Dialog.AddOption("I need to depart. Perhaps I will have time for tales later.")
+ Dialog.Start()
+end
+
+function Option14(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Court of the Coin, headed by Neriph, seeks to lead and revive the Dervish Empire through commerce and trading. It is rumored that Neriph was unprepared to lead the Coin when his father, Omren, died. They say that he depends heavily upon his advisors.")
+ Dialog.AddOption("I am interested in hearing more about these Courts.", "Option12")
+ Dialog.AddOption("Unfortunately, I need to depart.")
+ Dialog.Start()
+end
+
+function Option15(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Court of Truth, headed by Ishara, seeks to control the Dervish empire through its complex judicial system, and they are also the caretakers of all essential knowledge. Ishara became the caliph of Truth when his father, Ishti, was exiled. It is rumored that the prized aqueducts in Maj'Dul are having problems, and Ishara is looking for help in solving this.")
+ Dialog.AddOption("Please tell me more about the Courts of Maj'Dul.", "Option12")
+ Dialog.AddOption("I will come back for more tales another time.")
+ Dialog.Start()
+end
+
+
+function Option16(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Maj'Dul was originally a fortress for Ahkari. As he gathered the various tribes of Dervin under his banner, Maj'Dul slowly became the center of the Dervish empire. It is rumored that Ahkari went insane and leapt from the palace walls to his death. I did not find out exactly what happened, but Akhari's death was the event that led to the formation of the Courts and to the decline and instability of the Dervish empire.")
+ Dialog.AddOption("I would like to hear more about Maj'Dul.", "Option11")
+ Dialog.AddOption("I must go. Perhaps I can hear your tales another time.")
+ Dialog.Start()
+end
+
+function Option17(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Sinking Sands is the name of this part of the Desert of Ro. It is dominated by the Stilled Sea, a vast landscape of sandy dunes that stretches to our west and north. The route to Maj'Dul starts at the Oasis of Marr nearby and winds along the southwest border of this sea of sand. Within the western area of the Stilled Sea there are two large oases called the Twin Tears. The beaches around us are the eastern edge of the Stilled Sea, and far south along these beaches stands Onerock Isle.")
+ Dialog.AddOption("What inhabits the Sinking Sands?", "Option18")
+ Dialog.Start()
+end
+
+function Option18(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It is the home to various denizens. Besides the ferocious crocodiles along the beach and in the caverns nearby, the Rujarkian orcs and Alliz Raef Ew lizardmen harass any who travel the route to Maj'Dul. There are also the Anaz Mal gnolls who make their home in ancient tombs near one of the Twin Tears. Recent disturbing reports indicate that undead roam the deeper areas of the Stilled Sea.")
+ Dialog.AddOption("What of the courts' presence in the Sinking Sands?", "Option8")
+ Dialog.AddOption("I would like to hear more of the regions that make up the Desert of Ro.", "Option10")
+ Dialog.AddOption("I do not have time for further tales.")
+ Dialog.Start()
+end
+
+
+function Option19(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Pillars of Flame are located west of us, and northwest of Maj'Dul. Both the Dervish and native denizens war over control of the various plateaus of the region. T'Narev, the home of the Ashen Order monks, is located on the northeastern plateaus. The Ortallian tribe of nomads is located to the south while the Char'gin tribe makes its home on a northwestern plateau, and the Swiftriders have a base camp within the region.")
+ Dialog.AddOption("What of the threats native to this area?", "Option20")
+ Dialog.AddOption("I would rather talk about other places.", "Option10")
+ Dialog.AddOption("I must take my leave.")
+ Dialog.Start()
+end
+
+
+function Option20(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There are various threats in the Pillars of Flame. The goblins dominate the eastern areas and plateaus while the harpies and giants occupy the western plateaus and canyons. These groups are constantly vying for control of the region as well as harassing the nomads and Dervish in the area. The only other significant threats are the cyclopes to the south, and the mysterious naga, of which I know very little, that occupy an island plateau in the north.")
+ Dialog.AddOption("I would like to hear of other sights in the Desert of Ro.", "Option10")
+ Dialog.AddOption("I must be on my way.")
+ Dialog.Start()
+end
+
+function Option21(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Desert of Ro is home to many types of beings, but the dominant civilization and culture is the Dervish empire. This empire was formed from the various nomad tribes and Dervish bandits that inhabited this region well before the Shattering. Interestingly, some nomads have remained independent with tribes in both the Sinking Sands and Pillars of Flame.")
+ Dialog.AddOption("I am interested in hearing more about the Dervish empire, specifically Maj'Dul.", "Option11")
+ Dialog.AddOption("I would like to hear more about these independent nomad tribes.", "Option22")
+ Dialog.AddOption("I would like to hear your assessment of major threats in the Desert of Ro.", "Option24")
+ Dialog.AddOption("I must take my leave.")
+ Dialog.Start()
+end
+
+function Option22(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Some of the nomads in these lands did not join the Dervish empire, or they split off after the death of Ahkari. The Sinking Sands is the home of the Raj'Dur and Hizite tribes of nomads. The Raj'Dur tribe established a crocodile hunter camp north of these docks, but I do not believe that this is their only occupation. The Hizite tribe seems to be peaceful shepherds, occupying the camp to the west of the docks near the Oasis of Marr. Be wary of your dealings with either tribe, as they have no fondness for one another.")
+ Dialog.AddOption("What of the other tribes?", "Option23")
+ Dialog.AddOption("It sounds like you don't trust the Raj'Dur.", "Option5")
+ Dialog.AddOption("I would like to hear about other people in these lands.", "Option19")
+ Dialog.AddOption("I must leave and take care of other business")
+ Dialog.Start()
+end
+
+
+function Option23(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There are also two tribes located in the Pillars of Flame. The Char'Gin once occupied and mined in the clefts and valleys that the Rujarkian orcs now control, and they were forced to establish a foothold in the northern plateaus as fishermen. The Ortallians are religious zealots of Solusek Ro. I would be very careful of those fanatics. You may also come across the Swiftriders. They are a loose band of nomads from all tribes that have cast off their individual affiliations and now deliver goods from one tribe to another.")
+ Dialog.AddOption("I would like to hear about other people in these lands.", "Option16")
+ Dialog.AddOption("I will come back for more tales another time.")
+ Dialog.Start()
+end
+
+
+function Option24(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It is my belief that the Courts' in-fighting is the most dangerous threat to themselves and foreigners alike. If you refer to external threats, however, then the Rujarkian orcs occupy and control all that is south of Maj'Dul. There is also a significant presence of gnolls, lizardmen, goblins, harpies, and various giant-kin that are a constant threat to travelers going to and from Maj'Dul. However, I believe there are also unseen threats lurking.")
+ Dialog.AddOption("What do you mean?", "Option25")
+ Dialog.AddOption("I would like to hear about other people in these lands.", "Option21")
+ Dialog.AddOption("I don't have time for your idle speculations.")
+ Dialog.Start()
+end
+
+function Option25(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There are myths and stories that seem to have some basis in fact. The recent presence of undead in deeper areas of the Stilled Sea definitely bode ill for the Dervish Empire. I've seen the floating citadel rumored to be controlled by the mysterious djinn, and no one knows what their purpose is within this desert. Lastly, I've heard rumors of a dragon of gold or silver hue making its home in the Desert of Ro. Oddly, no one agrees on whether it is gold or silver, but everyone agrees that it is no myth.")
+ Dialog.AddOption("I would like to hear more about people in these lands.", "Option21")
+ Dialog.AddOption("I must take my leave.")
+ Dialog.Start()
+end
+
+
+
+
+
+function offer(NPC, Spawn)
+OfferQuest(NPC, Spawn, KallonsVengeance)
+end
+
+
+function KallonsVengeanceProgress(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome... back, adventurer! Did you find the bandits?")
+ Dialog.AddOption("Unfortunately, no. I would like to hear of your adventures again, please.", "Option4")
+ if GetQuestStep(Spawn, KallonsVengeance) == 5 then
+ Dialog.AddOption("Yes, I have avenged your fallen comrades! You can now leave these lands with a clear conscience.", "OptionFinish")
+ end
+ Dialog.AddOption("No, I am still searching for the bandits.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1022.mp3", 0, 0)
+ Dialog.Start()
+end
+
+function OptionFinish(NPC, Spawn)
+ SetStepComplete(Spawn, KallonsVengeance, 5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Thank you, my friends! I can now leave these lands without guilt since my comrades have been avenged. I still need to finish earning my passage, but this news makes that a small burden. Thank you again. I shall remember your kindness.")
+ Dialog.AddOption("You're welcome. I would be interesed in hearing about the Court's emissaries in Sinking Sands.", "Option2")
+ Dialog.AddOption("I am glad i could help. I would like to hear more of your tales.", "Option2")
+ Dialog.AddOption("Good luck in your endeavor. Perhaps we'll meet again.")
+ Dialog.Start()
+end
+
+
+
+
+function OptionCompleted(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome back, my friend. As you can see, I am still working to cover my fees for the voyage home. How fare your adventures?")
+ Dialog.AddOption("I am exploring places and meeting people you might have mentioned. May I hear of your adventures again?", "Option2")
+ Dialog.AddOption("It is good to see you, Kallon. Unfortunately, I do not have time to chat.")
+ Dialog.Start()
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SinkingSands/PlumetorDulSadma.lua b/server/SpawnScripts/SinkingSands/PlumetorDulSadma.lua
new file mode 100644
index 000000000..0aa6bfa63
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/PlumetorDulSadma.lua
@@ -0,0 +1,137 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/PlumetorDulSadma.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 03:12:56
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+
+function spawn(NPC)
+
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings, mortal. It is little wonder you have come to see me. Now it is time to celebrate, as the Forgotten One is returning to our world once again!")
+ Dialog.AddEmote("bow")
+ Dialog.AddOption("The Forgotten One? You must mean Anashti Sul, correct?", "Option1")
+ Dialog.AddOption("Well, you seem to be quite pleased, so I'll leave you be. Farewell.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1011.mp3", 0, 0)
+ Dialog.Start()
+end
+
+function Option1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Indeed! After all of these long Ages, she will once again walk among the gods as she once did, and shower her gifts of love and compassion upon the undeserving mortals of Norrath! These are truly exciting times to be living in!")
+ Dialog.AddOption("Pardon me. I do not mean to question you, but I had thought that Anashti Sul was destroyed in her palace in the Void. That is what has been whispered, in any case.", "Option2")
+ Dialog.AddOption("Indeed, but I must be going. Goodbye for now.")
+ Dialog.Start()
+end
+
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No, my little feather, she was not destroyed. Although what happened to her in the Void was not part of her plans, that event will work into the favor of all of us. You see, the victory of those who fought her in that palace merely snapped her tether to the Void itself, catapulting her back to our world!")
+ Dialog.AddEmote("no")
+ Dialog.AddOption("Wait, so is Anashti Sul among us again, then?", "Option3")
+ Dialog.AddOption("Well, contact me when she has arrived. I must be going.")
+ Dialog.Start()
+end
+
+function Option3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not as of yet. She is materializing on our world now -- gathering her strength, reestablishing the conduits of power that anchor her to this world. This is a long and exhausting process, but it is one that even we, as mortals, can assist her with. Imagine -- we could help a goddess be reborn in her rightful home!")
+ Dialog.AddEmote("no")
+ Dialog.AddOption("Why would we do that? Was she not banished for crimes against mortals?", "Option4")
+ Dialog.AddOption("That sounds exciting, indeed. However, I must be going now.")
+ Dialog.Start()
+end
+
+function Option4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Crimes? Nay, they were not crimes. Anashti Sul always worked out of love for the mortals! She was the goddess of life and health... she felt the pain of every creature as it lay wounded, sick, or dying, and she sought nothing less than to eliminate that horror forever.")
+ Dialog.AddEmote("no")
+ Dialog.AddOption("So what happened?", "Option5")
+ Dialog.AddOption("How compassionate. I want to hear more of this another time.")
+ Dialog.Start()
+end
+
+function Option5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The other gods were jealous of her gifts to the mortals. They realized they could lose all of their followers to Anashti Sul, once the mortals saw how much she loved them, and how much she would sacrifice for them. Anashti Sul risked her existence for the mortals, and she paid the ultimate price for her love.")
+ Dialog.AddEmote("no")
+ Dialog.AddOption("So she looked after us, rather than abandoning us as the other gods did in the past?", "Option6")
+ Dialog.AddOption("That's unfortunate for them. Well, I may return another time.")
+ Dialog.Start()
+end
+
+function Option6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, yes. Anashti Sul would never have agreed to the pact of the gods. She would not have allowed her followers to suffer. Imagine a world where death and disease are but a distant memory; where life is eternal and Anashti Sul watches over us.")
+ Dialog.AddEmote("agree")
+ Dialog.AddOption("I'll have to admit, that does sound quite a bit better than what we're forced to live with now. What can I do to help?", "Option7")
+ Dialog.AddOption("I'll bear that in mind. Well, best of luck to you!")
+ Dialog.Start()
+end
+
+function Option7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("First, we must gather the followers of Anashti Sul, and prepare them for her return. We will want to begin building the foundation of her canon, so we will want to collect stories of her from the past -- lost tomes in libraries across Norrath that have been overlooked by those that do not understand their significance. With those, we can create the stories to teach and enlighten those who might not know the truth of Anashti Sul's caring nature.")
+ Dialog.AddOption("I would be willing to collect those tomes, if you need me to.", "Option8")
+ Dialog.AddOption("You should begin searching, then. Farewell for now.")
+ Dialog.Start()
+end
+
+function Option8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I am glad that you see the light of her love. Your willingness to help may be a beacon to others who do not yet see the truth, or have forgotten it.")
+ Dialog.AddEmote("thanks")
+ Dialog.AddOption("Forgotten it? What do you mean?", "Option9")
+ Dialog.AddOption("I do, but I have other matters to look into right now. Farewell.")
+ Dialog.Start()
+end
+
+function Option9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I once belonged to a group of worshipers of Anashti Sul, known as the Fellowship of the Peacock. Our group was thought to have been killed, down to the last member, but the jealousy of nonbelievers merely scattered us. Those who were left went into hiding, fearing for their lives. Most have forgotten the glory of her word, and a few have even strayed from the path altogether, seeking the light of other deities.")
+ Dialog.AddOption("True heresy, to be sure. So you would like me to gather the lost tomes, and the lost members of the Fellowship of the Peacock, then?", "Option10")
+ Dialog.AddOption("I'm sure their reasons are their own. Well, I must be going.")
+ Dialog.Start()
+end
+
+
+
+function Option10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, you are definitely a sharp one, my little feather. Anashti Sul will be pleased to have followers such as you in her muster. Now go forth -- find the ancient scripts, and find those who have lost their way. When you find someone who you think might be a member of the Fellowship, speak these words: \"Can you hear the peacock's call?\" and they will answer, \"Indeed, and the feathers are quite beautiful.\" They will know it is safe to speak to you.")
+ Dialog.AddEmote("scheme")
+ Dialog.AddOption("I have changed my mind. I will think about it and return another time.")
+ Dialog.Start()
+end
+
+
+
+
+
+
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SinkingSands/TharaBashirah.lua b/server/SpawnScripts/SinkingSands/TharaBashirah.lua
new file mode 100644
index 000000000..910f78e74
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/TharaBashirah.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/TharaBashirah.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 08:12:01
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SinkingSands/adervishbeachcomber.lua b/server/SpawnScripts/SinkingSands/adervishbeachcomber.lua
new file mode 100644
index 000000000..5c7ef7ce1
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/adervishbeachcomber.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/adervishbeachcomber.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 06:12:59
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/SinkingSands/amonkey.lua b/server/SpawnScripts/SinkingSands/amonkey.lua
new file mode 100644
index 000000000..a639e156d
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/amonkey.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/amonkey.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 05:12:49
+ Script Purpose : movement script for a monkey.
+ :
+--]]
+
+function spawn(NPC)
+ movement(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function movement(NPC)
+if GetSpawnLocationID(NPC) == 306476 then
+MovementLoopAddLocation(NPC, -1500.85, -214.43, -408.72, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1493.80, -215.28, -404.18, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1490.80, -215.73, -392.88, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1467.61, -223.93, -393.10, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1468.17, -223.61, -411.79, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1507.61, -214.14, -410.05, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1540.10, -220.06, -406.76, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1542.53, -221.06, -392.51, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1515.34, -214.54, -390.25, 2, math.random(11, 17))
+elseif GetSpawnLocationID(NPC) == 306470 then
+MovementLoopAddLocation(NPC, -1552.46, -225.09, -407.42, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1553.12, -225.35, -391.71, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1519.69, -214.91, -391.87, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1493.44, -215.33, -392.00, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1493.91, -215.26, -408.47, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1471.09, -222.13, -391.36, 2, math.random(11, 17))
+MovementLoopAddLocation(NPC, -1500.46, -214.44, -389.31, 2, math.random(11, 17))
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SinkingSands/anoasisbandit.lua b/server/SpawnScripts/SinkingSands/anoasisbandit.lua
new file mode 100644
index 000000000..47d2c6fbd
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/anoasisbandit.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/anoasisbandit.lua
+ Script Author : premierio015
+ Script Date : 2023.12.17 02:12:29
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+if GetSpawnLocationID(NPC) == 133788947 then
+MoveToLocation(NPC, -1120.10, -208.95, -244.28, 3, "", true)
+MoveToLocation(NPC, -1137.88, -211.05, -249.93, 3, "", true)
+MoveToLocation(NPC, -1153.25, -212.78, -236.50, -236.22, 3, "", false)
+elseif GetSpawnLocationID(NPC) == 133788951 then
+MoveToLocation(NPC, -1126.91, -209.99, -244.68, 3, "", true)
+MoveToLocation(NPC, -1136.22, -211.04, -241.41, 3, "", true)
+ MoveToLocation(NPC, -1143.47, -211.98, -238.79, 3, "", true)
+elseif GetSpawnID(NPC) == 730487 then
+MoveToLocation(NPC, -1137.88, -211.05, -249.93, 3, "", true)
+ MoveToLocation(NPC, -1153.25, -212.78, -236.50, 3, "", true)
+MoveToLocation(NPC, -1125.46, -209.60, -237.31, 3,"",true)
+MoveToLocation(NPC, -1132.50, -210.54, -248.73, 3,"",true)
+MoveToLocation(NPC, -1145.80, -212.29, -236.74, 3,"", false)
+elseif GetSpawnID(NPC) == 730488 then
+ MoveToLocation(NPC, -1116.94, -208.28, -240.72, 3, "", true)
+ MoveToLocation(NPC, -1143.81, -211.74, -247.55, 3, "", true)
+ MoveToLocation(NPC, -1151.48, -212.58, -239.19, 3, "", false)
+end
+ end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function prespawn(NPC)
+local gender_choice = MakeRandomInt(1, 2)
+if gender_choice == 1 then -- MALE
+SpawnSet(NPC, "model_type", 78)
+SpawnSet(NPC, "soga_model_type", 78)
+SpawnSet(NPC, "gender", 1)
+else -- FEMALE
+end
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/SinkingSands/anomadiccarpetkeeper.lua b/server/SpawnScripts/SinkingSands/anomadiccarpetkeeper.lua
new file mode 100644
index 000000000..b70a51857
--- /dev/null
+++ b/server/SpawnScripts/SinkingSands/anomadiccarpetkeeper.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/SinkingSands/anomadiccarpetkeeper.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 10:12:23
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greetings traveler, how can I assist you today?")
+ Dialog.AddOption("I would like to travel.", "travel")
+ Dialog.AddOption("Nowhere.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1042.mp3", 0, 0)
+ Dialog.Start()
+end
+
+function travel(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Where to?")
+ if GetSpawnLocationID(NPC) == 305698 then
+ Dialog.AddOption("To Twin Tear's.", "PortOfTearsToTwinTears")
+ Dialog.AddOption("To Onerock Isle.", "PortOfTearsToOnerockIsle")
+elseif GetSpawnLocationID(NPC) == 305699 then
+ Dialog.AddOption("To Port of Tear's.", "TwinTearsToPortOfTears")
+elseif GetSpawnLocationID(NPC) == 1586028 then
+ Dialog.AddOption("To Port of Tear's.", "UndercityArenaToPortOfTears")
+end
+ Dialog.AddOption("Nowhere.")
+ Dialog.Start()
+
+end
+
+function PortOfTearsToTwinTears(NPC, Spawn)
+ StartAutoMount(Spawn, 540) -- To Twin Tears
+ SetMount(Spawn, 1369)
+end
+
+function PortOfTearsToOnerockIsle(NPC, Spawn)
+ StartAutoMount(Spawn, 539) -- To Onerock Isle
+ SetMount(Spawn, 1369)
+end
+
+function TwinTearsToPortOfTears(NPC, Spawn)
+ StartAutoMount(Spawn, 543) -- To Port of Tears
+ SetMount(Spawn, 1369)
+end
+
+function UndercityArenaToPortOfTears(NPC, Spawn)
+ StartAutoMount(Spawn, 544) -- To Port of Tears
+ SetMount(Spawn, 1369)
+end
+
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/SorcerersTrial/AKnowledgeGuardian.lua b/server/SpawnScripts/SorcerersTrial/AKnowledgeGuardian.lua
new file mode 100755
index 000000000..d72d6b57e
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/AKnowledgeGuardian.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/AKnowledgeGuardian.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 04:11:56
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC,Spawn)
+ AddTimer(NPC,1800,"DespawnAnim",1,Spawn)
+ ApplySpellVisual(NPC,101)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780600)
+ if Ring ~= nil then
+ Trial4Done(Ring,Spawn)
+ end
+end
+
+function DespawnAnim(NPC,Spawn)
+Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SorcerersTrial/ARunedGargoyle.lua b/server/SpawnScripts/SorcerersTrial/ARunedGargoyle.lua
new file mode 100755
index 000000000..9370bbd01
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/ARunedGargoyle.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/ARunedGargoyle.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 04:11:27
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC,Spawn)
+ AddTimer(NPC,1800,"DespawnAnim",1,Spawn)
+ ApplySpellVisual(NPC,101)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780600)
+ if Ring ~= nil then
+ Trial3Done(Ring,Spawn)
+ end
+end
+
+function DespawnAnim(NPC,Spawn)
+Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SorcerersTrial/AStoneGuardian.lua b/server/SpawnScripts/SorcerersTrial/AStoneGuardian.lua
new file mode 100755
index 000000000..0e51c127d
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/AStoneGuardian.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/AStoneGuardian.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 04:11:01
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+dofile("SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC,Spawn)
+ AddTimer(NPC,1800,"DespawnAnim",1,Spawn)
+ ApplySpellVisual(NPC,101)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780600)
+ if Ring ~= nil then
+ Trial2Done(Ring,Spawn)
+ end
+end
+
+function DespawnAnim(NPC,Spawn)
+Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SorcerersTrial/AnEnergyKeeper.lua b/server/SpawnScripts/SorcerersTrial/AnEnergyKeeper.lua
new file mode 100755
index 000000000..659f627f2
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/AnEnergyKeeper.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/AnEnergyKeeper.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 02:11:35
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC,Spawn)
+ AddTimer(NPC,1800,"DespawnAnim",1,Spawn)
+ ApplySpellVisual(NPC,101)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780600)
+ if Ring ~= nil then
+ Trial1Done(Ring,Spawn)
+ end
+end
+
+function DespawnAnim(NPC,Spawn)
+Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SorcerersTrial/ChannelingOrb.lua b/server/SpawnScripts/SorcerersTrial/ChannelingOrb.lua
new file mode 100755
index 000000000..6ab098925
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/ChannelingOrb.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/ChannelingOrb.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 03:11:35
+ Script Purpose :
+ :
+--]]
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Channel ether' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Begin the trial. Focus energies into the crystal.", "offer")
+ AddConversationOption(con, "Leave the orb alone.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "The ether crackles around you as you focus on the channeling orb. Do you wish to begin the Sorcerer's trial?")
+end
+end
+
+
+function offer(NPC, Spawn)
+ CloseConversation(NPC, Spawn)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ ApplySpellVisual(NPC,18)
+ AddTimer(NPC,1500,"Ring",1,Spawn)
+ AddTimer(NPC,2000,"Ring2",1,Spawn)
+ AddTimer(NPC,3500,"Ring3",1,Spawn)
+ AddTimer(NPC,5000,"Ring4",1,Spawn)
+ end
+
+function Ring(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ SpawnSet(NPC,"model_type",2306)
+ SpawnSet(NPC,"size",30)
+end
+
+function Ring2(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ RingSpawn = SpawnByLocationID(zone,133780600)
+end
+
+function Ring3(NPC, Spawn)
+ ApplySpellVisual(NPC,100)
+end
+
+ function Ring4(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ EnergyGuard = SpawnByLocationID(zone,133780631)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+
+
diff --git a/server/SpawnScripts/SorcerersTrial/bookshelfrules.lua b/server/SpawnScripts/SorcerersTrial/bookshelfrules.lua
new file mode 100755
index 000000000..9f1d1f0a6
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/bookshelfrules.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/bookshelfrules.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 01:11:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search bookcase' then
+ local con = CreateConversation()
+ AddConversationOption(con, "\"The Summoner's Test\"", "Summon")
+ AddConversationOption(con, "\"The Sorcerer's Trial\"", "Sorc")
+ AddConversationOption(con, "\"The Enchanter's Challenge\"", "Enchant")
+ AddConversationOption(con, "Leave them alone.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "These books appear to be a collection of testing materials for use in arcane advancement trials. A few appear less dust-covered than others.")
+end
+end
+
+function Summon(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Return the testing materials.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, " ...A summoning ring composed of unlit candles must prepared so pupils have a chance to demonstrate control while not entirely being in control. Allow the students to complete the circle by lighting the candles, followed by tapping into the \"hole\" generated within the ring. This will allow the Three-Tower's energies to control the elements presented for the potentional summoner. NOTE: This should always be conducted in a small space should go the testing go awry! - Magister Niksel ")
+end
+
+function Sorc(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Return the testing materials.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, " ...A sorcerer must demonstrate mastery of arcane beings by displaying elemental prowess. To begin, they must weave the ether about them upon the focusing crystal within a candle ring. Four selected arcane creatures from the Three Towers's menagerie will be translocated to the testing chamber. They will be returned immediately for quick repairs for the next tester should they be torn asunder. NOTE: Knowledge Guardians may need a Magister's attention to address the probability for paper cuts. Priests had to be called in during a recent pupil's trial! - Magister Niksel ")
+end
+
+function Enchant(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Return the testing materials.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, " A large note is affixed to this book. \"Future Enchanter Charm tests need new protocols after the last incident. The aspiring enchanter was reverse-charmed and forced to run off the top floor of the Three Towers to an undesirable conclusion. Please conduct testing in another way until new methods can be employed! - Magister Niksel\" ")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua b/server/SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua
new file mode 100755
index 000000000..934eb0bbd
--- /dev/null
+++ b/server/SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua
@@ -0,0 +1,98 @@
+--[[
+ Script Name : SpawnScripts/SorcerersTrial/dpoinvisiblecube.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.13 04:11:11
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Trial1Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Stage2",1,Spawn)
+ AddTimer(NPC,3500,"Trial2",1,Spawn)
+end
+
+function Trial2Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Stage3",1,Spawn)
+ AddTimer(NPC,3500,"Trial3",1,Spawn)
+end
+
+function Trial3Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Stage4",1,Spawn)
+ AddTimer(NPC,3500,"Trial4",1,Spawn)
+end
+
+function Stage2 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780600)
+ ApplySpellVisual(SummonRing, 100)
+end
+
+function Trial2 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780603) == nil then
+ local Trial2Spawn = SpawnByLocationID(zone,133780628)
+ end
+end
+
+
+function Stage3 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780600)
+ ApplySpellVisual(SummonRing, 100)
+
+end
+
+function Trial3 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780601) == nil then
+ local Trial3Spawn = SpawnByLocationID(zone,133780629)
+ end
+end
+
+
+function Stage4 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780600)
+ ApplySpellVisual(SummonRing, 100)
+
+end
+
+function Trial4 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780604) == nil then
+ local Trial4Spawn = SpawnByLocationID(zone,133780630)
+ end
+end
+
+
+
+function Trial4Done(NPC,Spawn)
+ AddTimer(NPC,2500,"RingDone",1,Spawn)
+ if GetQuestStep(Spawn,5769)==1 then
+ SetStepComplete(Spawn,5769,1)
+end
+ end
+
+
+function RingDone(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780600)
+ SpawnSet(SummonRing,"visual_state",34341)
+ AddTimer(NPC,3000,"DespawnRing")
+end
+
+function DespawnRing(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780600)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthFreeport/AnniaKaeso.lua b/server/SpawnScripts/SouthFreeport/AnniaKaeso.lua
new file mode 100755
index 000000000..b10d7a73b
--- /dev/null
+++ b/server/SpawnScripts/SouthFreeport/AnniaKaeso.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/SouthFreeport/AnniaKaeso.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.02 08:10:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ PlayFlavor(NPC,"","","threaten",0,0,Spawn)
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello. Hello. Welcome. You look out of place here in Freeport. Almost as if you were something blown in by the wind or swept ashore by the tide. No wait. It was that dream!")
+ Dialog.AddVoiceover("voiceover/english/annia_kaeso/fprt_south/mer_anniakaeso.mp3", 3665529784, 3634349576)
+ PlayFlavor(NPC,"","","smile",0,0,Spawn)
+ if HasQuest(Spawn,5906) and GetQuestStep(Spawn,5906) == 3 then
+ Dialog.AddOption("Have you been selling any type of foreign plant?", "Plant")
+ end
+ Dialog.AddOption("Thank you for your time. I must be going now.")
+ Dialog.Start()
+end
+
+function Plant(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I have these purple flowers that an adventurer brought to me from across the ocean, or so she claimed. I've sold a couple of them to some shady looking character. He seemed rather excited when he saw that I had them... I don't know if that helps.")
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/armorsmith_annia_kaeso/fprt_south/mer_anniakaeso002.mp3", 678467425, 386573512)
+ Dialog.AddOption("Do you remember who purchased them?", "Plant2")
+ Dialog.Start()
+end
+
+
+function Plant2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No, I don't. He had a very tired look in his eyes, and was a bit jumpy, but that's about it. He was wearing a cloak, so I don't even know what his race was. You can have one of these flowers if it helps.")
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/armorsmith_annia_kaeso/fprt_south/mer_anniakaeso003.mp3", 955262143, 3659545208)
+ Dialog.AddOption("I'll take one. Thank you.", "Plant2")
+ Dialog.AddOption("You fool! This may be spreading disease throughout the city! Give it to me!", "Plant4")
+ Dialog.Start()
+end
+
+function Plant3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","thanks",0,0,Spawn)
+ SetStepComplete(Spawn,5906,3)
+end
+
+function Plant4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","","cringe",0,0,Spawn)
+ SetStepComplete(Spawn,5906,3)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthFreeport/LucillaQuietus.lua b/server/SpawnScripts/SouthFreeport/LucillaQuietus.lua
index b154f24a3..a3f0d7b58 100755
--- a/server/SpawnScripts/SouthFreeport/LucillaQuietus.lua
+++ b/server/SpawnScripts/SouthFreeport/LucillaQuietus.lua
@@ -5,6 +5,7 @@
Script Purpose :
Script Notes : New to add missing dialog for quest "Reward For A Missing Music Box".
--]]
+require "SpawnScripts/Generic/DialogModule"
local RewardForAMissingMusicBox = 5261
@@ -13,14 +14,51 @@ function spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/optional1/weaponsmith_lucilla_quietus/fprt_south/100_questlucillaquietus_callout1_3d9a231a.mp3", "Either buy something or get out of the way!", "", 3790442270, 2463491720, Spawn, 0)
-
- if HasQuest(Spawn, RewardForAMissingMusicBox) then
- SetStepComplete(Spawn, RewardForAMissingMusicBox, 1)
- end
+Dialog1(NPC, Spawn)
end
function respawn(NPC)
spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Either buy something or get out of the way!")
+ Dialog.AddVoiceover("voiceover/english/optional1/weaponsmith_lucilla_quietus/fprt_south/100_questlucillaquietus_callout1_3d9a231a.mp3", 3790442270, 2463491720)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ if GetQuestStep(Spawn,RewardForAMissingMusicBox)==1 then
+ Dialog.AddOption("Actually, I found a note with your name on it. Give me a few coins and you can have it.It looks like I've come across something with your name on it. You may be interested in this music box.","Dialog2")
+ end
+ Dialog.AddOption("Well, show me your wares then!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The ratonga thieves took that music box from me! I demand you give it to me this instant! ")
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ Dialog.AddOption("For the right price, its yours.","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you always this infuriating?! Here. Take these few coins I have and give me the box!")
+ PlayFlavor(NPC,"","","frustrated",0,0,Spawn)
+ Dialog.AddOption("Deal.", "Dialog4")
+ Dialog.AddOption("On second thought, nevermind. I'll keep it.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Finally! Give it here... It seems the nameplate hasn't been opened... and... Ah, hah! Yes! I can't believe neither you nor the filthy thief found my savings! Five years worth of business could have slipped through my fingers. Enjoy your copper \"friend\". Hahaha!")
+ PlayFlavor(NPC,"","","happy",0,0,Spawn)
+ Dialog.AddOption("Err...")
+ Dialog.Start()
+ SetStepComplete(Spawn, RewardForAMissingMusicBox, 1)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/CuntyDoor.lua b/server/SpawnScripts/SouthQeynos/CuntyDoor.lua
new file mode 100755
index 000000000..363c769a8
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/CuntyDoor.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/CuntyDoor.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 09:11:29
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5769,1,0,0,1)
+ SetRequiredQuest(NPC,5769,2,0,0,1)
+ SetRequiredQuest(NPC,5770,1,0,0,1)
+ SetRequiredQuest(NPC,5770,2,0,0,1)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Enter the Trial' then
+ if HasQuest(Spawn,5770) and not HasCompletedQuest(Spawn,5770) then
+ Summoner = GetZone("Summonerstest")
+ Zone(Summoner,Spawn)
+ elseif HasQuest(Spawn,5769) and not HasCompletedQuest(Spawn,5769) then
+ Sorcerer = GetZone("Sorcererstrial")
+ Zone(Sorcerer,Spawn)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/ElspethAstley.lua b/server/SpawnScripts/SouthQeynos/ElspethAstley.lua
index 47f9546b4..0e5a017e9 100755
--- a/server/SpawnScripts/SouthQeynos/ElspethAstley.lua
+++ b/server/SpawnScripts/SouthQeynos/ElspethAstley.lua
@@ -5,52 +5,12 @@
Script Date : 2020.01.06
Script Notes : Modified w/ new format and VOs included.
--]]
+require "SpawnScripts/Generic/DialogModule"
local ALABASTER_FOR_THE_MAGES_QUEST_ID = 501
-function respawn(NPC)
- spawn(NPC)
-end
-
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/elspeth_astley/qey_south/elspethastley000.mp3", "", "", 280090355, 624466296, Spawn)
-
- if HasQuest(Spawn, ALABASTER_FOR_THE_MAGES_QUEST_ID) then
- if GetQuestStep(Spawn, ALABASTER_FOR_THE_MAGES_QUEST_ID) == 2 then
- AddConversationOption(conversation, "I have some alabaster you might be interested in.", "dlg_0_1")
- end
- end
- AddConversationOption(conversation, "Thanks for the information.")
- StartConversation(conversation, NPC, Spawn, "The winds of time change many things. One thing remains the same, the might of the sorcerer.")
-end
-
---[[ QUEST ALABASTER FOR THE MAGES (501) ]]--
-function dlg_0_1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- AddConversationOption(conversation, "I've five blocks worth.", "dlg_0_2")
- StartConversation(conversation, NPC, Spawn, "Interesting ... how much are you selling? We can always use more alabaster to make wands.")
-end
-
-function dlg_0_2(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- SetStepComplete(Spawn, ALABASTER_FOR_THE_MAGES_QUEST_ID, 2)
-
- AddConversationOption(conversation, "Thank you.")
- StartConversation(conversation, NPC, Spawn, "Perfect. I'll buy all of it.")
-end
---[[ QUEST END]]--
-
-
-require "SpawnScripts/Generic/DialogModule"
-
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "cast_priest_buff_01")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/SouthQeynos/Finn.lua b/server/SpawnScripts/SouthQeynos/Finn.lua
new file mode 100755
index 000000000..898e28cd7
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/Finn.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/Finn.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.15 02:11:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetRequiredQuest(NPC,5771,1,1,0,0)
+end
+
+function InRange(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","You there! You must be the one sent to help! They've all lost their wits!","wave",0,0,Spawn)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The place being torn apart! We were just having a drink is all...")
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1050.mp3", 0, 0)
+ Dialog.AddOption("Calm down and tell me what is going on.", "Dialog2")
+ Dialog.AddOption("I'm not going in there!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("We were all just having a drink in the Wayfarer's Rest like we do every night. I stepped out for a bit and came back to crashing and smashing from inside. They've all lost it, but I can't tell why. Even lil' Stimpleweed, who would never hurt a soul, is tearing up the place. Please, you must find a way to settle them down!")
+ PlayFlavor(NPC,"","","pout",0,0,Spawn)
+ Dialog.AddOption("Alright. I'll investigate.","Door")
+ Dialog.AddOption("Did you notice anything odd?","Odd")
+ Dialog.Start()
+end
+
+function Odd(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("There was a shady look'n character who entered earlier, but I thought they had left after their drink... Please, we must figure out how to calm them down!")
+ PlayFlavor(NPC,"","","shrug",0,0,Spawn)
+ Dialog.AddOption("Alright. I'll investigate.","Door")
+ Dialog.Start()
+end
+
+function Door(NPC, Spawn)
+ SpawnSet(NPC,"heading",194)
+ PlayFlavor(NPC,"","The tavern is right there. Please, be careful!","point",0,0,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/KnightLieutenantSteelnerve.lua b/server/SpawnScripts/SouthQeynos/KnightLieutenantSteelnerve.lua
index 025760ec4..9695a9a61 100755
--- a/server/SpawnScripts/SouthQeynos/KnightLieutenantSteelnerve.lua
+++ b/server/SpawnScripts/SouthQeynos/KnightLieutenantSteelnerve.lua
@@ -17,8 +17,8 @@ end
function InRange(NPC, Spawn)
NonCitizen(NPC,Spawn)
if math.random(0, 100) <= 25 and GetFactionAmount(Spawn,11) >20000 then
- PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_hail_gm_c865a827.mp3", "Duty above all else, citizen, except honor!", "scold", 4141262779, 4227030045, Spawn, 0)
- else
+ PlayFlavor(NPC, "voiceover/english/human_eco_good_1/ft/service/guard/human_guard_service_good_1_hail_gf_c865a827.mp3", "Duty above all else, citizen, except honor!", "", 373851625, 467562033, Spawn)
+ else
CheckFaction(NPC, Spawn, "Qeynos")
end
end
diff --git a/server/SpawnScripts/SouthQeynos/MagisterNiksel.lua b/server/SpawnScripts/SouthQeynos/MagisterNiksel.lua
index 625b0b3ef..e9680f1e6 100755
--- a/server/SpawnScripts/SouthQeynos/MagisterNiksel.lua
+++ b/server/SpawnScripts/SouthQeynos/MagisterNiksel.lua
@@ -28,9 +28,9 @@ end
function hailed(NPC, Spawn)
if GetLevel(Spawn) ==7 and HasCompletedQuest(Spawn,Mage1) then
DoneToday(NPC,Spawn)
- elseif GetLevel(Spawn) ==8 and HasCompletedQuest(Spawn,Mage2) then
+ elseif GetLevel(Spawn) >=8 and HasCompletedQuest(Spawn,Mage2) then
DoneToday(NPC,Spawn)
- elseif GetLevel(Spawn) ==9 and HasCompletedQuest(Spawn,Mage2) and GetClass(Spawn)==21 then
+ elseif GetLevel(Spawn) >=9 and HasCompletedQuest(Spawn,Mage2) and GetClass(Spawn)==21 and not HasQuest(Spawn, Ench) and not HasQuest(Spawn, Sorc) and not HasQuest(Spawn, Summ) then
FinalClassTest(NPC,Spawn)
else
FaceTarget(NPC, Spawn)
@@ -41,21 +41,24 @@ function hailed(NPC, Spawn)
if GetClass(Spawn)== 21 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Mage1) and not HasCompletedQuest(Spawn,Mage1) then
Dialog.AddOption("No, but I would be honored to have someone as famed and skilled as you help me advance my magic abilities.","Dialog1")
end
- if HasCompletedQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==2 then
+ if HasQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==2 then
Dialog.AddOption("I've dispersed the bog slugs. They seemed to be rather malformed.","Dialog2")
end
- if HasCompletedQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==6 then
+ if HasQuest(Spawn,Mage1) and GetQuestStep(Spawn,Mage1)==6 then
Dialog.AddOption("I've gained some useful insight from your former students about sorcery and weaving of elements.","Dialog3")
end
if GetClass(Spawn)== 21 and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Mage2) and not HasCompletedQuest(Spawn,Mage2) and HasCompletedQuest(Spawn,Mage1) then
Dialog.AddOption("Do you have time to continue my training today?","Dialog4")
end
- if HasCompletedQuest(Spawn,Mage2) and GetQuestStep(Spawn,Mage2)==2 then
+ if HasQuest(Spawn,Mage2) and GetQuestStep(Spawn,Mage2)==2 then
Dialog.AddOption("I've \"convinced\" Willim to have a little more confidence.","Dialog5")
end
- if HasCompletedQuest(Spawn,Mage2) and GetQuestStep(Spawn,Mage2)==4 then
+ if HasQuest(Spawn,Mage2) and GetQuestStep(Spawn,Mage2)==4 then
Dialog.AddOption("I've brought you an eyeball from a Klicnik.","Dialog6")
end
+ if HasCompletedQuest(Spawn,Ench) or HasCompletedQuest(Spawn,Sorc) or HasCompletedQuest(Spawn,Summ) then
+ Dialog.AddOption("Still at it Niksel? Just wanted to say hello.")
+ end
Dialog.AddOption("Um, ok. Thank you for that. Good luck with your students.")
Dialog.Start()
end
@@ -146,7 +149,7 @@ function Dialog3(NPC,Spawn)
Dialog.AddDialog("Good, good, good. I hope you learned the many uses of sorcery's power--just remember to respect this power.")
Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel009.mp3", 3515068214, 3688909586)
PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
- Dialog.AddOption("It was enlightening to hear how elemental magics can be destructive, but also deadly.","DoneToday")
+ Dialog.AddOption("It was enlightening to hear how elemental magics can be destructive, but also have utility.","DoneToday")
Dialog.Start()
end
@@ -169,7 +172,7 @@ function Dialog4(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("For you? Of course I do! Your last visit inspired me to solve my Theory of Elementary--perhaps you can help me work on it a bit later. Now, if you recall, in our last lesson, you learned the skills of a sorcerer and a summoner. Today, you shall learn the skills of an enchanter. Shall we begin?")
- Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel011.mp3", 2118767322, 484427585)
+ Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel011.mp3", 3711475963, 1487434543)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
Dialog.AddOption("Yes, I am ready.","Dialog4a")
Dialog.Start()
@@ -179,7 +182,7 @@ function Dialog4a(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Let's pick up where we left off. I can summarize an enchanter's philosophy in one phrase: \"I think, therefore you should too.\"")
- Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel012.mp3", 3711475963, 1487434543)
+ Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel012.mp3", 1678627858, 4071988215)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
Dialog.AddOption("[Listen]","Dialog4b")
Dialog.Start()
@@ -206,8 +209,8 @@ function Dialog4c(NPC,Spawn)
Dialog.Start()
end
-function OfferMage1(NPC,Spawn)
- OfferQuest(NPC,Spawn,Mage1)
+function OfferMage2(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Mage2)
FaceTarget(NPC,Spawn)
end
@@ -259,7 +262,7 @@ function Dialog6(NPC,Spawn)
Dialog.AddDialog("Let me see it. Wonderful! This is the perfect size for pickling. Mmmm ... nothing's better than a pickled Klicnik eye sandwich with mustard and mayonnaise. Oh, drat! I dropped my sandwich on my formula! And that was my only copy! I can't recreate it either! Oh well... the formula would never work anyway. As for you, it's time you make a choice.")
Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel020.mp3", 538297903, 4048671950)
PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
- if GetLevel(Spawn)== 8 then
+ if GetLevel(Spawn)<= 8 then
Dialog.AddOption("Am I ready now?","DoneToday")
elseif GetLevel(Spawn) >8 then
Dialog.AddOption("That task was simple enough. What must I do to advance?","FinalClassTest")
@@ -274,9 +277,9 @@ function FinalClassTest(NPC,Spawn)
Dialog.AddDialog("What field of arcane studies do you want to pursue? You showed great aptitude in all three schools, but you must focus your studies. So what's your choice?")
Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel021.mp3", 167518160, 503095515)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
- Dialog.AddOption("Summoning [WORK-IN-PROGRESS]","Summoner")
- Dialog.AddOption("Sorcery [WORK-IN-PROGRESS]","Sorcery")
- Dialog.AddOption("Enchanting [WORK-IN-PROGRESS]","Enchanter")
+ Dialog.AddOption("Enchanting","Enchanter")
+ Dialog.AddOption("Sorcery","Sorcery")
+ Dialog.AddOption("Summoning","Summoner")
Dialog.Start()
end
--I feel the destructive arts are to my liking. I shall study to be a sorcerer.
@@ -286,33 +289,75 @@ function Summoner(NPC,Spawn)
Dialog.AddDialog("By peering into the unseen, summoners use magic to create matter from nothing. A summoner never wants for anything -- companions, food, or even a nice fluffy pillow to snuggle up with when it gets cold at night ... er, where was I? Ah, yes, do you want to study summoning?")
Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel023.mp3", 990225084, 344110692)
PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
- Dialog.AddOption("I will never again be without anything I need. I am a summoner.")
+ Dialog.AddOption("I will never again be without anything I need. I am a summoner.","Summoner2")
Dialog.AddOption("Actually, I better rethink this.","FinalClassTest")
Dialog.Start()
end
+function Summoner2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Soon you will be ... yes ... I can see it now ... but no, first you must prove to me that you can handle things that you summon. Do you think that I will simply let you move on without the wisdom to temper the knowledge of summoning?")
+ Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel029.mp3", 3974213015, 2576820907)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("Then I must prove my skill.","Summoner2a")
+ Dialog.AddOption("On second thought, what were my options again?","FinalClassTest")
+ Dialog.Start()
+end
+
+function Summoner2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Summ)
+end
function Sorcery(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("A sorcerer taps into the mana flow and draws the hidden energies that swirl within that maelstrom of forces. By taking these energies, sorcerers simplify their lives, and make their opponent's lives a heck of a lot harder. But along with sorcery's incredible power, comes incredible responsibility. Can you handle this?")
PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
- Dialog.AddOption("The forces of the arcane will be at my beck and call. I am a sorcerer.")
+ Dialog.AddOption("The forces of the arcane will be at my beck and call. I am a sorcerer.","Sorcery2")
Dialog.AddOption("Actually, I better rethink this.","FinalClassTest")
Dialog.Start()
end
+function Sorcery2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Sorc)
+end
function Enchanter(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Enchanters love hearing people say, \"I'll believe it when I see it.\" Using their magic, enchanters make people believe in all matter of things! Illusionary dragons are just as threatening as real ones to the common enemy, if you \"see\" what I'm saying. So, will you focus your studies on enchanting?")
PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
- Dialog.AddOption("I prefer to see what is real and what isn't. I am an enchanter.")
+ Dialog.AddOption("I prefer to see what is real and what isn't. I am an enchanter.","Enchanter2")
Dialog.AddOption("Actually, I better rethink this.","FinalClassTest")
Dialog.Start()
end
+function Enchanter2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Ench)
+end
+
+function GoodbyeSumm(NPC,Spawn) -- ALSO SORC
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You don't need to return to me. You'll have proved your worth and readiness. Take care, though. You'll be alone and these elementals will not go down without a fight. I hope to see you again one day.")
+ Dialog.AddVoiceover("voiceover/english/magister_niksel/qey_south/magister_niksel031.mp3", 980785219, 3713600865)
+ PlayFlavor(NPC, "", "", "bye", 0, 0, Spawn)
+ Dialog.AddOption("Thank you Magister Niksel.")
+ Dialog.Start()
+end
+
+
+function GoodbyeEnch(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Once you've quelled the crowd you'll have more than proven yourself to be a capable enchanter. You won't need to return to me, but I hope to see you again. Take care, and good luck!")
+ PlayFlavor(NPC, "", "", "bye", 0, 0, Spawn)
+ Dialog.AddOption("Thank you Magister Niksel.")
+ Dialog.Start()
+end
--Now, now, there's no one thing that gives you the power to become a sorcerer, but this should help you get a better grasp on how to use your sorcery power. No need to return to me afterwards, I've taught you as much as I can.
---I feel the destructive arts are to my liking. I shall study to be a sorcerer.
--You'll be an enchanter... yes... perhaps ... First, let's see how you deal with an angry crowd. Not everyone is cut out to deal with the thought required behind this choice ... we need to make sure that you are.
diff --git a/server/SpawnScripts/SouthQeynos/MasteratArmsDagorel.lua b/server/SpawnScripts/SouthQeynos/MasteratArmsDagorel.lua
index 91825497a..5c011a490 100755
--- a/server/SpawnScripts/SouthQeynos/MasteratArmsDagorel.lua
+++ b/server/SpawnScripts/SouthQeynos/MasteratArmsDagorel.lua
@@ -5,22 +5,456 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/DialogModule"
+local Quest1 = 5787
+local Quest2 = 5788
+local Crusader = 5789
+local Brawler = 5790
+local Warrior = 5791
function spawn(NPC)
-
+ ProvidesQuest(NPC, Quest1)
+ ProvidesQuest(NPC, Quest2)
+ ProvidesQuest(NPC, Crusader)
+ ProvidesQuest(NPC, Brawler)
+ ProvidesQuest(NPC, Warrior)
end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/sergeant-at-arms_ironcast/qey_north/100_soc_dwarf_guard_officer_ironcast_no_181290a1.mp3", "Hail, citizen. I'm on duty and can't speak. If you need the assistance of the guard, let us know.", "salute", 904288338, 3551828428, Spawn, 0)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hail, citizen. I'm on duty and can't speak. If you need the assistance of the guard, let us know.")
+ Dialog.AddVoiceover("voiceover/english/sergeant-at-arms_ironcast/qey_north/100_soc_dwarf_guard_officer_ironcast_no_181290a1.mp3", 904288338, 3551828428)
+ PlayFlavor(NPC,"","","salute",0,0,Spawn)
+ if GetClass(Spawn)== 1 and GetLevel(Spawn)>=7 and not HasQuest(Spawn,Quest1) and not HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("Greetings! I heard you were skilled in combat and had to come see you for myself.","Dialog1")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==2 then
+ Dialog.AddOption("I was victorious against the spiders!","Dialog2")
+ end
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)==5 then
+ Dialog.AddOption("I've been given tips on brawling... and a little more, too.","Dialog3")
+ end
+
+ if GetClass(Spawn)== 1 and GetLevel(Spawn)>=8 and not HasQuest(Spawn,Quest2) and not HasCompletedQuest(Spawn,Quest2) and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I feel rested and am ready for more training!","Dialog4")
+ elseif GetClass(Spawn)== 1 and GetLevel(Spawn)<8 and not HasQuest(Spawn,Quest2) and not HasCompletedQuest(Spawn,Quest2) and HasCompletedQuest(Spawn,Quest1) then
+ Dialog.AddOption("I'll return once I've had a bit more time to rest on what I've learned.")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==4 then
+ Dialog.AddOption("I've learned a bit about what drives the guards to do their duty.","Dialog5")
+ end
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2)==6 then
+ Dialog.AddOption("I've killed the gnoll pup","Dialog6")
+ end
+
+ if HasCompletedQuest(Spawn,Quest2) and not HasQuest(Spawn,Crusader) and not HasQuest(Spawn,Brawler) and not HasQuest(Spawn,Warrior) and GetClass(Spawn)==1 and GetLevel(Spawn) >=9 then
+ Dialog.AddOption("I've proven myself. I'm ready for any other test you can give.","Decide")
+ end
+
+ Dialog.AddOption("Thank you!")
+ Dialog.Start()
end
+
function respawn(NPC)
spawn(NPC)
end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So, you came by to wish 'ole Dagorel a good bidding, did ya? Well, good day to you, friend! Never let anyone say that Dagorel doesn't know his manners. Lemme look at you ... Hmm ... I bet with a little toughenin' up, you could go toe-to-toe with the best of 'em!")
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ Dialog.AddOption("Have any tips on fighting styles? I'm ready for anything!","Dialog1a")
+ Dialog.AddOption("I suppose I meant something else. Good luck on those bounties.")
+ Dialog.Start()
+end
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well now, that's more like it! I have been resposible for training new recruits of the Qeynos Guard for an age- you look like the right material to take a few hits to the noggin and still get back up. Perhaps some pointers on your fighting style would be in Qeynos's favor...")
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("What sort of fighting styles do you mean?","Dialog1b")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Many! Well, at least three in the city. First, I must know... what sort of combat have you seen?")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I tackled a few goblins on the Isle of Refuge before coming here.","Dialog1c1")
+ if HasCompletedQuest(Spawn, 5751)then --ISLE OF REFUGE ORC LEADER QUEST
+ Dialog.AddOption("I toppled the invading goblins on the Isle of Refuge by taking out thier orc leader, Grimgash.","Dialog1c1a")
+ end
+ Dialog.AddOption("I took out some traitors to Qeynos. Proving my loyalty to Qeynos.","Dialog1c2")
+ Dialog.AddOption("This and that- just some good ol' rough and tumble.","Dialog1c3")
+ Dialog.Start()
+end
+
+function Dialog1c1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahh, yes. I the Isle is a true training ground if ya took advantage of it. The fact you made it here is a testament to their trainin'!")
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
+ Dialog.AddOption("Yea, being a fighter I handle myself pretty well.","Dialog1d")
+ Dialog.Start()
+end
+
+function Dialog1c1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Blimey! That was you?! Well done, I must say! Well done! You do have the chops to be a fighter. You were right to come see me.")
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("Yea, being a fighter I handle myself pretty well.","Dialog1d")
+ Dialog.Start()
+end
+
+function Dialog1c2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Those traitors got what was come'n to them, no doubt. I hope you chose wisely in their treatment. Justice is the cornerstone that seperates us from the likes of Freeport!")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Yea, being a fighter I handled myself pretty well.","Dialog1d")
+ Dialog.Start()
+end
+
+function Dialog1c3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, you have a few scrapes and bruises... So, I can see you've had your fair share of action. Hopefully you've managed to stay concious for most of it! Haha!")
+ PlayFlavor(NPC, "", "", "chuckle", 0, 0, Spawn)
+ Dialog.AddOption("Yea, being a fighter I handle myself pretty well.","Dialog1d")
+ Dialog.Start()
+end
+
+function Dialog1c1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahh, yes. I the Isle is a true training ground if ya took advantage of it. The fact you made it here is a testament to their trainin'!")
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
+ Dialog.AddOption("Yea, being a fighter I handle myself pretty well.","Dialog1d")
+ Dialog.Start()
+end
+
+function Dialog1d(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, then, the first thing you gotta know is that there's not just one way to fight. S'matter of fact, you gotta discipline yourself in a style of fightin'. I'll give you a taste of the fighting styles I've come across in me years of battle. Let's start with the fightin' style of a warrior...")
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("Tell me what I need to do! I'm ready to give something a beating!","Quest1Offer")
+ Dialog.AddOption("Actually, I should begin this with you another time.")
+ Dialog.Start()
+end
+
+function Quest1Offer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Quest1)
+end
+
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So ya are! A good warrior knows how best to take out their foes with a good suit of armor and their trusty weapons at their side. Hardest part is trusting your gut and knowing when you've bit off more than you can chew... or at least your armor can withstand anyway.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("So, the heavier the armor the better? Alright!","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Wait a momment... There are more ways of fighting than covering yourself in a full suit of plate.")
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ Dialog.AddOption("Oh? You just said...","Dialog2b")
+ Dialog.Start()
+end
+
+function Dialog2b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, forget everythin' I said! Yer' about to see how a brawler fights. Instead of using armor, brawlers use their bodies as weapons. They avoid gettin' hurt in combat by using a special trick.")
+ PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("How do they avoid attacks?","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("They don't let themselves get hit! Simple as that! You have to learn that trick if you want to be a brawler. I know a couple of people who can give you some pointers. Go speak with Luvile Binlee in Starcrest and Hargan Icethaw in Graystone. Tell 'em I sent you, and ask for some brawlin' tips.")
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Okay. I'll go speak with them about brawling.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, is that so? Well let's put what ya learned to the test, shall we?")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Alright.","Dialog3a")
+
+ Dialog.Start()
+end
+
+
+function Dialog3a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("[Dagorel prepares up to punch you]")
+ PlayFlavor(NPC, "", "", "pugilist_idle", 0, 0, Spawn)
+ Dialog.AddOption("[Attempt to dodge]","Dodge")
+ Dialog.AddOption("[Take the punch to your gut]","Gut")
+ Dialog.Start()
+end
+
+function Dodge(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("[Dagorel's punch grazes you]")
+ PlayFlavor(NPC, "", "", "pugilist_wild_swing", 0, 0, Spawn)
+ AddTimer(NPC,1300,"Dodge2",1,Spawn)
+ Dialog.AddOption("Ah, you still got me.","Dialog3c")
+ Dialog.Start()
+end
+
+function Dodge2(NPC,Spawn)
+ PlayFlavor(Spawn, "", "", "1h_sword_dodge_backhand", 0, 0, NPC)
+end
+
+function Gut(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ PlayFlavor(NPC, "", "", "pugilist_attack02", 0, 0, Spawn)
+ AddTimer(NPC,1300,"Gut2",1,Spawn)
+ Dialog.AddOption("Oof...","Dialog3b")
+ Dialog.Start()
+end
+
+function Gut2(NPC,Spawn)
+ PlayFlavor(Spawn, "", "", "gutcramp", 0, 0, NPC)
+local invul = IsInvulnerable(Spawn)
+if invul == true then
+return 0
+end
+
+local hp = GetHP(Spawn)
+local damage = GetMaxHP(Spawn)*0.1
+local damageToTake = damage * 1
+-- if we don't have enough HP make them die to pain and suffering not self
+if hp <= damageToTake then
+else
+DamageSpawn(Spawn, Spawn, 192, 3, damageToTake, damageToTake, "Dagorel's punch!", 0, 0, 1, 1)
+end
+
+end
+
+function Dialog3c(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not bad! You did learn a few things from Luvile, but there is always room for improvement. Perhaps a brawler is a path for you... Even so, you should rest up before we continue looking at other fighting styles. Come back to me after you've taken some time to catch your breath.")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I like the sounds of that. I'll rest for a while.")
+ Dialog.Start()
+end
+
+function Dialog3b(NPC,Spawn)
+ SetStepComplete(Spawn,Quest1,5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oi, if you're going to take a blow like that you should have thicker armor! You must have taken Hargan's lesson on brawling to heart, Haha!... Even so, you should rest up before we continue looking at other fighting styles. Come back to me after you've taken some time to catch your breath.")
+ PlayFlavor(NPC, "", "", "wince", 0, 0, Spawn)
+ Dialog.AddOption("I like the sounds of that. I'll rest for a while.")
+ Dialog.Start()
+end
+
+-- QUEST 2 --
+
+
+function Dialog4(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, it's high time we continue with your studies. Time is tickin' away, and we're not gettin' any younger. I showed you how a warrior and a brawler fight, and now I'll show you the way of a crusader.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("What makes someone a crusader?","Dialog4a")
+ Dialog.Start()
+end
+
+function Dialog4a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Crusaders fight for a cause. I've battled beside a few in my years, and they're an impressive bunch. Everything they do has a purpose; you can see it on the battlefield and from the look in their eyes.")
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddOption("As in a belief? What would you have me do?","Quest2Start")
+ Dialog.AddOption("Interesting, but let's continue this conversation later.")
+ Dialog.Start()
+end
+
+
+function Quest2Start(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Quest2)
+end
+
+function Dialog5(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's good to hear! Our soldiers don't hear enough kind words as it is, but when you can get them to think back on why they decided to protect their city... They certainly start to light up!")
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Most shared a sense of duty and honor in their work.","Dialog5a")
+ Dialog.AddOption("Some mentioned it as just a job, but they also felt pride in protecting Qeynos.","Dialog5a")
+ Dialog.Start()
+end
+
+function Dialog5a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, that sounds about right. Not everything about duty and honor is glamorous, but when you are responsible for that sort of \"passion\" to succeed... Your convicition will provide that power to accomplish the unthinkable.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("I see. What must I do to prove myself a protector?","Dialog5b")
+ Dialog.Start()
+end
+
+function Dialog5b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahhh... There is the question! Qeynos is under constant threat- even more so ever since the Sundering when the continents were pulled apart! Are you ready to perform a duty for Qeynos and prove yourself a frontline protector?")
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("I am ready. Give me a mission!","Dialog5c")
+ Dialog.Start()
+end
+
+function Dialog5c(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Qeynos thrives in this shattered world only through the efforts of its fine citizens. Those nasty gnolls want us all dead, and it's our duty to protect our city from these fiends. You must use your fighting skills to protect Qeynos. Your first mission is to head out to Antonica and take care of the Darkpaws. Start with a pup and come back to me.")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I'll return when I'm victorious.")
+ SetStepComplete(Spawn,Quest2,4)
+ Dialog.Start()
+end
+
+function Dialog6(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aye, aye. The watchmen informed me. They say you held your own. That's what I want to hear! You had to prove your fightin' skills--I don't want anyone accusing ol' Dagorel of sending ill-equipped kids off to their deaths. You proved you got what it takes, kid. Good work.")
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ if GetLevel(Spawn) >=9 then
+ Dialog.AddOption("I'm glad to have had the chance to prove myself.","Decide")
+ else
+ Dialog.AddOption("I hate to admit it, but I need a rest after that. I'll return once I'm ready.")
+ end
+ Dialog.Start()
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2) ==6 then
+ SetStepComplete(Spawn,Quest2,6)
+ end
+end
+
+--CLASS SELECTION
+
+function Decide(NPC,Spawn)
+ if HasQuest(Spawn,Quest2) and GetQuestStep(Spawn,Quest2) ==6 then
+ SetStepComplete(Spawn,Quest2,6)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well, then, I showed you three different fighting styles--you know my preferred way of fighting--trusting a good axe and a breastplate. You experienced the raw fighting power of a brawler, and finally, you witnessed the dedication of a crusader. Now it's time to test your knowledge...")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("I feel naked without a weapon in my hand. I believe I'm a warrior.","Warrior1")
+ Dialog.AddOption("Through training, I can make my own body into a weapon. I'm a brawler.","Brawler1")
+ Dialog.AddOption("My burning conviction is the only weapon I need. I know I am a crusader.","Crusader1")
+ Dialog.Start()
+end
+
+--WARRIOR
+function Warrior1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A warrior, are ya? You're sayin' that the best way to fix a problem is with a bit of hammered steel? Aye, I agree with that! When you got a slaverin' gnoll runnin' at you, hard bent for leather, well, you'd be a ninny not to draw steel. So, the life of the warrior is your path in life, is it?")
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddOption("Yes. I prefer to take care of a problem, rather than let it take care of me. I am a warrior!","WarriorOffer")
+ Dialog.AddOption("On second thought, what were my options again?","Decide")
+ Dialog.Start()
+end
+
+function WarriorOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Warrior)
+end
+
+--BRAWLER
+
+function Brawler1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Brawlers use their brains, they do. They don't need armor if their enemies can't hit 'em. They also know they can't be disarmed if they have built-in weapons. Well, they can, but that' messy business that we don't need to discuss. So, are ya willin' to push yourself to the limit as a brawler?")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("Yes. I will train everyday to master the art of pugilism. I am a brawler.","BrawlerOffer")
+ Dialog.AddOption("On second thought, what were my options again?","Decide")
+ Dialog.Start()
+end
+
+function BrawlerOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Brawler)
+end
+
+--CRUSADER
+
+function Crusader1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's not as easy as that, youngin'. You don't just declare yourself a crusader, or did you learn nothing from my previous lessons? No, crusader is a title earned by those with enough heart to consider the fair city of Qeynos and its inhabitants first and themselves a distant second.")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddOption("I like having a commanding presence in battle. I want to be a crusader.","CrusaderOffer")
+ Dialog.AddOption("On second thought, what were my options again?","Decide")
+ Dialog.Start()
+end
+
+function CrusaderOffer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Crusader)
+end
+
--[[
-Brawlers don't waste their time strapping on bulky armor. Sometimes the only weapons they use are their fists, and they dodge their opponent's blows with the swiftness of a hawk. Do you choose this path?
+Brawlers use their brains, they do. They don't need armor if their enemies can't hit 'em. They also know they can't be disarmed if they have built-in weapons. Well, they can, but that' messy business that we don't need to discuss. So, are ya willin' to push yourself to the limit as a brawler?
Warriors run to the front line in battle and care only about slaughtering the enemy and oiling their weapons with their foe's blood. Warriors know might makes right. Do you choose this path?
None matches the conviction of a crusader. Crusaders fight for a cause. This cause gives them the strength to crush their opponents beneath their feet. The last thing that people see when they fight a crusader is a cold, dead look -- their own reflection in the crusader's eyes. Do you choose this path?
-]]--
\ No newline at end of file
+]]--
+
+
+--[FINAL SELECTION]
+--You have to make a choice! You got potential, you do, and it would be a sore shame to see you waste it! But you can't be a fighter your entire life. You gotta focus on one of the styles I showed you, if you wanna go places. So what will it be, eh?
+
+
+
+--Brawlers use their brains, they do. They don't need armor if their enemies can't hit 'em. They also know they can't be disarmed if they have built-in weapons. Well, they can, but that' messy business that we don't need to discuss. So, are ya willin' to push yourself to the limit as a brawler?
+--Brawlers don't waste their time strapping on bulky armor. Sometimes the only weapons they use are their fists, and they dodge their opponent's blows with the swiftness of a hawk. Do you choose this path?
+--If you're a true brawler, you need to undergo a challenge. In order to join the ranks of the brawlers here in Qeynos, you gotta prove your skills. Enter the dojo and go fist to fist against another brawler. If you manage to defeat 'em, you'll become that which you seek.
+
+--Thank you, Dagorel. I won't forget your lessons.
+--Aye, aye. The watchmen informed me. They say you held your own. That's what I want to hear! You had to prove your fightin' skills--I don't want anyone accusing ol' Dagorel of sending ill-equipped kids off to their deaths. You proved you got what it takes, kid. Good work.
+
+--Yes. I will train everyday to master the art of pugilism. I am a brawler.
+--I like relying on my fists in battle. I want to be a brawler.
+--
+--Understand one more thing as well ... when you defeat your last opponent, meditate at the altar in the dojo. A brawler is not only strong of body but also of mind. Strengthening both is mandatory. Once you do this, you'll have proven yourself.
+
+--BRAWLER ALTAR A cool breeze swirls around you, sending a tingle up the back of your spine. You arise from the altar and know in your soul that you are a brawler.
+--CRUSADER START It's not as easy as that, youngin'. You don't just declare yourself a crusader, or did you learn nothing from my previous lessons? No, crusader is a title earned by those with enough heart to consider the fair city of Qeynos and its inhabitants first and themselves a distant second.
+--
+--A warrior, are ya? You're sayin' that the best way to fix a problem is with a bit of hammered steel? Aye, I agree with that! When you got a slaverin' gnoll runnin' at you, hard bent for leather, well, you'd be a ninny not to draw steel. So, the life of the warrior is your path in life, is it?
+--I like having a commanding presence in battle. I want to be a crusader.
+--
+--Though all warriors fight for a cause, none have as strong a conviction as a crusader. Crusaders live to fight another day ... and another ... and another... They never stop, for they know their next opponent waits to take everything they've earned.
+--It's not as easy as that, youngin'. You don't just declare yourself a crusader, or did you learn nothing from my previous lessons? No, crusader is a title earned by those with enough heart to consider the fair city of Qeynos and its inhabitants first and themselves a distant second.
+--Yes. I prefer to take care of a problem, rather than let it take care of me. I am a warrior!
+--Whoa, now! Not yet, you're not! You have to prove you can last in the fray. You didn't think I'd wave a magic wand and make you a warrior, did you? No, no, we got a make shift arena set up in the warehouse, where you'll prove yourself, a true warrior of Qeynos. No need to return to me, I've taught you all I can.
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/TelaminaGarendell.lua b/server/SpawnScripts/SouthQeynos/TelaminaGarendell.lua
new file mode 100755
index 000000000..b921956b6
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/TelaminaGarendell.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/TelaminaGarendell.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.19 11:09:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Magical aptitude is achieved only through rigorous training and testing. One is not granted magical power through talent alone.")
+ Dialog.AddVoiceover("tilliana_steamsieve/qey_south/trainer_conjuror001.mp3", 2213433936, 1054777117)
+ Dialog.AddOption("I see.")
+ Dialog.Start()
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+--[[ Line 60269: (1131147345)[Fri Nov 04 18:35:45 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says,"Your aura ... I can see you're ready for aptitude testing, young one."
+ Line 60270: (1131147350)[Fri Nov 04 18:35:50 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"You've a strong aptitude for the magical arts, do you not? I can see it in your aura as plainly as I see your face. Would you like to begin your final test?"
+ Line 60271: (1131147353)[Fri Nov 04 18:35:53 2005] You say to Telamina Garendell,"I would like to begin immediately."
+ Line 60272: (1131147353)[Fri Nov 04 18:35:53 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"First, you must prove to me that you can handle yourself on the battlefield. I need you to gather several of the shamanistic stones the gnolls carry."
+ Line 60273: (1131147355)[Fri Nov 04 18:35:55 2005] You say to Telamina Garendell,"What stones?"
+ Line 60277: (1131147355)[Fri Nov 04 18:35:55 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"You will find that different gnolls carry different stones that denote their status in the pack. Bring me back a stone that represents each social standing in the gnoll pack, and we will speak further of your training."
+ Line 60278: (1131147356)[Fri Nov 04 18:35:56 2005] You say to Telamina Garendell,"But I haven't had chosen my path yet!"
+ Line 60279: (1131147356)[Fri Nov 04 18:35:56 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"You must determine your fate before you begin this path. Have you determined whether you wish to be a Wizard or Warlock?"
+ Line 60280: (1131147358)[Fri Nov 04 18:35:58 2005] You say to Telamina Garendell,"I was thinking about becoming a Warlock."
+ Line 60281: (1131147358)[Fri Nov 04 18:35:58 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"With surgical precision, Warlocks topple foes by casting poisonous and disease-ridden spells. Warlocks walk a fine line between using their power for good or falling to the forces of evil. Do you wish to pursue the ways of the Warlock?"
+ Line 60282: (1131147363)[Fri Nov 04 18:36:03 2005] You say to Telamina Garendell,"No, I think I'd rather try being a Wizard."
+ Line 60283: (1131147363)[Fri Nov 04 18:36:03 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"As a Wizard, you will rain fire and ice upon your foes. Elemental magic will be your strength, and your ability to wield more powerful spells of the arcane variety will only increase as you venture out in the world. Is this the path you want to take?"
+ Line 60284: (1131147368)[Fri Nov 04 18:36:08 2005] You say to Telamina Garendell,"Yes. I wish to wield the elemental magics and become a Wizard."
+ Line 60286: (1131147368)[Fri Nov 04 18:36:08 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"Good! Then go forth and return to me only when you have retrieved the stones of which I speak. Beware, for the gnolls shall guard them with their very lives. I wish you well in this endeavor and hope to see you soon."
+ Line 60287: (1131147370)[Fri Nov 04 18:36:10 2005] You say to Telamina Garendell,"I will return when I have the stones."
+ Line 67887: (1131326165)[Sun Nov 06 20:16:05 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"So, you return. Did you bring me the stones I requested?"
+ Line 67888: (1131326167)[Sun Nov 06 20:16:07 2005] You say to Telamina Garendell,"I have."
+ Line 67889: (1131326168)[Sun Nov 06 20:16:08 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"Well done, indeed! Only one who has worked hard to achieve their station could delve as deeply into Blackburrow as you delved. Are you ready to begin your true trial?"
+ Line 67890: (1131326169)[Sun Nov 06 20:16:09 2005] You say to Telamina Garendell,"I am."
+ Line 67893: (1131326169)[Sun Nov 06 20:16:09 2005] \aNPC 8057 Telamina Garendell:Telamina Garendell\/a says to you,"Then I will request that the audience chambers are closed while you take your test. I will watch your progress from above. When the trial begins, use your magic to defeat the enemy before you. Prepare yourself, young one, and I will start your test."
+ Line 67894: (1131326171)[Sun Nov 06 20:16:11 2005] You say to Telamina Garendell,"I am ready."
+ Line 68036: (1132408111)[Sat Nov 19 08:48:31 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"I'm sorry you failed your trial. Are you ready to try once more?"
+ Line 68037: (1132408116)[Sat Nov 19 08:48:36 2005] You say to Telamina Garendell,"Yes, I am."
+ Line 68038: (1132408116)[Sat Nov 19 08:48:36 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"Then once more, I will clear the tower. Prepare yourself, mageling!"
+ Line 68039: (1132408123)[Sat Nov 19 08:48:43 2005] You say to Telamina Garendell,"I will not fail this time."
+ Line 68358: (1132409262)[Sat Nov 19 09:07:42 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"I'm sorry you failed your trial. Are you ready to try once more?"
+ Line 68359: (1132409266)[Sat Nov 19 09:07:46 2005] You say to Telamina Garendell,"Yes, I am."
+ Line 68360: (1132409266)[Sat Nov 19 09:07:46 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"Then once more, I will clear the tower. Prepare yourself, mageling!"
+ Line 68361: (1132409268)[Sat Nov 19 09:07:48 2005] You say to Telamina Garendell,"I will not fail this time."
+ Line 68705: (1132409977)[Sat Nov 19 09:19:37 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"Congratulations on successfully completing your trial!"
+ Line 68706: (1132409979)[Sat Nov 19 09:19:39 2005] You say to Telamina Garendell,"Thank you Telamina."
+ Line 68712: (1132409979)[Sat Nov 19 09:19:39 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"Please take this staff as both a reward for your mastery of the magical arts and for your journey down the path of a true Wizard!"
+ Line 68713: (1132409984)[Sat Nov 19 09:19:44 2005] You say to Telamina Garendell,"I am honored, may the Three Towers stand forever."
+ Line 68723: (1132511084)[Sun Nov 20 13:24:44 2005] \aNPC 8191 Telamina Garendell:Telamina Garendell\/a says to you,"Magical aptitude is achieved only through rigorous training and testing. One is not granted magical power through talent alone."
+ Line 68724: (1132511085)[Sun Nov 20 13:24:45 2005] You say to Telamina Garendell,"I see."
+--]]
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/zonetoqeyepic03village03ph.lua b/server/SpawnScripts/SouthQeynos/zonetoqeyepic03village03ph.lua
new file mode 100755
index 000000000..21224f04d
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/zonetoqeyepic03village03ph.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/zonetoqeyepic03village03ph.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.04 04:12:44
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5784,1,0,0,1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/zonetoqeyepic07p08sneeds.lua b/server/SpawnScripts/SouthQeynos/zonetoqeyepic07p08sneeds.lua
new file mode 100755
index 000000000..fc95416bd
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/zonetoqeyepic07p08sneeds.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/zonetoqeyepic07p08sneeds.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 01:11:29
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5776,1,0,0,1)
+ SetRequiredQuest(NPC,5776,2,0,0,1)
+ SetRequiredQuest(NPC,5776,3,0,0,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/zonetoqeyepic08p06voleens.lua b/server/SpawnScripts/SouthQeynos/zonetoqeyepic08p06voleens.lua
new file mode 100755
index 000000000..49130f41e
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/zonetoqeyepic08p06voleens.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/zonetoqeyepic08p06voleens.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.15 05:11:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5771,1,0,0,1)
+ SetRequiredQuest(NPC,5771,2,0,0,1)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SouthQeynos/zonetoqeyepic12L08sanctum.lua b/server/SpawnScripts/SouthQeynos/zonetoqeyepic12L08sanctum.lua
new file mode 100755
index 000000000..0f9df7964
--- /dev/null
+++ b/server/SpawnScripts/SouthQeynos/zonetoqeyepic12L08sanctum.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/SouthQeynos/zonetoqeyepic12L08sanctum.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.18 04:12:18
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5790,1,0,0,1)
+ SetRequiredQuest(NPC,5790,2,0,0,1)
+ SetRequiredQuest(NPC,5790,3,0,0,1)
+ SetRequiredQuest(NPC,5790,4,0,0,1)
+ SetRequiredQuest(NPC,5790,5,0,0,1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SpiritsLost/SpiritofMarrsChosen.lua b/server/SpawnScripts/SpiritsLost/SpiritofMarrsChosen.lua
new file mode 100755
index 000000000..085ce0fc3
--- /dev/null
+++ b/server/SpawnScripts/SpiritsLost/SpiritofMarrsChosen.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : SpawnScripts/SpiritsoftheLost/SpiritofMarrsChosen.lua
+ Script Purpose : Spirit of Marr's Chosen
+ Script Author : neatz09
+ Script Date : 2023.04.10
+ Script Notes : Auto-Generated Conversation from PacketParser Data
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Say(NPC, "Im a fuckin froglok motherfucker.")
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I fear that the most difficult part of your path is yet to come. Now that you have come to aid me, surely all the denizens of this foul place will come to aid the master.")
+ Dialog.AddOption("Which master? Venekor?", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You know of the scaled demon then. For centuries I have been kept here. I cannot truly be free until Venekor releases me from this place, and I do not believe he will do so willingly. You must slay him, and I will be free.")
+ Dialog.AddOption("We will do what we can.", "Dialog4")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I can scarcely believe that there are those who are mighty enough to challenge those who have kept me sequestered here. Have you come at the behest of our race, or are you merely here seeking treasure?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_3_1028.mp3", 0, 0)
+ Dialog.AddOption("We have come to free you. What must be done?", "Dialog1")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Beware, for he will have called up some of his most vengeful watchers to protect that which he must hold locked away from Norrath. You must not fall to the Achiole! Should you manage to defeat Venekor on the field of battle, I will once again be able to join those of my former race within the Feerrott.")
+ Dialog.AddOption("Soon you shall be free.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/Starcrest/AndorQuist.lua b/server/SpawnScripts/Starcrest/AndorQuist.lua
index b383ac2c7..3fc65525d 100755
--- a/server/SpawnScripts/Starcrest/AndorQuist.lua
+++ b/server/SpawnScripts/Starcrest/AndorQuist.lua
@@ -5,6 +5,9 @@
Script Date : 07.01.2022
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/AnevayaStarchaser.lua b/server/SpawnScripts/Starcrest/AnevayaStarchaser.lua
index 279e91e07..a88542563 100755
--- a/server/SpawnScripts/Starcrest/AnevayaStarchaser.lua
+++ b/server/SpawnScripts/Starcrest/AnevayaStarchaser.lua
@@ -62,7 +62,7 @@ local ConcFac = GetFactionAmount(Spawn, 136)
PlayFlavor(NPC, "voiceover/english/highelf_eco_good_concordium/ft/eco/good/highelf_eco_good_concordium_10_gf_f5fd7a50.mp3", "To aid the Concordium is to unleash the force for good that burns within us all!", "thank", 3469670242, 3251902799, Spawn)
elseif choice == 7 then
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/highelf_eco_good_concordium/ft/eco/good/highelf_eco_good_concordium_30_gf_1e49a37f.mp3", "Your couragous actions have assisted the Concordium in its quest for all knowledge!", "cheer", 1170821333, 3893107670, Spawn)
+ PlayFlavor(NPC, "voiceover/english/highelf_eco_good_concordium/ft/eco/good/highelf_eco_good_concordium_30_gf_1e49a37f.mp3", "Your courageous actions have assisted the Concordium in its quest for all knowledge!", "cheer", 1170821333, 3893107670, Spawn)
end
end
end
diff --git a/server/SpawnScripts/Starcrest/Barrik.lua b/server/SpawnScripts/Starcrest/Barrik.lua
index 5e1ad07d1..9e93da9dc 100755
--- a/server/SpawnScripts/Starcrest/Barrik.lua
+++ b/server/SpawnScripts/Starcrest/Barrik.lua
@@ -90,7 +90,7 @@ function Delivered(NPC, Spawn)
Dialog.New(NPC, Spawn)
SetStepComplete(Spawn, 5603, 2)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Aye, she was rude when she ordered the blade! Heh. It will be a real treat if she graces my shop with her pressence again. Anyway, here's the coin I promised you.")
+ Dialog.AddDialog("Aye, she was rude when she ordered the blade! Heh. It will be a real treat if she graces my shop with her presence again. Anyway, here's the coin I promised you.")
Dialog.AddVoiceover("voiceover/english/armsdealer_barrik/qey_village02/armsdealerbarrik003.mp3", 3828124252, 308902726)
if GetQuestStep (Spawn, 243)==1 then
Dialog.AddOption("Oh, Farnsbey asked me to pick the axe he ordered if it is ready.","Pickup")
@@ -104,7 +104,7 @@ function Pickup(NPC, Spawn)
Dialog.New(NPC, Spawn)
SetStepComplete(Spawn, 243, 1)
PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
- Dialog.AddDialog("Oh I remember Farmsbey. Yes, yes, I've got his axe over here. There ya be. This sack of money feels about right for the cost! Wish him well for me.")
+ Dialog.AddDialog("Oh I remember Farnsbey. Yes, yes, I've got his axe over here. There ya be. This sack of money feels about right for the cost! Wish him well for me.")
Dialog.AddVoiceover("voiceover/english/armsdealer_barrik/qey_village02/armsdealerbarrik004.mp3", 142083537, 3739068448)
Dialog.AddOption("I will. Thank you.")
Dialog.Start()
diff --git a/server/SpawnScripts/Starcrest/ChadwickStrohn.lua b/server/SpawnScripts/Starcrest/ChadwickStrohn.lua
index fb6466b93..fb0e75bad 100755
--- a/server/SpawnScripts/Starcrest/ChadwickStrohn.lua
+++ b/server/SpawnScripts/Starcrest/ChadwickStrohn.lua
@@ -32,30 +32,34 @@ function FaceBar(NPC)
SpawnSet(NPC, "heading", "340")
end
+function Drink3(NPC)
+ PlayAnimation(NPC,11422)--Drink
+end
function Drink(NPC)
- PlayAnimation(NPC,11422)--Drink
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)--Yawn
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422) --Drink
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
- PlayAnimation(NPC,11152 )--Chuckle
+ PlayFlavor(NPC,"","","chuckle",0,0)
else
- PlayAnimation(NPC,11668)--Happy
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)--Drink
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
+
function waypoints(NPC)
MovementLoopAddLocation(NPC, 721.14, -20.47, 264.76, 2, 1,"FaceBar")
MovementLoopAddLocation(NPC, 721.14, -20.47, 264.76, 2, 33,"Drink")
diff --git a/server/SpawnScripts/Starcrest/ErianSeaver.lua b/server/SpawnScripts/Starcrest/ErianSeaver.lua
index b04748d87..9f0537b01 100755
--- a/server/SpawnScripts/Starcrest/ErianSeaver.lua
+++ b/server/SpawnScripts/Starcrest/ErianSeaver.lua
@@ -1,7 +1,7 @@
--[[
Script Name : SpawnScripts/Starcrest/ErianSeaver.lua
Script Purpose : Erian Seaver
- Script Author : John Adams
+ Script Author : John Adams\\Dorbin
Script Date : 2008.09.23
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
@@ -25,12 +25,15 @@ function hailed(NPC, Spawn)
else
conversation = CreateConversation()
GenericHail(NPC, Spawn)
- if not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) and GetTradeskillLevel(Spawn) <2 then
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
AddConversationOption(conversation, "No, not at the moment.")
StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
else
- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in Qeynos Harbor. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
end
@@ -38,11 +41,21 @@ end
function dlg_39_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
- -- artisan essentials volume 2
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
- AddConversationOption(conversation, "I will start on that now.", "dlg_39_2")
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
end
function Dialog1(NPC,Spawn)
@@ -76,7 +89,7 @@ function CanDo2(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other players. A very handy connection, indeed!")
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
Dialog.AddOption("Thank you for all the information!")
if GetTradeskillLevel(Spawn)<2 then
Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
diff --git a/server/SpawnScripts/Starcrest/FarnsbyDunworth.lua b/server/SpawnScripts/Starcrest/FarnsbyDunworth.lua
index 8f275446b..611285923 100755
--- a/server/SpawnScripts/Starcrest/FarnsbyDunworth.lua
+++ b/server/SpawnScripts/Starcrest/FarnsbyDunworth.lua
@@ -11,6 +11,7 @@ local HailCheck = false
function spawn(NPC)
AddTimer(NPC, 5000, "EmoteLoop")
ProvidesQuest(NPC,243)
+ SetInfoStructString(NPC, "action_state", "mood_afraid")
end
function respawn(NPC)
@@ -76,7 +77,7 @@ function Delivered(NPC, Spawn)
Dialog.New(NPC, Spawn)
SetStepComplete(Spawn, 243, 2)
PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
- Dialog.AddDialog("Glad to hear it! Ah, this is a fine axe indeed! I'll have to compliment Barrik on his work the next time we meet. Here's a bit of my leftover coin. I think I could use it!")
+ Dialog.AddDialog("Glad to hear it! Ah, this is a fine axe indeed! I'll have to compliment Barrik on his work the next time we meet. Here's a bit of my leftover coin. I think you could use it!")
Dialog.AddVoiceover("voiceover/english/farnsby_dunworth/qey_village02/farnsbydunworth003.mp3", 2174088853, 1124987532)
Dialog.AddOption("I think I could use it too. Good luck with these two erudites!")
Dialog.Start()
diff --git a/server/SpawnScripts/Starcrest/FawnStarstone.lua b/server/SpawnScripts/Starcrest/FawnStarstone.lua
index d1e6ebf03..08898c805 100755
--- a/server/SpawnScripts/Starcrest/FawnStarstone.lua
+++ b/server/SpawnScripts/Starcrest/FawnStarstone.lua
@@ -21,8 +21,10 @@ function hailed(NPC, Spawn)
if GetFactionAmount(Spawn,11)<0 then
FaceTarget(NPC, Spawn)
PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
-else
+elseif not HasCompletedQuest(Spawn,241) then
Dialog2(NPC, Spawn)
+else
+DialogFinish(NPC, Spawn)
end
end
@@ -56,6 +58,7 @@ function Dialog3(NPC, Spawn)
PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
Dialog.AddDialog("Oh I suppose I'll need some seeds too. And I don't just need soil, I need things to enrich the soil I already have. I'd like to get some diatomaceous sand from the crabs of Antonica. I believe fish eggs would help with that too, so I'd like some of those as well. As for seeds, I'm sure you can collect some stuck to the fur of some of the mammals that wander around Antonica. If you could bring me all of these items it would help me greatly!")
Dialog.AddOption("I can get them.", "QuestOffer")
+ Dialog.AddOption("Ugh! Animal bits and dirt are not my kind of thing. Sorry")
Dialog.Start()
end
@@ -85,13 +88,24 @@ end
function Turnin(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
SetStepComplete(Spawn, 241,4)
- Dialog.AddDialog("[NOTE: Not Accurate] Marvelous! These are just what I needed. Please, take one of these hunting tools as a token of my thanks.")
- Dialog.AddOption("[I will report on Discord to EmemJR that you need your final dialog.]")
+ Dialog.AddDialog("Bless you! This is wonderful. They say one good turn deserves another. This isn't much payment considering what you've done for me, but I hope you put it to good use.")
+ Dialog.AddOption("Good luck with your garden.")
Dialog.Start()
end
+
+function DialogFinish(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I love sitting in my garden and listening to the birds sing.")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_2_1051.mp3", 0, 0)
+ Dialog.AddOption("Your garden is looking great! Good day, Fawn.")
+ Dialog.Start()
+end
+
+
function waypoints(NPC)
MovementLoopAddLocation(NPC, 790.03, -24.51, 319.99, 2, 15,"InitialPause")
MovementLoopAddLocation(NPC, 787.37, -24.37, 319.13, 2, 0)
@@ -131,18 +145,51 @@ end
function Gather(NPC)
- local GatherSpawn = GetSpawn(NPC, 2340032) -- Get Paula Marx
- SpawnSet(NPC, "visual_state", "2809") -- Start gathering
+ local GatherSpawn = GetSpawn(NPC, 2340032) --
+ PlayFlavor(NPC,"","","gathering_search",0,0)
AddTimer(NPC, 5000, "Collect") -- for 5 seconds, then stop
end
function Collect(NPC)
- local GatherSpawn = GetSpawn(NPC, 2340032) -- Get Paula Marx
- SpawnSet(NPC, "visual_state", "2810") -- Start gathering
+ local GatherSpawn = GetSpawn(NPC, 2340032)
+ PlayFlavor(NPC,"","","gathering_success",0,0)
AddTimer(NPC, 2000, "stop_gathering") -- for 5 seconds, then stop
end
function stop_gathering(NPC)
- local GatherSpawn = GetSpawn(NPC, 2340032) -- get Paula Marx
+ local GatherSpawn = GetSpawn(NPC, 2340032)
SpawnSet(NPC, "visual_state", "0") -- Stop her from gathering
-end
\ No newline at end of file
+end
+
+--[[346077)[Sun Apr 24 08:34:37 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"Welcome to the village! I hope you find everything you need. I wish I had!"
+ Line 129215: (1114346077)[Sun Apr 24 08:34:37 2005] You say,"Hail, Fawn Starstone"
+ Line 129216: (1114346080)[Sun Apr 24 08:34:40 2005] You say to Fawn Starstone,"What do you mean, you wish you had?"
+ Line 129217: (1114346080)[Sun Apr 24 08:34:40 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"Well ... I hate to complain, but I thought the village would have more trees. Yes, I know ... I could move elsewhere, but I've come to love my new home. Hmm... I wonder... would you help me bring a little more greenery to the area?"
+ Line 129218: (1114346082)[Sun Apr 24 08:34:42 2005] You say to Fawn Starstone,"What do you have in mind?"
+ Line 129219: (1114346082)[Sun Apr 24 08:34:42 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"It would be nice to have more trees, but that's not practical. I'm building a garden behind my house, so I can look at it and imagine the whole village is verdant. The first thing I need is soil."
+ Line 129220: (1114346084)[Sun Apr 24 08:34:44 2005] You say to Fawn Starstone,"The soil?"
+ Line 129222: (1114346087)[Sun Apr 24 08:34:47 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"Yes, the soil. I need you to get the scat of fifteen young timber wolves. I'll use it as fertilizer to nourish the plants in my new garden. Sure you don't mind?"
+ Line 129223: (1114346100)[Sun Apr 24 08:35:00 2005] You say to Fawn Starstone,"Not at all; it's a pleasure."
+ Line 129224: (1114346100)[Sun Apr 24 08:35:00 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"Bless you! You'll find the wolves all over Antonica. I'll meet you back here later. I wonder what I should plant first...?"
+ Line 129225: (1114346102)[Sun Apr 24 08:35:02 2005] You say to Fawn Starstone,"See you soon."
+ Line 130162: (1114350616)[Sun Apr 24 09:50:16 2005] \aPC 4087435 Trotsky:Trotsky\/a says,"Hail, Fawn Starstone"
+ Line 131105: (1114354648)[Sun Apr 24 10:57:28 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"That was quick! Thank you very much! Oh, this is perfect! Putting this into the soil allows it to drain much better, you know. And it adds essential nutrients to help the little plants get off to a good start."
+ Line 131106: (1114354648)[Sun Apr 24 10:57:28 2005] You say,"Hail, Fawn Starstone"
+ Line 131107: (1114354651)[Sun Apr 24 10:57:31 2005] You say to Fawn Starstone,"It was nothing. Did you need anything else?"
+ Line 131108: (1114354651)[Sun Apr 24 10:57:31 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"No, no! You've done plenty for me already ... But, lately my back has been hurting me terribly. Gracious! I'm complaining again! I hate to impose ... but you can do one more thing for me."
+ Line 131109: (1114354655)[Sun Apr 24 10:57:35 2005] You say to Fawn Starstone,"Glad to be of assistance. What can I do?"
+ Line 131110: (1114354655)[Sun Apr 24 10:57:35 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"I appreciate you going out of your way like this. A handful of Coldwind octopus beaks would add more vigor to the garden, or so I'm told. You'll find the octopi near the coast outside of Qeynos. One of my neighbors thinks I'm part wood elf with all my fiddling in my garden! Maybe she's right!"
+ Line 131111: (1114354657)[Sun Apr 24 10:57:37 2005] You say to Fawn Starstone,"No problem; I'll be back soon."
+ Line 131860: (1114358210)[Sun Apr 24 11:56:50 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"Welcome to the village! I hope you find everything you need. I wish I had!"
+ Line 131861: (1114358210)[Sun Apr 24 11:56:50 2005] You say,"Hail, Fawn Starstone"
+ Line 131862: (1114358214)[Sun Apr 24 11:56:54 2005] You say to Fawn Starstone,"I've got what you needed."
+ Line 131865: (1114358215)[Sun Apr 24 11:56:55 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says to you,"Bless you! This is wonderful. They say one good turn deserves another. This isn't much payment considering what you've done for me, but I hope you put it to good use."
+ Line 131866: (1114358220)[Sun Apr 24 11:57:00 2005] You say to Fawn Starstone,"Good luck with your garden."
+ Line 131867: (1114358221)[Sun Apr 24 11:57:01 2005] \aNPC 10502 Fawn Starstone:Fawn Starstone\/a says,"I love sitting in my garden and listening to the birds sing."
+ Line 131868: (1114358221)[Sun Apr 24 11:57:01 2005] You say,"Hail, Fawn Starstone"
+Search "Starstone" (4 hits in 1 file of 1 searched)
+ C:\Users\JasGr\OneDrive\Desktop\Old Desktop\EQ2 Emu Stuff\EmemJR's EQ2 Logs\eq2log_Shellie.txt (4 hits)
+ Line 5136: (1118602782)[Sun Jun 12 14:59:42 2005] \aNPC 11128 Fawn Starstone:Fawn Starstone\/a says to you,"Welcome to the village! I hope you find everything you need. I wish I had!"
+ Line 5137: (1118602782)[Sun Jun 12 14:59:42 2005] You say,"Hail, Fawn Starstone"
+ Line 5138: (1118602784)[Sun Jun 12 14:59:44 2005] You say to Fawn Starstone,"Thanks for the welcome! See you around!"
+--]]
\ No newline at end of file
diff --git a/server/SpawnScripts/Starcrest/FrancineTalino.lua b/server/SpawnScripts/Starcrest/FrancineTalino.lua
index c260851ec..d1484f968 100755
--- a/server/SpawnScripts/Starcrest/FrancineTalino.lua
+++ b/server/SpawnScripts/Starcrest/FrancineTalino.lua
@@ -11,6 +11,7 @@ dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
function spawn(NPC)
waypoints(NPC)
SetPlayerProximityFunction(NPC, 5, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function hailed(NPC, Spawn)
@@ -19,7 +20,7 @@ function hailed(NPC, Spawn)
end
function InRange(NPC,Spawn)
-if GetFaction(Spawn,11)<0 then
+if GetFactionAmount(Spawn,11)<0 then
FactionCheckingCallout(NPC,Spawn,faction)
end
end
diff --git a/server/SpawnScripts/Starcrest/Grekin.lua b/server/SpawnScripts/Starcrest/Grekin.lua
index 86c4c18e3..257cc4bca 100755
--- a/server/SpawnScripts/Starcrest/Grekin.lua
+++ b/server/SpawnScripts/Starcrest/Grekin.lua
@@ -70,22 +70,11 @@ function DepositStart(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("If it's coin you need I can help out, but you'll have to do a favor for me. I need my daily proceeds delivered to the bank.")
Dialog.AddVoiceover("voiceover/english/merchant_grekin/qey_village02/merchantgrekin000.mp3", 1743731083,2583786819)
- Dialog.AddOption("You would trust me with your money?", "Trust")
+ Dialog.AddOption("You would trust me with your money?", "DepositBegin")
Dialog.AddOption("On second thought, I shouldn't be handling someone else's large sums of coin.")
Dialog.Start()
end
-function Trust(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
- Dialog.AddDialog("For starters, it is only a day's proceeds. Also, there are three guards between the banks and us. I'm pretty sure you would be caught if you tried to run. Aside from all that, you have a friendly face and I think I can trust you. Take this box to the bank and return with the recipt.")
- Dialog.AddVoiceover("voiceover/english/merchant_grekin/qey_village02/merchantgrekin001.mp3", 2487079650,1001036096)
- Dialog.AddOption("Okay. I will be back shortly with the recipt.", "DepositBegin")
- Dialog.AddOption("I don't want to get tangled up in this.")
- Dialog.Start()
-end
-
function DepositBegin (NPC, Spawn)
FaceTarget(NPC, Spawn)
OfferQuest(NPC, Spawn, Deposit)
diff --git a/server/SpawnScripts/Starcrest/Harstead.lua b/server/SpawnScripts/Starcrest/Harstead.lua
index b09ab3fef..565785779 100755
--- a/server/SpawnScripts/Starcrest/Harstead.lua
+++ b/server/SpawnScripts/Starcrest/Harstead.lua
@@ -5,6 +5,9 @@
Script Date : 2008.09.23
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
+end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/HobertDawsim.lua b/server/SpawnScripts/Starcrest/HobertDawsim.lua
index 86f426b03..69db6f975 100755
--- a/server/SpawnScripts/Starcrest/HobertDawsim.lua
+++ b/server/SpawnScripts/Starcrest/HobertDawsim.lua
@@ -71,26 +71,26 @@ end
function Drink(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
AddTimer(NPC,8000, "Drink2")
end
function Drink2(NPC)
choice = math.random(1,4)
if choice == 1 then
- PlayAnimation(NPC,891)
+ PlayFlavor(NPC,"","","yawn",0,0)
elseif choice == 2 then
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
elseif choice == 3 then
PlayFlavor(NPC,"","","hungry",0,0)
else
- PlayAnimation(NPC,11668)
+ PlayFlavor(NPC,"","","happy",0,0)
end
AddTimer(NPC,6000, "Drink3")
end
function Drink3(NPC)
- PlayAnimation(NPC,11422)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
end
function GuardCallout(NPC,Spawn)
diff --git a/server/SpawnScripts/Starcrest/InnkeeperJerbenSleepwell.lua b/server/SpawnScripts/Starcrest/InnkeeperJerbenSleepwell.lua
index f98d4b418..4931a5a18 100755
--- a/server/SpawnScripts/Starcrest/InnkeeperJerbenSleepwell.lua
+++ b/server/SpawnScripts/Starcrest/InnkeeperJerbenSleepwell.lua
@@ -59,7 +59,7 @@ function Dialog1(NPC, Spawn)
if not HasCompletedQuest (Spawn, 5364) and not HasQuest (Spawn, 5364) then
Dialog.AddOption("I think I could help you out there.", "Dialog2")
end
- if GetQuestStep (Spawn, 5346)==2 then
+ if GetQuestStep (Spawn, 5364)==2 then
Dialog.AddOption("I've returned with the wings you needed, but they don't look very tasty.","Delivered")
end
Dialog.AddOption("Gee, that's a shame.")
diff --git a/server/SpawnScripts/Starcrest/LuvileBinlee.lua b/server/SpawnScripts/Starcrest/LuvileBinlee.lua
index 3461ade38..78733518a 100755
--- a/server/SpawnScripts/Starcrest/LuvileBinlee.lua
+++ b/server/SpawnScripts/Starcrest/LuvileBinlee.lua
@@ -5,6 +5,7 @@
Script Date : 2008.09.23
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+local Quest1 = 5787
require "SpawnScripts/Generic/DialogModule"
@@ -21,10 +22,104 @@ Dialog1(NPC, Spawn)
end
function Dialog1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("I'm contemplating how this tree symbolizes a person's life ... We all come from a solid trunk grounded in history, and the tree branches represent the random choices we make in life...")
Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee000.mp3", 2956622106, 3546014069)
+ if HasQuest(Spawn,Quest1) and GetQuestStep(Spawn,Quest1)>=3 and GetQuestStep(Spawn,Quest1)<=4 and not QuestStepIsComplete(Spawn,Quest1,3) then
+ Dialog.AddOption("Dagorel said you know how not to get hit.","Dialog2")
+ end
Dialog.AddOption("That's a bit deep for me. Sorry for bothering your meditations.")
Dialog.Start()
end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmm, I suppose I could show you a few things. You must have shown some promise for Dagorel to send you my way... Let's see what you can do. I want you to try to punch me.")
+ PlayFlavor(NPC, "", "", "sit_exit", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee001.mp3", 0, 0)
+ Dialog.AddOption("I don't want to hurt you.","Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Don't trouble yourself with that. Like the leaves in this tree, I move with the air around me. It is important you learn the flow of combat... now, let us begin. Try to hit me and don't stop until you do or until you become too tired to continue.")
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee002.mp3", 0, 0)
+ Dialog.AddOption("[punch at Luvile's face]","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog4a",1,Spawn)
+end
+
+function Dialog4a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Too slow. Try again.")
+ PlayFlavor(NPC, "", "", "monk_dodge_down", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee002.mp3", 0, 0)
+ Dialog.AddOption("[punch at Luvile's chest]","Dialog5")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack02", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog5a",1,Spawn)
+end
+
+function Dialog5a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Again. Aim carefully.")
+ PlayFlavor(NPC, "", "", "monk_dodge_backhand", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee004.mp3", 0, 0)
+ Dialog.AddOption("[punch at Luvile's stomach]","Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog6a",1,Spawn)
+end
+
+function Dialog6a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Close! Try again.")
+ PlayFlavor(NPC, "", "", "1h_pierce_dodge_thrust", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee004.mp3", 0, 0)
+ Dialog.AddOption("[punch at Luvile's side]","Dialog7")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_wild_swing", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog7a",1,Spawn)
+end
+
+function Dialog7a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aha! I didn't see that coming! You landed a blow! I showed you how a brawler avoids strikes, and you showed me that I need to continue my training. We both benefited from today's lesson. I wish you success with Dagorel's guidance.")
+ PlayFlavor(NPC, "", "", "1h_sword_parry_thrust", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/optional5/luvile_binlee/qey_village02/luvilebinlee004.mp3", 0, 0)
+ Dialog.AddOption("Thank you, Luvile. Good day.","Dialog8")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ if HasQuest(Spawn,Quest1) and not QuestStepIsComplete(Spawn,Quest1,3) then
+ SetStepComplete(Spawn,Quest1,3)
+ end
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "bow", 0, 0, Spawn)
+end
diff --git a/server/SpawnScripts/Starcrest/MollyDaysun.lua b/server/SpawnScripts/Starcrest/MollyDaysun.lua
index 95a07a283..41021b834 100755
--- a/server/SpawnScripts/Starcrest/MollyDaysun.lua
+++ b/server/SpawnScripts/Starcrest/MollyDaysun.lua
@@ -66,7 +66,7 @@ function Caught(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
- Dialog.AddDialog("Well, I did manage to grab her a few minutes ago. I took this out of her mouth. It looks like a playing piece the erudites play by the gate. Could you return the piece while I catch kitty?")
+ Dialog.AddDialog("Well, I did manage to grab her a few minutes ago. I took this out of her mouth. It looks like a playing piece from that game the erudites play by the gate. Could you return the piece while I catch kitty?")
Dialog.AddVoiceover("voiceover/english/molly_daysun/qey_village02/mollydaysun000.mp3", 2059278603, 4147718964)
Dialog.AddOption("Certainly. I will see if they are missing this piece from their game.", "QuestBegin")
Dialog.AddOption("Afraid I'm busy. Sorry.")
diff --git a/server/SpawnScripts/Starcrest/OolimeminosoPindiliana.lua b/server/SpawnScripts/Starcrest/OolimeminosoPindiliana.lua
index 4ea87a475..e4fc568bb 100755
--- a/server/SpawnScripts/Starcrest/OolimeminosoPindiliana.lua
+++ b/server/SpawnScripts/Starcrest/OolimeminosoPindiliana.lua
@@ -19,8 +19,8 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1008.mp3", "", "nod", 0, 0, Spawn)
- if GetQuestStep(Spawn,Mage1) ==5 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1008.mp3", "", "", 0, 0, Spawn)
+ if GetQuestStep(Spawn,Mage1) <=5 and GetQuestStep(Spawn,Mage1) >=3 then
AddConversationOption(conversation, "The Magister suggested I asked you about what you use your sorcery for.","MageTraining1")
end
AddConversationOption(conversation, "Ok.")
@@ -37,7 +37,7 @@ function MageTraining1(NPC, Spawn)
end
function MageTraining1a(NPC, Spawn)
- SetStepComplete(NPC,Mage1,5)
+ SetStepComplete(Spawn,Mage1,5)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
diff --git a/server/SpawnScripts/Starcrest/Orudormo.lua b/server/SpawnScripts/Starcrest/Orudormo.lua
index 42eac0e91..c56d1560e 100755
--- a/server/SpawnScripts/Starcrest/Orudormo.lua
+++ b/server/SpawnScripts/Starcrest/Orudormo.lua
@@ -70,6 +70,8 @@ function Dialog2a(NPC, Spawn)
elseif GetRace(Spawn)==20 then
Dialog.AddOption("A former pawn of a dragon lord? Just put down Mercenary.","Dialog2b")
end
+
+
Dialog.Start()
end
@@ -102,10 +104,10 @@ end
function Deposit1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I thought he'd make the deposit, but I suppose it doesn't matter who does it as long as it gets to the bank. Do you need anything else?")
+ Dialog.AddDialog("I thought he'd make the deposit, but I suppose it makes no difference who does it as long as it gets to the bank. Do you need anything else?")
Dialog.AddVoiceover("voiceover/english/banker_orudormo/qey_village02/bankerorudormo000.mp3", 3783803084,3333586894)
PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
- Dialog.AddOption("I need the recpit. Thank you.", "Deposit2")
+ Dialog.AddOption("I need the receipt. Thank you.", "Deposit2")
Dialog.Start()
end
diff --git a/server/SpawnScripts/Starcrest/PayneBathton.lua b/server/SpawnScripts/Starcrest/PayneBathton.lua
index dbecfcb79..0c9116d47 100755
--- a/server/SpawnScripts/Starcrest/PayneBathton.lua
+++ b/server/SpawnScripts/Starcrest/PayneBathton.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/ProprietorBlagard.lua b/server/SpawnScripts/Starcrest/ProprietorBlagard.lua
index bbc16d64c..5735a0abd 100755
--- a/server/SpawnScripts/Starcrest/ProprietorBlagard.lua
+++ b/server/SpawnScripts/Starcrest/ProprietorBlagard.lua
@@ -11,6 +11,7 @@ local AnIntriguingEye = 5366
local TheMotleyMerchantManifest = 5368
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Starcrest/Renea.lua b/server/SpawnScripts/Starcrest/Renea.lua
index fd5f3bd58..f239fd6c7 100755
--- a/server/SpawnScripts/Starcrest/Renea.lua
+++ b/server/SpawnScripts/Starcrest/Renea.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/StewardDaedeakovoon.lua b/server/SpawnScripts/Starcrest/StewardDaedeakovoon.lua
index 7f1cf97dc..3d6422851 100755
--- a/server/SpawnScripts/Starcrest/StewardDaedeakovoon.lua
+++ b/server/SpawnScripts/Starcrest/StewardDaedeakovoon.lua
@@ -45,7 +45,7 @@ function hailed(NPC, Spawn)
PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
else
if GetRace(Spawn)== 9 or GetRace(Spawn)== 3 or GetRace(Spawn)== 20 then
- if not HasQuest(Spawn,5762) and not HasCompletedQuest(Spawn, 5762) and HasQuest(Spawn, 5763) and not HasCompletedQuest(Spawn, 5763)then
+ if not HasQuest(Spawn,5762) and not HasCompletedQuest(Spawn, 5762) and not HasQuest(Spawn, 5763) and not HasCompletedQuest(Spawn, 5763)then
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("On behalf of Qeynos, we open our arms to you, friend. Your journey is over, and now you dwell among friends.")
diff --git a/server/SpawnScripts/Starcrest/Tanaira.lua b/server/SpawnScripts/Starcrest/Tanaira.lua
index 8b2e65b57..99172fc2f 100755
--- a/server/SpawnScripts/Starcrest/Tanaira.lua
+++ b/server/SpawnScripts/Starcrest/Tanaira.lua
@@ -14,6 +14,7 @@ local HailCheck = false
function spawn(NPC)
ProvidesQuest(NPC,5605)
AddTimer(NPC, 5000, "EmoteLoop")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function hailed(NPC, Spawn)
@@ -52,6 +53,7 @@ end
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
+ SetTarget(NPC,Spawn)
Dialog.New(NPC, Spawn)
if HasQuest(Spawn, FAR_SEAS_DR_PBG0162_QUEST_ID) and GetQuestStep(Spawn, FAR_SEAS_DR_PBG0162_QUEST_ID) == 2 then
SetStepComplete(Spawn, FAR_SEAS_DR_PBG0162_QUEST_ID, 2)
@@ -84,9 +86,10 @@ end
function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
+ SetTarget(NPC,Spawn)
Dialog.New(NPC, Spawn)
SetStepComplete(Spawn, 5605, 2)
- PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ PlayFlavor(NPC, "", "", "thank", 0, 0, Spawn)
Dialog.AddDialog("Thank you so much! This map looks great. Now, I just need to ask Grekin about that picnic.")
Dialog.AddVoiceover("voiceover/english/merchant_tanaira/qey_village02/merchanttanaira002.mp3", 702642153, 3039622281)
Dialog.AddOption("Best of luck to you both.")
diff --git a/server/SpawnScripts/Starcrest/Torbin.lua b/server/SpawnScripts/Starcrest/Torbin.lua
index 26450709f..5d59f1484 100755
--- a/server/SpawnScripts/Starcrest/Torbin.lua
+++ b/server/SpawnScripts/Starcrest/Torbin.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/Trinoonae.lua b/server/SpawnScripts/Starcrest/Trinoonae.lua
index be774ab00..2c522afdf 100755
--- a/server/SpawnScripts/Starcrest/Trinoonae.lua
+++ b/server/SpawnScripts/Starcrest/Trinoonae.lua
@@ -5,7 +5,7 @@
Script Date : 2009.09.25
Script Notes :
--]]
-
+dofile("SpawnScripts/Generic/AdvancementGaze.lua")
dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
function spawn(NPC)
@@ -17,7 +17,12 @@ function respawn(NPC)
end
function InRange(NPC, Spawn)
- CheckFaction(NPC, Spawn, "Qeynos")
+ if GetFactionAmount(Spawn,11)>=5000 then
+ if GetLevel(Spawn) ==8 or GetLevel(Spawn)==9 then
+ ClassCheck(NPC,Spawn)
+ end
+ end
+ CheckFaction(NPC, Spawn, "Qeynos")
end
function LeaveRange(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/Unuesh.lua b/server/SpawnScripts/Starcrest/Unuesh.lua
index 7a07613db..7bb7c2148 100755
--- a/server/SpawnScripts/Starcrest/Unuesh.lua
+++ b/server/SpawnScripts/Starcrest/Unuesh.lua
@@ -15,6 +15,9 @@ Talk(NPC, Spawn)
end
end
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
+end
function Talk(NPC, Spawn)
FaceTarget(NPC, Spawn)
diff --git a/server/SpawnScripts/Starcrest/Vondorinsarnoo.lua b/server/SpawnScripts/Starcrest/Vondorinsarnoo.lua
index 5dfc9b4ed..410f6eb7a 100755
--- a/server/SpawnScripts/Starcrest/Vondorinsarnoo.lua
+++ b/server/SpawnScripts/Starcrest/Vondorinsarnoo.lua
@@ -92,8 +92,8 @@ function Dialog3(NPC, Spawn)
end
if GetQuestStep(Spawn,SOBERING_REMEDY) ==4 then
Dialog.AddOption("Here are the components you asked for.","Turnin")
- end
- Dialog.AddOption("Guess some people handle their liquor better than others. Good day!")
+ end
+ Dialog.AddOption("Guess some people handle their liquor better than others. Good day!")
Dialog.Start()
end
diff --git a/server/SpawnScripts/Starcrest/ZentomaronCroosinaden.lua b/server/SpawnScripts/Starcrest/ZentomaronCroosinaden.lua
index fff0a90b8..eb48b7aef 100755
--- a/server/SpawnScripts/Starcrest/ZentomaronCroosinaden.lua
+++ b/server/SpawnScripts/Starcrest/ZentomaronCroosinaden.lua
@@ -10,6 +10,7 @@ require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
ProvidesQuest(NPC,5604)
+ SetInfoStructString(NPC, "action_state", "mood_angry")
end
function respawn(NPC)
@@ -85,7 +86,7 @@ function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
- Dialog.AddDialog("How dare he! I know he's lying- wait. You didn't give him my name, did you?")
+ Dialog.AddDialog("How dare he! I know he's lying- wait. You didn't give him my name, did you?")
Dialog.AddVoiceover("voiceover/english/zentomaron_croosinaden/qey_village02/zentomaroncroosinaden002.mp3", 2909174434, 3369055337)
Dialog.AddOption("...You told me to tell him the demands were directly from you.","Delivered2")
Dialog.Start()
@@ -96,7 +97,7 @@ function Delivered2(NPC, Spawn)
Dialog.New(NPC, Spawn)
SetStepComplete(Spawn, 5604, 2)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Oh... I suppose I did. Well, take this bit of coin for your efforts. We may yet get Farnsbey to talk. Especially if we apply him with enough ale.")
+ Dialog.AddDialog("Oh... I suppose I did. Well, take this bit of coin for your efforts. We may yet get Farnsby to talk. Especially if we apply him with enough ale.")
Dialog.AddVoiceover("voiceover/english/zentomaron_croosinaden/qey_village02/zentomaroncroosinaden003.mp3", 2350120795, 405544925)
Dialog.AddOption("Thanks. Best of luck with all that.")
Dialog.Start()
diff --git a/server/SpawnScripts/Starcrest/flowers.lua b/server/SpawnScripts/Starcrest/flowers.lua
new file mode 100755
index 000000000..5c8a67e45
--- /dev/null
+++ b/server/SpawnScripts/Starcrest/flowers.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Starcrest/flowers.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.26 07:09:54
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,241,5,1,1,1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Starcrest/gardensoil.lua b/server/SpawnScripts/Starcrest/gardensoil.lua
new file mode 100755
index 000000000..83d60a567
--- /dev/null
+++ b/server/SpawnScripts/Starcrest/gardensoil.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/Starcrest/gardensoil.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.26 07:09:59
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,241,4,1,1,1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Starcrest/questclimbingbenchmaareonacayan.lua b/server/SpawnScripts/Starcrest/questclimbingbenchmaareonacayan.lua
index 2a1b440b9..c4e56db60 100755
--- a/server/SpawnScripts/Starcrest/questclimbingbenchmaareonacayan.lua
+++ b/server/SpawnScripts/Starcrest/questclimbingbenchmaareonacayan.lua
@@ -10,6 +10,7 @@ function spawn(NPC)
SetRequiredQuest(NPC,316,1,0,0,1)
SetRequiredQuest(NPC,321,1,0,0,1)
SetRequiredQuest(NPC,321,2,0,0,1)
+ SetRequiredQuest(NPC,321,3,0,0,1)
end
function respawn(NPC)
diff --git a/server/SpawnScripts/Starcrest/shrub.lua b/server/SpawnScripts/Starcrest/shrub.lua
new file mode 100755
index 000000000..11da2990e
--- /dev/null
+++ b/server/SpawnScripts/Starcrest/shrub.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : SpawnScripts/Starcrest/shrub.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.26 07:09:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,241,5,1,1,1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Starcrest/zonetoqeysouth.lua b/server/SpawnScripts/Starcrest/zonetoqeysouth.lua
index 27f24b339..3596c9561 100755
--- a/server/SpawnScripts/Starcrest/zonetoqeysouth.lua
+++ b/server/SpawnScripts/Starcrest/zonetoqeysouth.lua
@@ -5,19 +5,32 @@
Script Purpose :
:
--]]
-
-function spawn(NPC)
- SetRequiredQuest(NPC,5718,14,0,1,1)
- SetRequiredQuest(NPC,5719,14,0,1,1)
- SetRequiredQuest(NPC,5720,14,0,1,1)
- SetRequiredQuest(NPC,5721,14,0,1,1)
- SetRequiredQuest(NPC,5722,14,0,1,1)
- SetRequiredQuest(NPC,5723,14,0,1,1)
-end
-
-function hailed(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter South Qeynos' then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723)
+ and GetFactionAmount(Spawn,11)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5762) and GetQuestStep(Spawn,5762)==10 then
+ SetStepComplete(Spawn,5762,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only citizens may enter the city of Qeynos.",255,50,50)
+ SendMessage(Spawn,"Only citizens may enter the city of Qeynos.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,11) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("SouthQeynos")
+ Zone(ZoneRef,Spawn,694.07, -20.5, 267.15, 112.34)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Stonestair/Kaman.lua b/server/SpawnScripts/Stonestair/Kaman.lua
index 0c0012656..988ae1936 100755
--- a/server/SpawnScripts/Stonestair/Kaman.lua
+++ b/server/SpawnScripts/Stonestair/Kaman.lua
@@ -8,28 +8,114 @@
require "SpawnScripts/Generic/DialogModule"
+local Citizenship = 5859
local CasingtheJoint = 5652
function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
end
function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, CasingtheJoint) == 1 then
- SetStepComplete(Spawn, CasingtheJoint, 1)
- end
- Dialog1(NPC, Spawn)
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/banker_quintius_calacicus/fprt_hood1/100_bankerquintiuscalacicus_housing_quest_1_22bf58bf.mp3", "Are you the one opening the new account?", "bye", 1249171681, 483955197, Spawn)
end
+end
+
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+elseif HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+Dialog2(NPC, Spawn)
+else
+Dialog1(NPC, Spawn)
+end
+end
+
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Hello! Your valuables are safe with Kaman. Trust me. I'm the last of a long line of bankers. What guild do you belong to?")
Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood02/bnk_banker_kaman.mp3", 1309348424, 2032495249)
- Dialog.AddOption("Maybe another time.")
+ if GetQuestStep(Spawn, CasingtheJoint) == 1 then
+ Dialog.AddOption("It is nice to see the bank so well protected.","Bank1")
+ end
+ Dialog.AddOption("Maybe another time.")
Dialog.Start()
end
+function Bank1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How kind of you! I'm used to sneers and hisses; so kind words are music to my ears. I'm trying to build up the trust of the people ... ever since that rumor it's been very difficult ...")
+ Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood04/quests/luciusvulso/kaman_lucius_x1_initial.mp3", 1416971542, 1234122783)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("I'm sorry... but what rumor?","Bank2")
+ Dialog.Start()
+end
+
+function Bank2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah ... Not from around here, are ya? Someone is spreading the rumor that our vault isn't secure. They say you can tunnel in the vault from the sewers below. But it's preposterous, I tell you, just preposterous! Sorry. I don't mean to digress, friend. Now, are you making a deposit or withdrawal?")
+ Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood04/quests/luciusvulso/kaman_lucius_x1_initial2.mp3", 2499658980, 1146756071)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddOption("Nothing right now. Thank you.")
+ SetStepComplete(Spawn, CasingtheJoint, 1)
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you look like the one Valthun described. Before we can open your account, we need some information from you. What is your name?")
+ Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood02/bnk_banker_kaman006.mp3", 1584899105, 4177190820)
+ Dialog.AddOption(""..GetName(Spawn).."","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What is your occupation?")
+ Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood02/bnk_banker_kaman007.mp3", 491324789, 1115007085)
+ Dialog.AddOption("Adventurer","Dialog2b")
+ Dialog.AddOption("Crafter","Dialog2b")
+ if GetRace(Spawn)==3 then
+ Dialog.AddOption("Seeker? Of knowledge, obviously.","Dialog2b")
+ elseif GetRace(Spawn)==11 then
+ Dialog.AddOption("If you put down rat catcher I'll...","Dialog2b")
+
+ end
+ Dialog.Start()
+end
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Any surviving relatives, do you ever leave your house unarmed, and are you a deep sleeper?")
+ Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood02/bnk_banker_kaman008.mp3", 3429718492, 1776251277)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No, no, and no.","Dialog2c")
+ Dialog.AddOption("[Lie] No, no, and no.","Dialog2c")
+ Dialog.AddOption("This does sound concerning!... no!","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ SetStepComplete(Spawn, Citizenship,4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How convenient for you. Very well ... a place for you within the Freeport Reserve vaults have been set aside . Feel free to deposit large amounts of coin or valuable artifacts with us anytime. We'll be sure to keep it ... safe. Will there anything else?")
+ Dialog.AddVoiceover("voiceover/english/banker_kaman/fprt_hood02/bnk_banker_kaman009.mp3", 3192376805, 46493799)
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/Stonestair/OverseerMelkia.lua b/server/SpawnScripts/Stonestair/OverseerMelkia.lua
index 45ad16e6f..6760ab4d6 100755
--- a/server/SpawnScripts/Stonestair/OverseerMelkia.lua
+++ b/server/SpawnScripts/Stonestair/OverseerMelkia.lua
@@ -6,22 +6,100 @@
:
--]]
-function spawn(NPC)
+local Welcome = 5859
+require "SpawnScripts/Generic/DialogModule"
+local CalloutTimer = false
+
+function spawn(NPC)
+ProvidesQuest(NPC,Welcome)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+if GetFactionAmount(Spawn,12)<0 then
+PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+FaceTarget(NPC, Spawn)
+ else
+if GetRace(Spawn)== 3 or GetRace(Spawn) == 11 then
+ if CanReceiveQuest(Spawn, Welcome) or HasQuest(Spawn,5758) then
+ PlayFlavor(NPC,"voiceover/english/overseer_melkia/fprt_hood02/qst_overseer_melkia_callout2_e5f9b75f.mp3","New refugees are required to speak with me immediately!","nod",566743467,1453719370,Spawn)
+ elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+
+function ResetCallout(NPC,Spawn)
+ CalloutTimer = false
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","shame",0,0,Spawn)
+ else
+if GetRace(Spawn)== 3 or GetRace(Spawn) == 11 then
+ if not HasQuest(Spawn, Welcome) and not HasCompletedQuest(Spawn,Welcome)then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You are wise to listen to your superiors. You are in the great city of Freeport, and you will do as your superiors say. Do you understand, or should I speak more slowly?")
+ Dialog.AddVoiceover("voiceover/english/overseer_melkia/fprt_hood02/overseer_melkia001.mp3", 2219821898, 2979719473)
+ PlayFlavor(NPC,"","","scold",0,0,Spawn)
+ Dialog.AddOption("What do you need of me?","Dialog1")
+ Dialog.AddOption("I... will return shortly.")
+ Dialog.Start()
+ else
+ Talk(NPC,Spawn)
+ end
+else
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+function Talk(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
local choice = MakeRandomInt(1,2)
if choice == 1 then
PlayFlavor(NPC,"voiceover/english/overseer_melkia/fprt_hood02/qst_overseer_melkia_callout1_8dc5a24e.mp3","You disgusting little creature! How dare you address me?","lookaway",256372118,1746198863,Spawn)
elseif choice == 2 then
PlayFlavor(NPC,"voiceover/english/overseer_melkia/fprt_hood02/qst_overseer_melkia_callout2_e5f9b75f.mp3","New refugees are required to speak with me immediately!","nod",566743467,1453719370,Spawn)
- end
- if GetQuestStep(Spawn, 5758)==2 then
- SetStepComplete(Spawn, 5758,2)
- end
+end
end
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Awww ... how cute, it asked me a question. Good little refugee. What I need, is for you to answer my questions, not ask them. Perhaps your pitiful intellect prevents you from comprehending these simple instructions. Maybe you'd like to meet with the Overlord's administrators of justice. Is this what you want, lowly refugee?")
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/overseer_melkia/fprt_hood02/overseer_melkia002.mp3", 2859416423, 1015957689)
+ Dialog.AddOption("...", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ahhh ... Now it's clear. You damaged your brain before arriving here. I'll speak down to your level, so try to follow along. You are in Stonestair Byway, the district populated by Erudites and Kerran. The Overlord gave you a house. Can you say, \"house?\" Now, try it with me ... hooousssee...")
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/overseer_melkia/fprt_hood02/overseer_melkia003.mp3", 1377639509, 4180092382)
+ Dialog.AddOption("...House...?", "QuestStart")
+ Dialog.Start()
+end
+
+function QuestStart(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Welcome)
+end
diff --git a/server/SpawnScripts/Stonestair/Raban.lua b/server/SpawnScripts/Stonestair/Raban.lua
index 5a2816bcc..43ac3dcd4 100755
--- a/server/SpawnScripts/Stonestair/Raban.lua
+++ b/server/SpawnScripts/Stonestair/Raban.lua
@@ -9,6 +9,7 @@
require "SpawnScripts/Generic/DialogModule"
local AWorthyTeacher = 5687
+local EnchantedEvening = 5926
function spawn(NPC)
end
@@ -18,15 +19,7 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, AWorthyTeacher) == 1 then
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Can't you adventurers find some other place to drink?")
- Dialog.AddOption("I am not here to drink, madam. I bring a message from the Iksar Zekvila.", "Dialog2")
- Dialog.Start()
- else
- Dialog1(NPC, Spawn)
- end
+ Dialog1(NPC, Spawn)
end
function Dialog1(NPC, Spawn)
@@ -34,10 +27,18 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Can't you adventurers find some other place to drink?")
Dialog.AddVoiceover("voiceover/english/optional1/tavern_patron,_erudite_female/fprt_hood02/tavern_patron_erudite_raban.mp3", 2922822950, 250860244)
- Dialog.AddOption("Whatever.")
+ if GetQuestStep(Spawn, AWorthyTeacher) == 1 then
+ Dialog.AddOption("I am not here to drink, madam. I bring a message from the Iksar Zekvila.", "Dialog2")
+ end
+ if GetQuestStep(Spawn, EnchantedEvening) == 1 then
+ Dialog.AddOption("Krysa is offering you more money to make the two other Ratonga \"more ugly\".", "Dialog3")
+ end
+ Dialog.AddOption("Whatever.")
Dialog.Start()
end
+--
+
function Dialog2(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
@@ -47,4 +48,12 @@ function Dialog2(NPC, Spawn)
SetStepComplete(Spawn, AWorthyTeacher, 1)
end
-
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hahahaaaa! It's so adorable when those little creatures fight each other...so emotional...so angry...perfect little beasts. Well, you tell Krysa that I'll do it for free. Considering all three of them, plus some little love-smitten ratonga, came to me for enchantments, it's worth it. As I was saying, it's so charming to see those feral little beasts stab each other in the back. Haaahaaaahaaa.")
+ PlayFlavor(NPC, "","","chuckle",0,0, Spawn)
+ Dialog.AddOption("Interesting. I'll let her know.")
+ Dialog.Start()
+ SetStepComplete(Spawn, EnchantedEvening, 1)
+end
diff --git a/server/SpawnScripts/Stonestair/ShatanaKamelia.lua b/server/SpawnScripts/Stonestair/ShatanaKamelia.lua
new file mode 100755
index 000000000..b0fd2baa2
--- /dev/null
+++ b/server/SpawnScripts/Stonestair/ShatanaKamelia.lua
@@ -0,0 +1,127 @@
+--[[
+ Script Name : SpawnScripts/Stonestair/ShatanaKamelia.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 12:06:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
+
+-- Item ID's
+local ARTISAN_ESSENTIALS_VOLUME_2 = 31373
+
+function spawn(NPC)
+end
+
+function RandomGreeting(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1047.mp3", "", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1047.mp3", "", "", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1047.mp3", "", "", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859) == 8 then
+ Dialog1(NPC,Spawn)
+ elseif GetTradeskillLevel(Spawn) <2 then
+ RandomGreeting(NPC,Spawn)
+
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ RandomGreeting(NPC,Spawn)
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ else
+ RandomGreeting(NPC,Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in West Freeport. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ end
+end
+
+
+function dlg_39_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5859)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
+ StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
+end
+
+function Dialog1(NPC,Spawn)
+ SetStepComplete(Spawn,5859,8)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "flirt", 0, 0, Spawn)
+ Dialog.AddDialog("If you find it irresistible to serve someone as beautiful and intelligent as I, I suppose I can use you as another one of my servants in The Brokerage of Nepeta Cataria. Of course you'll join, right?")
+ Dialog.AddVoiceover("voiceover/english/shatana_kamelia/fprt_hood02/100_trd_shatana_kamelia_joining_6430583e.mp3", 645497764, 909566710)
+ Dialog.AddOption("Just looking around. As you were.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddDialog("Many things can be done at a tradeskill society and there are many in the city... but ours is obviously the best! Each is equipped with quality crafting stations and fuels needed to become proficient at any tradeskill class you might desire.")
+ Dialog.AddOption("Anything else I should know?", "CanDo2")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function HelpMe(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("In order to be competitive in today's marketplace, The Brokerage of Nepeta Cataria provides you with this basic guide to commerce. You will learn many things on your own over time, so do not consider this book your only guide to success. Rely on your own resources and skills and you will prosper.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn) <2 then
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Stonestair/StreetWitchAzreana.lua b/server/SpawnScripts/Stonestair/StreetWitchAzreana.lua
index 760ec1171..b99b99943 100755
--- a/server/SpawnScripts/Stonestair/StreetWitchAzreana.lua
+++ b/server/SpawnScripts/Stonestair/StreetWitchAzreana.lua
@@ -18,10 +18,6 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, OgreWatch) == 1 then
- SetStepComplete(Spawn, OgreWatch, 1)
- end
-
Dialog1(NPC, Spawn)
end
@@ -30,7 +26,19 @@ function Dialog1(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Hmmm ... yes ... this is interesting ... interesting indeed...")
Dialog.AddVoiceover("voiceover/english/streetwitch/fprt_hood02/street_witch_azreana.mp3", 3291813723, 1080848971)
+ if GetQuestStep(Spawn, OgreWatch) == 1 then
+ Dialog.AddOption("I have a package for you. It is supposedly very important.","Dialog2")
+ end
Dialog.AddOption("Uhh... sure.")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes! Just as I've forseen it... A web... deep at work. Not ogres... Secrets... prying in the dark... A meeting of more than what can be seen... I must study this further. You have aided more than you know by delievering this. Thank you. ")
+ SetStepComplete(Spawn, OgreWatch, 1)
+
+ Dialog.AddOption("Sounds like something I should discuss with Orian about sometime.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/Stonestair/tofprtcitizenshiptrial.lua b/server/SpawnScripts/Stonestair/tofprtcitizenshiptrial.lua
new file mode 100755
index 000000000..0e628c8b7
--- /dev/null
+++ b/server/SpawnScripts/Stonestair/tofprtcitizenshiptrial.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/Stonestair/tofprtcitizenshiptrial.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 04:06:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC, 5859, 13)
+SetRequiredQuest(NPC, 5870, 2)
+SetRequiredQuest(NPC, 5870, 3)
+SetRequiredQuest(NPC, 5870, 4)
+SetRequiredQuest(NPC, 5870, 5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+local TaskSheet = 13398
+local WelcomeQuest = 5859
+local TaskQuest = 5870
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Use citizenship sign' then
+ if HasQuest(Spawn,WelcomeQuest) and not HasCompletedQuest(Spawn,TaskQuest) and not HasItem(Spawn, TaskSheet,1) then
+ Quest = GetQuest(Spawn,WelcomeQuest)
+ SendMessage(Spawn, "You pull an application for citizenship from the wall.")
+ GiveQuestItem(Quest, Spawn, "I must complete this task to become a Citizen of Freeport.", TaskSheet)
+
+ elseif not HasQuest(Spawn, TaskQuest) and HasItem(Spawn, TaskSheet,1) or GetQuestStep(Spawn,TaskQuest)==1 and HasItem(Spawn, TaskSheet,1) then
+ SendMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.")
+ SendPopUpMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.", 200, 200, 200)
+
+ elseif HasQuest(Spawn, TaskQuest) and GetQuestStep(Spawn,TaskQuest)>=2 and GetQuestStep(Spawn,TaskQuest)<=5 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+end
+end
+end
+
+ function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ if GetQuestStep(Spawn,TaskQuest)==2 then
+ SetStepComplete(Spawn,TaskQuest,2)
+ end
+ ZoneRef = GetZone("FreeportCitizenshipTrialChamber")
+ Zone(ZoneRef,Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Stonestair/zonetofprtnorth.lua b/server/SpawnScripts/Stonestair/zonetofprtnorth.lua
new file mode 100755
index 000000000..a45b817f2
--- /dev/null
+++ b/server/SpawnScripts/Stonestair/zonetofprtnorth.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/Stonestair/zonetofprtnorth.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 04:06:06
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn,SpellName)
+ local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter North Freeport' then
+ if not HasCompletedQuest(Spawn,5866) and
+ not HasCompletedQuest(Spawn,5867) and
+ not HasCompletedQuest(Spawn,5868) and
+ not HasCompletedQuest(Spawn,5869) and
+ not HasCompletedQuest(Spawn,5870) and
+ not HasCompletedQuest(Spawn,5871)
+ and GetFactionAmount(Spawn,12)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5859) and GetQuestStep(Spawn,5859)==10 then
+ SetStepComplete(Spawn,5859,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only Freeport citizens may enter the city.",255,50,50)
+ SendMessage(Spawn,"Only Freeport citizens may enter the city.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,12) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("NorthFreeport")
+ Zone(ZoneRef,Spawn,-4.56, -20.05, -308.55, 180.63)
+ end
+end
+end
diff --git a/server/SpawnScripts/SummonerPets/Bubbles.lua b/server/SpawnScripts/SummonerPets/Bubbles.lua
new file mode 100755
index 000000000..bb885bfee
--- /dev/null
+++ b/server/SpawnScripts/SummonerPets/Bubbles.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/SummonerPets/Bubbles.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.27 03:11:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ DervishThug(NPC)
+
+ --AddTimer(NPC, 1500, "butts")
+
+end
+
+function butts(NPC)
+ Encounters(NPC, Spawn)
+end
+
+function attacked(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ Encounters(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/SummonerPets/TelliruanRecruitApprentice1.lua b/server/SpawnScripts/SummonerPets/TelliruanRecruitApprentice1.lua
new file mode 100755
index 000000000..c243fec68
--- /dev/null
+++ b/server/SpawnScripts/SummonerPets/TelliruanRecruitApprentice1.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : SpawnScripts/SummonerPets/TelliruanRecruitApprentice1.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.12 08:11:52
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC, Spawn)
+
+end
+
+function attacked(NPC)
+ SetInfoStructSInt(Spawn, "hp_regen", 9)
+ SetInfoStructSInt(Spawn, "power_regen", 12)
+
+end
+
+
+function CombatReset(NPC)
+ SetInfoStructSInt(Spawn, "hp_regen", 37)
+ SetInfoStructSInt(Spawn, "power_regen", 22)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonerPets/TellurianCrawler.lua b/server/SpawnScripts/SummonerPets/TellurianCrawler.lua
new file mode 100755
index 000000000..54fdef1fd
--- /dev/null
+++ b/server/SpawnScripts/SummonerPets/TellurianCrawler.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SummonerPets/TellurianCrawler.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.18 11:02:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonerPets/TellurianRecruit.lua b/server/SpawnScripts/SummonerPets/TellurianRecruit.lua
new file mode 100755
index 000000000..59a6d0ee4
--- /dev/null
+++ b/server/SpawnScripts/SummonerPets/TellurianRecruit.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : SpawnScripts/SummonerPets/TellurianRecruit.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.18 11:02:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+
+function attacked(NPC)
+ SetInfoStructSInt(Spawn, "hp_regen", 13)
+ SetInfoStructSInt(Spawn, "power_regen", 17)
+
+end
+
+
+function CombatReset(NPC)
+ SetInfoStructSInt(Spawn, "hp_regen", 71)
+ SetInfoStructSInt(Spawn, "power_regen", 54)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonerPets/TellurianScarab.lua b/server/SpawnScripts/SummonerPets/TellurianScarab.lua
new file mode 100755
index 000000000..c57d2297e
--- /dev/null
+++ b/server/SpawnScripts/SummonerPets/TellurianScarab.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/SummonerPets/TellurianScarab.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.18 11:02:38
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC, Spawn)
+
+end
+
+
+
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonerPets/TellurianScarabV2.lua b/server/SpawnScripts/SummonerPets/TellurianScarabV2.lua
new file mode 100755
index 000000000..753e3a86d
--- /dev/null
+++ b/server/SpawnScripts/SummonerPets/TellurianScarabV2.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SummonerPets/TellurianScarabV2.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.22 01:11:05
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+ --Get pet's level
+ local Level = GetLevel(NPC)
+
+ --Set values based on pet spell tier
+ local BaseStr = 55 -- Base strength for pet before level modification
+ local Dif = 1 --Pet's difficulty tier
+ local HPMod = 22.81 -- Pet's hitpoint multipier
+ local PWMod = 6.875 -- Pet's power multiplier
+ local Sz = 30 -- Pet's size
+
+ --Calculate new stats
+ local hp = Level * HPMod
+ local pw = Level * PWMod
+ local newStr = BaseStr + Level
+
+ --Set stats
+ SpawnSet(NPC, "difficulty", difficulty)
+ SpawnSet(NPC, "hp", hp)
+ SpawnSet(NPC, "power", pw)
+ SpawnSet(NPC, "size", Sz)
+ SetInfoStructFloat(pet, "str", newStr)
+ SetStrBase(pet, newStr)
+
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/TrialofAir.lua b/server/SpawnScripts/SummonersTest/TrialofAir.lua
new file mode 100755
index 000000000..581129b91
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/TrialofAir.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/TrialofAir.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 04:11:34
+ Script Purpose :
+ :
+--]]
+
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseWaterElemental1.lua")
+dofile("SpawnScripts/SummonersTest/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetSpawnAnimation(NPC, 13016)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780576)
+ if Ring ~= nil then
+ Trial3Done(Ring,Spawn)
+end
+end
+
+function Stage4 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ ApplySpellVisual(SummonRing, 165)
+end
+
+function Trial4 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780604) == nil then
+ local TestofWater = SpawnByLocationID(zone,133780604)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/TrialofEarth.lua b/server/SpawnScripts/SummonersTest/TrialofEarth.lua
new file mode 100755
index 000000000..60e090cce
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/TrialofEarth.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/TrialofEarth.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 04:11:11
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+dofile("SpawnScripts/SummonersTest/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetSpawnAnimation(NPC, 13016)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780576)
+ if Ring ~= nil then
+ Trial1Done(Ring,Spawn)
+end
+end
+
+function Stage2 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ ApplySpellVisual(SummonRing, 165)
+end
+
+function Trial2 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780603) == nil then
+ local TestofWater = SpawnByLocationID(zone,133780603)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/TrialofFire.lua b/server/SpawnScripts/SummonersTest/TrialofFire.lua
new file mode 100755
index 000000000..701ef607a
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/TrialofFire.lua
@@ -0,0 +1,75 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/TrialofFire.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 04:11:14
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseFireElemental1.lua")
+dofile("SpawnScripts/SummonersTest/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetSpawnAnimation(NPC, 13016)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780576)
+ if Ring ~= nil then
+ Trial4Done(Ring,Spawn)
+end
+if GetQuestStep(Spawn,5770)==1 then
+ SetStepComplete(Spawn,5770,1)
+end
+end
+
+function Light1(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local candle1 = GetSpawnByLocationID(zone,133780562)
+ local candle2 = GetSpawnByLocationID(zone,133780563)
+ local candle3 = GetSpawnByLocationID(zone,133780564)
+ local candle4 = GetSpawnByLocationID(zone,133780565)
+ local candle5 = GetSpawnByLocationID(zone,133780566)
+ local candle6 = GetSpawnByLocationID(zone,133780568)
+ local candle7 = GetSpawnByLocationID(zone,133780569)
+ SpawnSet(candle1,"model_type",5963)
+ SpawnSet(candle2,"model_type",5963)
+ SpawnSet(candle3,"model_type",5963)
+ SpawnSet(candle4,"model_type",5963)
+ SpawnSet(candle5,"model_type",5963)
+ SpawnSet(candle6,"model_type",5963)
+ SpawnSet(candle7,"model_type",5963)
+end
+
+function Light2(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local candle8 = GetSpawnByLocationID(zone,133780570)
+ local candle9 = GetSpawnByLocationID(zone,133780571)
+ local candle10 = GetSpawnByLocationID(zone,133780572)
+ local candle11 = GetSpawnByLocationID(zone,133780573)
+ local candle12 = GetSpawnByLocationID(zone,133780574)
+ local candle13 = GetSpawnByLocationID(zone,133780575)
+ local candle14 = GetSpawnByLocationID(zone,133780567)
+ SpawnSet(candle8,"model_type",5963)
+ SpawnSet(candle9,"model_type",5963)
+ SpawnSet(candle10,"model_type",5963)
+ SpawnSet(candle11,"model_type",5963)
+ SpawnSet(candle12,"model_type",5963)
+ SpawnSet(candle13,"model_type",5963)
+ SpawnSet(candle14,"model_type",5963)
+end
+
+function Ring(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ SpawnSet(SummonRing,"visual_state",34342)
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/TrialofWater.lua b/server/SpawnScripts/SummonersTest/TrialofWater.lua
new file mode 100755
index 000000000..243f4c498
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/TrialofWater.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/TrialofWater.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 04:11:44
+ Script Purpose :
+ :
+--]]
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseWaterElemental1.lua")
+dofile("SpawnScripts/SummonersTest/dpoinvisiblecube.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SetSpawnAnimation(NPC, 13016)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local Ring = GetSpawnByLocationID(zone,133780576)
+ if Ring ~= nil then
+ Trial2Done(Ring,Spawn)
+end
+end
+
+function Stage3 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ ApplySpellVisual(SummonRing, 165)
+end
+
+function Trial3 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780601) == nil then
+ local TestofWater = SpawnByLocationID(zone,133780601)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/bookshelfrules.lua b/server/SpawnScripts/SummonersTest/bookshelfrules.lua
new file mode 100755
index 000000000..fe93b2354
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/bookshelfrules.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/bookshelfrules.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 02:11:51
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search bookcase' then
+ local con = CreateConversation()
+ AddConversationOption(con, "\"The Summoner's Test\"", "Summon")
+ AddConversationOption(con, "\"The Sorcerer's Trial\"", "Sorc")
+ AddConversationOption(con, "\"The Enchanter's Challenge\"", "Enchant")
+ AddConversationOption(con, "Leave them alone.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "These books appear to be a collection of testing materials for use in arcane advancement trials. A few appear less dust-covered than others.")
+end
+end
+
+function Summon(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Return the testing materials.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, " ...A summoning ring composed of unlit candles must prepared so pupils have a chance to demonstrate control while not entirely being in control. Allow the students to complete the circle by lighting the candles, followed by tapping into the \"hole\" generated within the ring. This will allow the Three-Tower's energies to control the elements presented for the potentional summoner. NOTE: This should always be conducted in a small space should go the testing go awry! - Magister Niksel ")
+end
+
+function Sorc(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Return the testing materials.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, " ...A sorcerer must demonstrate mastery of arcane beings by displaying elemental prowess. To begin, they must weave the ether about them upon the focusing crystal within a candle ring. Four selected arcane creatures from the Three Towers's menagerie will be translocated to the testing chamber. They will be returned immediately for quick repairs for the next tester should they be torn asunder. NOTE: Knowledge Guardians may need a Magister's attention to address the probability for paper cuts. Priests had to be called in during a recent pupil's trial! - Magister Niksel ")
+end
+
+function Enchant(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Return the testing materials.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, " A large note is affixed to this book. \"Future Enchanter Charm tests need new protocols after the last incident. The aspiring enchanter was reverse-charmed and forced to run off the top floor of the Three Towers to an undesirable conclusion. Please conduct testing in another way until new methods can be employed! - Magister Niksel\" ")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/candles.lua b/server/SpawnScripts/SummonersTest/candles.lua
new file mode 100755
index 000000000..10149c558
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/candles.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/candles.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 01:11:50
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Light the candles' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Begin the test. Use the ring once it is ready.", "offer")
+ AddConversationOption(con, "Leave them alone.","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "This circle has been laid before you to control summoning. To begin the Summoner's Test you must light the candles and reach into a \"hole\" in the fabric of reality to summon your first creature.")
+end
+end
+
+function offer(NPC, Spawn)
+ CloseConversation(NPC, Spawn)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ SpawnSet(NPC,"model_type",5961)
+ AddTimer(NPC,MakeRandomInt(1500,2500),"Light1",1,Spawn)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"Light2",1,Spawn)
+ AddTimer(NPC,6000,"Ring",1,Spawn)
+ end
+
+
+function Light1(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local candle1 = GetSpawnByLocationID(zone,133780562)
+ local candle2 = GetSpawnByLocationID(zone,133780563)
+ local candle3 = GetSpawnByLocationID(zone,133780564)
+ local candle4 = GetSpawnByLocationID(zone,133780565)
+ local candle5 = GetSpawnByLocationID(zone,133780566)
+ local candle6 = GetSpawnByLocationID(zone,133780568)
+ local candle7 = GetSpawnByLocationID(zone,133780569)
+ SpawnSet(candle1,"model_type",5961)
+ SpawnSet(candle2,"model_type",5961)
+ SpawnSet(candle3,"model_type",5961)
+ SpawnSet(candle4,"model_type",5961)
+ SpawnSet(candle5,"model_type",5961)
+ SpawnSet(candle6,"model_type",5961)
+ SpawnSet(candle7,"model_type",5961)
+end
+
+function Light2(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local candle8 = GetSpawnByLocationID(zone,133780570)
+ local candle9 = GetSpawnByLocationID(zone,133780571)
+ local candle10 = GetSpawnByLocationID(zone,133780572)
+ local candle11 = GetSpawnByLocationID(zone,133780573)
+ local candle12 = GetSpawnByLocationID(zone,133780574)
+ local candle13 = GetSpawnByLocationID(zone,133780575)
+ SpawnSet(candle8,"model_type",5961)
+ SpawnSet(candle9,"model_type",5961)
+ SpawnSet(candle10,"model_type",5961)
+ SpawnSet(candle11,"model_type",5961)
+ SpawnSet(candle12,"model_type",5961)
+ SpawnSet(candle13,"model_type",5961)
+ SpawnSet(candle14,"model_type",5961)
+ SpawnSet(candle15,"model_type",5961)
+
+ local Ringlight = SpawnByLocationID(zone,133780625)
+
+end
+
+function Ring(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ SpawnSet(SummonRing,"visual_state",1574)
+ SpawnSet(SummonRing, "show_command_icon", 1)
+ SpawnSet(SummonRing, "display_hand_icon", 1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SummonersTest/dpoinvisiblecube.lua b/server/SpawnScripts/SummonersTest/dpoinvisiblecube.lua
new file mode 100755
index 000000000..24ed93e06
--- /dev/null
+++ b/server/SpawnScripts/SummonersTest/dpoinvisiblecube.lua
@@ -0,0 +1,159 @@
+--[[
+ Script Name : SpawnScripts/SummonersTest/dpoinvisiblecube.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.12 04:11:00
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Begin the test' then
+ AddTimer(NPC,2500,"Spawn1",1,Spawn)
+ CastSpell(Spawn,280024)
+end
+end
+
+function Spawn1(NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780602) == nil then
+ local TestofEarth = SpawnByLocationID(zone,133780602)
+ end
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Trial1Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Stage2",1,Spawn)
+ AddTimer(NPC,4500,"Trial2",1,Spawn)
+end
+
+function Trial2Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Stage3",1,Spawn)
+ AddTimer(NPC,4500,"Trial3",1,Spawn)
+end
+
+function Trial3Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Stage4",1,Spawn)
+ AddTimer(NPC,4500,"Trial4",1,Spawn)
+end
+
+function Stage2 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ ApplySpellVisual(SummonRing, 124)
+ local Pet = GetSpawn(Spawn,8350001)
+ if Pet == nil or not IsAlive(Pet) then
+ CastSpell(Spawn,280024)
+ end
+end
+
+function Trial2 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780603) == nil then
+ local TestofWater = SpawnByLocationID(zone,133780603)
+ end
+end
+
+
+function Stage3 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ ApplySpellVisual(SummonRing, 571)
+ local Pet = GetSpawn(Spawn,8350001)
+ if Pet == nil or not IsAlive(Pet) then
+ CastSpell(Spawn,280024)
+ end
+end
+
+function Trial3 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local Pet = GetSpawn(Spawn,8350001)
+ if GetSpawnByLocationID(zone,133780601) == nil then
+ local TestofAir = SpawnByLocationID(zone,133780601)
+ end
+end
+
+
+function Stage4 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ ApplySpellVisual(SummonRing, 165)
+ local Pet = GetSpawn(Spawn,8350001)
+ if Pet == nil or not IsAlive(Pet) then
+ CastSpell(Spawn,280024)
+ end
+end
+
+function Trial4 (NPC,Spawn)
+ local zone = GetZone(Spawn)
+ if GetSpawnByLocationID(zone,133780604) == nil then
+ local TestofWater = SpawnByLocationID(zone,133780604)
+ end
+end
+
+
+
+function Trial4Done(NPC,Spawn)
+ AddTimer(NPC,2500,"Ring",1,Spawn)
+ AddTimer(NPC,4500,"Light2",1,Spawn)
+ AddTimer(NPC,6500,"Light1",1,Spawn)
+ if Pet ~= nil or IsAlive(Pet) then
+ Despawn(Pet)
+ end
+end
+
+function Light1(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local candle1 = GetSpawnByLocationID(zone,133780562)
+ local candle2 = GetSpawnByLocationID(zone,133780563)
+ local candle3 = GetSpawnByLocationID(zone,133780564)
+ local candle4 = GetSpawnByLocationID(zone,133780565)
+ local candle5 = GetSpawnByLocationID(zone,133780566)
+ local candle6 = GetSpawnByLocationID(zone,133780568)
+ local candle7 = GetSpawnByLocationID(zone,133780569)
+ SpawnSet(candle1,"model_type",5963)
+ SpawnSet(candle2,"model_type",5963)
+ SpawnSet(candle3,"model_type",5963)
+ SpawnSet(candle4,"model_type",5963)
+ SpawnSet(candle5,"model_type",5963)
+ SpawnSet(candle6,"model_type",5963)
+ SpawnSet(candle7,"model_type",5963)
+end
+
+function Light2(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local candle8 = GetSpawnByLocationID(zone,133780570)
+ local candle9 = GetSpawnByLocationID(zone,133780571)
+ local candle10 = GetSpawnByLocationID(zone,133780572)
+ local candle11 = GetSpawnByLocationID(zone,133780573)
+ local candle12 = GetSpawnByLocationID(zone,133780574)
+ local candle13 = GetSpawnByLocationID(zone,133780575)
+ local candle14 = GetSpawnByLocationID(zone,133780567)
+ SpawnSet(candle8,"model_type",5963)
+ SpawnSet(candle9,"model_type",5963)
+ SpawnSet(candle10,"model_type",5963)
+ SpawnSet(candle11,"model_type",5963)
+ SpawnSet(candle12,"model_type",5963)
+ SpawnSet(candle13,"model_type",5963)
+ SpawnSet(candle14,"model_type",5963)
+end
+
+function Ring(NPC, Spawn)
+ local zone = GetZone(Spawn)
+ local SummonRing = GetSpawnByLocationID(zone,133780576)
+ SpawnSet(SummonRing,"visual_state",34342)
+ SpawnSet(SummonRing,"model_type",0)
+ local Ringlight = GetSpawnByLocationID(zone,133780625)
+ Despawn(Ringlight)
+
+end
+
diff --git a/server/SpawnScripts/SunkenCity/TilzakNLim.lua b/server/SpawnScripts/SunkenCity/TilzakNLim.lua
index beeadf994..48fdce5a0 100755
--- a/server/SpawnScripts/SunkenCity/TilzakNLim.lua
+++ b/server/SpawnScripts/SunkenCity/TilzakNLim.lua
@@ -5,6 +5,7 @@
Script Date : 12/31/2018
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
+require "SpawnScripts/Generic/DialogModule"
local QUEST_1 = 386
local InformationGatheringFromaFishmonger = 5677
@@ -19,35 +20,40 @@ end
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- if not HasCompletedQuest(Spawn, QUEST_1) then
- if HasQuest(Spawn, QUEST_1) then
- if GetQuestStep(Spawn, QUEST_1) == 2 then
- AddConversationOption(conversation, "I have the shark fins you wanted.", "dlg_4_1")
- end
- else
- AddConversationOption(conversation, "I didn't know the Teir'Dal took mundane jobs like fishing.", "dlg_3_1")
- end
- PlayFlavor(NPC, "voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/std_de_male_tilzak_nlim.mp3", "", "", 3205731528, 2249540299, Spawn)
- AddConversationOption(conversation, "Then I'll leave you to your fish.")
- StartConversation(conversation, NPC, Spawn, "These are my fish so you can't have them! Go... go find your own!")
- else
- Say(NPC, "These are my fish so you can't have them! Go... go find your own!", Spawn)
- end
-
- if GetQuestStep(Spawn, InformationGatheringFromaFishmonger) == 1 then
- SetStepComplete(Spawn, InformationGatheringFromaFishmonger, 1)
- end
+if GetFactionAmount(Spawn,12) <1 then
+ PlayFlavor(NPC, "", "", "threaten", 0, 0, Spawn)
+else
+ Dialog1(NPC, Spawn)
+end
end
-function dlg_3_1(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- AddConversationOption(conversation, "Maybe I can offer you a hand. What do you need?", "OfferQuest1")
- AddConversationOption(conversation, "Your wants mean nothing to me.")
- StartConversation(conversation, NPC, Spawn, "Only when we have no choice. I used to be a chef to some of the most important people in Neriak back in the day. Now I am nothing more than a common fisherman. This is my lot in life, I guess. If I returned to Neriak with new recipes I might once again regain that prominent position. If only I had the ingredients to make a new recipe I've come up with.")
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("These are my fish so you can't have them! Go... go find your own!")
+ Dialog.AddVoiceover("voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/std_de_male_tilzak_nlim.mp3", 3205731528, 2249540299)
+ Dialog.AddOption("I have the shark fins you wanted.", "Dialog1")
+ if CanReceiveQuest(Spawn,QUEST_1) then
+ Dialog.AddOption("I didn't know the Teir'Dal took mundane jobs like fishing.", "Dialog2")
+ end
+ if GetQuestStep(Spawn, QUEST_1) == 2 then
+ Dialog.AddOption("I have the shark fins you wanted.", "Dialog4")
+ end
+ Dialog.AddOption("Then I'll leave you to your fish.")
+ Dialog.Start()
+end
+
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Only when we have no choice. I used to be a chef to some of the most important people in Neriak back in the day. Now I am nothing more than a common fisherman. This is my lot in life, I guess. If I returned to Neriak with new recipes I might once again regain that prominent position. If only I had the ingredients to make a new recipe I've come up with.")
+ Dialog.AddOption("Maybe I can offer you a hand. What do you need?", "OfferQuest1")
+ Dialog.AddOption("Your wants mean nothing to me.")
+ Dialog.Start()
end
function OfferQuest1(NPC, Spawn)
@@ -55,13 +61,12 @@ function OfferQuest1(NPC, Spawn)
OfferQuest(NPC, Spawn, QUEST_1)
end
-function dlg_4_1(NPC, Spawn)
+function Dialog4(NPC, Spawn)
SetStepComplete(Spawn, QUEST_1, 2)
-
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
-
- PlayFlavor(NPC, "voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/quests/tilzaknlim/tilzak_x1_finish.mp3", "", "", 1351808605, 3311226361, Spawn)
- AddConversationOption(conversation, "No thanks. I'll leave that to you. Bye.")
- StartConversation(conversation, NPC, Spawn, "Oh, thank you so much, my good friend. These will be wonderful once they're prepared correctly. I need to be careful though, because these shark fins can be highly poisonous if they aren't prepared correctly. Don't worry, though -- I've prepared dishes very similar to this before. If you'd like you can be the first person to try it when I'm done!")
-end
\ No newline at end of file
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, thank you so much, my good friend. These will be wonderful once they're prepared correctly. I need to be careful though, because these shark fins can be highly poisonous if they aren't prepared correctly. Don't worry, though -- I've prepared dishes very similar to this before. If you'd like you can be the first person to try it when I'm done!")
+ Dialog.AddVoiceover("voiceover/english/optional5/standard_dark_elf_male/fprt_hood05/quests/tilzaknlim/tilzak_x1_finish.mp3", 1351808605, 3311226361)
+ Dialog.AddOption("No thanks. I'll leave that to you. Bye.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/SunkenCity/aforgottenresident.lua b/server/SpawnScripts/SunkenCity/aforgottenresident.lua
index f30d0f2a0..5ce24688e 100755
--- a/server/SpawnScripts/SunkenCity/aforgottenresident.lua
+++ b/server/SpawnScripts/SunkenCity/aforgottenresident.lua
@@ -21,6 +21,7 @@ elseif choice == 2 then
SpawnSet(NPC, "model_type", 2852)
SpawnSet(NPC, "gender", 1)
end
+end
function spawn(NPC)
spoke = false
diff --git a/server/SpawnScripts/SunkenCity/widgetbox4.lua b/server/SpawnScripts/SunkenCity/widgetbox4.lua
index bf5242fc9..e722455df 100755
--- a/server/SpawnScripts/SunkenCity/widgetbox4.lua
+++ b/server/SpawnScripts/SunkenCity/widgetbox4.lua
@@ -10,8 +10,8 @@ local LukursAntiques = 374
function casted_on(NPC, Spawn, SpellName)
if SpellName == 'Search' then
- if GetQuestStep(Spawn, LukursAntiques) == 2 then --ShadowedMask
- SetStepComplete(Spawn, LukursAntiques, 2)
+ if GetTempVariable(Spawn,"Mask1")=="1" then --ShadowedMask
+ SetStepComplete(Spawn, LukursAntiques, 1)
end
end
end
@@ -20,10 +20,6 @@ function spawn(NPC)
SetRequiredQuest(NPC, LukursAntiques, 2)
end
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
function respawn(NPC)
spawn(NPC)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/BouncerUgbar.lua b/server/SpawnScripts/SunkenCity_Classic/BouncerUgbar.lua
new file mode 100755
index 000000000..12c5ca848
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/BouncerUgbar.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/BouncerUgbar.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.30 08:10:14
+ Script Purpose :
+ :
+--]]
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+ SetSeeHide(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/CaptainDeaythan.lua b/server/SpawnScripts/SunkenCity_Classic/CaptainDeaythan.lua
new file mode 100755
index 000000000..de5a14380
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/CaptainDeaythan.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/CaptainDeaythan.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 03:10:26
+ Script Purpose :
+ :
+--]]
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(12 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(24 + dmgMod))
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/GerbardtheSnitch.lua b/server/SpawnScripts/SunkenCity_Classic/GerbardtheSnitch.lua
new file mode 100755
index 000000000..fcc25d1e8
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/GerbardtheSnitch.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/GerbardtheSnitch.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.01 07:11:37
+ Script Purpose :
+ :
+--]]
+local QUEST_1 = 387
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ ProvidesQuest(NPC,QUEST_1)
+ SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC,Spawn)
+ if not HasCompletedQuest(Spawn,QUEST_1) then
+ PlayFlavor(NPC,"","","grumble",0,0,Spawn)
+end
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh no! I did it again! The boys back on the boat are gonna kill me!")
+ Dialog.AddVoiceover("voiceover/english/gerbard_the_snitch/fprt_adv01_sunken/gerbard_the_snitch000.mp3", 2512842567, 445857936)
+ PlayFlavor(NPC,"","","sight",0,0,Spawn)
+ if CanReceiveQuest(Spawn, QUEST_1) then
+ Dialog.AddOption("What happened?", "Dialog2")
+ elseif GetQuestStep(Spawn, QUEST_1)==2 then
+ Dialog.AddOption("I've returned with the pirate coins.", "Dialog3")
+ end
+ Dialog.AddOption("That sounds like something I'd rather stay out of.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I blew all my coins on a game of dice. I just need a few more pirate coins to throw in, and I'll earn back my money in no time! Will you help me out? My crew will toss me overboard if they find out how much money I lost!")
+ Dialog.AddVoiceover("voiceover/english/gerbard_the_snitch/fprt_adv01_sunken/gerbard_the_snitch001.mp3", 2460257667, 2197101465)
+ Dialog.AddOption("I'll do it, whats involved?", "Offer")
+ Dialog.AddOption("Not today, sorry.")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,QUEST_1)
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're a lifesaver! Now it's time to win it all back.")
+ Dialog.AddVoiceover("voiceover/english/gerbard_the_snitch/fprt_adv01_sunken/gerbard_the_snitch003.mp3", 1766615640, 492599183)
+ PlayFlavor(NPC,"","","smile",0,0,Spawn)
+ Dialog.AddOption("Good luck.")
+ Dialog.Start()
+ SetStepComplete(Spawn,QUEST_1,2)
+end
+
+
diff --git a/server/SpawnScripts/SunkenCity_Classic/GuardDugar.lua b/server/SpawnScripts/SunkenCity_Classic/GuardDugar.lua
new file mode 100755
index 000000000..d41765460
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/GuardDugar.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/GuardDugar.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.24 03:10:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/GuardTeleth.lua b/server/SpawnScripts/SunkenCity_Classic/GuardTeleth.lua
new file mode 100755
index 000000000..b252f334f
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/GuardTeleth.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/GuardTeleth.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.24 03:10:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/Lukur.lua b/server/SpawnScripts/SunkenCity_Classic/Lukur.lua
new file mode 100755
index 000000000..cc2b25f88
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/Lukur.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/Lukur.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.01 08:11:07
+ Script Purpose :
+ :
+--]]
+local LukursAntiques = 374
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ ProvidesQuest(NPC,LukursAntiques)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("This place is a wellspring for me. Look around! Crates and barrels full of abandoned goods just waiting to be uncovered. There are far too many for me to search alone.")
+ Dialog.AddVoiceover("voiceover/english/optional1/lukur/fprt_adv01_sunken/lukur000.mp3", 1584752461, 2942049134)
+ if CanReceiveQuest(Spawn, LukursAntiques) then
+ Dialog.AddOption("Who are you?", "Dialog2")
+ elseif GetQuestStep(Spawn, LukursAntiques)==4 then
+ Dialog.AddOption("I've returned with the masks.", "Dialog3")
+ end
+ Dialog.AddOption("I'm not one to be sifting through other people's things.")
+ Dialog.Start()
+end
+
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My name's Lukur, and I deal antiques. I was told of the riches waiting to be discovered here, but I didn't believe it until I arrived. Will you help me search for some valuables?")
+ Dialog.AddVoiceover("voiceover/english/optional1/lukur/fprt_adv01_sunken/lukur001.mp3", 3143062912, 3824299878)
+ Dialog.AddOption("I think I can help you.", "Offer")
+ Dialog.AddOption("Not right now, sorry.")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,LukursAntiques)
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Look at the amazing quality of these ancient masks! You did well. Here is your reward.")
+ Dialog.AddVoiceover("voiceover/english/optional1/lukur/fprt_adv01_sunken/lukur003.mp3", 1196217033, 2873878783)
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ Dialog.AddOption("Thank you.")
+ Dialog.Start()
+ SetStepComplete(Spawn,LukursAntiques,4)
+end
+
+
+
+
diff --git a/server/SpawnScripts/SunkenCity_Classic/MasteratArmsVenqruist.lua b/server/SpawnScripts/SunkenCity_Classic/MasteratArmsVenqruist.lua
new file mode 100755
index 000000000..10afcfb82
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/MasteratArmsVenqruist.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/MasteratArmsVenqruist.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 03:10:45
+ Script Purpose :
+ :
+--]]
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", 4 + dmgMod)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", 10 + dmgMod)
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/MuckRaker.lua b/server/SpawnScripts/SunkenCity_Classic/MuckRaker.lua
new file mode 100755
index 000000000..70aece73f
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/MuckRaker.lua
@@ -0,0 +1,226 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/MuckRaker.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.30 09:10:47
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+ PlayFlavor(NPC,"","","result_spawn",0,0)
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC,1)
+end
+
+function aggro(NPC,Spawn)
+ ApplySpellVisual(NPC,61)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ if GetSpawnLocationID(NPC) ==133787343 then
+ MovementLoopAddLocation(NPC, -41.3, -0.54, -28.79, 2, 0)
+ MovementLoopAddLocation(NPC, -41.3, -0.54, -28.79, 2, 0)
+ MovementLoopAddLocation(NPC, -42.46, -0.53, -37.13, 2, 0)
+ MovementLoopAddLocation(NPC, -37.79, -0.52, -44.83, 2, 0)
+ MovementLoopAddLocation(NPC, -37.24, -0.59, -60.07, 2, 0)
+ MovementLoopAddLocation(NPC, -45.28, -0.56, -68.13, 2, 0)
+ MovementLoopAddLocation(NPC, -55.05, -0.62, -62.63, 2, 0)
+ MovementLoopAddLocation(NPC, -67.9, -0.57, -66.92, 2, 0)
+ MovementLoopAddLocation(NPC, -73.81, -0.58, -64.76, 2, 0)
+ MovementLoopAddLocation(NPC, -76.29, -0.58, -56.04, 2, 0)
+ MovementLoopAddLocation(NPC, -72.96, -0.58, -38.19, 2, 0)
+ MovementLoopAddLocation(NPC, -76.97, -0.57, -25.34, 2, 0)
+ MovementLoopAddLocation(NPC, -76.05, -0.78, -12.52, 2, 0)
+ MovementLoopAddLocation(NPC, -78.24, -0.11, -3.35, 2, 0)
+ MovementLoopAddLocation(NPC, -83.78, -0.22, 10.92, 2, 0)
+ MovementLoopAddLocation(NPC, -81.58, -0.17, 16.21, 2, 0)
+ MovementLoopAddLocation(NPC, -72.85, -0.59, 19.14, 2, 0)
+ MovementLoopAddLocation(NPC, -59.82, -0.57, 20.1, 2, 0)
+ MovementLoopAddLocation(NPC, -44.39, -0.53, 27.56, 2, 0)
+ MovementLoopAddLocation(NPC, -36.89, -0.5, 26.62, 2, 0)
+ MovementLoopAddLocation(NPC, -36.8, -0.55, 18.53, 2, 0)
+ MovementLoopAddLocation(NPC, -35.3, -0.58, 6.15, 2, 0)
+ MovementLoopAddLocation(NPC, -27.81, -0.58, 4.92, 2, 0)
+ MovementLoopAddLocation(NPC, -8.8, -0.35, 4.91, 2, 0)
+ MovementLoopAddLocation(NPC, -3.89, -0.09, -1.06, 2, 0)
+ MovementLoopAddLocation(NPC, 2.27, -0.51, -14.01, 2, 0)
+ MovementLoopAddLocation(NPC, 1.65, -0.49, -25.03, 2, 0)
+ MovementLoopAddLocation(NPC, -3.62, -0.46, -32.54, 2, 0)
+ MovementLoopAddLocation(NPC, -10.97, -0.5, -38.83, 2, 0)
+ MovementLoopAddLocation(NPC, -9.46, -0.51, -51.78, 2, 0)
+ MovementLoopAddLocation(NPC, -13.23, -0.67, -64.17, 2, 0)
+ MovementLoopAddLocation(NPC, -8.06, -0.65, -68.73, 2, 0)
+ MovementLoopAddLocation(NPC, 11.05, 0.26, -72.84, 2, 0)
+ MovementLoopAddLocation(NPC, 11.33, 0.27, -70.23, 2, 0)
+ MovementLoopAddLocation(NPC, 7.8, 0.24, -65.63, 2, 0)
+ MovementLoopAddLocation(NPC, 10.62, 0.07, -53.58, 2, 0)
+ MovementLoopAddLocation(NPC, 7.47, -0.23, -43.76, 2, 0)
+ MovementLoopAddLocation(NPC, 8.64, -0.6, -22.18, 2, 0)
+ MovementLoopAddLocation(NPC, 13.15, -0.09, -5.79, 2, 0)
+ MovementLoopAddLocation(NPC, 16.83, 0.4, 2.7, 2, 0)
+ MovementLoopAddLocation(NPC, 15.17, 1.11, 11.3, 2, 0)
+ MovementLoopAddLocation(NPC, 5.18, 0.25, 24.18, 2, 0)
+ MovementLoopAddLocation(NPC, 2.24, 1.02, 34.61, 2, 0)
+ MovementLoopAddLocation(NPC, 6.88, 1.35, 46.05, 2, 0)
+ MovementLoopAddLocation(NPC, 8.94, 1.09, 55.6, 2, 0)
+ MovementLoopAddLocation(NPC, 13.36, 0.85, 58.85, 2, 0)
+ MovementLoopAddLocation(NPC, 24, 0.98, 59.47, 2, 0)
+ MovementLoopAddLocation(NPC, 36.31, 1.02, 59.44, 2, 0)
+ MovementLoopAddLocation(NPC, 43.26, 0.62, 63.92, 2, 0)
+ MovementLoopAddLocation(NPC, 52.52, 0.2, 63.29, 2, 0)
+ MovementLoopAddLocation(NPC, 61.24, 0.82, 56.45, 2, 0)
+ MovementLoopAddLocation(NPC, 62.23, 1.02, 36.33, 2, 0)
+ MovementLoopAddLocation(NPC, 59.6, 1.07, 30.75, 2, 0)
+ MovementLoopAddLocation(NPC, 45.37, 1.11, 22.03, 2, 0)
+ MovementLoopAddLocation(NPC, 42.46, 1.02, 12.74, 2, 0)
+ MovementLoopAddLocation(NPC, 48.74, 0.91, 4.62, 2, 0)
+ MovementLoopAddLocation(NPC, 57.69, 1.22, -6.58, 2, 0)
+ MovementLoopAddLocation(NPC, 46.72, 1.53, -14.74, 2, 0)
+ MovementLoopAddLocation(NPC, 56.27, 1.02, -20.89, 2, 0)
+ MovementLoopAddLocation(NPC, 60.42, 1.58, -35.28, 2, 0)
+ MovementLoopAddLocation(NPC, 64.95, 1.74, -42.12, 2, 0)
+ MovementLoopAddLocation(NPC, 75.13, 1.41, -43.51, 2, 0)
+ MovementLoopAddLocation(NPC, 79.11, 1.66, -38.59, 2, 0)
+ MovementLoopAddLocation(NPC, 81.61, 1.36, -26.72, 2, 0)
+ MovementLoopAddLocation(NPC, 82.5, 1.85, -15.14, 2, 0)
+ MovementLoopAddLocation(NPC, 84.52, 1.88, -11.16, 2, 0)
+ MovementLoopAddLocation(NPC, 91.51, 2.16, -8.05, 2, 0)
+ MovementLoopAddLocation(NPC, 100.52, 2.22, -1.16, 2, 0)
+ MovementLoopAddLocation(NPC, 103.51, 1.88, 9.31, 2, 0)
+ MovementLoopAddLocation(NPC, 97.68, 1.44, 17.91, 2, 0)
+ MovementLoopAddLocation(NPC, 86.49, 1.83, 24.42, 2, 0)
+ MovementLoopAddLocation(NPC, 78.24, 1.88, 25.93, 2, 0)
+ MovementLoopAddLocation(NPC, 66.81, 1.02, 26.61, 2, 0)
+ MovementLoopAddLocation(NPC, 61.25, 1.09, 24.56, 2, 0)
+ MovementLoopAddLocation(NPC, 59.45, 1.18, 11.93, 2, 0)
+ MovementLoopAddLocation(NPC, 57.06, 1.16, 1.2, 2, 0)
+ MovementLoopAddLocation(NPC, 55.83, 1.36, -11.35, 2, 0)
+ MovementLoopAddLocation(NPC, 46.26, 1.7, -11.12, 2, 0)
+ MovementLoopAddLocation(NPC, 44.76, 1.89, -4.66, 2, 0)
+ MovementLoopAddLocation(NPC, 49.52, 0.83, 6.31, 2, 0)
+ MovementLoopAddLocation(NPC, 46.56, 0.8, 15.24, 2, 0)
+ MovementLoopAddLocation(NPC, 40.45, 1.02, 17.39, 2, 0)
+ MovementLoopAddLocation(NPC, 23.43, 0.28, 16.98, 2, 0)
+ MovementLoopAddLocation(NPC, 11.17, 0.47, 20.35, 2, 0)
+ MovementLoopAddLocation(NPC, 2.01, 0.39, 19.06, 2, 0)
+ MovementLoopAddLocation(NPC, -5.62, -0.24, 10.28, 2, 0)
+ MovementLoopAddLocation(NPC, -6.72, -0.27, 6.28, 2, 0)
+ MovementLoopAddLocation(NPC, -10.42, -0.41, 5.21, 2, 0)
+ MovementLoopAddLocation(NPC, -25.57, -0.58, 4.42, 2, 0)
+ MovementLoopAddLocation(NPC, -29.19, -0.58, 2.43, 2, 0)
+ MovementLoopAddLocation(NPC, -29.72, -0.63, -11.12, 2, 0)
+ MovementLoopAddLocation(NPC, -32.45, -0.59, -21.73, 2, 0)
+ MovementLoopAddLocation(NPC, -39.4, -0.57, -26.36, 2, 0)
+ MovementLoopAddLocation(NPC, -39.4, -0.57, -26.36, 2, 3, "Action")
+
+ elseif GetSpawnLocationID(NPC) ==133787394 then
+ MovementLoopAddLocation(NPC, -39.4, -0.57, -26.36, 2, 0)
+ MovementLoopAddLocation(NPC, -39.4, -0.57, -26.36, 2, 0)
+ MovementLoopAddLocation(NPC, -32.45, -0.59, -21.73, 2, 0)
+ MovementLoopAddLocation(NPC, -29.72, -0.63, -11.12, 2, 0)
+ MovementLoopAddLocation(NPC, -29.19, -0.58, 2.43, 2, 0)
+ MovementLoopAddLocation(NPC, -25.57, -0.58, 4.42, 2, 0)
+ MovementLoopAddLocation(NPC, -10.42, -0.41, 5.21, 2, 0)
+ MovementLoopAddLocation(NPC, -6.72, -0.27, 6.28, 2, 0)
+ MovementLoopAddLocation(NPC, -5.62, -0.24, 10.28, 2, 0)
+ MovementLoopAddLocation(NPC, 2.01, 0.39, 19.06, 2, 0)
+ MovementLoopAddLocation(NPC, 11.17, 0.47, 20.35, 2, 0)
+ MovementLoopAddLocation(NPC, 23.43, 0.28, 16.98, 2, 0)
+ MovementLoopAddLocation(NPC, 40.45, 1.02, 17.39, 2, 0)
+ MovementLoopAddLocation(NPC, 46.56, 0.8, 15.24, 2, 0)
+ MovementLoopAddLocation(NPC, 49.52, 0.83, 6.31, 2, 0)
+ MovementLoopAddLocation(NPC, 44.76, 1.89, -4.66, 2, 0)
+ MovementLoopAddLocation(NPC, 46.26, 1.7, -11.12, 2, 0)
+ MovementLoopAddLocation(NPC, 55.83, 1.36, -11.35, 2, 0)
+ MovementLoopAddLocation(NPC, 57.06, 1.16, 1.2, 2, 0)
+ MovementLoopAddLocation(NPC, 59.45, 1.18, 11.93, 2, 0)
+ MovementLoopAddLocation(NPC, 61.25, 1.09, 24.56, 2, 0)
+ MovementLoopAddLocation(NPC, 66.81, 1.02, 26.61, 2, 0)
+ MovementLoopAddLocation(NPC, 78.24, 1.88, 25.93, 2, 0)
+ MovementLoopAddLocation(NPC, 86.49, 1.83, 24.42, 2, 0)
+ MovementLoopAddLocation(NPC, 97.68, 1.44, 17.91, 2, 0)
+ MovementLoopAddLocation(NPC, 103.51, 1.88, 9.31, 2, 0)
+ MovementLoopAddLocation(NPC, 100.52, 2.22, -1.16, 2, 0)
+ MovementLoopAddLocation(NPC, 91.51, 2.16, -8.05, 2, 0)
+ MovementLoopAddLocation(NPC, 84.52, 1.88, -11.16, 2, 0)
+ MovementLoopAddLocation(NPC, 82.5, 1.85, -15.14, 2, 0)
+ MovementLoopAddLocation(NPC, 81.61, 1.36, -26.72, 2, 0)
+ MovementLoopAddLocation(NPC, 79.11, 1.66, -38.59, 2, 0)
+ MovementLoopAddLocation(NPC, 75.13, 1.41, -43.51, 2, 0)
+ MovementLoopAddLocation(NPC, 64.95, 1.74, -42.12, 2, 0)
+ MovementLoopAddLocation(NPC, 60.42, 1.58, -35.28, 2, 0)
+ MovementLoopAddLocation(NPC, 56.27, 1.02, -20.89, 2, 0)
+ MovementLoopAddLocation(NPC, 46.72, 1.53, -14.74, 2, 0)
+ MovementLoopAddLocation(NPC, 57.69, 1.22, -6.58, 2, 0)
+ MovementLoopAddLocation(NPC, 48.74, 0.91, 4.62, 2, 0)
+ MovementLoopAddLocation(NPC, 42.46, 1.02, 12.74, 2, 0)
+ MovementLoopAddLocation(NPC, 45.37, 1.11, 22.03, 2, 0)
+ MovementLoopAddLocation(NPC, 59.6, 1.07, 30.75, 2, 0)
+ MovementLoopAddLocation(NPC, 62.23, 1.02, 36.33, 2, 0)
+ MovementLoopAddLocation(NPC, 61.24, 0.82, 56.45, 2, 0)
+ MovementLoopAddLocation(NPC, 52.52, 0.2, 63.29, 2, 0)
+ MovementLoopAddLocation(NPC, 43.26, 0.62, 63.92, 2, 0)
+ MovementLoopAddLocation(NPC, 36.31, 1.02, 59.44, 2, 0)
+ MovementLoopAddLocation(NPC, 24, 0.98, 59.47, 2, 0)
+ MovementLoopAddLocation(NPC, 13.36, 0.85, 58.85, 2, 0)
+ MovementLoopAddLocation(NPC, 8.94, 1.09, 55.6, 2, 0)
+ MovementLoopAddLocation(NPC, 6.88, 1.35, 46.05, 2, 0)
+ MovementLoopAddLocation(NPC, 2.24, 1.02, 34.61, 2, 0)
+ MovementLoopAddLocation(NPC, 5.18, 0.25, 24.18, 2, 0)
+ MovementLoopAddLocation(NPC, 15.17, 1.11, 11.3, 2, 0)
+ MovementLoopAddLocation(NPC, 16.83, 0.4, 2.7, 2, 0)
+ MovementLoopAddLocation(NPC, 13.15, -0.09, -5.79, 2, 0)
+ MovementLoopAddLocation(NPC, 8.64, -0.6, -22.18, 2, 0)
+ MovementLoopAddLocation(NPC, 7.47, -0.23, -43.76, 2, 0)
+ MovementLoopAddLocation(NPC, 10.62, 0.07, -53.58, 2, 0)
+ MovementLoopAddLocation(NPC, 7.8, 0.24, -65.63, 2, 0)
+ MovementLoopAddLocation(NPC, 11.33, 0.27, -70.23, 2, 0)
+ MovementLoopAddLocation(NPC, 11.05, 0.26, -72.84, 2, 0)
+ MovementLoopAddLocation(NPC, -8.06, -0.65, -68.73, 2, 0)
+ MovementLoopAddLocation(NPC, -13.23, -0.67, -64.17, 2, 0)
+ MovementLoopAddLocation(NPC, -9.46, -0.51, -51.78, 2, 0)
+ MovementLoopAddLocation(NPC, -10.97, -0.5, -38.83, 2, 0)
+ MovementLoopAddLocation(NPC, -3.62, -0.46, -32.54, 2, 0)
+ MovementLoopAddLocation(NPC, 1.65, -0.49, -25.03, 2, 0)
+ MovementLoopAddLocation(NPC, 2.27, -0.51, -14.01, 2, 0)
+ MovementLoopAddLocation(NPC, -3.89, -0.09, -1.06, 2, 0)
+ MovementLoopAddLocation(NPC, -8.8, -0.35, 4.91, 2, 0)
+ MovementLoopAddLocation(NPC, -27.81, -0.58, 4.92, 2, 0)
+ MovementLoopAddLocation(NPC, -35.3, -0.58, 6.15, 2, 0)
+ MovementLoopAddLocation(NPC, -36.8, -0.55, 18.53, 2, 0)
+ MovementLoopAddLocation(NPC, -36.89, -0.5, 26.62, 2, 0)
+ MovementLoopAddLocation(NPC, -44.39, -0.53, 27.56, 2, 0)
+ MovementLoopAddLocation(NPC, -59.82, -0.57, 20.1, 2, 0)
+ MovementLoopAddLocation(NPC, -72.85, -0.59, 19.14, 2, 0)
+ MovementLoopAddLocation(NPC, -81.58, -0.17, 16.21, 2, 0)
+ MovementLoopAddLocation(NPC, -83.78, -0.22, 10.92, 2, 0)
+ MovementLoopAddLocation(NPC, -78.24, -0.11, -3.35, 2, 0)
+ MovementLoopAddLocation(NPC, -76.05, -0.78, -12.52, 2, 0)
+ MovementLoopAddLocation(NPC, -76.97, -0.57, -25.34, 2, 0)
+ MovementLoopAddLocation(NPC, -72.96, -0.58, -38.19, 2, 0)
+ MovementLoopAddLocation(NPC, -76.29, -0.58, -56.04, 2, 0)
+ MovementLoopAddLocation(NPC, -73.81, -0.58, -64.76, 2, 0)
+ MovementLoopAddLocation(NPC, -67.9, -0.57, -66.92, 2, 0)
+ MovementLoopAddLocation(NPC, -55.05, -0.62, -62.63, 2, 0)
+ MovementLoopAddLocation(NPC, -45.28, -0.56, -68.13, 2, 0)
+ MovementLoopAddLocation(NPC, -37.24, -0.59, -60.07, 2, 0)
+ MovementLoopAddLocation(NPC, -37.79, -0.52, -44.83, 2, 0)
+ MovementLoopAddLocation(NPC, -42.46, -0.53, -37.13, 2, 0)
+ MovementLoopAddLocation(NPC, -41.3, -0.54, -28.79, 2, 0)
+ MovementLoopAddLocation(NPC, -41.3, -0.54, -28.79, 2, 3, "Action")
+end
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
+
diff --git a/server/SpawnScripts/SunkenCity_Classic/SaydithYarr.lua b/server/SpawnScripts/SunkenCity_Classic/SaydithYarr.lua
new file mode 100755
index 000000000..3d67a85fc
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/SaydithYarr.lua
@@ -0,0 +1,74 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/SaydithYarr.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.01 07:11:51
+ Script Purpose :
+ :
+--]]
+
+local QUEST_1_FROM_THORSON = 376
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Searched this place I have. Seen the dark and the light. Know the stories and the tragedies.")
+ Dialog.AddVoiceover("voiceover/english/saydith_yarr/fprt_adv01_sunken/saydith_yarr000.mp3", 1548752498, 2730978939)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ Dialog.AddOption("Where am I?", "Dialog2")
+ Dialog.AddOption("What do you mean by 'dark and light'?","Dialog4")
+ Dialog.AddOption("What tragedies?", "Dialog3")
+ Dialog.AddOption("I know all I need to about this place.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You're on the docks of the Sunken City.")
+ Dialog.AddVoiceover("voiceover/english/saydith_yarr/fprt_adv01_sunken/saydith_yarr001.mp3", 2390191821, 3206926055)
+ PlayFlavor(NPC,"","","nod",0,0,Spawn)
+ Dialog.AddOption("What do you mean by 'dark and light'?","Dialog4")
+ Dialog.AddOption("What tragedies?", "Dialog3")
+ Dialog.AddOption("I know all I need to about this place.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("This place was once a district of Freeport, much like the others. Those that lived here were swallowed up by the seas and dragged to the bottom of the ocean, doomed to an eternal existence under the crushing depths.")
+ Dialog.AddVoiceover("voiceover/english/saydith_yarr/fprt_adv01_sunken/saydith_yarr002.mp3", 2458221458, 1657163845)
+ Dialog.AddOption("Where am I?", "Dialog2")
+ Dialog.AddOption("What do you mean by 'dark and light'?","Dialog4")
+ Dialog.AddOption("I know all I need to about this place.")
+ Dialog.Start()
+end
+
+
+
+function Dialog4(NPC, Spawn)
+ if HasQuest(Spawn, QUEST_1_FROM_THORSON) and GetQuestStep(Spawn, QUEST_1_FROM_THORSON) == 1 then
+ SetStepComplete(Spawn, QUEST_1_FROM_THORSON, 1)
+ end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Things change here when it gets cold and dark. Zombies crawl from the shadows to drag the living back with them to their watery grave. Search for the cross if you are looking for death.")
+ Dialog.AddVoiceover("voiceover/english/saydith_yarr/fprt_adv01_sunken/saydith_yarr003.mp3", 3245604695, 2963905971)
+ Dialog.AddOption("Where am I?", "Dialog2")
+ Dialog.AddOption("What tragedies?", "Dialog3")
+ Dialog.AddOption("I know all I need to about this place.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/Srat.lua b/server/SpawnScripts/SunkenCity_Classic/Srat.lua
new file mode 100755
index 000000000..387af10b3
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/Srat.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/Srat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.30 07:10:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/Srit.lua b/server/SpawnScripts/SunkenCity_Classic/Srit.lua
new file mode 100755
index 000000000..a6d3157aa
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/Srit.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/Srit.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.30 07:10:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/TheRevenantofPrexus.lua b/server/SpawnScripts/SunkenCity_Classic/TheRevenantofPrexus.lua
new file mode 100755
index 000000000..f246a3257
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/TheRevenantofPrexus.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/TheRevenantofPrexus.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.22 04:10:16
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseZombie1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(16 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(28 + dmgMod))
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ Attack(NPC,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/UlrichtheKingpin.lua b/server/SpawnScripts/SunkenCity_Classic/UlrichtheKingpin.lua
new file mode 100755
index 000000000..0b7ccd7bf
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/UlrichtheKingpin.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/UlrichtheKingpin.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.30 08:10:17
+ Script Purpose :
+ :
+--]]
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(22 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+ SetSeeHide(NPC,1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/aDeadlySmallScorpion.lua b/server/SpawnScripts/SunkenCity_Classic/aDeadlySmallScorpion.lua
new file mode 100755
index 000000000..80640c2d8
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aDeadlySmallScorpion.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aDeadlySmallScorpion.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.16 03:10:15
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraider.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraider.lua
new file mode 100755
index 000000000..b75c9f6e9
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraider.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraider.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.24 11:10:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElf.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElf.lua
new file mode 100755
index 000000000..5f316dc9f
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElf.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElf.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.28 08:10:33
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAlert(NPC)
+ darkelf(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElfRoam.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElfRoam.lua
new file mode 100755
index 000000000..706242593
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElfRoam.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderDarkElfRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.28 08:10:29
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ darkelf(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderHUMAN.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderHUMAN.lua
new file mode 100755
index 000000000..e37c078d6
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderHUMAN.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderHUMAN.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.02 08:11:57
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ human(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderOgre.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderOgre.lua
new file mode 100755
index 000000000..d0e2f2bf2
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderOgre.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderOgre.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.28 08:10:54
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+ ogre(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderOgreRoam.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderOgreRoam.lua
new file mode 100755
index 000000000..7f7a7c4d0
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderOgreRoam.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderOgreRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.28 08:10:25
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ ogre(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderTroll.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderTroll.lua
new file mode 100755
index 000000000..f0d7d4f7d
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderTroll.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderTroll.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.28 08:10:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleAggressive(NPC)
+ troll(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderTrollRoam.lua b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderTrollRoam.lua
new file mode 100755
index 000000000..5de2a2af3
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aFreeportraiderTrollRoam.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aFreeportraiderTrollRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.28 08:10:17
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ troll(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/abrinesifter.lua b/server/SpawnScripts/SunkenCity_Classic/abrinesifter.lua
new file mode 100755
index 000000000..d6229fd50
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/abrinesifter.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/abrinesifter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.12 04:10:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/abrinesifterShortPath.lua b/server/SpawnScripts/SunkenCity_Classic/abrinesifterShortPath.lua
new file mode 100755
index 000000000..bc2fe5c59
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/abrinesifterShortPath.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/abrinesifterShortPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.12 04:10:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/abulkybrinesifter.lua b/server/SpawnScripts/SunkenCity_Classic/abulkybrinesifter.lua
new file mode 100755
index 000000000..d402b1f2c
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/abulkybrinesifter.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/abulkybrinesifter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.12 04:10:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+ local SpawnID = GetSpawnLocationID(NPC)
+ if SpawnID < 133787438 or SpawnID > 133787441 then
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ else --TABLE SPAWNING CRABS
+-- SetInfoStructString(NPC, "action_state", "combat_idle")
+ AddTimer(NPC,MakeRandomInt(1000,4000),"CombatScream") --TABLE SPAWNING CRABS ATTACK CRY
+ AddTimer(NPC,5000,"CombatCheck")
+ end
+end
+
+function CombatScream(NPC)
+ PlaySound(NPC,"sounds/critters/crab/crab_scream01.wav",GetX(NPC),GetY(NPC),GetZ(NPC))
+end
+
+function CombatCheck(NPC) --TABLE SPAWNING CRABS CHECKS FOR COMBAT
+ if IsInCombat(NPC)== true then
+ AddTimer(NPC,30000,"CombatCheck")
+ else
+ Despawn(NPC)
+ end
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/acursedcorpsman.lua b/server/SpawnScripts/SunkenCity_Classic/acursedcorpsman.lua
new file mode 100755
index 000000000..f03c59f5c
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/acursedcorpsman.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/acursedcorpsman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 07:10:48
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/acursedcorpsmanHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/acursedcorpsmanHeroic.lua
new file mode 100755
index 000000000..47b8202ec
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/acursedcorpsmanHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/acursedcorpsmanHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 07:10:15
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/acursedcutthroat.lua b/server/SpawnScripts/SunkenCity_Classic/acursedcutthroat.lua
new file mode 100755
index 000000000..59841beca
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/acursedcutthroat.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/acursedcutthroat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 07:10:32
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/acursedcutthroatHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/acursedcutthroatHeroic.lua
new file mode 100755
index 000000000..9f5895cbe
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/acursedcutthroatHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/acursedcutthroatHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 07:10:41
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/acursedscout.lua b/server/SpawnScripts/SunkenCity_Classic/acursedscout.lua
new file mode 100755
index 000000000..da7fe1db6
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/acursedscout.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/acursedscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 07:10:51
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/acursedscoutHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/acursedscoutHeroic.lua
new file mode 100755
index 000000000..c07e0fe22
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/acursedscoutHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/acursedscoutHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.17 07:10:14
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/adecayingcorpse.lua b/server/SpawnScripts/SunkenCity_Classic/adecayingcorpse.lua
new file mode 100755
index 000000000..d8b42aad0
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/adecayingcorpse.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/adecayingcorpse.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.04 07:11:03
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "dead")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/adecayingdeadling.lua b/server/SpawnScripts/SunkenCity_Classic/adecayingdeadling.lua
new file mode 100755
index 000000000..7e8de390f
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/adecayingdeadling.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/adecayingdeadling.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.21 03:10:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+
+ if GetClass(NPC) ==31 then
+ SetSeeHide(NPC,1)
+ end
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/adecayingdeadlingHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/adecayingdeadlingHeroic.lua
new file mode 100755
index 000000000..6a0a71b32
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/adecayingdeadlingHeroic.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/adecayingdeadlingHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.24 12:10:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+
+ if GetClass(NPC) ==31 then
+ SetSeeHide(NPC,1)
+ end
+end
+
+function hailed(NPC, Spawn)
+ Attack(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/adecayingdeadlingRevenant.lua b/server/SpawnScripts/SunkenCity_Classic/adecayingdeadlingRevenant.lua
new file mode 100755
index 000000000..c7a8894e5
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/adecayingdeadlingRevenant.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/adecayingdeadlingRevenant.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.24 02:10:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSeeHide(NPC,1)
+ SetSeeInvis(NPC, 1)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/aduskshark.lua b/server/SpawnScripts/SunkenCity_Classic/aduskshark.lua
new file mode 100755
index 000000000..870ea7216
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/aduskshark.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/aduskshark.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.12 04:10:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraider.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraider.lua
new file mode 100755
index 000000000..109c92901
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraider.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraider.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.24 11:10:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1, 2)
+ if race == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+ darkelf(NPC)
+ SetSeeHide(NPC,1)
+ IdleSneaky(NPC)
+ elseif race == 2 then
+ human(NPC)
+ IdleAlert(NPC)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElf.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElf.lua
new file mode 100755
index 000000000..326a79bbf
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElf.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElf.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.27 08:10:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1, 2)
+ if race == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+ darkelf(NPC)
+ SetSeeHide(NPC,1)
+ elseif race == 2 then
+ human(NPC)
+ end
+end
+
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElfHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElfHeroic.lua
new file mode 100755
index 000000000..7dc414811
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElfHeroic.lua
@@ -0,0 +1,72 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderDarkElfHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.27 08:10:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ SpawnSet(NPC, "heroic", 1)
+ SetSeeHide(NPC,1)
+ local Level = GetLevel(NPC)
+ local level1 = 7
+ local level2 = 8
+ local difficulty1 = 6
+ local hp1 = 200
+ local power1 = 90
+ local difficulty2 = 6
+ local hp2 = 240
+ local power2 = 100
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","stare",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","chuckle",0,0)
+ elseif choice == 6 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",116)
+ else
+ SpawnSet(NPC,"model_type",115)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderHUMAN.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderHUMAN.lua
new file mode 100755
index 000000000..f214cb656
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderHUMAN.lua
@@ -0,0 +1,113 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderHUMAN.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.02 08:11:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+dofile"SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 7
+ local level2 = 8
+ local difficulty1 = 6
+ local hp1 = 200
+ local power1 = 90
+ local difficulty2 = 6
+ local hp2 = 240
+ local power2 = 100
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+ChooseMovement(NPC)
+end
+
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2,math.random(7,12))
+ MovementLoopAddLocation(NPC, X , Y, Z + 5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z -5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z + 3, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z - 5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z -2, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X , Y, Z - 3, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X -5, Y, Z - 2, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z -4, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z - 5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z -5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z + 3, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",132)
+ else
+ SpawnSet(NPC,"model_type",134)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderHeroic.lua
new file mode 100755
index 000000000..c1cebbc16
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderHeroic.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.27 08:10:03
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseOgre1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ SpawnSet(NPC, "heroic", 1)
+
+ local Level = GetLevel(NPC)
+ local level1 = 7
+ local level2 = 8
+ local difficulty1 = 6
+ local hp1 = 200
+ local power1 = 90
+ local difficulty2 = 6
+ local hp2 = 240
+ local power2 = 100
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","feint",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","glare",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","frustrated",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderLarge.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderLarge.lua
new file mode 100644
index 000000000..dac546141
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderLarge.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderLarge.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 04:01:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1, 2)
+ if race == 1 then
+ ogre(NPC)
+ elseif race == 2 then
+ troll(NPC)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderRoamer.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderRoamer.lua
new file mode 100644
index 000000000..941fe457e
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderRoamer.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderRoamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 04:01:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 6, -6, 2, 8, 15)
+ race(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1, 4)
+ if race == 1 then
+ dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+ darkelf(NPC)
+ SetSeeHide(NPC,1)
+ elseif race == 2 then
+ human(NPC)
+ elseif race == 3 then
+ ogre(NPC)
+ elseif race == 4 then
+ troll(NPC)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderTroll.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderTroll.lua
new file mode 100755
index 000000000..776185748
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderTroll.lua
@@ -0,0 +1,114 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderTroll.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.27 08:10:48
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua")
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 7
+ local level2 = 8
+ local difficulty1 = 6
+ local hp1 = 200
+ local power1 = 90
+ local difficulty2 = 6
+ local hp2 = 240
+ local power2 = 100
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+ChooseMovement(NPC)
+end
+
+
+function ChooseMovement(NPC)
+ local route = math.random(1,4)
+ if route == 1 then
+ RouteOne(NPC, Spawn)
+ elseif route == 2 then
+ RouteTwo(NPC, Spawn)
+ elseif route == 3 then
+ RouteThree(NPC, Spawn)
+ elseif route == 4 then
+ RouteFour(NPC, Spawn)
+ end
+end
+
+function RouteOne(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z, 2,math.random(7,12))
+ MovementLoopAddLocation(NPC, X , Y, Z + 5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z -5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z + 3, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+function RouteTwo(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z - 5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z -2, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X , Y, Z - 3, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+function RouteThree(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X -5, Y, Z - 2, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z -4, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 5, Y, Z - 5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+function RouteFour(NPC, Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 4, Y, Z -5, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z + 4, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X - 5, Y, Z + 3, 2, math.random(7,12))
+ MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(7,12), "ChooseMovement")
+end
+
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",105)
+ else
+ SpawnSet(NPC,"model_type",106)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/amenacingraiderTrollHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderTrollHeroic.lua
new file mode 100755
index 000000000..ab4be086c
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/amenacingraiderTrollHeroic.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/amenacingraiderTrollHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.27 08:10:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseTroll1.lua")
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ SpawnSet(NPC, "heroic", 1)
+
+ local Level = GetLevel(NPC)
+ local level1 = 7
+ local level2 = 8
+ local difficulty1 = 6
+ local hp1 = 200
+ local power1 = 90
+ local difficulty2 = 6
+ local hp2 = 240
+ local power2 = 100
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","itch",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","feint",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","peer",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",105)
+ else
+ SpawnSet(NPC,"model_type",106)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/arustmonster.lua b/server/SpawnScripts/SunkenCity_Classic/arustmonster.lua
new file mode 100755
index 000000000..7ce0fe074
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/arustmonster.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/arustmonster.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.12 04:10:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/arustmonsterHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/arustmonsterHeroic.lua
new file mode 100755
index 000000000..aa1a6b802
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/arustmonsterHeroic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/arustmonsterHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.16 02:10:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/asmallrustmonster.lua b/server/SpawnScripts/SunkenCity_Classic/asmallrustmonster.lua
new file mode 100755
index 000000000..b39e08e77
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/asmallrustmonster.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/asmallrustmonster.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.13 04:10:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/asmallscorpion.lua b/server/SpawnScripts/SunkenCity_Classic/asmallscorpion.lua
new file mode 100755
index 000000000..dfbdb55cc
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/asmallscorpion.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/asmallscorpion.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.13 04:10:58
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/asmallscorpionHeroic.lua b/server/SpawnScripts/SunkenCity_Classic/asmallscorpionHeroic.lua
new file mode 100755
index 000000000..c556ad00f
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/asmallscorpionHeroic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/asmallscorpionHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.16 03:10:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox1.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox1.lua
new file mode 100755
index 000000000..a26da63dc
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox1.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox1.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 12:11:36
+ Script Purpose :
+ :
+--]]
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,3)==0 then --DawnMask
+ SetStepComplete(Spawn, LukursAntiques, 3)
+ SendMessage(Spawn,"You find a Dawn Mask at the bottom of the crate.")
+ else
+ SendMessage(Spawn,"You only find destroyed Prexus figurines in this crate.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 == nil and Muck1 ~= nil then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox2.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox2.lua
new file mode 100755
index 000000000..f0a780bfe
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox2.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox2.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 12:11:09
+ Script Purpose :
+ :
+--]]
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,2)==0 then --ShadowedMask
+ SetStepComplete(Spawn, LukursAntiques, 2)
+ SendMessage(Spawn,"You find a Shadowed Mask wrapped in old rags.")
+ else
+ SendMessage(Spawn,"You only find worthless rusted spears in this crate.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 ~= nil and Muck1 == nil then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox3.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox3.lua
new file mode 100755
index 000000000..46552e790
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox3.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox3.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.02 06:11:27
+ Script Purpose :
+ :
+--]]
+
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,2)==0 then --ShadowedMask
+ SetStepComplete(Spawn, LukursAntiques, 2)
+ SendMessage(Spawn,"You find a Shadowed Mask wrapped in old rags.")
+ else
+ SendMessage(Spawn,"You find nothing in the crate but soggy old fabrics.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck1 ~= nil and Muck2 == nil then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox4.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox4.lua
new file mode 100755
index 000000000..b97b69c64
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox4.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox4.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 12:11:13
+ Script Purpose :
+ :
+--]]
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,2)==0 then --ShadowedMask
+ SetStepComplete(Spawn, LukursAntiques, 2)
+ SendMessage(Spawn,"You find a Shadowed Mask wrapped in old rags.")
+ else
+ SendMessage(Spawn,"This crate's contents are rusted beyond recognition.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox5.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox5.lua
new file mode 100755
index 000000000..e3147af48
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox5.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox5.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 12:11:41
+ Script Purpose :
+ :
+--]]
+
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,2)==0 then --ShadowedMask
+ SetStepComplete(Spawn, LukursAntiques, 2)
+ SendMessage(Spawn,"You find a Shadowed Mask wrapped in old rags.")
+ else
+ SendMessage(Spawn,"You only see rusted out chain armor in this crate.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 == nil and Muck1 == nil then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox6.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox6.lua
new file mode 100755
index 000000000..27ed4e63b
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox6.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox6.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 01:11:39
+ Script Purpose :
+ :
+--]]
+
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,1)==0 then --DawnMask
+ SetStepComplete(Spawn, LukursAntiques, 1)
+ SendMessage(Spawn,"You find a Blood Mask inside the barrel.")
+ else
+ SendMessage(Spawn,"You only find the remains of very old decayed fish in this barrel.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 == nil and Muck1 == nil or
+ Muck2 ~= nil and Muck1 == nil
+then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox7.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox7.lua
new file mode 100755
index 000000000..24c9d4740
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox7.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox7.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 01:11:48
+ Script Purpose :
+ :
+--]]
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,1)==0 then --DawnMask
+ SetStepComplete(Spawn, LukursAntiques, 1)
+ SendMessage(Spawn,"You find a Blood Mask inside the barrel.")
+ else
+ SendMessage(Spawn,"You only see the remains of rotten produce in this barrel.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 == nil and Muck1 ~= nil
+then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox8.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox8.lua
new file mode 100755
index 000000000..d6b6cdd4c
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox8.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox8.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 01:11:03
+ Script Purpose :
+ :
+--]]
+
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,3)==0 then --DawnMask
+ SetStepComplete(Spawn, LukursAntiques, 3)
+ SendMessage(Spawn,"You find a Dawn Mask at the bottom of the crate.")
+ else
+ SendMessage(Spawn,"You only find unusable rusted chains in this crate.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 == nil and Muck1 == nil then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetbox9.lua b/server/SpawnScripts/SunkenCity_Classic/widgetbox9.lua
new file mode 100755
index 000000000..519a27732
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetbox9.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetbox9.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 12:11:00
+ Script Purpose :
+ :
+--]]
+
+local LukursAntiques = 374
+function spawn(NPC)
+ SetRequiredQuest(NPC, LukursAntiques, 1)
+ SetRequiredQuest(NPC, LukursAntiques, 2)
+ SetRequiredQuest(NPC, LukursAntiques, 3)
+ SetTempVariable(NPC,"Mask","false")
+ AddTimer(NPC,2000,"MaskCheck")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Search' then
+ if GetTempVariable(NPC,"Mask")=="true" and GetQuestStepProgress(Spawn,LukursAntiques,3)==0 then --DawnMask
+ SetStepComplete(Spawn, LukursAntiques, 3)
+ SendMessage(Spawn,"You find a Dawn Mask at the bottom of the barrel.")
+ else
+ SendMessage(Spawn,"You only find half-disolved daggers in this barrel.")
+ end
+ end
+end
+
+
+
+function MaskCheck(NPC)
+ local zone = GetZone(NPC)
+ local Muck1 = GetSpawnByLocationID(zone, 133787343)
+ local Muck2 = GetSpawnByLocationID(zone, 133787394)
+if Muck2 ~= nil and Muck1 == nil then
+ SetTempVariable(NPC,"Mask","true")
+ else
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/SunkenCity_Classic/widgetquestcrab0.lua b/server/SpawnScripts/SunkenCity_Classic/widgetquestcrab0.lua
new file mode 100755
index 000000000..67e5232c1
--- /dev/null
+++ b/server/SpawnScripts/SunkenCity_Classic/widgetquestcrab0.lua
@@ -0,0 +1,87 @@
+--[[
+ Script Name : SpawnScripts/SunkenCity_Classic/widgetquestcrab0.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.03 05:11:04
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetTempVariable(NPC,"Crabs","false")
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Examine' then
+ if GetTempVariable(NPC,"Crabs")== "false" then
+
+ SetTempVariable(NPC,"Crabs","true")
+ SetAccessToEntityCommand(Spawn,NPC,"Examine", 0)
+ SpawnSet(NPC, "show_command_icon", 0)
+ SpawnSet(NPC, "display_hand_icon", 0)
+ PlaySound(NPC,"sounds/critters/crab/crab_scream01.wav",GetX(NPC),GetY(NPC),GetZ(NPC))
+ SendMessage(Spawn,"The table errupts as brine sifters scuttle out from underneath. They appear quite agitated!")
+ AddTimer(NPC,1550,"CrabSpawn",1,Spawn)
+ AddTimer(NPC,3050,"CrabAttack",1,Spawn)
+ end
+ AddTimer(NPC,MakeRandomInt(840000,960000),"TableReset")
+end
+end
+
+function CrabSpawn(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Crab1 = GetSpawnByLocationID(zone, 133787438)
+ local Crab2 = GetSpawnByLocationID(zone, 133787439)
+ local Crab3 = GetSpawnByLocationID(zone, 133787440)
+ local Crab4 = GetSpawnByLocationID(zone, 133787441)
+ if Crab1 == nil then
+ SpawnByLocationID(zone,133787438)
+ ApplySpellVisual(Crab2,61)
+ end
+ if Crab2 == nil then
+ SpawnByLocationID(zone,133787439)
+ ApplySpellVisual(Crab2,61)
+ end
+ if Crab3 == nil then
+ SpawnByLocationID(zone,133787440)
+ ApplySpellVisual(Crab3,61)
+ end
+ if Crab4 == nil then
+ SpawnByLocationID(zone,133787441)
+ ApplySpellVisual(Crab4,61)
+ end
+end
+
+function TableReset(NPC)
+ SetTempVariable(NPC,"Crabs","false")
+ SetAccessToEntityCommand(Spawn,NPC,"Examine", 1)
+ SpawnSet(NPC, "show_command_icon", 1)
+ SpawnSet(NPC, "display_hand_icon", 1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function CrabAttack(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Crab1 = GetSpawnByLocationID(zone, 133787438)
+ local Crab2 = GetSpawnByLocationID(zone, 133787439)
+ local Crab3 = GetSpawnByLocationID(zone, 133787440)
+ local Crab4 = GetSpawnByLocationID(zone, 133787441)
+ if Crab1 ~= nil and not IsInCombat(NPC) then
+ ApplySpellVisual(Crab1,61)
+ Attack(Crab1,Spawn)
+ end
+ if Crab2 ~= nil and not IsInCombat(NPC) then
+ ApplySpellVisual(Crab2,61)
+ Attack(Crab2,Spawn)
+ end
+ if Crab3 ~= nil and not IsInCombat(NPC) then
+ ApplySpellVisual(Crab3,61)
+ Attack(Crab3,Spawn)
+ end
+ if Crab4 ~= nil and not IsInCombat(NPC) then
+ ApplySpellVisual(Crab4,61)
+ Attack(Crab4,Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/ArmsdealerShinska.lua b/server/SpawnScripts/TempleSt/ArmsdealerShinska.lua
index eff7fda16..8e2055215 100755
--- a/server/SpawnScripts/TempleSt/ArmsdealerShinska.lua
+++ b/server/SpawnScripts/TempleSt/ArmsdealerShinska.lua
@@ -1,14 +1,18 @@
--[[
Script Name : SpawnScripts/TempleStreet/ArmsdealerShinska.lua
Script Purpose : Armsdealer Shinska
- Script Author : torsten
- Script Date : 2022.07.10
- Script Notes : Auto-Generated Conversation from PacketParser Data
+ Script Author : Dorbin
+ Script Date : 10/31/2023
+ Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
local TrollsAndArms = 5618
+local VlepoPlan = 5917
+local Netherot = 5918
function spawn(NPC)
+ ProvidesQuest(NPC,Netherot)
end
function respawn(NPC)
@@ -16,20 +20,137 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if HasQuest(Spawn, TrollsAndArms) and not HasCompletedQuest(Spawn, TrollsAndArms) then
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if GetQuestStep(Spawn, TrollsAndArms) == 1 then
SetStepComplete(Spawn, TrollsAndArms, 1)
end
- RandomGreeting(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+end
+end
+
+--Ahh ... that is very good. The Shinska will remembers that you offered her helps. You go into the sewers and finds the Netherot Chanters. Kills the beasts. That will teach them not to say bad things about the Shinska. Comes back and I give you reward, yes?
+--Yes. I sells many weapons to many people, Shinska do. I consider selling new, enchanted weapons, but since those horrid Netherots told peoples not to do business with the Shinska, no one will makes my enchanted weapons. You help the Shinska with this, no?
+--The Shinska doesn'ts buy weapons from trolls. She buys weapons from a humans who makes Shinska a very good deal. I will sells to the troll, but I will not buys from him.
+--You no haves money. You can't buy Shinska weapons. Go away!
+--You no kills the beasts? Shinska's not happy! Go kills them now!
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ if GetQuestStep(Spawn,Netherot) ==1 then
+ PlayFlavor(NPC, "","","swear",0,0, Spawn)
+ Dialog.AddDialog("You no kills the beasts? Shinska's not happy! Go kills them now!")
+ Dialog.AddOption("I'll crawl into the sewer when I'm ready!")
+ else
+ Dialog.AddDialog("You need weapons on your journey. You come see Shinska... you come see her now!")
+ Dialog.AddVoiceover("voiceover/english/optional5/arms_dealer_shinska/ks_rarmdlrshinska_callout_64.mp3", 1984880476, 917173949)
+ Dialog.AddOption("I am not interested.")
+ end
+ if GetQuestStep(Spawn, VlepoPlan)==1 then
+ Dialog.AddOption("[Lie] Haven't you heard? You are in danger!","Dialog2")
+ end
+ if CanReceiveQuest(Spawn,Netherot) then
+ Dialog.AddOption("Your buisness appears to be doing well.","Dialog5")
+ elseif GetQuestStep(Spawn,Netherot)==2 then
+ Dialog.AddOption("I have killed some netherot chanters.","Dialog6")
+ end
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Shinska has not heard... Why is Shinska in danger? It better nots be those trolls again! Tell me!")
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ if GetQuestStep(Spawn, VlepoPlan)==1 then
+ Dialog.AddOption("The gnomes are plotting to take over your business!","Dialog2Gnome")
+ Dialog.AddOption("The Overlord is sending the Militia to confiscate your goods!","Dialog3")
+ Dialog.AddOption("The trolls! Yes! They are angry about the weapons sold them!","Dialog2Troll")
+ end
+ Dialog.AddOption("Wait, I was mistakened.")
+ Dialog.Start()
+end
+
+
+function Dialog2Gnome(NPC, Spawn)
+ Dialog.AddDialog("Gnomes? Hehehe! Shinksa not worried about little gnomes and their business. Shinksa just gut them!")
+ PlayFlavor(NPC, "","","chuckle",0,0, Spawn)
+ Dialog.AddOption("I mean...the Militia is coming to confiscate your goods!","Dialog3")
+ Dialog.AddOption("Actually..the trolls! Yes! They are coming to eat you!","Dialog2Troll")
+ Dialog.Start()
+end
+
+function Dialog2Troll(NPC, Spawn)
+ Dialog.AddDialog("Trolls want to eat me?... No no. Shinksa do business with them! They wouldn't want that...")
+ PlayFlavor(NPC, "","","confused",0,0, Spawn)
+ Dialog.AddOption("I mean... the Militia is coming to confiscate your goods!","Dialog3")
+ Dialog.AddOption("Actually... gnomes are plotting to take over your business!","Dialog2Gnome")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What?! Where?!... They weres already dead when Shinksa found their weapons! Shinksa must knows!")
+ PlayFlavor(NPC, "","","boggle",0,0, Spawn)
+ Dialog.AddOption("They'll be here soon! Look out behind you!","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ local zone = GetZone(NPC)
+ local Spezi = GetSpawnByLocationID(zone, 420509)
+ FaceTarget(NPC, Spezi)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ PlayFlavor(NPC, "","","doubletake",0,0, Spawn)
+ Dialog.AddOption("[ Quietly steal a weapon off the display ]","DialogSwipe")
+ Dialog.Start()
+end
+
+
+
+function DialogSwipe(NPC, Spawn)
+ local Heading = GetHeading(NPC)
+ if Heading < 100 then
+ PlayFlavor(Spawn, "", "", "converse_male06", 0, 0,NPC)
+ SendMessage(Spawn,"You've obtained a weapon at random from Shinska's display.")
+ SetStepComplete(Spawn,VlepoPlan,1)
+ else
+ SendPopUpMessage(Spawn,"Shinksa has spotted you!",250,0,0)
+ SendMessage(Spawn,"Shinksa has spotted you!","red")
+ PlayFlavor(NPC,"","Hey! Shinksa sees you. Pay up or keep your hands off mys weapons!","shakefist",0,0,Spawn)
+ FaceTarget(NPC, Spawn)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+end
+
+function Dialog5(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes. I sells many weapons to many people, Shinska do. I consider selling new, enchanted weapons, but since those horrid Netherots told peoples not to do business with the Shinska, no one will makes my enchanted weapons. You help the Shinska with this, no?")
+ PlayFlavor(NPC, "","","agree",0,0, Spawn)
+ Dialog.AddOption("Perhaps I could look into this for you.","Offer")
+ Dialog.AddOption("I don't think so!")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,Netherot)
+end
+
+function Dialog6(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The Shinska says to you, \"thanks you,\" she does. Here is your coin. Now maybes other chanters comes to the Shinska and makes her weapons very magically!")
+ PlayFlavor(NPC, "","","scheme",0,0, Spawn)
+ Dialog.AddOption("Even so, I hope this helps improve your wares.")
+ Dialog.Start()
+ SetStepComplete(Spawn,Netherot,2)
end
function RandomGreeting(NPC, Spawn)
- local choice = MakeRandomInt(1,3)
-
- if choice == 1 then
- PlayFlavor(NPC, "", "Hmmmmmm ... You looks like you could use somethings to protect yourself.", "", 0, 0, Spawn, 0)
- elseif choice == 2 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1031.mp3", 0, 0, Spawn)
- elseif choice == 3 then
- PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1031.mp3", 0, 0, Spawn)
- end
+ PlayFlavor(NPC, "voiceover/english/optional5/arms_dealer_shinska/ks_rarmdlrshinska_callout_64.mp3", "You need weapons on your journey. You come see Shinska... you come see her now!", "", 1984880476, 917173949, Spawn, 0)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/BarmaidKrasa.lua b/server/SpawnScripts/TempleSt/BarmaidKrasa.lua
new file mode 100755
index 000000000..7f52d1282
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/BarmaidKrasa.lua
@@ -0,0 +1,90 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/BarmaidKrasa.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+local KrasaWontTakeIt = 5924
+
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC,9, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
+ ProvidesQuest(Quest,KrasaWontTakeIt)
+end
+
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+end
+end
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif not HasLanguage(Spawn,26) then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+else
+Dialog1(NPC,Spawn)
+end
+end
+
+function Dialog1(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Whys, hello! Be a dears and buys a drinks from Pshavost's bar. He runs a cleans and honest establishment, he does.")
+ Dialog.AddVoiceover("voiceover/english/barmaid_krasa/fprt_hood03/mer_barmaidkrasa_hail.mp3", 176271092, 4124908502)
+ PlayFlavor(NPC, "","","hello",0,0, Spawn)
+ Dialog.AddLanguage(26)
+ if CanReceiveQuest(Spawn, KrasaWontTakeIt) then
+ Dialog.AddOption("I could use a drink. Bring me one.", "Dialog2")
+ elseif GetQuestStep(Spawn, KrasaWontTakeIt)==2 then
+ Dialog.AddOption("I've told Spezi. You're right... she really does hate Krysa.", "Dialog3")
+ end
+ Dialog.AddOption("I'll consider it.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("That's it! I'm sick of being \"just the waitress.\" I ams beautiful, and I can dance better than my stupid sister Krysa! Everyone always says: \"Krysa is so pretty\" and \"Krysa is so friendly.\" No mores, you hear me? No mores! She goes down tonight! You send a message for me, yes?")
+ Dialog.AddVoiceover("voiceover/english/barmaid_krasa/fprt_hood03/quests/krasa/krasa_x1_initial.mp3", 1408869566, 4041581758)
+ PlayFlavor(NPC, "","","frustrated",0,0, Spawn)
+ Dialog.AddLanguage(26)
+ Dialog.AddOption("Take it easy! What do you need?", "Offer")
+ Dialog.AddOption("I only wanted a drink! Yeesh!")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,KrasaWontTakeIt)
+end
+
+function Dialog3(NPC,Spawn)
+ SetStepComplete(Spawn,KrasaWontTakeIt,2)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes. She does hate Krysa. I think I acted too fast. Maybe I don't keeps the doors open after all. We see, eh? For now, here's some coins for sending the message.")
+ Dialog.AddVoiceover("voiceover/english/barmaid_krasa/fprt_hood03/quests/krasa/krasa_x1_finish.mp3", 3356111057, 1390552450)
+ PlayFlavor(NPC, "","","wince",0,0, Spawn)
+ Dialog.AddLanguage(26)
+ Dialog.AddOption("Thanks, I hope you know what you're doing.")
+ Dialog.Start()
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/BartenderPshavost.lua b/server/SpawnScripts/TempleSt/BartenderPshavost.lua
new file mode 100755
index 000000000..c7665c408
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/BartenderPshavost.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/BartenderPshavost.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:07
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/bartender/ratonga_bartender_service_evil_1_hail_gm_c5b9c7c2.mp3", "You want to talk? If you want us to be friends all you need to do is buy a drink!", "stare", 2131223265, 1605898906, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/bartender/ratonga_bartender_service_evil_1_hail_gm_4b169ed.mp3", "I do believe a gratuity is in order.", "glare", 2139635297, 3079613468, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/bartender/ratonga_bartender_service_evil_1_hail_gm_e79db99d.mp3", "So tell me, what's your poison?", "hello", 3450524843, 2155939703, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/BowyerKavina.lua b/server/SpawnScripts/TempleSt/BowyerKavina.lua
new file mode 100755
index 000000000..6dfa01029
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/BowyerKavina.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/BowyerKavina.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:59
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 20 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 1269771027, 1321830597, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/ratonga/ratonga_eco_evil_1_notcitizen_gf_8d2a0876.mp3", "I heard you screaming from all the way over there.", "point", 3634348917, 2158238801, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 3896024368, 3267129756, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 4265688146, 2432877514, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3557499503, 3758276116, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Brashk.lua b/server/SpawnScripts/TempleSt/Brashk.lua
new file mode 100755
index 000000000..16e08c0f9
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Brashk.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Brashk.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.27 12:10:31
+ Script Purpose :
+ :
+--]]
+local Makeup = 5925
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "gathering_search")
+end
+
+
+--
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A new treasure lurks in every corner! Ooooh! ")
+ Dialog.AddVoiceover("voiceover/english/optional1/brashk/fprt_hood03/qst_brashk.mp3", 67711495, 2241704250)
+ if GetQuestStep(Spawn, Makeup)==1 then
+ Dialog.AddOption("Brashk said he didn't have any more makeup.","Dialog2")
+ end
+ Dialog.AddOption("I bet it does... if you treasure filth, that is. Goodbye.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ SetStepComplete(Spawn,Makeup,1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh no! OH NO!!!! I no have any more of the makeup! I ... uh ... I got the makeup from a tall Erudite. She is a magical, magical witch she is, and she makes me some makeup so I can give it to Krysa. I have no more ... Boooo hooooo hooooo!!!! Now Krysa will never give me a kiss... WAAAAHHHHHH!!!! ")
+ Dialog.AddVoiceover("voiceover/english/optional1/brashk/fprt_hood03/quests/krysa/brashk_krysa_x1_initial.mp3", 0, 0) --NO KEYS
+ PlayFlavor(NPC, "","","cry",0,0, Spawn)
+ Dialog.AddOption("Get ahold of yourself! She must know about this.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/CaptainMolacus.lua b/server/SpawnScripts/TempleSt/CaptainMolacus.lua
new file mode 100755
index 000000000..4f7af7096
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/CaptainMolacus.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/CaptainMolacus.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 05:10:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+-- waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog3(NPC, Spawn)
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("If what you say is true, then the agent's death will be of little consequence. However, if you have compromised our position, you will pay to the fullest extent of the law for your obstruction.")
+ Dialog.AddVoiceover("voiceover/english/captain_molacus/fprt_hood03/quests/captainmolacus/lordbounty_captainmolacus_x1_initial2.mp3", 3062246809, 1928262327)
+ Dialog.AddOption("I think Lord Darkblade's head will be sufficient proof.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Move along - you wouldn't want us to arrest you for loitering, would you?")
+ Dialog.AddVoiceover("voiceover/english/captain_molacus/fprt_hood03/guard_captain_molacus_hail.mp3", 1657379715, 3189650077)
+ Dialog.AddOption("Nope, I sure wouldn't.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Move along - you wouldn't want us to arrest you for loitering, would you?")
+ Dialog.AddVoiceover("voiceover/english/captain_molacus/fprt_hood03/guard_captain_molacus_hail.mp3", 1657379715, 3189650077)
+-- Dialog.AddOption("I have fulfilled the mission to kill Lord Darkblade.", "Dialog4")
+ Dialog.AddOption("Nope, I sure wouldn't.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What are you talking about, citizen? If you value your freedom, you had better explain yourself quickly.")
+ Dialog.AddVoiceover("voiceover/english/captain_molacus/fprt_hood03/quests/captainmolacus/lordbounty_captainmolacus_x1_initial.mp3", 1461056082, 1946417825)
+ Dialog.AddOption("Your agent is dead. I found his mission and completed it.", "Dialog1")
+ Dialog.Start()
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 5.9, 2.92, 34.72, 2, 25)
+ MovementLoopAddLocation(NPC, 21.31, 2.92, 25.84, 2, 0)
+ MovementLoopAddLocation(NPC, 33.73, 2.92, 15.95, 2, 25)
+ MovementLoopAddLocation(NPC, 26.42, 2.92, 22.19, 2, 0)
+ MovementLoopAddLocation(NPC, 24.6, 2.92, 32.3, 2, 25)
+ MovementLoopAddLocation(NPC, 23.49, 2.92, 30.63, 2, 0)
+ MovementLoopAddLocation(NPC, 4.26, 2.92, 32.36, 2, 0)
+ MovementLoopAddLocation(NPC, 4.26, 2.92, 32.36, 2, 25)
+ MovementLoopAddLocation(NPC, 9.11, 2.92, 31.25, 2, 0)
+ MovementLoopAddLocation(NPC, 22.83, 2.92, 34.03, 2, 25)
+ MovementLoopAddLocation(NPC, 21.81, 2.92, 31.83, 2, 0)
+ MovementLoopAddLocation(NPC, 32.32, 2.92, 10.48, 2, 1)
+ MovementLoopAddLocation(NPC, 32.32, 2.92, 10.48, 2, 25)
+ MovementLoopAddLocation(NPC, 20.39, 2.92, 25.93, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/ChefSchmenko.lua b/server/SpawnScripts/TempleSt/ChefSchmenko.lua
new file mode 100755
index 000000000..c1b7f6ba7
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ChefSchmenko.lua
@@ -0,0 +1,193 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ChefSchmenko.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.24 01:10:41
+ Script Purpose :
+ :
+--]]
+
+
+function spawn(NPC)
+if GetSpawnLocationID(NPC)==420550 then
+ SpawnSet(NPC,"model_type","65")
+ SpawnSet(NPC,"show_name","1")
+ SpawnSet(NPC,"targetable","1")
+ waypoints(NPC)
+ SetTempVariable(NPC,"CalloutTimer", "0")
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+ SetInfoStructString(NPC, "action_state", "draw_weapon_trigger")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC,Spawn)
+ if not IsInCombat(NPC) and GetTempVariable(NPC,"CalloutTimer")~="1" then
+ RandomGreeting(NPC, Spawn)
+ SetTempVariable(NPC,"CalloutTimer", "1")
+ AddTimer(NPC,42000,"CalloutReset",1,Spawn)
+ end
+end
+
+
+function CalloutReset(NPC,Spawn)
+SetTempVariable(NPC,"CalloutTimer", "0")
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ AddTimer(NPC,500,"RandomHail", 1,Spawn)
+end
+
+function aggro(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+end
+
+function kill (NPC,Spawn)
+ PlayFlavor(NPC,"","","1h_sword_attack",0,0)
+ KillSpawn(Spawn)
+ AddTimer(NPC,2500,"scoop")
+end
+
+
+function scoop(NPC,Spawn)
+ PlayFlavor(NPC,"","","gathering_success",0,0)
+end
+
+
+function RandomHail(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_guard_gm_1f674b43.mp3", "Oh! I... I'm not causing any trouble here. Don't mind me.", "whome", 3595799697, 1640670967, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_hail_gm_c8ce2416.mp3", "Do you have any small animals you won't mind missing?", "scheme", 2477620923, 2758696689, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_hail_gm_3c9902f6.mp3", "Fresh stew made with the finest ingredients! Come and get it!", "happy", 291667261, 3539823905, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_hail_gm_6498c1fd.mp3", "Try my feline claw soup sometime. You must!", "agree", 1561843829, 2180580092, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_hail_gm_a9f4bc35.mp3", "Don't bother me. I'm collecting fresh ingredients for a special recipe.", "shakefist", 2150316524, 1924252475, Spawn, 0)
+ end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_pig_gm_fdce8620.mp3", "Here little piglet, I have piggy treats...", "", 2158157683, 2098170175, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_cat_gm_9b64702d.mp3", "Here kitty kitty kitty...", "", 550240368, 2229553634, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_chase_gm_9e0faaf4.mp3", "Stop running! It makes your muscles less tender when I cook you.", "", 1878608291, 1886271523, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_chase_gm_874126ec.mp3", "Just hold still, it won't hurt a bit...", "", 573333408, 2721588881, Spawn, 0)
+ end
+end
+
+function Door1(NPC,Spawn)
+ local door = GetSpawn(NPC, 1360076)
+ UseWidget(door)
+end
+
+function Action(NPC,Spawn)
+ local Choice = MakeRandomInt(1,5)
+ if Choice == 1 then
+ PlayFlavor(NPC,"","","peer",0,0)
+ elseif Choice == 2 then
+ PlayFlavor(NPC,"","","sniff",0,0)
+ elseif Choice == 3 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+ elseif Choice == 4 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif Choice == 5 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 29.21, 2.92, 25.71, 1, 1)
+ MovementLoopAddLocation(NPC, 29.21, 2.92, 25.71, 1, 11,"Action")
+ MovementLoopAddLocation(NPC, 27.33, 2.92, 33.05, 1, 0)
+ MovementLoopAddLocation(NPC, 32.86, 2.98, 46.38, 1, 0)
+ MovementLoopAddLocation(NPC, 35.7, 3, 51.58, 1, 0)
+ MovementLoopAddLocation(NPC, 35.7, 3, 51.58, 1, 3)
+ MovementLoopAddLocation(NPC, 43.65, 3, 46.57, 1, 0)
+ MovementLoopAddLocation(NPC, 45.11, 3, 45.75, 1, 1)
+ MovementLoopAddLocation(NPC, 45.11, 3, 45.75, 1, 11,"Action")
+ MovementLoopAddLocation(NPC, 30.49, 3, 54.97, 1, 0)
+ MovementLoopAddLocation(NPC, 33.68, 3, 63.8, 1, 0)
+ MovementLoopAddLocation(NPC, 35.45, 3, 69.71, 1, 0)
+ MovementLoopAddLocation(NPC, 37.3, 3, 73.3, 1, 1)
+ MovementLoopAddLocation(NPC, 37.3, 3, 73.3, 1, 11,"Action")
+ MovementLoopAddLocation(NPC, 34.01, 3, 66.86, 1, 8)
+ MovementLoopAddLocation(NPC, 26.77, 3, 69.14, 1, 0)
+ MovementLoopAddLocation(NPC, 19.62, 3.02, 71.79, 1, 0)
+ MovementLoopAddLocation(NPC, 11.77, 3, 70.42, 1, 0)
+ MovementLoopAddLocation(NPC, 2.56, 3, 67.84, 1, 0)
+ MovementLoopAddLocation(NPC, -7.08, 3, 57.4, 1, 1)
+ MovementLoopAddLocation(NPC, -7.08, 3, 57.4, 1, 11,"Action")
+ MovementLoopAddLocation(NPC, -7.56, 3, 57.9, 1, 0)
+ MovementLoopAddLocation(NPC, -6.65, 3, 58.56, 1, 0)
+ MovementLoopAddLocation(NPC, -4.28, 3, 59.43, 1, 0)
+ MovementLoopAddLocation(NPC, 3.73, 3, 70.57, 1, 0)
+ MovementLoopAddLocation(NPC, -2.06, 3, 75.23, 1, 0)
+ MovementLoopAddLocation(NPC, -10.82, 3, 78.88, 1, 0)
+ MovementLoopAddLocation(NPC, -15.5, 3, 80.1, 2, 1,"Door1")
+ MovementLoopAddLocation(NPC, -18.05, 3.03, 74.58, 2, 12,"Door1")
+ MovementLoopAddLocation(NPC, -19.93, 3.11, 74.09, 2, 1)
+ MovementLoopAddLocation(NPC, -19.93, 3.11, 74.09, 2, 34,"Action")
+ MovementLoopAddLocation(NPC, -18.57, 3.03, 75.75, 2, 2,"Door1")
+ MovementLoopAddLocation(NPC, -16.09, 3, 79.41, 2, 0,"Door1")
+ MovementLoopAddLocation(NPC, 4.62, 3, 69.9, 2, 0)
+ MovementLoopAddLocation(NPC, 9.21, 3, 68, 1, 0)
+ MovementLoopAddLocation(NPC, 21.62, 2.98, 81.64, 1, 0)
+ MovementLoopAddLocation(NPC, 24.06, 3, 80.72, 1, 1)
+ MovementLoopAddLocation(NPC, 24.06, 3, 80.72, 1, 11,"Action")
+ MovementLoopAddLocation(NPC, 23.03, 2.99, 67.83, 1, 0)
+ MovementLoopAddLocation(NPC, 29.6, 3, 58.16, 1, 0)
+ MovementLoopAddLocation(NPC, 33.84, 3, 52.08, 1, 0)
+ MovementLoopAddLocation(NPC, 24.6, 2.92, 37.78, 1, 0)
+ MovementLoopAddLocation(NPC, 14.59, 2.92, 35.85, 1, 1)
+ MovementLoopAddLocation(NPC, 14.59, 2.92, 35.85, 1, 11,"Action")
+ MovementLoopAddLocation(NPC, 23.07, 2.92, 36.48, 2, 0)
+ MovementLoopAddLocation(NPC, 32.33, 2.92, 21.28, 1, 1)
+ MovementLoopAddLocation(NPC, 32.33, 2.92, 21.28, 1, 7)
+ MovementLoopAddLocation(NPC, 27.6, 2.92, 31.8, 1, 0) --Chase
+ MovementLoopAddLocation(NPC, 28.3, 2.92, 36.05, 1, 0)
+ MovementLoopAddLocation(NPC, 34.46, 3, 48.5, 1, 0)
+ MovementLoopAddLocation(NPC, 36.12, 3, 50.28, 1, 0)
+ MovementLoopAddLocation(NPC, 41.7, 3, 49.41, 1, 0)
+ MovementLoopAddLocation(NPC, 43.56, 3, 49.41, 1, 0)
+ MovementLoopAddLocation(NPC, 49.16, 3, 58.47, 2, 0)
+ MovementLoopAddLocation(NPC, 54.6, 3, 66.57, 2, 0,"Model")
+ MovementLoopAddLocation(NPC, 54.6, 3, 66.57, 2, 0,"Spawn")
+ MovementLoopAddLocation(NPC, 54.6, 3, 66.57, 1, 5,"Despawning")
+end
+
+
+function Spawn(NPC)
+ local zone = GetZone(NPC)
+ local Runner = GetSpawnByLocationID(zone, 133787203)
+ if Runner == nil then
+ SpawnByLocationID(zone,133787203)
+ end
+end
+
+function Model(NPC)
+ SpawnSet(NPC,"model_type","2306")
+ SpawnSet(NPC,"show_name","0")
+ SpawnSet(NPC,"targetable","0")
+ SpawnSet(NPC, "show_command_icon", "0")
+end
+
+function Despawning(NPC)
+ Despawn(NPC)
+end
+
+
+
+
diff --git a/server/SpawnScripts/TempleSt/ChefSchmenkoRunner.lua b/server/SpawnScripts/TempleSt/ChefSchmenkoRunner.lua
new file mode 100755
index 000000000..f8f9119b9
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ChefSchmenkoRunner.lua
@@ -0,0 +1,243 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ChefSchmenkoRunner.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.26 04:10:40
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ waypointsRun(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+SetTempVariable(NPC,"CalloutTimer", "1")
+end
+
+function InRange(NPC,Spawn)
+ if not IsInCombat(NPC) and GetTempVariable(NPC,"CalloutTimer")~="1" then
+ local zone = GetZone(NPC)
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ if IsAlive(Cog) or IsAlive(Sprocket) then
+ RandomGreeting(NPC, Spawn)
+ SetTempVariable(NPC,"CalloutTimer", "1")
+ AddTimer(NPC,18000,"CalloutReset",1,Spawn)end
+ end
+end
+
+function CalloutReset(NPC,Spawn)
+SetTempVariable(NPC,"CalloutTimer", "0")
+end
+
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_chase_gm_874126ec.mp3", "Just hold still, it won't hurt a bit...", "", 573333408, 2721588881, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_chase_gm_b68dd0f.mp3", "Help! I'm being chased by dinner, help!", "", 722181787, 4005303070, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_chase_gm_9e0faaf4.mp3", "Stop running! It makes your muscles less tender when I cook you.", "", 1878608291, 1886271523, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_urbanchef/ft/eco/evil/ratonga_eco_evil_urbanchef_chase_gm_b68dd0f.mp3", "Help! I'm being chased by dinner, help!", "", 722181787, 4005303070, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypointsRun(NPC)
+ MovementLoopAddLocation(NPC, 54.6, 3, 66.57, 1, 0)
+ MovementLoopAddLocation(NPC, 49.83, 3, 70.25, 1, 0,"CritterCheck")
+ MovementLoopAddLocation(NPC, 42.63, 3, 74.64, 1, 0)
+ MovementLoopAddLocation(NPC, 40.77, 3, 76.3, 2, 1,"CritterTarget")
+ MovementLoopAddLocation(NPC, 40.77, 3, 76.3, 2, 1)
+ MovementLoopAddLocation(NPC, 40.77, 3, 76.3, 2, 1,"Squeal")
+ MovementLoopAddLocation(NPC, 40.77, 3, 76.3, 4, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 35.62, 3, 75.35, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 28.61, 3, 77.83, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 23.54, 3, 79.13, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 19.35, 3.01, 75.87, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 18.61, 3.02, 71.04, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 23.05, 2.99, 66.51, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 26.91, 3, 63.92, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 30.48, 3, 68.72, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 33.03, 3, 72.96, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 31.55, 3, 77.35, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 24.44, 3, 77.8, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 21.36, 2.94, 73.64, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 25.64, 3, 67.15, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 28.86, 3, 68, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 31.45, 3, 70.57, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 31.91, 3, 73.86, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 27.09, 3, 76.77, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 24.8, 3, 71.86, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 29.09, 3, 59.54, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 30.46, 3, 56.16, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 32.28, 3, 54.58, 6, 0,"CritterRun")
+ MovementLoopAddLocation(NPC, 32.32, 3, 50.85, 6, 0,"RunningBack")
+ MovementLoopAddLocation(NPC, 28.53, 2.92, 41.62, 3, 0,"DespawnCritter")
+ MovementLoopAddLocation(NPC, 26.82, 2.92, 33.54, 2, 0)
+ MovementLoopAddLocation(NPC, 30.88, 2.92, 25.87, 2, 1,"DespawningSelf")
+ MovementLoopAddLocation(NPC, 30.88, 2.92, 25.87, 2, 4,"DespawningSelf2")
+end
+
+function DespawningSelf(NPC)
+ local zone = GetZone(NPC)
+ local Original = GetSpawnByLocationID(zone, 420550)
+ if Original == nil then
+ SpawnSet(NPC,"model_type","2306")
+ SpawnSet(NPC,"show_name","0")
+ SpawnSet(NPC,"targetable","0")
+ SpawnSet(NPC, "show_command_icon", "0")
+ end
+end
+
+function DespawningSelf2(NPC)
+ local zone = GetZone(NPC)
+ local Original = GetSpawnByLocationID(zone, 420550)
+ if Original == nil then
+ SpawnByLocationID(zone,420550)
+ Despawn(NPC)
+ end
+end
+
+function CritterRun(NPC,Spawn)
+ local X = GetX(NPC)
+ local Y = GetY(NPC)
+ local Z = GetZ(NPC)
+ local sli = GetSpawnLocationID(NPC)
+ local speed = 2
+ local zone = GetZone(NPC)
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ local RealCog = GetSpawnByLocationID(zone, 420519)
+ local RealSprocket = GetSpawnByLocationID(zone, 420583)
+ if Cog ~=nil and not IsInCombat(Cog) then
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ if MakeRandomInt(0,100) <= 40 then
+ PlayFlavor(Cog,"","","attack",0,0)
+ end
+ if RealCog ~=nil then
+ Despawn(RealCog)
+ end
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ if GetDistance(Cog, NPC) >= 2 then
+ speed = 6
+ MoveToLocation(Cog, X - 1, Y, Z, speed)
+ else
+ speed = 5
+ MoveToLocation(Cog, X - 1, Y, Z, speed)
+ end
+ end
+ if Sprocket ~=nil and not IsInCombat(Sprocket) then
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ if MakeRandomInt(0,100) <= 40 then
+ PlayFlavor(Sprocket,"","","attack",0,0)
+ end
+ if RealSprocket ~=nil then
+ Despawn(RealSprocket)
+ end
+ if GetDistance(Sprocket, NPC) >= 2 then
+ speed = 6
+ MoveToLocation(Sprocket, X - 1, Y, Z, speed)
+ else
+ speed = 5
+ MoveToLocation(Sprocket, X - 1, Y, Z, speed)
+ end
+ end
+end
+
+
+function CritterCheck(NPC,Spawn)
+ local Critter = MakeRandomInt(1,2)
+ local zone = GetZone(NPC)
+ local RealCog = GetSpawnByLocationID(zone, 420519)
+ local RealSprocket = GetSpawnByLocationID(zone, 420583)
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ if Critter == 1 then
+ if RealCog ~=nil then
+ Despawn(RealCog)
+ end
+ if Cog ==nil then
+ SpawnByLocationID(zone,133787201)
+ end
+ else
+ if RealSprocket ~=nil then
+ Despawn(RealSprocket)
+ end
+ if Sprocket ==nil then
+ SpawnByLocationID(zone,133787202)
+ end
+end
+end
+
+function Attacking(NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function Squeal(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer", "0")
+ PlayFlavor(NPC,"","","squeal",0,0)
+end
+
+function CritterTarget(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local RealCog = GetSpawnByLocationID(zone, 420519)
+ local RealSprocket = GetSpawnByLocationID(zone, 420583)
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ if Cog ~=nil then
+ SetTarget(Cog,NPC)
+ SetTarget(NPC,Cog)
+ FaceTarget(NPC,Cog)
+ PlayFlavor(Cog,"","","attack",0,0)
+ elseif Sprocket ~=nil then
+ SetTarget(Sprocket,NPC)
+ SetTarget(NPC,Sprocket)
+ FaceTarget(NPC,Sprocket)
+ PlayFlavor(Sprocket,"","","attack",0,0)
+ end
+end
+
+function DespawnCritter(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local RealCog = GetSpawnByLocationID(zone, 420519)
+ local RealSprocket = GetSpawnByLocationID(zone, 420583)
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ if Cog ~=nil then
+ Despawn(Cog)
+ end
+ if RealCog ==nil then
+-- SpawnByLocationID(zone,420519)
+ end
+ if Sprocket ~=nil then
+ Despawn(Sprocket)
+ end
+ if RealSprocket ==nil then
+-- SpawnByLocationID(zone,420583)
+ end
+
+end
+
+function RunningBack(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local RealCog = GetSpawnByLocationID(zone, 420519)
+ local RealSprocket = GetSpawnByLocationID(zone, 420583)
+ local Cog = GetSpawnByLocationID(zone, 133787201)
+ local Sprocket = GetSpawnByLocationID(zone, 133787202)
+ if Cog ~=nil then
+ MovementLoopAddLocation(Cog, 52.48, 3.00, 45.73, 6, 6,"DespawnCritter")
+ SetTarget(Cog,nil)
+ SetTarget(NPC,nil)
+ elseif Sprocket ~=nil then
+ MovementLoopAddLocation(Sprocket, 52.48, 3.00, 45.73, 6, 6,"DespawnCritter")
+ SetTarget(Sprocket,nil)
+ SetTarget(NPC,nil)
+ FaceTarget(NPC,Sprocket)
+ PlayFlavor(Sprocket,"","","attack",0,0)
+ end
+end
diff --git a/server/SpawnScripts/TempleSt/Chrna.lua b/server/SpawnScripts/TempleSt/Chrna.lua
index 8fe24bec9..685d51bc2 100755
--- a/server/SpawnScripts/TempleSt/Chrna.lua
+++ b/server/SpawnScripts/TempleSt/Chrna.lua
@@ -9,8 +9,10 @@
require "SpawnScripts/Generic/DialogModule"
local TheMissingBook = 5681
+local QwergosPlan = 5916
function spawn(NPC)
+waypoints(NPC)
end
function respawn(NPC)
@@ -18,24 +20,146 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
- if GetQuestStep(Spawn, TheMissingBook) == 1 then
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("I do not have that missing book! I don't know where it is. ")
- Dialog.AddOption("I hope you don't lie...")
- Dialog.Start()
- SetStepComplete(Spawn, TheMissingBook, 1)
- else
- Dialog1(NPC, Spawn)
- end
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC, Spawn)
+ end
end
+
+
+
+
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Chrna look for hidden treasures. Maybe you see where they are, yes? ")
Dialog.AddVoiceover("voiceover/english/chrna/fprt_hood03/qst_chrna.mp3", 1920372216, 1161082682)
- Dialog.AddOption("I haven't seen any, but will keep an eye out for you. Good luck!")
+ if GetQuestStep(Spawn, TheMissingBook) == 1 then
+ Dialog.AddOption("Treasures, as in a stolen book? Tell me where it is!","Dialog2")
+ end
+ if GetQuestStep(Spawn, QwergosPlan) == 2 then
+ Dialog.AddOption("No, I don't. I need that rumblestick thing that you got from Plordo. It obviously doesn't work!","Dialog3")
+ end
+ Dialog.AddOption("I haven't seen any, but will keep an eye out for you. Good luck!")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","","happy",0,0, Spawn)
+ Dialog.AddDialog("Yesyesyes! I dids it! I confesses, I do! A mighty magi in the Sprawl paidses me to steals the book from the Dark Elf. I am so sorrrrrrry... I feel so horrrrrrible... the GUILT will plagues me till I die.... Waaaaaahhhhh.... how cans I lives with my self?.... Booo Hooo hooo... BOO-HOO-HOOOOOOOO!")
+ Dialog.AddVoiceover("voiceover/english/chrna/fprt_hood05/quests/lotniklria/trueratonga_lotni_x1_initial.mp3", 3981798709, 2280901962)
+ if GetQuestStep(Spawn, TheMissingBook) == 1 then
+ SetStepComplete(Spawn, TheMissingBook, 1)
+ end
+ Dialog.AddOption("Okay! Okay... I must report this.","Continue")
+ Dialog.Start()
+ AddTimer(NPC,14500,"Heart",1,Spawn)
+ AddTimer(NPC,23000,"Cry",1,Spawn)
+end
+
+function Heart(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","heartattack",0,0, Spawn)
+end
+
+function Cry(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","cry",0,0, Spawn)
+end
+
+function Continue(NPC, Spawn)
+end
+
+function Dig(NPC, Spawn)
+ PlayFlavor(NPC, "","","gathering_search",0,0)
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddDialog("It won't?! Ohhh ... Plordo tell a lie to Chrna. Maybe I should eat his face.")
+ Dialog.AddVoiceover("voiceover/english/chrna/fprt_hood03/quests/qwergotogglesmeet/chrna_qwergo_x1_initial.mp3", 4198507307, 1883427787)
+ Dialog.AddOption("Perhaps, but if you don't give it to me you might EXPLODE.","Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "","","grumble",0,0, Spawn)
+ Dialog.AddDialog("Peh! Take the rumbley! It scares Chrna. All it do is make a tick-tick-tick sound, and the little numbers keep changing.")
+ Dialog.AddVoiceover("voiceover/english/chrna/fprt_hood03/quests/qwergotogglesmeet/chrna_qwergo_x1_initial2.mp3", 1216429846, 856282773)
+ if GetQuestStep(Spawn, QwergosPlan) == 2 then
+ SetStepComplete(Spawn, QwergosPlan, 2)
+ end
+ Dialog.AddOption("Interesting... Thank you.","Continue")
+ Dialog.Start()
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 1)
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 0)
+ MovementLoopAddLocation(NPC, 28.82, 2.92, 26.42, 2, 0)
+ MovementLoopAddLocation(NPC, 29.9, 2.92, 28.28, 2, 0)
+ MovementLoopAddLocation(NPC, 31.47, 2.92, 30.86, 2, 1)
+ MovementLoopAddLocation(NPC, 31.47, 2.92, 30.86, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 31.47, 2.92, 30.86, 2, 0)
+ MovementLoopAddLocation(NPC, 23.96, 2.92, 28.69, 2, 0)
+ MovementLoopAddLocation(NPC, 16.06, 2.92, 31.79, 2, 0)
+ MovementLoopAddLocation(NPC, 9.15, 2.92, 30.65, 2, 0)
+ MovementLoopAddLocation(NPC, 7.32, 2.92, 30.24, 2, 0)
+ MovementLoopAddLocation(NPC, 6.18, 2.92, 29.12, 2, 1)
+ MovementLoopAddLocation(NPC, 6.18, 2.92, 29.12, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 6.18, 2.92, 29.12, 2, 0)
+ MovementLoopAddLocation(NPC, 5.67, 2.92, 31.67, 2, 0)
+ MovementLoopAddLocation(NPC, 7.18, 2.92, 35.68, 2, 0)
+ MovementLoopAddLocation(NPC, 9.54, 2.92, 38.01, 2, 1)
+ MovementLoopAddLocation(NPC, 9.54, 2.92, 38.01, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 9.54, 2.92, 38.01, 2, 0)
+ MovementLoopAddLocation(NPC, 11.53, 2.92, 36.02, 2, 0)
+ MovementLoopAddLocation(NPC, 21.61, 2.92, 32.4, 2, 0)
+ MovementLoopAddLocation(NPC, 28.59, 2.92, 25.76, 2, 0)
+ MovementLoopAddLocation(NPC, 32.85, 2.92, 20.43, 2, 0)
+ MovementLoopAddLocation(NPC, 36.75, 2.92, 22.19, 2, 1)
+ MovementLoopAddLocation(NPC, 36.75, 2.92, 22.19, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 36.75, 2.92, 22.19, 2, 0)
+ MovementLoopAddLocation(NPC, 33.74, 2.92, 16.51, 2, 0)
+
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 1)
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 0)
+
+ MovementLoopAddLocation(NPC, 36.75, 2.92, 22.19, 2, 0)
+ MovementLoopAddLocation(NPC, 32.85, 2.92, 20.43, 2, 0)
+ MovementLoopAddLocation(NPC, 28.59, 2.92, 25.76, 2, 0)
+ MovementLoopAddLocation(NPC, 21.61, 2.92, 32.4, 2, 0)
+ MovementLoopAddLocation(NPC, 11.53, 2.92, 36.02, 2, 0)
+ MovementLoopAddLocation(NPC, 9.54, 2.92, 38.01, 2, 1)
+ MovementLoopAddLocation(NPC, 9.54, 2.92, 38.01, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 9.54, 2.92, 38.01, 2, 0)
+ MovementLoopAddLocation(NPC, 7.18, 2.92, 35.68, 2, 0)
+ MovementLoopAddLocation(NPC, 5.67, 2.92, 31.67, 2, 0)
+ MovementLoopAddLocation(NPC, 6.18, 2.92, 29.12, 2, 1)
+ MovementLoopAddLocation(NPC, 6.18, 2.92, 29.12, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 6.18, 2.92, 29.12, 2, 0)
+ MovementLoopAddLocation(NPC, 7.32, 2.92, 30.24, 2, 0)
+ MovementLoopAddLocation(NPC, 9.15, 2.92, 30.65, 2, 0)
+ MovementLoopAddLocation(NPC, 16.06, 2.92, 31.79, 2, 0)
+ MovementLoopAddLocation(NPC, 23.96, 2.92, 28.69, 2, 0)
+ MovementLoopAddLocation(NPC, 31.47, 2.92, 30.86, 2, 1)
+ MovementLoopAddLocation(NPC, 31.47, 2.92, 30.86, 2, 18,"Dig")
+ MovementLoopAddLocation(NPC, 31.47, 2.92, 30.86, 2, 0)
+ MovementLoopAddLocation(NPC, 29.9, 2.92, 28.28, 2, 0)
+ MovementLoopAddLocation(NPC, 28.82, 2.92, 26.42, 2, 0)
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 1)
+ MovementLoopAddLocation(NPC, 32.24, 2.92, 10.14, 2, 18,"Dig")
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/Cog.lua b/server/SpawnScripts/TempleSt/Cog.lua
new file mode 100755
index 000000000..888ab31c3
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Cog.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Cog.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.26 04:10:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+ if GetSpawnLocationID(NPC) == 420519 then
+ waypoints(NPC)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 59.08, 2.98, 66.57, 1, 0)
+ MovementLoopAddLocation(NPC, 65.75, 2.66, 68.99, 1, 0)
+ MovementLoopAddLocation(NPC, 70.73, 1.31, 71.18, 1, 0)
+ MovementLoopAddLocation(NPC, 72.64, 0.15, 76.22, 1, 0)
+ MovementLoopAddLocation(NPC, 73.22, -1.54, 81.16, 1, 0)
+ MovementLoopAddLocation(NPC, 76.99, -3.86, 86.28, 1, 0)
+ MovementLoopAddLocation(NPC, 82.14, -4.57, 94.41, 1, 0)
+ MovementLoopAddLocation(NPC, 85.63, -4.57, 99.11, 1, 0)
+ MovementLoopAddLocation(NPC, 89.04, -4.57, 100.72, 1, 0)
+ MovementLoopAddLocation(NPC, 96.62, -4.57, 103.5, 1, 0)
+ MovementLoopAddLocation(NPC, 102.64, -4.57, 103.44, 1, 0)
+ MovementLoopAddLocation(NPC, 102.64, -4.57, 103.44, 1, 6)
+ MovementLoopAddLocation(NPC, 103.05, -4.57, 100.13, 1, 6)
+ MovementLoopAddLocation(NPC, 107, -4.57, 100.34, 1, 6)
+ MovementLoopAddLocation(NPC, 105.18, -4.57, 105.33, 1, 6)
+ MovementLoopAddLocation(NPC, 104.3, -4.57, 100.09, 1, 6)
+ MovementLoopAddLocation(NPC, 102.29, -4.57, 104.05, 1, 0)
+ MovementLoopAddLocation(NPC, 94.93, -4.57, 103.03, 1, 0)
+ MovementLoopAddLocation(NPC, 86.36, -4.57, 104.07, 1, 0)
+ MovementLoopAddLocation(NPC, 82.36, -4.57, 113.99, 1, 6)
+ MovementLoopAddLocation(NPC, 81.93, -4.57, 118.26, 1, 6)
+ MovementLoopAddLocation(NPC, 78.49, -4.57, 117.05, 1, 6)
+ MovementLoopAddLocation(NPC, 84.56, -4.57, 109.62, 1, 0)
+ MovementLoopAddLocation(NPC, 83.57, -4.57, 102.47, 1, 0)
+ MovementLoopAddLocation(NPC, 78.62, -4.57, 92.98, 1, 0)
+ MovementLoopAddLocation(NPC, 72.17, -1.28, 80.91, 1, 0)
+ MovementLoopAddLocation(NPC, 71.47, 0.53, 74.66, 1, 0)
+ MovementLoopAddLocation(NPC, 69.29, 1.76, 71.19, 1, 0)
+ MovementLoopAddLocation(NPC, 64.14, 2.83, 69.97, 1, 0)
+ MovementLoopAddLocation(NPC, 58.83, 2.97, 68.83, 1, 0)
+ MovementLoopAddLocation(NPC, 55, 3, 67.84, 1, 0)
+ MovementLoopAddLocation(NPC, 45, 3, 74.12, 1, 0)
+ MovementLoopAddLocation(NPC, 40.11, 3, 76.12, 1, 0)
+ MovementLoopAddLocation(NPC, 35.9, 3, 76.99, 1, 0)
+ MovementLoopAddLocation(NPC, 25.88, 3, 78.71, 1, 6)
+ MovementLoopAddLocation(NPC, 20.76, 2.98, 76.22, 1, 6)
+ MovementLoopAddLocation(NPC, 18.87, 3.02, 70.05, 1, 6)
+ MovementLoopAddLocation(NPC, 14.13, 3.01, 69.73, 1, 0)
+ MovementLoopAddLocation(NPC, 0.67, 3, 68.21, 1, 6)
+ MovementLoopAddLocation(NPC, 5.59, 3, 68.99, 1, 0)
+ MovementLoopAddLocation(NPC, 16.07, 3.01, 70.82, 1, 0)
+ MovementLoopAddLocation(NPC, 24.89, 3, 64.64, 1, 6)
+ MovementLoopAddLocation(NPC, 22.21, 2.99, 77.51, 1, 6)
+ MovementLoopAddLocation(NPC, 25.83, 3, 76.99, 1, 6)
+ MovementLoopAddLocation(NPC, 25.15, 3, 66.7, 1, 0)
+ MovementLoopAddLocation(NPC, 28.38, 3, 59.2, 1, 0)
+ MovementLoopAddLocation(NPC, 33.12, 3, 53.7, 1, 0)
+ MovementLoopAddLocation(NPC, 45.03, 3, 47.48, 1, 6)
+ MovementLoopAddLocation(NPC, 48.11, 3, 46.05, 1, 6)
+ MovementLoopAddLocation(NPC, 46, 3, 50.1, 1, 0)
+ MovementLoopAddLocation(NPC, 50.89, 3, 60.39, 1, 0)
+ MovementLoopAddLocation(NPC, 55.36, 3, 65.37, 1, 0)
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/DrobbixWangleport.lua b/server/SpawnScripts/TempleSt/DrobbixWangleport.lua
new file mode 100755
index 000000000..a5d2688e0
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/DrobbixWangleport.lua
@@ -0,0 +1,108 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/DrobbixWangleport.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 03:10:04
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,6)then
+ Garbled(NPC,Spawn)
+ else
+ GenericEcology2Hail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,6)then
+ if math.random(0,100)<40 then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ end
+ else
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1380083)
+ UseWidget(door)
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "mood_angry", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ end
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -0.13, 3, 69.75, 2, 1)
+ MovementLoopAddLocation(NPC, -0.13, 3, 69.75, 2, 9,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 1.49, 3, 69.67, 2, 0)
+ MovementLoopAddLocation(NPC, 6.01, 3, 66.28, 2, 0)
+ MovementLoopAddLocation(NPC, 8.08, 3, 64.2, 2, 0)
+ MovementLoopAddLocation(NPC, 8.84, 3.1, 62.79, 2, 0)
+ MovementLoopAddLocation(NPC, 8.45, 3.05, 61.79, 2, 0)
+ MovementLoopAddLocation(NPC, 6.68, 3.05, 60.22, 2, 1)
+ MovementLoopAddLocation(NPC, 6.68, 3.05, 60.22, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 8.27, 3.05, 60.36, 2, 0)
+ MovementLoopAddLocation(NPC, 9.19, 3.1, 62.83, 2, 0)
+ MovementLoopAddLocation(NPC, 8.4, 3, 65.43, 2, 0)
+ MovementLoopAddLocation(NPC, 9.88, 3, 72.99, 2, 1)
+ MovementLoopAddLocation(NPC, 9.88, 3, 72.99, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 9.87, 3, 71.39, 2, 0)
+ MovementLoopAddLocation(NPC, 7.55, 3, 69.95, 2, 0)
+ MovementLoopAddLocation(NPC, -1.04, 3, 74.89, 2, 0)
+ MovementLoopAddLocation(NPC, -4.14, 3, 71.86, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, -6.55, 3, 66.59, 2, 1,"Door")
+ MovementLoopAddLocation(NPC, -6.55, 3, 66.59, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -7.63, 3, 68.17, 2, 1)
+ MovementLoopAddLocation(NPC, -7.63, 3, 68.17, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -6.22, 3, 68.95, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, -3.9, 3, 72.09, 2, 0,"Door")
+ MovementLoopAddLocation(NPC, -1.1, 3, 70.3, 2, 0)
+ MovementLoopAddLocation(NPC, 16.13, 3.01, 69.46, 2, 0)
+ MovementLoopAddLocation(NPC, 17.6, 3.01, 69.63, 2, 0)
+ MovementLoopAddLocation(NPC, 19.61, 3.02, 67.38, 2, 0)
+ MovementLoopAddLocation(NPC, 21.14, 2.9, 63.64, 2, 0)
+ MovementLoopAddLocation(NPC, 20.21, 2.93, 58.37, 2, 1)
+ MovementLoopAddLocation(NPC, 20.21, 2.93, 58.37, 2, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 21.16, 2.89, 58.96, 2, 0)
+ MovementLoopAddLocation(NPC, 22.71, 2.96, 61.57, 2, 0)
+ MovementLoopAddLocation(NPC, 22.18, 2.95, 65.19, 2, 0)
+ MovementLoopAddLocation(NPC, 20.63, 2.95, 68.28, 2, 0)
+ MovementLoopAddLocation(NPC, 16.65, 3.01, 69.91, 2, 0)
+ MovementLoopAddLocation(NPC, 10.05, 3, 71.04, 2, 0)
+ MovementLoopAddLocation(NPC, 7.41, 3, 70.44, 2, 0)
+ MovementLoopAddLocation(NPC, 2.1, 3, 72.41, 2, 0)
+end
+
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1360080)
+ UseWidget(door)
+end
diff --git a/server/SpawnScripts/TempleSt/GiggiFoppdomler.lua b/server/SpawnScripts/TempleSt/GiggiFoppdomler.lua
new file mode 100755
index 000000000..dd7258d90
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/GiggiFoppdomler.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/GiggiFoppdomler.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:09
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcology2Callout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 59.4, 4.13, 48.06, 2, 1)
+ MovementLoopAddLocation(NPC, 59.4, 4.13, 48.06, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 59.4, 4.13, 48.06, 2, 0)
+ MovementLoopAddLocation(NPC, 60.24, 4.13, 49.21, 2, 0)
+ MovementLoopAddLocation(NPC, 57.64, 4.13, 50.61, 2, 0)
+ MovementLoopAddLocation(NPC, 53.4, 3.27, 50.28, 2, 1)
+ MovementLoopAddLocation(NPC, 53.4, 3.27, 50.28, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 54.04, 3.47, 50.55, 2, 0)
+ MovementLoopAddLocation(NPC, 54.13, 3.06, 52.79, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, 49.8, 3, 54.59, 2, 0)
+ MovementLoopAddLocation(NPC, 49.72, 3, 57.15, 2, 0)
+ MovementLoopAddLocation(NPC, 52.85, 3, 62.69, 2, 0)
+ MovementLoopAddLocation(NPC, 54.78, 3, 65.71, 2, 0)
+ MovementLoopAddLocation(NPC, 57.76, 2.98, 68.7, 2, 0)
+ MovementLoopAddLocation(NPC, 61.46, 2.94, 70.49, 2, 0)
+ MovementLoopAddLocation(NPC, 63.69, 3, 72.93, 2, 1)
+ MovementLoopAddLocation(NPC, 63.69, 3, 72.93, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 62.9, 2.99, 71.36, 2, 0)
+ MovementLoopAddLocation(NPC, 64.86, 2.71, 69.15, 2, 0)
+ MovementLoopAddLocation(NPC, 70.96, 1.37, 70.9, 2, 0)
+ MovementLoopAddLocation(NPC, 72.27, 0.87, 72.74, 2, 0)
+ MovementLoopAddLocation(NPC, 72.73, -0.69, 79.36, 2, 0)
+ MovementLoopAddLocation(NPC, 76.86, -2.78, 83.54, 2, 0)
+ MovementLoopAddLocation(NPC, 84.57, -4.57, 97.64, 2, 0)
+ MovementLoopAddLocation(NPC, 81.59, -4.57, 108.12, 2, 1)
+ MovementLoopAddLocation(NPC, 81.59, -4.57, 108.12, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 81.59, -4.57, 108.12, 2, 0)
+ MovementLoopAddLocation(NPC, 81.8, -4.57, 103.79, 2, 0)
+ MovementLoopAddLocation(NPC, 77.29, -4.56, 94.52, 2, 0)
+ MovementLoopAddLocation(NPC, 76.45, -4.53, 92.87, 2, 1)
+ MovementLoopAddLocation(NPC, 76.45, -4.53, 92.87, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 76.65, -4.51, 91.76, 2, 0)
+ MovementLoopAddLocation(NPC, 73.23, -2.33, 83.77, 2, 0)
+ MovementLoopAddLocation(NPC, 71.23, -0.66, 79.64, 2, 0)
+ MovementLoopAddLocation(NPC, 71.73, 0.31, 75.46, 2, 0)
+ MovementLoopAddLocation(NPC, 71.11, 0.86, 73.37, 2, 0)
+ MovementLoopAddLocation(NPC, 68.41, 1.83, 70.75, 2, 0)
+ MovementLoopAddLocation(NPC, 64.26, 2.82, 70.07, 2, 0)
+ MovementLoopAddLocation(NPC, 57.21, 2.99, 68.18, 2, 0)
+ MovementLoopAddLocation(NPC, 50.47, 3, 62.85, 2, 0)
+ MovementLoopAddLocation(NPC, 46.84, 3, 56.32, 2, 0)
+ MovementLoopAddLocation(NPC, 50.26, 3, 54.47, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, 53.7, 3.06, 52.34, 2, 0)
+ MovementLoopAddLocation(NPC, 55.65, 4.13, 48.95, 2, 0)
+ MovementLoopAddLocation(NPC, 57.93, 4.13, 47.17, 2, 0)
+end
+
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1360070)
+ UseWidget(door)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/GuardRelna.lua b/server/SpawnScripts/TempleSt/GuardRelna.lua
new file mode 100755
index 000000000..71ce712f8
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/GuardRelna.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/GuardRelna.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.27 08:10:56
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ waypoints(NPC)
+end
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -12.04, 3, 77.7, 2, 1)
+ MovementLoopAddLocation(NPC, -12.04, 3, 77.7, 2, 7,"Action")
+ MovementLoopAddLocation(NPC, -5.18, 3, 74.66, 2, 0)
+ MovementLoopAddLocation(NPC, 2.23, 3, 70.81, 2, 0)
+ MovementLoopAddLocation(NPC, 4.03, 3, 69.19, 2, 0)
+ MovementLoopAddLocation(NPC, 9.99, 3, 68.09, 2, 0)
+ MovementLoopAddLocation(NPC, 14.93, 3.01, 68.56, 2, 0)
+ MovementLoopAddLocation(NPC, 14.93, 3.01, 68.56, 2, 1)
+ MovementLoopAddLocation(NPC, 14.93, 3.01, 68.56, 2, 7,"Action")
+ MovementLoopAddLocation(NPC, 16.26, 3.01, 69.41, 2, 0)
+ MovementLoopAddLocation(NPC, 23.3, 3, 81.22, 2, 0)
+ MovementLoopAddLocation(NPC, 40.43, 3, 74.03, 2, 0)
+ MovementLoopAddLocation(NPC, 46.8, 3, 71.09, 2, 0)
+ MovementLoopAddLocation(NPC, 52.22, 3, 67.76, 2, 0)
+ MovementLoopAddLocation(NPC, 58.69, 3, 62.62, 2, 1)
+ MovementLoopAddLocation(NPC, 58.69, 3, 62.62, 2, 18,"Action")
+ MovementLoopAddLocation(NPC, 57.47, 3, 64.38, 2, 0)
+ MovementLoopAddLocation(NPC, 53.81, 3, 69.06, 2, 0)
+ MovementLoopAddLocation(NPC, 44.36, 3, 74.27, 2, 0)
+ MovementLoopAddLocation(NPC, 39.34, 3, 77.04, 2, 0)
+ MovementLoopAddLocation(NPC, 32.7, 3, 79.24, 2, 0)
+ MovementLoopAddLocation(NPC, 20.99, 2.98, 79.78, 2, 0)
+ MovementLoopAddLocation(NPC, 14.56, 3, 74.18, 2, 0)
+ MovementLoopAddLocation(NPC, 12.16, 3, 71.04, 2, 0)
+ MovementLoopAddLocation(NPC, 3.74, 3, 68.64, 2, 0)
+ MovementLoopAddLocation(NPC, -0.43, 3, 63.76, 2, 0)
+ MovementLoopAddLocation(NPC, -2.84, 3, 58.03, 2, 1)
+ MovementLoopAddLocation(NPC, -2.84, 3, 58.03, 2, 18,"Action")
+ MovementLoopAddLocation(NPC, 1.58, 3, 66.5, 2, 0)
+ MovementLoopAddLocation(NPC, 2.98, 3, 69.18, 2, 0)
+ MovementLoopAddLocation(NPC, 1.24, 3, 73.83, 2, 0)
+ MovementLoopAddLocation(NPC, -5.65, 3, 77.46, 2, 0)
+ MovementLoopAddLocation(NPC, -10.98, 3, 79.2, 2, 1)
+ MovementLoopAddLocation(NPC, -10.98, 3, 79.2, 2, 7,"Action")
+ MovementLoopAddLocation(NPC, -10.98, 3, 79.2, 2, 0)
+ MovementLoopAddLocation(NPC, -5.88, 3, 89.66, 2, 1)
+ MovementLoopAddLocation(NPC, -5.88, 3, 89.66, 2, 7,"Action")
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "listen", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ end
+end
diff --git a/server/SpawnScripts/TempleSt/Hepsh.lua b/server/SpawnScripts/TempleSt/Hepsh.lua
new file mode 100755
index 000000000..7437605cd
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Hepsh.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Hepsh.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:26
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -26.88, 3, 86.99, 1, 1)
+ MovementLoopAddLocation(NPC, -26.88, 3, 86.99, 1, MakeRandomInt(25,40),"Action")
+ MovementLoopAddLocation(NPC, -30.89, 3, 78.42, 1, 1)
+ MovementLoopAddLocation(NPC, -30.89, 3, 78.42, 1, MakeRandomInt(25,40),"Action")
+ MovementLoopAddLocation(NPC, -30.16, 3, 77.61, 1, 0)
+ MovementLoopAddLocation(NPC, -29.12, 3, 79.07, 1, 0)
+ MovementLoopAddLocation(NPC, -27.03, 3, 83, 1, 0)
+ MovementLoopAddLocation(NPC, -26.94, 3, 86.61, 1, 1)
+ MovementLoopAddLocation(NPC, -26.94, 3, 86.61, 1, MakeRandomInt(25,40),"EcologyEmote")
+ MovementLoopAddLocation(NPC, -22.16, 3, 83.11, 1, 0)
+ MovementLoopAddLocation(NPC, -18.3, 3, 80.7, 1, 0)
+ MovementLoopAddLocation(NPC, -10.17, 3, 75.98, 1, 2,"Door")
+ MovementLoopAddLocation(NPC, -12.6, 3.03, 71.36, 1, 0,"Door")
+ MovementLoopAddLocation(NPC, -14.69, 3.03, 70.56, 1, 1)
+ MovementLoopAddLocation(NPC, -14.69, 3.03, 70.56, 1, MakeRandomInt(25,40),"EcologyEmote")
+ MovementLoopAddLocation(NPC, -14.02, 3.03, 69.37, 1, 1)
+ MovementLoopAddLocation(NPC, -14.02, 3.03, 69.37, 1, MakeRandomInt(25,40),"EcologyEmote")
+ MovementLoopAddLocation(NPC, -14.34, 3.03, 71.38, 1, 0)
+ MovementLoopAddLocation(NPC, -12.94, 3.03, 71.49, 1, 2,"Door")
+ MovementLoopAddLocation(NPC, -9.63, 3, 76.24, 1, 0,"Door")
+ MovementLoopAddLocation(NPC, -6.65, 3, 74.89, 1, 0)
+ MovementLoopAddLocation(NPC, -6.23, 3, 74.2, 1, 1)
+ MovementLoopAddLocation(NPC, -6.23, 3, 74.2, 1, MakeRandomInt(25,40),"EcologyEmote")
+ MovementLoopAddLocation(NPC, -8.12, 3, 76.54, 1, 0)
+ MovementLoopAddLocation(NPC, -11.67, 3, 77.2, 1, 0)
+ MovementLoopAddLocation(NPC, -16.8, 3, 81.5, 1, 0)
+ MovementLoopAddLocation(NPC, -20.81, 3, 83.83, 1, 0)
+ MovementLoopAddLocation(NPC, -23.52, 3.04, 84.69, 1, 0)
+end
+
+function Action(NPC)
+ local choice = MakeRandomInt(1, 4)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "peer", 0, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "", "", "ponder", 0, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "", "", "stare", 0, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0)
+ end
+end
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1360079)
+ UseWidget(door)
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/InnkeeperZixiWuggle.lua b/server/SpawnScripts/TempleSt/InnkeeperZixiWuggle.lua
new file mode 100755
index 000000000..087f5de96
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/InnkeeperZixiWuggle.lua
@@ -0,0 +1,174 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/InnkeeperZixiWuggle.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.14 04:11:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 12 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_aoi_gm_523a90f5.mp3", "Ah hello there! A traveling adventurer. You're in luck, we just had a recent death... err last minute cancellation.", "bye", 0, 0, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 0, 0, Spawn, 0)
+ end
+end
+
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ else
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 0, 0, Spawn, 0)
+ end
+end
+
+
+--[[function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hello, I am the Innkeeper for this district. We have received word of your arrival and have a room prepared for you. Would you like to know more about housing?")
+ Dialog.AddVoiceover("innkeeper_melus/fprt_hood04/innkeeper010.mp3", 328655352, 2391913046)
+ Dialog.AddOption("Yes.", "Dialog9")
+ Dialog.AddOption("No thanks.")
+ Dialog.Start()
+end]]--
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ Dialog.AddDialog("Room rates are by the night not by the hour!")
+ Dialog.AddVoiceover("voiceover/english/optional2/human_eco_evil_1/ft/service/innkeeper/human_innkeeper_service_evil_1_hail_gf_252bf582.mp3", 3227496969, 3582150955)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ Dialog.AddDialog("Can't you see I'm busy doing some very important things now. I don't care if there's any hot water! ")
+ Dialog.AddVoiceover("voiceover/english/optional2/human_eco_evil_1/ft/service/innkeeper/human_innkeeper_service_evil_1_hail_gf_a81dfaee.mp3", 2674682883, 3858759889)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn, 0)
+ elseif choice == 3 then
+ Dialog.AddDialog("What! What do you want?")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1005.mp3", 0, 0)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn, 0)
+ elseif choice == 4 then
+ Dialog.AddDialog("Look I'm no cook, but I was going to have some fresh kidneys myself. You want me to get you a pair?")
+ Dialog.AddVoiceover("voiceover/english/optional2/human_eco_evil_1/ft/service/innkeeper/human_innkeeper_service_evil_1_hail_gf_cac7726b.mp3", 595200411, 980025698)
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn, 0)
+ end
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
+ Dialog.AddOption("What is the marketboard for?", "Dialog6")
+ Dialog.AddOption("What is my house for?", "Dialog5")
+ Dialog.AddOption("Nothing right now.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("To place an item in your house you must first find the item in your inventory, once you have done so right-click on the item and select the ‘place’ option. You will then see a tinted outline of your item in your house, when the item is highlighted green you may place it in that location, if it is highlighted red you cannot.")
+ Dialog.AddVoiceover("innkeeper_uglar_splinterthumb/fprt_hood04/innkeeper002.mp3", 1857367756, 71125254)
+ Dialog.AddOption("What kind of housing is available to me?", "Dialog8")
+ Dialog.AddOption("What is the marketboard for?", "Dialog6")
+ Dialog.AddOption("What is my house for?", "Dialog5")
+ Dialog.AddOption("That's enough for now, thanks.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The marketboard is a house item, similar to books, beds, pets and other such items. What sets the marketboard apart from the rest however is that once your marketboard is mounted on a wall in your home you can use it to sell items to other citizens of Freeport. These items can be purchased by your fellow citizens at a Broker. Brokers can be found in all primary districts of the city as well as in the Tradeskill wholesalers.")
+ Dialog.AddVoiceover("innkeeper_uglar_splinterthumb/fprt_hood04/innkeeper005.mp3", 2660278888, 1868873136)
+ Dialog.AddOption("How do I sell items using my marketboard?", "Dialog4")
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What kind of housing is available to me?", "Dialog8")
+ Dialog.AddOption("What is my house for?", "Dialog5")
+ Dialog.AddOption("That's enough for now, thanks.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes. For a fee, brokers are willing to post the goods you are willing to sell to other adventurers. Brokers can be found in all primary districts of the city as well as in the Tradeskill wholesalers.")
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
+ Dialog.AddOption("What is the marketboard for?", "Dialog6")
+ Dialog.AddOption("That's enough for now, thanks.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Selling through your market board works the same way as directly selling through a broker, it just allows you to do it from the comfort of your home.")
+ Dialog.AddVoiceover("innkeeper_uglar_splinterthumb/fprt_hood04/innkeeper006.mp3", 2214886491, 395905537)
+ Dialog.AddOption("I can sell things through a broker?", "Dialog2")
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
+ Dialog.AddOption("What is my house for?", "Dialog5")
+ Dialog.AddOption("That's enough for now, thanks.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You will find that your house has many uses, the first of which is the ability to store house items. Each house has a limit to the number of house items you can place in it, so as you gain more possessions you wish to display you will need larger houses to do so.")
+ Dialog.AddVoiceover("innkeeper_uglar_splinterthumb/fprt_hood04/innkeeper007.mp3", 2480708099, 1450070298)
+ Dialog.AddOption("Anything else?")
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What kind of housing is available to me?", "Dialog10")
+ Dialog.AddOption("What is the marketboard for?", "Dialog6")
+ Dialog.AddOption("That's enough for now, thanks.")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Many different kinds of housing are available in the city of Freeport. In reward for your services, the Overlord has awarded you a one bedroom house for free at this time.")
+ Dialog.AddVoiceover("innkeeper_uglar_splinterthumb/fprt_hood04/innkeeper003.mp3", 3512269476, 1166894802)
+ Dialog.AddOption("Is any other housing available?", "Dialog10")
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What is the marketboard for?", "Dialog6")
+ Dialog.AddOption("What is my house for?", "Dialog5")
+ Dialog.AddOption("That's enough for now, thanks.")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, the grand city of Freeport has houses ranging from the basic one bedroom model on up to 5 bedroom apartments, although the most ostentatious of these are only available to the most prestigious citizens of the city.")
+ Dialog.AddVoiceover("innkeeper_uglar_splinterthumb/fprt_hood04/innkeeper004.mp3", 1780122794, 3374523197)
+ Dialog.AddOption("How can I place an item in my house?", "Dialog7")
+ Dialog.AddOption("What is the marketboard for?", "Dialog6")
+ Dialog.AddOption("What is my house for?", "Dialog5")
+ Dialog.AddOption("That’s enough for now, thanks.")
+ Dialog.Start()
+end
+
diff --git a/server/SpawnScripts/TempleSt/Irina.lua b/server/SpawnScripts/TempleSt/Irina.lua
new file mode 100755
index 000000000..b05ded080
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Irina.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Irina.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.27 07:10:12
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,26)then
+ Garbled(NPC,Spawn)
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,26)then
+ if math.random(0,100)<40 then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ end
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
diff --git a/server/SpawnScripts/TempleSt/Krysa.lua b/server/SpawnScripts/TempleSt/Krysa.lua
new file mode 100755
index 000000000..e8954eaa8
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Krysa.lua
@@ -0,0 +1,199 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Krysa.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.22 02:10:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local Makeup = 5925
+local EnchantedEvening = 5926
+local TheMissingBook = 5681
+
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Makeup)
+ ProvidesQuest(NPC, EnchantedEvening)
+ SetInfoStructString(NPC, "action_state", "dance")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif GetTempVariable(NPC,"CalloutTimer")=="false"then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ AddTimer(NPC,24000,"ResetCallout",1,Spawn)
+ if not HasCompletedQuest(Spawn, Makeup) and not HasQuest(Spawn, Makeup) then
+ if MakeRandomInt(0, 100) <= 100 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/krysa/fprt_hood03/100_barentertainerkrysa_callout_a56d9ec5.mp3", "Welcome to Pshavost's bar! You want a drink?", "flustered", 3717169563, 2070235233, Spawn, 0)
+ end
+ elseif HasQuest(Spawn,Makeup) then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/krysa/fprt_hood03/100_barentertainerkrysa_multhail3_1c499723.mp3", "Where's my makeup? I need makeup for my pretty face!", "grumble", 840511031, 3336551011, Spawn, 0)
+ elseif HasCompletedQuest(Spawn, Makeup) and not HasCompletedQuest(Spawn, EnchantedEvening) and not HasQuest(Spawn, EnchantedEvening) then
+ if MakeRandomInt(0, 100) <= 85 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/krysa/fprt_hood03/100_barentertainerkrysa_multhail2_7c1029d0.mp3", "Welcome to Pshavost's bar. If you want a drink, find my ugly sister Krasa or see Pshavost at the bar.", "bye", 766013067, 711037507, Spawn, 0)
+ end
+ end
+end
+end
+
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn, Makeup) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, Makeup) and GetQuestStep(Spawn,Makeup) ==1 then
+ DialogWait_Quest1(NPC,Spawn)
+elseif HasQuest(Spawn, Makeup) and GetQuestStep(Spawn,Makeup) ==2 then
+ DialogWait_Quest1(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, EnchantedEvening) then
+ Dialog3_Quest2 (NPC,Spawn)
+elseif HasQuest(Spawn, EnchantedEvening) and GetQuestStep(Spawn,EnchantedEvening) ==1 then
+ Dialog3_Quest2 (NPC,Spawn)
+elseif HasQuest(Spawn, EnchantedEvening) and GetQuestStep(Spawn,EnchantedEvening) ==2 then
+ Dialog3_Quest2 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome to Pshavost's bar. If you want a drink, find my ugly sister Krasa or see Pshavost at the bar.")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/mer_barentertainerkrysa_hail.mp3", 2129178406, 2161516525)
+ PlayFlavor(NPC,"","","hello",0,0,Spawn)
+ if CanReceiveQuest(Spawn, Makeup) then
+ Dialog.AddOption("Your sister?","Dialog1_Quest1")
+ end
+ if GetQuestStep(Spawn, TheMissingBook) == 1 then
+ Dialog.AddOption("Enough! Where is the stolen tome from Longshadow Alley?","Dialog6")
+ end
+ Dialog.AddOption("I just might.")
+ Dialog.Start()
+end
+
+function Dialog1_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Can't you see her from here? She's the ugliest ratonga in the street. That's why I'm an entertainer, and she does dirty work like picking up rubbish! Haha! Perhaps I'll tell her to give you a free drink if you help pretty, pretty Krysa.")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/quests/krysa/krysa_x1_initial.mp3", 4232264280, 1676289715)
+ PlayFlavor(NPC, "", "", "giggle", 0, 0, Spawn)
+ Dialog.AddOption("I could use a drink...","Offer1")
+ Dialog.AddOption("I wouldn't trust you to scrub my boots, much less fetch me a drink.")
+ Dialog.Start()
+end
+
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, Makeup)
+end
+
+function DialogWait_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Where's my makeup? I need makeup for my pretty face!")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/100_barentertainerkrysa_multhail3_1c499723.mp3", 840511031, 3336551011)
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ if GetQuestStep(Spawn, Makeup)==2 then
+ Dialog.AddOption("Brashk said he didn't have any more makeup.","Dialog2_Quest1")
+ else
+ Dialog.AddOption("I'm still on my way!")
+ end
+ if GetQuestStep(Spawn, TheMissingBook) == 1 then
+ Dialog.AddOption("Enough! Where is the stolen tome from Longshadow Alley?","Dialog6")
+ end
+ Dialog.Start()
+end
+
+function Dialog2_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn, Makeup, 2)
+ Dialog.AddDialog("Wahaaa?! That filthy rubbish picker lied to me!! He said he had all the makeups I would ever need! Bah! Spit on that dirt licker next time I sees him. Now I must make my ugly sister look even uglier! You no bring me any makeups, so I no tell Krasa to give you's a free drink. Go away from me! You stink like a rubbish picker!")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/quests/krysa/krysa_x1_finish.mp3", 34509770, 2231226281)
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddOption("Hey... That was uncalled for!","Continue")
+ Dialog.AddOption("Well, no amount of makup will help 'that' face!","Continue")
+ Dialog.Start()
+end
+
+function Continue(NPC,Spawn)
+end
+
+function Dialog3_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddDialog("Krysa no help you now. She busy with other customers. You come back later, yes?")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/100_barentertainerkrysa_multhail1_e0137dd4.mp3", 1716069852, 2277389123)
+ if CanReceiveQuest(Spawn,EnchantedEvening) then
+ Dialog.AddOption("Have you managed to get any more makeup?","Dialog4_Quest2")
+ end
+ if GetQuestStep(Spawn, EnchantedEvening)==2 then
+ Dialog.AddOption("Raban said she would perform the enchantments asked about for free.","Dialog5_Quest2")
+ end
+ if GetQuestStep(Spawn, TheMissingBook) == 1 then
+ Dialog.AddOption("Enough! Where is the stolen tome from Longshadow Alley?","Dialog6")
+ end
+ Dialog.AddOption("Fine.")
+ Dialog.Start()
+end
+
+function Dialog4_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("No, I didn't get more makeups. Are you rubbing it in Krysa's face, eh? If you are then I'll cuts you! I warn you! If you want to HELP pretty, pretty Krysa, then I can use you...")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/quests/krysa/krysa_x2_initial.mp3", 2921023636, 1840780338)
+ Dialog.AddOption("What did you have in mind?","Offer2")
+ Dialog.AddOption("Pretty pretty sure I don't.")
+ Dialog.Start()
+end
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, EnchantedEvening)
+end
+
+
+function Dialog5_Quest2(NPC,Spawn)
+ SetStepComplete(Spawn, EnchantedEvening, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ Dialog.AddDialog("She will? She will! Ohhh ... that Erudite is the most wonderful person I ever met! She cares so much about me that she gives me more spells! Haha! If only Spezi and Krasa knew what I was doing to them. Hahaha!!! They are stupid and ugly! Hahaha! Now you go! I no want Krasa to know what I am doing.")
+ Dialog.AddVoiceover("voiceover/english/krysa/fprt_hood03/quests/krysa/krysa_x2_finish.mp3", 1881536618, 1447012024)
+ Dialog.AddOption("Good luck!","Continue")
+ Dialog.AddOption("I wonder if you'll ever figure out that... wait, nevermind.","Continue")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I do nots know who you speaks of! You mistakes me for someoneses else!")
+ Dialog.AddVoiceover("voiceover/english/spezi_the_street_hag/fprt_hood05/quests/lotniklria/falseratonga_lotni_x1_initial.mp3", 1342345543, 1293466742)
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddOption("Alright.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Lexhin.lua b/server/SpawnScripts/TempleSt/Lexhin.lua
new file mode 100755
index 000000000..ec32da270
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Lexhin.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Lexhin.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:40
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcology2Callout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -8.14, 3, 116.58, 1, 1)
+ MovementLoopAddLocation(NPC, -8.14, 3, 116.58, 1, MakeRandomInt(20,35),"Dig")
+ MovementLoopAddLocation(NPC, -8.14, 3, 116.58, 1, 0)
+ MovementLoopAddLocation(NPC, -4.47, 3, 114.29, 1, 0)
+ MovementLoopAddLocation(NPC, 7.44, 3, 106.62, 1, 1)
+ MovementLoopAddLocation(NPC, 7.44, 3, 106.62, 1, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 8.53, 3, 111.42, 1, 1)
+ MovementLoopAddLocation(NPC, 8.53, 3, 111.42, 1, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 12.62, 3, 105.88, 1, 0)
+ MovementLoopAddLocation(NPC, 13.12, 3, 105.84, 1, 1)
+ MovementLoopAddLocation(NPC, 13.12, 3, 105.84, 1, MakeRandomInt(20,35),"Dig")
+ MovementLoopAddLocation(NPC, 13.12, 3, 105.84, 1, 0)
+ MovementLoopAddLocation(NPC, 10.88, 3, 106.13, 1, 0)
+ MovementLoopAddLocation(NPC, 6.87, 3, 107.69, 1, 0)
+ MovementLoopAddLocation(NPC, -4.56, 3, 114.4, 1, 1)
+ MovementLoopAddLocation(NPC, -4.56, 3, 114.4, 1, 30,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -5.92, 3, 117.5, 1, 1)
+ MovementLoopAddLocation(NPC, -5.92, 3, 117.5, 1, 30,"EcologyEmotes")
+end
+
+function Dig(NPC, Spawn)
+ PlayFlavor(NPC, "","","gathering_search",0,0)
+end
diff --git a/server/SpawnScripts/TempleSt/Lushi.lua b/server/SpawnScripts/TempleSt/Lushi.lua
new file mode 100755
index 000000000..b77fae900
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Lushi.lua
@@ -0,0 +1,68 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Lushi.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:19
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -0.09, 3, 61.19, 2, 0)
+ MovementLoopAddLocation(NPC, 1.77, 3, 65.01, 2, 0)
+ MovementLoopAddLocation(NPC, 4.25, 3, 66.12, 2, 0)
+ MovementLoopAddLocation(NPC, 10.98, 3, 68.77, 2, 0)
+ MovementLoopAddLocation(NPC, 16.4, 3.01, 70.9, 2, 0)
+ MovementLoopAddLocation(NPC, 28.12, 3, 71.15, 2, 0)
+ MovementLoopAddLocation(NPC, 28.12, 3, 71.15, 2, 1)
+ MovementLoopAddLocation(NPC, 28.12, 3, 71.15, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 28.12, 3, 71.15, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 27.73, 3, 70.1, 2, 0)
+ MovementLoopAddLocation(NPC, 30.09, 3, 69.58, 2, 0)
+ MovementLoopAddLocation(NPC, 35.19, 3, 70.16, 2, 0)
+ MovementLoopAddLocation(NPC, 36.93, 3, 67.6, 2, 1)
+ MovementLoopAddLocation(NPC, 36.93, 3, 67.6, 2, 25,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 38.26, 3, 71.4, 2, 0)
+ MovementLoopAddLocation(NPC, 39.62, 3, 73.96, 2, 0)
+ MovementLoopAddLocation(NPC, 41.61, 3, 73.41, 2, 0)
+ MovementLoopAddLocation(NPC, 53.02, 3, 66.59, 2, 0)
+ MovementLoopAddLocation(NPC, 43.5, 3, 50.75, 2, 0)
+ MovementLoopAddLocation(NPC, 42.75, 3, 49.63, 2, 0)
+ MovementLoopAddLocation(NPC, 32.66, 3, 56.09, 2, 0)
+ MovementLoopAddLocation(NPC, 29.14, 3, 60.11, 2, 0)
+ MovementLoopAddLocation(NPC, 23.55, 3, 61.79, 2, 0)
+ MovementLoopAddLocation(NPC, 20.09, 3, 69.23, 2, 0)
+ MovementLoopAddLocation(NPC, 15.69, 3.01, 72.02, 2, 0)
+ MovementLoopAddLocation(NPC, 7.54, 3, 69.92, 2, 0)
+ MovementLoopAddLocation(NPC, 2.07, 3, 66.84, 2, 0)
+ MovementLoopAddLocation(NPC, -0.61, 3, 65.25, 2, 0)
+ MovementLoopAddLocation(NPC, -1.31, 3, 52.73, 2, 1)
+ MovementLoopAddLocation(NPC, -1.31, 3, 52.73, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -1.31, 3, 52.73, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -0.59, 3.00, 55.49, 2, 0)
+ MovementLoopAddLocation(NPC, 2, 3, 57.22, 2, 1)
+ MovementLoopAddLocation(NPC, 2, 3, 57.22, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 2, 3, 57.22, 2, 20,"EcologyEmotes")
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/MenderKrellian.lua b/server/SpawnScripts/TempleSt/MenderKrellian.lua
new file mode 100755
index 000000000..db1085000
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MenderKrellian.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MenderKrellian.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.04 05:11:11
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ RandomGreeting(NPC, Spawn)
+ else
+ PlayFlavor(NPC, "", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 0, 0, Spawn, 0)
+ end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/mender/ratonga_mender_service_evil_1_hail_gm_3b60608.mp3", "I can emphatically say repairing weapons is much more reliable than buying new ones. Would I lie? ", "agree", 3611464177, 4252627386, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/mender/ratonga_mender_service_evil_1_hail_gm_96a8c8ad.mp3", "Nah, no need to buy a completely new set. I'll use some of this special solvent I have. It'll fix it up good as new!", "no", 3265136163, 636302546, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/mender/ratonga_mender_service_evil_1_hail_gm_a2234480.mp3", "Once we're done, you'll have the strongest armor in all of the city! I guarantee it!", "wink", 3250181258, 4239977036, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/MerchantQwergoTogglesmeet.lua b/server/SpawnScripts/TempleSt/MerchantQwergoTogglesmeet.lua
new file mode 100755
index 000000000..f5169fe28
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MerchantQwergoTogglesmeet.lua
@@ -0,0 +1,173 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MerchantQwergoTogglesmeet.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.30 04:10:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local QwergosPlan = 5916
+
+function spawn(NPC)
+ ProvidesQuest(NPC, QwergosPlan)
+ Emotes(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ AddTimer(NPC,MakeRandomInt(2000,4000),"Vlepo")
+end
+
+function LeaveRange(NPC,Spawn)
+ Vlepo(NPC,Spawn)
+if GetTempVariable(NPC,"CalloutTimer")=="true" then
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+end
+
+function InRange(NPC,Spawn)
+if CanReceiveQuest(Spawn,QwergosPlan) and GetTempVariable(NPC,"CalloutTimer") ~= "true" then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/100_merchantqwergobtogglesmeet_callout_3ca72d41.mp3", "I have something so very important to say to you! Will you not hear me out?", "wave", 892700118, 2368875233, Spawn, 0)
+ AddTimer(NPC,24000,"ResetCallout",1,Spawn)
+end
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function Emotes(NPC,Spawn)
+ local Choice = MakeRandomInt(1,4)
+
+if GetTempVariable(NPC,"CalloutTimer")=="false" then
+if Choice == 1 then
+ if not IsPlayer(GetTarget(NPC)) then
+ FaceTarget(NPC)
+ PlayFlavor(NPC, "","","heckno",0,0)
+ end
+ AddTimer(NPC,3200,"Emotes")
+
+elseif Choice == 2 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","shakefist",0,0)
+ end
+ AddTimer(NPC,5200,"Emotes")
+
+elseif Choice == 3 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","grumble",0,0)
+ end
+ AddTimer(NPC,5000,"Emotes")
+
+elseif Choice == 4 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","flex",0,0)
+ end
+ AddTimer(NPC,7000,"Emotes")
+ end
+
+else --If Recently Called Out to Player
+ AddTimer(NPC,7000,"Emotes")
+ end
+end
+
+function Vlepo(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local VlepoRatonga = GetSpawnByLocationID(zone,420536)
+ SetTarget(NPC,VlepoRatonga)
+ FaceTarget(NPC, VlepoRatonga)
+
+end
+
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn, QwergosPlan) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, QwergosPlan) and GetQuestStep(Spawn,QwergosPlan) <=2 then
+ Dialog2(NPC,Spawn)
+elseif HasQuest(Spawn, QwergosPlan) and GetQuestStep(Spawn,QwergosPlan) ==3 then
+ Dialog1 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Buy from the Togglesmeets! Those rats have inferior goods made from shoddy workmanship. Don't believe their lies, I tell you.")
+ Dialog.AddVoiceover("voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/mer_merchantqwergobtogglesmeet.mp3", 2636370755, 418957991)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
+ if CanReceiveQuest(Spawn, QwergosPlan) then
+ Dialog.AddOption("Why don't you move your stall somewhere else?","Dialog1a")
+ end
+ if GetQuestStep(Spawn, QwergosPlan)==3 then
+ Dialog.AddOption("Chrna gave me the Rumblebumbler... I should have asked her why it was ticking.","Dialog3")
+ end
+ Dialog.AddOption("Let me see your wares and judge for myself.")
+ Dialog.Start()
+end
+
+function Dialog1a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Move my stall? Why should I move it? Especially when this is a prime location, precisely selected by careful analysis of current marketing parameters. The solution to this problem is not for us Togglesmeets to move but for those rats to be dislodged! And I could do it at once, but for lack of an igniter rumblerod, which I have not. Perhaps you would get one for me?")
+ Dialog.AddVoiceover("voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/quests/qwergotogglesmeet/qwergo_x1_initial.mp3", 1165405636, 3920431354)
+ PlayFlavor(NPC, "", "", "whome", 0, 0, Spawn)
+ Dialog.AddOption("Perhaps I could. What am I looking for again?","Offer1")
+ Dialog.AddOption("You should just move! No need for crazy gadgets!")
+ Dialog.Start()
+end
+
+
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, QwergosPlan)
+end
+
+function Dialog2(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("I do not see the igniter rumblerod in your possession. Perhaps I must explain to you again its significance to my family's overall business plan. Or ... you could simply go and get it, as I asked.")
+ Dialog.AddOption("Hold on! I'm still looking!")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, good-good-good! Oh dear! You triggered the bi-toggle capacitance diode! I must deactivate it at once, or the entire city will be blown well into the sky ... now let's see ... was it the blue rod or the red ... I think the red, yes ... no! The blue! It's the blue! There ... snap that in place ... and (*whew*) ... I have just averted a disaster of municipal proportions.")
+ Dialog.AddVoiceover("voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/quests/qwergotogglesmeet/qwergo_x1_finish.mp3", 79547774, 518183957)
+ PlayFlavor(NPC, "", "", "ponder", 0, 0, Spawn)
+ Dialog.AddOption("Well... good! What could have started it? I didn't ask Chrna.","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ SetStepComplete(Spawn, QwergosPlan, 3)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ah, perhaps it was joggled in transport, then. Delicate little items these are. If it's still operational, I will carry out my original plan. Otherwise, if it's not, I will cleverly offer it to the rats in exchange for their relocation. Yes, yes, ingenious, that is! Think like a rat when dealing with rats. Oh, you're still here. Take your payment.")
+ Dialog.AddVoiceover("voiceover/english/merchant_qwergo_togglesmeet/fprt_hood03/quests/qwergotogglesmeet/qwergo_x1_finish2.mp3", 1828195215, 1976528953)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("How clever of you... I'll take my coin. Thanks.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/TempleSt/MerchantSvasha.lua b/server/SpawnScripts/TempleSt/MerchantSvasha.lua
new file mode 100755
index 000000000..f9323f2d4
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MerchantSvasha.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MerchantSvasha.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:35
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ RandomGreeting(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,5)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/housing/ratonga_housing_service_evil_1_hail_gf_1330ddd8.mp3", "We don't sell contraband furnishings here. We sell only pieces approved by the Overlord!", "salute_freeport", 1392993711, 273366781, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/housing/ratonga_housing_service_evil_1_hail_gf_33fe2ae6.mp3", "Don't be ashamed, friend. We have pieces that even ratongas can afford!", "wink", 4096328055, 3693524473, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/housing/ratonga_housing_service_evil_1_hail_gf_b7e3bdf0.mp3", "Welcome friend of the Overlord, please look around. We have several pieces from the Citadel itself! ", "bow", 1752480420, 1670014463, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/housing/ratonga_housing_service_evil_1_hail_gf_157bc4f4.mp3", "Please don't touch anything. This isn't a museum. If you break it, you buy it!", "scold", 3969302593, 2173248115, Spawn, 0)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/housing/ratonga_housing_service_evil_1_aoi_gf_37d02a81.mp3", "This is it, adventurer, the Sir Lucan day sale! For the next 24 hours no interest until the next cataclysm! ", "beckon", 3327307554, 1657108613, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/MerchantTwergoTogglesmeet.lua b/server/SpawnScripts/TempleSt/MerchantTwergoTogglesmeet.lua
new file mode 100755
index 000000000..5a7408ddd
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MerchantTwergoTogglesmeet.lua
@@ -0,0 +1,185 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MerchantTwergoTogglesmeet.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.30 03:10:09
+ Script Purpose :
+ :
+--]]
+--
+require "SpawnScripts/Generic/DialogModule"
+
+local TwergosPlan = 5915
+
+function spawn(NPC)
+ ProvidesQuest(NPC, TwergosPlan)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ AddTimer(NPC,2000,"Vleko")
+ AddTimer(NPC,MakeRandomInt(2000,4000),"Emotes")
+end
+
+function LeaveRange(NPC,Spawn)
+ Vleko(NPC,Spawn)
+if GetTempVariable(NPC,"CalloutTimer")=="true" then
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+end
+
+function InRange(NPC,Spawn)
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function Emotes(NPC,Spawn)
+ local Choice = MakeRandomInt(1,6)
+
+if GetTempVariable(NPC,"CalloutTimer")=="false" then
+if Choice == 1 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","shame",0,0)
+ end
+ AddTimer(NPC,5200,"Emotes")
+
+elseif Choice == 2 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","sulk",0,0)
+ end
+ AddTimer(NPC,5200,"Emotes")
+
+elseif Choice == 3 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","point",0,0)
+ end
+ AddTimer(NPC,5000,"Emotes")
+
+elseif Choice == 4 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","threaten",0,0)
+ end
+ AddTimer(NPC,7300,"Emotes")
+
+elseif Choice == 5 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","swear",0,0)
+ end
+ AddTimer(NPC,7300,"Emotes")
+elseif Choice == 6 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","peer",0,0)
+ end
+ AddTimer(NPC,7300,"Emotes")
+ end
+else --If Recently Called Out to Player
+ AddTimer(NPC,7000,"Emotes")
+ end
+end
+
+function Vleko(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local VlekoRatonga = GetSpawnByLocationID(zone,420537)
+ SetTarget(NPC,VlekoRatonga)
+ FaceTarget(NPC, VlekoRatonga)
+
+end
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn, TwergosPlan) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, TwergosPlan) and GetQuestStep(Spawn,TwergosPlan) ==1 then
+ Dialog2(NPC,Spawn)
+elseif HasQuest(Spawn, TwergosPlan) and GetQuestStep(Spawn,TwergosPlan) ==2 then
+ Dialog1 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Dialog1(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My dad runs the best shop in town! A much better shop, mind you, than those ratmen trying to ruin our business.")
+ Dialog.AddVoiceover("voiceover/english/merchant_twergo_togglesmeet/fprt_hood03/mer_merchanttwergobtogglesmeet.mp3", 1379589936, 3170428831)
+ if CanReceiveQuest(Spawn, TwergosPlan) then
+ Dialog.AddOption("What makes you so sure you're better than them?","Dialog1a")
+ end
+ if GetQuestStep(Spawn, TwergosPlan)==2 then
+ Dialog.AddOption("Here are your ripe zombie brains, just as you ordered.","Dialog3")
+ end
+ Dialog.AddOption("Let me see you wares and judge for myself.")
+ Dialog.Start()
+end
+
+function Dialog1a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My father always has some plan in the works but never quite gets the bugs out of the details. I, on the other hand, have thought up a flawless scheme. I'm building a device that redirects the neuro-synaptic pathways of anyone who approaches within 10.24 decapaces of our shop, inducing an externally triggered behavioral modification to our benefit.")
+ Dialog.AddVoiceover("voiceover/english/merchant_twergo_togglesmeet/fprt_hood03/quests/twergotogglesmeet/twergo_x1_initial.mp3", 3607729720, 766730315)
+ PlayFlavor(NPC, "", "", "agree", 0, 0, Spawn)
+ Dialog.AddOption("What on Norrath are you going on about?","Dialog1b")
+ Dialog.AddOption("Tell me more! What does it do?","Dialog1b")
+ Dialog.AddOption("I've no time for your schemes! I'm busy with my own!")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's a mind controller! Brilliant, yes? Everyone who comes near will feel an unstoppable urge to buy from us! And it's almost completed, but I still need a bioadaptive energy source. Perhaps you'll help me?")
+ Dialog.AddVoiceover("voiceover/english/merchant_twergo_togglesmeet/fprt_hood03/quests/twergotogglesmeet/twergo_x1_initial2.mp3", 3740705944, 3329604525)
+ PlayFlavor(NPC, "", "", "happy", 0, 0, Spawn)
+ if CanReceiveQuest(Spawn, TwergosPlan) then
+ Dialog.AddOption("That DOES sound interesting. What do you need?","Offer1")
+ end
+ Dialog.AddOption("I'd rather not improve YOUR ability to control my mind!")
+ Dialog.Start()
+end
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, TwergosPlan)
+end
+
+function Dialog2(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ Dialog.AddDialog("Good friend, those zombie brains are not going to gallump over here by themselves! You must fetch them for me!")
+ Dialog.AddOption("I'll be back with some fresh juicy ones soon.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Delightful! They're nice and smelly too ... exactly what I need. If they meet my specifications as a bioadaptive energy source, my device will control the minds of people everywhere ... within this trading plaza, that is. I shall call it my \"Anti-Ratonga Transaction Detractor!\"")
+ Dialog.AddVoiceover("voiceover/english/merchant_twergo_togglesmeet/fprt_hood03/quests/twergotogglesmeet/twergo_x1_finish.mp3", 657641506, 1581390099)
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
+ Dialog.AddOption("Why don't you make it so that it would work everywhere? You could rule the world!","Dialog3a")
+ Dialog.Start()
+end
+
+function Dialog3a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ SetStepComplete(Spawn, TwergosPlan, 2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What's that? Rule the world? Now, that would be silly. If we had that many customers our little shop could never keep up with the demand!")
+ Dialog.AddVoiceover("voiceover/english/merchant_twergo_togglesmeet/fprt_hood03/quests/twergotogglesmeet/twergo_x1_finish2.mp3", 1105993552, 3488280823)
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("Good point... and good luck.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/TempleSt/MerchantVleko.lua b/server/SpawnScripts/TempleSt/MerchantVleko.lua
new file mode 100755
index 000000000..1c16ffb6c
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MerchantVleko.lua
@@ -0,0 +1,144 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MerchantVleko.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 11:10:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local VlekoPlan = 5873
+
+function spawn(NPC)
+ ProvidesQuest(NPC, VlekoPlan)
+ Emotes(NPC)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ AddTimer(NPC,MakeRandomInt(2000,4000),"Twergo")
+end
+
+function LeaveRange(NPC,Spawn)
+ Twergo(NPC,Spawn)
+if GetTempVariable(NPC,"CalloutTimer")=="true" then
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+end
+
+function InRange(NPC,Spawn)
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function Emotes(NPC,Spawn)
+ local Choice = MakeRandomInt(1,5)
+
+if GetTempVariable(NPC,"CalloutTimer")=="false" then
+if Choice == 1 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","cutthroat",0,0)
+ end
+ AddTimer(NPC,5200,"Emotes")
+
+elseif Choice == 2 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","chuckle",0,0)
+ end
+ AddTimer(NPC,5200,"Emotes")
+
+elseif Choice == 3 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","neener",0,0)
+ end
+ AddTimer(NPC,5000,"Emotes")
+
+elseif Choice == 4 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","threaten",0,0)
+ end
+ AddTimer(NPC,7300,"Emotes")
+
+elseif Choice == 5 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","whome",0,0)
+ end
+ AddTimer(NPC,7300,"Emotes")
+ end
+
+else --If Recently Called Out to Player
+ AddTimer(NPC,7000,"Emotes")
+ end
+end
+
+function Twergo(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local TwergoGnome = GetSpawnByLocationID(zone,420561)
+ SetTarget(NPC,TwergoGnome)
+ FaceTarget(NPC, TwergoGnome)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+function Dialog1(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Kahhh!!! I hate those Togglesmeets! Their items are shoddy. We only makes the finest quality items. Togglesmeets will sell you the unsafes! My poppa sells you good quality!")
+ Dialog.AddVoiceover("voiceover/english/merchant_vleko/fprt_hood03/mer_merchantvleko.mp3",4226142003,2683221742)
+
+
+ if CanReceiveQuest(Spawn, VlekoPlan) then
+ Dialog.AddOption("Ridiculous! Convince them to move their stall!", "Dialog1a")
+ elseif GetQuestStep(Spawn, VlekoPlan)==2 then
+ Dialog.AddOption("Here is the orcish sword you requested.", "Dialog2")
+ end
+ Dialog.AddOption("How about I just browse your wares.")
+ Dialog.Start()
+end
+
+
+
+function Dialog1a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("We do! We do! We tell them to leave, or they maybe have an accident. Accidents happen all the time. They don't believe us, but poppa says to wait and watch. Geheeea! Maybe you help me pass the time?")
+ Dialog.AddVoiceover("voiceover/english/merchant_vleko/fprt_hood03/quests/vleko/vleko_x1_initial.mp3",86797808,1238006206)
+ PlayFlavor(NPC, "","","nod",0,0, Spawn)
+ Dialog.AddOption("I could be persuaded... What do you have in mind?", "OfferQuest1")
+ Dialog.AddOption("I have better thing to do.")
+ Dialog.Start()
+end
+
+function OfferQuest1(NPC,Spawn)
+ if CanReceiveQuest(Spawn, VlekoPlan) then
+ OfferQuest(NPC, Spawn, VlekoPlan)
+ end
+end
+
+function Dialog2(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hide it! Hide it! If Togglesmeets see it then poppa will know what I'm doing! Okay, pass it to me. Good. Now, take this money and keep your mouth shut. I don't know you, and I've never seen you. Hehehehe ... soon, accidents happen to Togglesmeets.")
+ Dialog.AddVoiceover("voiceover/english/merchant_vleko/fprt_hood03/quests/vleko/vleko_x1_finish.mp3",1524753071,3531869216)
+ PlayFlavor(NPC, "","","scheme",0,0, Spawn)
+ Dialog.AddOption("Thanks. Good luck with your feud, or whatever!")
+ Dialog.Start()
+ SetStepComplete(Spawn, VlekoPlan, 2)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/MerchantVlepo.lua b/server/SpawnScripts/TempleSt/MerchantVlepo.lua
new file mode 100755
index 000000000..11f8eb800
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MerchantVlepo.lua
@@ -0,0 +1,159 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MerchantVlepo.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local VlepoPlan = 5917
+
+function spawn(NPC)
+ ProvidesQuest(NPC, VlepoPlan)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+ AddTimer(NPC,2000,"Qwergo")
+ AddTimer(NPC,MakeRandomInt(2500,4000),"Emotes")
+end
+
+function LeaveRange(NPC,Spawn)
+ Qwergo(NPC,Spawn)
+if GetTempVariable(NPC,"CalloutTimer")=="true" then
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+end
+
+function InRange(NPC,Spawn)
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function Emotes(NPC,Spawn)
+ local Choice = MakeRandomInt(1,5)
+
+if GetTempVariable(NPC,"CalloutTimer")=="false" then
+if Choice == 1 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","tantrum",0,0)
+ end
+ AddTimer(NPC,2200,"Emotes")
+
+elseif Choice == 2 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","shakefist",0,0)
+ end
+ AddTimer(NPC,5200,"Emotes")
+
+elseif Choice == 3 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","point",0,0)
+ end
+ AddTimer(NPC,5000,"Emotes")
+
+elseif Choice == 4 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","taunt",0,0)
+ end
+ AddTimer(NPC,7300,"Emotes")
+
+elseif Choice == 5 then
+ if not IsPlayer(GetTarget(NPC)) then
+ PlayFlavor(NPC, "","","glare",0,0)
+ end
+ AddTimer(NPC,6300,"Emotes")
+ end
+
+else --If Recently Called Out to Player
+ AddTimer(NPC,7000,"Emotes")
+ end
+end
+
+function Qwergo(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local QwergoGnome = GetSpawnByLocationID(zone,420562)
+ SetTarget(NPC,QwergoGnome)
+ FaceTarget(NPC, QwergoGnome)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if GetQuestStep(Spawn,VlepoPlan) ==1 then
+ PlayFlavor(NPC,"","Why you return? I don't see Shinska's weapon?","shrug",0,0,Spawn)
+ else
+ Dialog1(NPC,Spawn)
+ end
+end
+end
+
+
+function Dialog1(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("My son and I runs a reputable business. Only good quality items do we sell. Those thieving Togglesmeets will steal from you, so you wants to buy from us!")
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1046.mp3",0,0)
+
+
+ if CanReceiveQuest(Spawn, VlepoPlan) then
+ Dialog.AddOption("You must have quite the selection!", "Dialog2")
+ elseif GetQuestStep(Spawn, VlepoPlan)==2 then
+ Dialog.AddOption("Here is a weapon from Shinska's you wanted.", "Dialog3")
+ end
+ Dialog.AddOption("How about I just browse your wares.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, yes we do. My son and I were here first. We were selling all types of items, then those gnomes moved in. I'll put a stop to it soon! Maybe for some money you help me?")
+ PlayFlavor(NPC, "","","agree",0,0, Spawn)
+ if CanReceiveQuest(Spawn, VlepoPlan) then
+ Dialog.AddOption("If there is coin involved, I would be happy to.", "Offer")
+ end
+ Dialog.AddOption("Not right now. I'm busy.")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,VlepoPlan)
+end
+
+function Dialog3(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Good, good. I know my plan will work. Tonight when the gnomes leave, I slip in and put this weapon in their stall. Later, I call over Ogre Guard and tell him that the Shinska is missing a weapon. Dumb Ogre comes over here and checks my honest and clean merchandise, and then he sees the gnomes and smashes them into the ground. Here's your money. Now, you no say anything, you got it?")
+ PlayFlavor(NPC, "","","scheme",0,0, Spawn)
+ Dialog.AddOption("See what? I didn't see a thing...")
+ Dialog.Start()
+ SetStepComplete(Spawn,VlepoPlan,2)
+end
+
+--Whydo we even care? Those gnomes will blow themselves up one of these days, anyway.
+--Oh, yes we do. My son and I were here first. We were selling all types of items, then those gnomes moved in. I'll put a stop to it soon! Maybe for some money you help me?
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "", "You like good wares? You come to my stall!", "", 0, 0, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_2/ft/service/alchemist/ratonga_alchemist_service_evil_2_hail_gm_edc44700.mp3", "I need to get some eye of griffin, a bear's paw, the heart of an innocent man--that'll be tough in this city!", "confused", 3775164756, 640959658, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_2/ft/service/alchemist/ratonga_alchemist_service_evil_2_hail_gm_2a2e86d7.mp3", "Poison testers, it's been my biggest seller for the past several months. Of course, poison was a close second. ", "ponder", 968328188, 2082601565, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_2/ft/service/alchemist/ratonga_alchemist_service_evil_2_hail_gm_3e1da8c1.mp3", "Be careful what you touch in here. You're liable to kill us all!", "tapfoot", 299699712, 1352254492, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Methos.lua b/server/SpawnScripts/TempleSt/Methos.lua
new file mode 100755
index 000000000..87b3297bb
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Methos.lua
@@ -0,0 +1,338 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Methos.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 08:10:25
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(3000,6000),"ChefCheck")
+waypoints(NPC)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+function InRange(NPC,Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HissTimer")~="1" then
+ local Choice = MakeRandomInt(0,100)
+ if GetRace(Spawn)== 13 then
+ if Choice <=75 then
+ InRange_Attack(NPC,Spawn)
+ end
+ elseif Choice <= 40 then
+ InRange_Attack(NPC,Spawn)
+ end
+end
+end
+
+function InRange_Attack(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ FaceTarget(NPC,Spawn)
+ AddTimer(NPC,1000,"HissAttack",1,Spawn)
+ elseif Choice == 2 then
+ AddTimer(NPC,500,"Hiss",1,Spawn)
+ end
+ SetTempVariable(NPC,"HissTimer", "1")
+ AddTimer(NPC,25000,"HissReset",1,Spawn)
+end
+
+
+function HissAttack(NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function Hiss(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ else
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss002.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+end
+
+function HissReset(NPC,Spawn)
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+
+function ChefCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ChefCheck")
+
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ if not IsInCombat(NPC) and Chef~= nil and not IsInCombat(Chef)then
+ local Distance = GetDistance(NPC,Chef,1)
+ if Distance <=4 then
+ Attack(Chef,NPC)
+ Attack(NPC,Chef)
+ local x = GetX(Chef)
+ local y = GetY(Chef)
+ local z = GetZ(Chef)
+ SetFollowTarget(Chef,NPC)
+ SetFollowTarget(NPC,Chef)
+ ToggleFollow(Chef)
+ ToggleFollow(NPC)
+ SetTarget(Chef,NPC)
+ FaceTarget(Chef,NPC)
+ FaceTarget(NPC,Chef)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"kill",1,Spawn)
+ end
+ end
+end
+end
+
+function kill (NPC,Spawn)
+ ApplySpellVisual(NPC,51)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","1h_sword_attack",0,0)
+ KillSpawn(NPC)
+ AddTimer(Chef,2500,"scoop")
+ AddTimer(NPC,3000,"Despawning")
+end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function scoop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","gathering_success",0,0)
+ Despawn(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Rat_1(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420362)
+ SetTempVariable(NPC,"HissTimer", "1")
+ if Rat1 == nil or not IsAlive(Rat1) then
+ SpawnByLocationID(zone,420362)
+ end
+ SetTempVariable(NPC,"HissTimer", "1")
+end
+
+function Rat_1_Run(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420362)
+ if Rat1 ~= nil then
+ waypoints2(Rat1)
+ end
+end
+
+function Rat_2(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420349)
+ if Rat1 == nil or not IsAlive(Rat1) then
+ SpawnByLocationID(zone,420349)
+ end
+ SetTempVariable(NPC,"HissTimer", "1")
+end
+
+function Rat_2_Run(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420349)
+ if Rat1 ~= nil then
+ waypoints2(Rat1)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 20.33, 2.97, 66.86, 1, 10,"Rat_1")
+ MovementLoopAddLocation(NPC, 25.7, 3, 60.61, 1, 1,"Rat_1_Attack")
+ MovementLoopAddLocation(NPC, 25.7, 3, 60.61, 1, 1,"Rat_1_Target")
+ MovementLoopAddLocation(NPC, 25.7, 3, 60.61, 1, 1,"Rat_1_Run")
+ MovementLoopAddLocation(NPC, 33.51, 3, 54.06, 6, 0)
+ MovementLoopAddLocation(NPC, 43.49, 3, 50.18, 6, 0)
+ MovementLoopAddLocation(NPC, 49.45, 3, 59.19, 6, 0)
+ MovementLoopAddLocation(NPC, 54.14, 3, 65.87, 6, 0)
+ MovementLoopAddLocation(NPC, 54.13, 3, 67.46, 2, 2,"ResetTarget")
+ MovementLoopAddLocation(NPC, 55.9, 3, 70.62, 1, 10,"HissReset")
+ MovementLoopAddLocation(NPC, 54.97, 3, 68.39, 1, 0)
+ MovementLoopAddLocation(NPC, 50.84, 3, 69.56, 1, 0)
+ MovementLoopAddLocation(NPC, 30.72, 3, 80.32, 1, 0)
+ MovementLoopAddLocation(NPC, 17.47, 3, 83.09, 1, 0)
+ MovementLoopAddLocation(NPC, 5.62, 3, 85.79, 1, 0)
+ MovementLoopAddLocation(NPC, -8.84, 3, 90.24, 1, 10)
+ MovementLoopAddLocation(NPC, -4.75, 3, 97.83, 1, 0)
+ MovementLoopAddLocation(NPC, -8.6, 3, 103.47, 1, 0)
+ MovementLoopAddLocation(NPC, -13.18, 3, 105.48, 1, 0)
+ MovementLoopAddLocation(NPC, -16.99, 2.95, 105.93, 1, 0)
+ MovementLoopAddLocation(NPC, -23.67, 2.86, 109.81, 1, 10)
+ MovementLoopAddLocation(NPC, -32.72, 3, 112.67, 1, 0)
+ MovementLoopAddLocation(NPC, -38.92, 2.82, 118.37, 1, 0)
+ MovementLoopAddLocation(NPC, -46.56, 2.85, 122.92, 1, 10)
+ MovementLoopAddLocation(NPC, -46.05, 2.83, 123.62, 1, 0)
+ MovementLoopAddLocation(NPC, -45.97, 2.84, 121.85, 1, 0)
+ MovementLoopAddLocation(NPC, -43.41, 2.83, 116.29, 1, 0)
+ MovementLoopAddLocation(NPC, -33.61, 3.05, 112.1, 1, 0)
+ MovementLoopAddLocation(NPC, -20, 2.93, 101.64, 1, 0)
+ MovementLoopAddLocation(NPC, -14.33, 3, 103.85, 1, 0)
+ MovementLoopAddLocation(NPC, -9.9, 3, 102.08, 1, 0)
+ MovementLoopAddLocation(NPC, -1.38, 3, 101.98, 1, 10)
+ MovementLoopAddLocation(NPC, -4.73, 3, 100.74, 1, 0)
+ MovementLoopAddLocation(NPC, -7.38, 3, 90.48, 1, 0)
+ MovementLoopAddLocation(NPC, -11.83, 3, 80.74, 1, 0)
+ MovementLoopAddLocation(NPC, -7.38, 3, 74.43, 1, 10)
+ MovementLoopAddLocation(NPC, -4.46, 3, 75.04, 1, 0)
+ MovementLoopAddLocation(NPC, 7.12, 3.00, 70.82, 1, 0)
+ MovementLoopAddLocation(NPC, 21.02, 2.92, 68.72, 1, 0)
+ MovementLoopAddLocation(NPC, 37.33, 3, 50.02, 1, 0)
+ MovementLoopAddLocation(NPC, 48.79, 3, 47.82, 1, 10)
+ MovementLoopAddLocation(NPC, 46.46, 3, 49.22, 1, 0)
+ MovementLoopAddLocation(NPC, 49.76, 3, 60.07, 1, 0)
+ MovementLoopAddLocation(NPC, 52.88, 3, 65.32, 1, 0)
+ MovementLoopAddLocation(NPC, 53.27, 3, 68.01, 1, 0)
+ MovementLoopAddLocation(NPC, 47.97, 3, 72.59, 1, 0)
+ MovementLoopAddLocation(NPC, 30.27, 3, 80.25, 1, 1,"Rat_2")
+ MovementLoopAddLocation(NPC, 29.25, 3, 79.81, 1, 1)--Rat2
+ MovementLoopAddLocation(NPC, 29.25, 3, 79.81, 1, 3,"Rat_2_Target")--Rat2
+ MovementLoopAddLocation(NPC, 29.25, 3, 79.81, 1, 3,"Rat_2_Attack")--Rat2
+ MovementLoopAddLocation(NPC, 29.25, 3, 79.81, 1, 1,"Rat_2_Run")--Rat2
+ MovementLoopAddLocation(NPC, 30.93, 3, 69.23, 6, 0)
+ MovementLoopAddLocation(NPC, 28.76, 3, 61.79, 6, 0)
+ MovementLoopAddLocation(NPC, 24.7, 3, 61.78, 6, 0)
+ MovementLoopAddLocation(NPC, 21.63, 2.93, 66.95, 6, 0)
+ MovementLoopAddLocation(NPC, 17.96, 3.01, 72.13, 6, 0)
+ MovementLoopAddLocation(NPC, 5.76, 3, 67.83, 6, 0)
+ MovementLoopAddLocation(NPC, -2.09, 3, 61.88, 6, 0)
+ MovementLoopAddLocation(NPC, -1.3, 3, 57.67, 6, 0)
+ MovementLoopAddLocation(NPC, -5.37, 3, 56.58, 6, 0)
+ MovementLoopAddLocation(NPC, -6.35, 3, 58.17, 6, 0)
+ MovementLoopAddLocation(NPC, -6.35, 3, 58.17, 6, 1)
+ MovementLoopAddLocation(NPC, -6.35, 3, 58.17, 6, 12,"Rat2_Kill")
+ MovementLoopAddLocation(NPC, 0.26, 3, 63.21, 1, 0,"ResetTarget")
+ MovementLoopAddLocation(NPC, 2.94, 3, 66.56, 1, 0)
+ MovementLoopAddLocation(NPC, 12.27, 3, 70.02, 1, 0)
+ MovementLoopAddLocation(NPC, 20.24, 2.99, 69.4, 1, 0)
+end
+
+function Rat_1_Attack(NPC)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420362)
+ if Rat1 ~= nil then
+ PlayFlavor(Rat1,"","","attack",0,0)
+ end
+end
+
+function Rat_1_Target(NPC)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420362)
+ if Rat1 ~= nil then
+ SetTarget(NPC,Rat1)
+ FaceTarget(NPC,Rat1)
+ PlayFlavor(NPC,"","","attack",0,0)
+ end
+end
+
+function Rat_2_Attack(NPC)
+ local zone = GetZone(NPC)
+ local Rat2 = GetSpawnByLocationID(zone,420349)
+ if Rat2 ~= nil then
+ PlayFlavor(Rat2,"","","attack",0,0)
+ end
+end
+
+function Rat_2_Target(NPC)
+ local zone = GetZone(NPC)
+ local Rat2 = GetSpawnByLocationID(zone,420349)
+ if Rat2 ~= nil then
+ SetTarget(NPC,Rat2)
+ FaceTarget(NPC,Rat2)
+ PlayFlavor(NPC,"","","attack",0,0)
+ end
+end
+
+function Rat2_Kill(NPC)
+ local zone = GetZone(NPC)
+ local Rat2 = GetSpawnByLocationID(zone,420349)
+ if Rat2 ~= nil then
+ PlayFlavor(NPC,"","","attack",0,0)
+ KillSpawn(Rat2)
+ end
+ SetTempVariable(NPC,"HissTimer", "0")
+end
+
+function ResetTarget(NPC)
+ SetTarget(NPC,nil)
+end
+
+function waypoints2(NPC)
+ if GetSpawnLocationID(NPC) ==420362 then
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420362)
+ MovementLoopAddLocation(Rat1, 31.95, 3, 55.2, 6, 0)
+ MovementLoopAddLocation(Rat1, 39.86, 3, 50.85, 6, 0)
+ MovementLoopAddLocation(Rat1, 44.76, 3, 52.29, 6, 0)
+ MovementLoopAddLocation(Rat1, 50.85, 3, 60.83, 6, 0)
+ MovementLoopAddLocation(Rat1, 54.89, 3, 64.29, 6, 0)
+ MovementLoopAddLocation(Rat1, 63.8, 2.77, 67.88, 6, 0)
+ MovementLoopAddLocation(Rat1, 70.13, 1.63, 70.44, 6, 0)
+ MovementLoopAddLocation(Rat1, 72.76, 0.37, 74.76, 4, 0)
+ MovementLoopAddLocation(Rat1, 75.94, -2.87, 84.52, 4, 0)
+ MovementLoopAddLocation(Rat1, 81.62, -4.57, 92.12, 4, 0)
+ MovementLoopAddLocation(Rat1, 81.83, -4.57, 101.89, 4, 0)
+ MovementLoopAddLocation(Rat1, 76.4, -4.57, 109.38, 4, 0)
+ MovementLoopAddLocation(Rat1, 74.74, -4.57, 119.51, 4, 0)
+ MovementLoopAddLocation(Rat1, 79.26, -4.57, 129.48, 4, 0)
+ MovementLoopAddLocation(Rat1, 81.52, -4.57, 129.65, 4, 0)
+ MovementLoopAddLocation(Rat1, 80.34, -4.57, 127.54, 4, 30)
+ MovementLoopAddLocation(Rat1, 76.3, -4.57, 119.97, 1, 0)
+ MovementLoopAddLocation(Rat1, 75.12, -4.57, 112.32, 1, 0)
+ MovementLoopAddLocation(Rat1, 75.38, -4.57, 108.35, 1, 10)
+ MovementLoopAddLocation(Rat1, 79.18, -4.57, 103.91, 1, 0)
+ MovementLoopAddLocation(Rat1, 80.15, -4.57, 100.38, 1, 0)
+ MovementLoopAddLocation(Rat1, 77.45, -4.56, 94.18, 1, 0)
+ MovementLoopAddLocation(Rat1, 73.76, -3.52, 87.56, 1, 0)
+ MovementLoopAddLocation(Rat1, 73.33, -3.11, 86.74, 1, 5)
+ MovementLoopAddLocation(Rat1, 71.66, -0.27, 77.96, 4, 0)
+ MovementLoopAddLocation(Rat1, 71.52, 0.81, 73.98, 4, 0)
+ MovementLoopAddLocation(Rat1, 70.47, 1.33, 72.3, 4, 0)
+ MovementLoopAddLocation(Rat1, 64.81, 2.71, 69.86, 4, 0)
+ MovementLoopAddLocation(Rat1, 63.46, 3, 61.49, 4, 10)
+ MovementLoopAddLocation(Rat1, 59.5, 3, 60.81, 1, 0)
+ MovementLoopAddLocation(Rat1, 53, 3, 66.82, 4, 0)
+ MovementLoopAddLocation(Rat1, 47.39, 3, 72.82, 4, 0)
+ MovementLoopAddLocation(Rat1, 38.52, 3, 76.35, 4, 0)
+ MovementLoopAddLocation(Rat1, 34.5, 3, 68.86, 4, 0)
+ MovementLoopAddLocation(Rat1, 36.18, 3, 64.02, 1, 0,"Despawning_1")
+ MovementLoopAddLocation(Rat1, 36.18, 3, 64.02, 1, 8,"Despawning_1")
+ elseif GetSpawnLocationID(NPC) ==420349 then
+ local zone = GetZone(NPC)
+ local Rat2 = GetSpawnByLocationID(zone,420349)
+ MovementLoopAddLocation(Rat2, 30.93, 3, 69.23, 3, 1)
+ MovementLoopAddLocation(Rat2, 28.76, 3, 61.79, 3, 0)
+ MovementLoopAddLocation(Rat2, 24.7, 3, 61.78, 6, 0)
+ MovementLoopAddLocation(Rat2, 21.63, 2.93, 66.95, 6, 0)
+ MovementLoopAddLocation(Rat2, 17.96, 3.01, 72.13, 6, 0)
+ MovementLoopAddLocation(Rat2, 5.76, 3, 67.83, 6, 0)
+ MovementLoopAddLocation(Rat2, -2.09, 3, 61.88, 6, 0)
+ MovementLoopAddLocation(Rat2, -1.3, 3, 57.67, 6, 0)
+ MovementLoopAddLocation(Rat2, -5.37, 3, 56.58, 6, 0)
+ MovementLoopAddLocation(Rat2, -6.35, 3, 58.17, 6, 0)
+ MovementLoopAddLocation(Rat2, -6.35, 3, 58.17, 6, 10)
+ MovementLoopAddLocation(Rat2, -0.77, 3.00, 57.48, 1, 0)
+ MovementLoopAddLocation(Rat2, 4.15, 3.00, 52.91, 6, 999)
+ end
+end
+
+function Despawning_1(NPC)
+-- local zone = GetZone(NPC)
+-- local Rat1 = GetSpawnByLocationID(zone,420362)
+-- if Rat1 ~= nil then
+-- Despawn(Rat1)
+ Despawn(NPC)
+-- end
+end
diff --git a/server/SpawnScripts/TempleSt/MrButtons.lua b/server/SpawnScripts/TempleSt/MrButtons.lua
new file mode 100755
index 000000000..59c912b5a
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/MrButtons.lua
@@ -0,0 +1,259 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/MrButtons.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.24 07:10:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(3000,6000),"ChefCheck")
+AddTimer(NPC,MakeRandomInt(3000,6000),"PocketCheck")
+AddTimer(NPC,MakeRandomInt(1000,4000),"waypoints")
+SetTempVariable(NPC,"PocketFollow", nil)
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+function InRange(NPC,Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HissTimer")~="1" then
+ local Choice = MakeRandomInt(0,100)
+ if GetRace(Spawn)== 13 then
+ if Choice <=75 then
+ InRange_Attack(NPC,Spawn)
+ end
+ elseif Choice <= 40 then
+ InRange_Attack(NPC,Spawn)
+ end
+end
+end
+
+function InRange_Attack(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ FaceTarget(NPC,Spawn)
+ AddTimer(NPC,1000,"HissAttack",1,Spawn)
+ else
+ AddTimer(NPC,500,"Hiss",1,Spawn)
+ end
+SetTempVariable(NPC,"HissTimer", "1")
+AddTimer(NPC,25000,"HissReset",1,Spawn)
+end
+
+
+function HissAttack(NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function Hiss(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ else
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss002.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+end
+
+function HissReset(NPC,Spawn)
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+
+function ChefCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ChefCheck")
+
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ if not IsInCombat(NPC) and Chef~= nil and not IsInCombat(Chef)then
+ local Distance = GetDistance(NPC,Chef,1)
+ if Distance <=4 then
+ if GetTempVariable(NPC,"Speed_Set")~= nil then
+ Reset(NPC,Spawn)
+ end
+ Attack(Chef,NPC)
+ Attack(NPC,Chef)
+ local x = GetX(Chef)
+ local y = GetY(Chef)
+ local z = GetZ(Chef)
+ SetFollowTarget(Chef,NPC)
+ SetFollowTarget(NPC,Chef)
+ ToggleFollow(Chef)
+ ToggleFollow(NPC)
+ SetTarget(Chef,NPC)
+ FaceTarget(Chef,NPC)
+ FaceTarget(NPC,Chef)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"kill",1,Spawn)
+ end
+ end
+end
+end
+
+function PocketCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"PocketCheck")
+ if not IsInCombat(NPC) then
+ local zone = GetZone(NPC)
+ local Pocket = GetSpawnByLocationID(zone,420615)
+ local Distance = GetDistance(NPC,Pocket,1)
+ if Pocket ~= nil and IsAlive(Pocket) and Distance <=5 then
+ SetTarget(Pocket,NPC)
+ FaceTarget(Pocket,NPC)
+ PlayFlavor(Pocket,"","","attack",0,0)
+ AddTimer(NPC,2300,"AttackBack",1,Spawn)
+ AddTimer(NPC,4000,"ResetFollow",1,Spawn)
+ end
+ end
+end
+end
+
+function AttackBack(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Pocket = GetSpawnByLocationID(zone,420615)
+ SetTarget(NPC,Pocket)
+ FaceTarget(NPC,Pocket)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function ResetFollow(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Pocket = GetSpawnByLocationID(zone,420615)
+ SetTarget(Pocket,nil)
+ SetTarget(NPC,nil)
+end
+
+function kill (NPC,Spawn)
+ ApplySpellVisual(NPC,51)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","1h_sword_attack",0,0)
+ KillSpawn(NPC)
+ AddTimer(Chef,2500,"scoop")
+ AddTimer(NPC,3000,"Despawning")
+end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function scoop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","gathering_success",0,0)
+ Despawn(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ SetTempVariable(NPC,"Speed1_Set", "1")
+ SetTempVariable(NPC,"Speed2_Set", "4")
+ else
+ SetTempVariable(NPC,"Speed1_Set", "4")
+ SetTempVariable(NPC,"Speed2_Set", "1")
+ end
+ local Speed1 = GetTempVariable(NPC,"Speed1_Set")
+ local Speed2 = GetTempVariable(NPC,"Speed2_Set")
+ MovementLoopAddLocation(NPC, -40.34, 2.85, 109.71, Speed1, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, -40.34, 2.85, 109.71, Speed1, 0)
+ MovementLoopAddLocation(NPC, -39.29, 2.83, 111.9, Speed1, 0)
+ MovementLoopAddLocation(NPC, -35.56, 2.86, 112.69, Speed1, 0)
+ MovementLoopAddLocation(NPC, -32.78, 3, 111.84, Speed1, 0)
+ MovementLoopAddLocation(NPC, -24.57, 2.95, 103.39, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, -14.75, 3, 105.05, Speed2, 0)
+ MovementLoopAddLocation(NPC, -6.7, 3, 101.13, Speed2, 0)
+ MovementLoopAddLocation(NPC, -5.31, 3, 99.57, Speed2, 0)
+ MovementLoopAddLocation(NPC, -5.88, 3, 95.16, Speed2, 0)
+ MovementLoopAddLocation(NPC, -6.67, 3, 91.92, Speed1, 0)
+ MovementLoopAddLocation(NPC, -2.53, 3, 86.87, Speed1, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 6.97, 3, 85.46, Speed2, 0)
+ MovementLoopAddLocation(NPC, 12.42, 3, 82.94, Speed2, 0)
+ MovementLoopAddLocation(NPC, 13.67, 3, 82.38, Speed1, 0)
+ MovementLoopAddLocation(NPC, 18.89, 3, 82.26, Speed1, 0)
+ MovementLoopAddLocation(NPC, 20.96, 3.01, 85.75, Speed1, 0)
+ MovementLoopAddLocation(NPC, 22.52, 3, 93.18, Speed2, 0)
+ MovementLoopAddLocation(NPC, 28.35, 3, 98.92, Speed2, 0)
+ MovementLoopAddLocation(NPC, 33.44, 3, 107.7, Speed1, 0)
+ MovementLoopAddLocation(NPC, 35.22, 3, 108.91, Speed1, 0)
+ MovementLoopAddLocation(NPC, 42.42, 3, 104.99, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 45.43, 3, 106.06, Speed1, 0)
+ MovementLoopAddLocation(NPC, 47.23, 3, 104.46, Speed1, 0)
+ MovementLoopAddLocation(NPC, 52.91, 3, 97.03, Speed2, 0)
+ MovementLoopAddLocation(NPC, 51.36, 3, 93.29, Speed2, 0)
+ MovementLoopAddLocation(NPC, 47.05, 3, 91.65, Speed2, 0)
+ MovementLoopAddLocation(NPC, 45.07, 3, 87.42, Speed1, 0)
+ MovementLoopAddLocation(NPC, 45.77, 3, 84.02, Speed2, 0)
+ MovementLoopAddLocation(NPC, 43.63, 3, 79.92, Speed1, 0)
+ MovementLoopAddLocation(NPC, 42.39, 3, 76.24, Speed1, 0)
+ MovementLoopAddLocation(NPC, 43.08, 3, 73.6, Speed1, 0)
+ MovementLoopAddLocation(NPC, 46.37, 3, 70.84, Speed1, 0)
+ MovementLoopAddLocation(NPC, 51.05, 3, 67.69, Speed2, 0)
+ MovementLoopAddLocation(NPC, 52.91, 3, 66.66, Speed1, 0)
+ MovementLoopAddLocation(NPC, 51.32, 3, 61.04, Speed1, 0)
+ MovementLoopAddLocation(NPC, 49.44, 3, 53.32, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 49.22, 3, 54.19, Speed2, 0)
+ MovementLoopAddLocation(NPC, 46.34, 3, 54.15, Speed2, 0)
+ MovementLoopAddLocation(NPC, 44.25, 3, 51.21, Speed1, 0)
+ MovementLoopAddLocation(NPC, 43.59, 3, 50.29, Speed1, 0)
+ MovementLoopAddLocation(NPC, 37.61, 3, 50.02, Speed2, 0)
+ MovementLoopAddLocation(NPC, 35.14, 3, 48.26, Speed2, 0)
+ MovementLoopAddLocation(NPC, 29.54, 2.92, 40.43, Speed1, 0)
+ MovementLoopAddLocation(NPC, 20.89, 2.92, 37.17, Speed1, 0)
+ MovementLoopAddLocation(NPC, 20.86, 2.92, 33.7, Speed2, 0)
+ MovementLoopAddLocation(NPC, 22.07, 2.92, 31.26, Speed1, 0)
+ MovementLoopAddLocation(NPC, 25.56, 2.92, 18.56, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 25.65, 2.92, 28.88, Speed2, 0)
+ MovementLoopAddLocation(NPC, 28.68, 2.92, 36.04, Speed2, 0)
+ MovementLoopAddLocation(NPC, 32.98, 2.96, 45.45, Speed2, 0)
+ MovementLoopAddLocation(NPC, 35.64, 3, 50.86, Speed1, 0)
+ MovementLoopAddLocation(NPC, 31.76, 3, 57.23, Speed1, 0)
+ MovementLoopAddLocation(NPC, 29.22, 3, 60.28, Speed1, 0)
+ MovementLoopAddLocation(NPC, 32.33, 3, 70.17, Speed1, 0)
+ MovementLoopAddLocation(NPC, 34.91, 3, 76.39, Speed2, 0)
+ MovementLoopAddLocation(NPC, 35.88, 3, 81.96, Speed2, 0)
+ MovementLoopAddLocation(NPC, 33.94, 3, 83.37, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 32, 3, 82.55, Speed1, 0)
+ MovementLoopAddLocation(NPC, 25.46, 3, 78.68, Speed1, 0)
+ MovementLoopAddLocation(NPC, 10.6, 3, 68.32, Speed1, 0)
+ MovementLoopAddLocation(NPC, 4.46, 3, 66.63, Speed1, 0)
+ MovementLoopAddLocation(NPC, 0.33, 3, 63.68, Speed2, 0)
+ MovementLoopAddLocation(NPC, -2.91, 3, 57.43, Speed2, 0)
+ MovementLoopAddLocation(NPC, 1.2, 3, 57.36, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 1.1, 3, 63.22, Speed1, 0)
+ MovementLoopAddLocation(NPC, 1.68, 3, 64.72, Speed1, 0)
+ MovementLoopAddLocation(NPC, 11.43, 3, 68.74, Speed2, 0)
+ MovementLoopAddLocation(NPC, 15.45, 3, 78.29, Speed1, 0)
+ MovementLoopAddLocation(NPC, 13.9, 3, 82.29, Speed2, 0)
+ MovementLoopAddLocation(NPC, 6.56, 3, 86.1, Speed1, 0)
+ MovementLoopAddLocation(NPC, 3.54, 3, 86.31, Speed1, 0)
+ MovementLoopAddLocation(NPC, -6.38, 3, 92.01, Speed2, 0)
+ MovementLoopAddLocation(NPC, -6.26, 3, 93.36, Speed1, 0)
+ MovementLoopAddLocation(NPC, -4.45, 3, 99.69, Speed2, 0)
+ MovementLoopAddLocation(NPC, 0.69, 3, 107.84, Speed1, 0)
+ MovementLoopAddLocation(NPC, 3.3, 3, 109.38, Speed2, 0)
+ MovementLoopAddLocation(NPC, 12.44, 3, 105.52, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 6.9, 3, 109.4, Speed1, 0)
+ MovementLoopAddLocation(NPC, 2.71, 3, 109.76, Speed1, 0)
+ MovementLoopAddLocation(NPC, -1.77, 3, 105.77, Speed1, 0)
+ MovementLoopAddLocation(NPC, -4.29, 3, 101.88, Speed2, 0)
+ MovementLoopAddLocation(NPC, -12.07, 3, 104.58, Speed2, 0)
+ MovementLoopAddLocation(NPC, -17.08, 2.95, 105.62, Speed1, 0)
+ MovementLoopAddLocation(NPC, -34.72, 2.81, 113.72, Speed1, 0)
+ MovementLoopAddLocation(NPC, -35.34, 2.84, 116.06, Speed2, 0)
+ MovementLoopAddLocation(NPC, -62.29, 2.85, 130.63, Speed2, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, -55.3, 2.83, 124.78, Speed1, 0)
+ MovementLoopAddLocation(NPC, -42.09, 2.84, 119.14, Speed1, 0)
+ MovementLoopAddLocation(NPC, -41.07, 2.83, 106.76, Speed1, MakeRandomInt(10,20))
+end
+
+
+
diff --git a/server/SpawnScripts/TempleSt/OldManMuckwort.lua b/server/SpawnScripts/TempleSt/OldManMuckwort.lua
new file mode 100755
index 000000000..adceaf6d6
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/OldManMuckwort.lua
@@ -0,0 +1,124 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/OldManMuckwort.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local MucksQuest = 5874
+
+function spawn(NPC)
+ ProvidesQuest(NPC, MucksQuest)
+ SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+
+end
+
+function InRange(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ if not HasCompletedQuest(Spawn, MucksQuest) then
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/old_man_muckwort/fprt_hood03/100_oldmanmuckwort_callout_ff44b21f.mp3", "Darn pests... messing up my yard and sneaking up on my porch... What do you need, ya' snot-nosed punk?", "grumble", 3612569160, 2400812732, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+ elseif GetTempVariable(NPC, "CalloutTimer1")== "true"then
+ PlayFlavor(NPC, "voiceover/english/old_man_muckwort/fprt_hood03/100_oldmanmuckwort_multhail1_13434115.mp3", "Bah! Keep your meddling to yourself, leave me be ... and STAY OFF MY PORCH! You heard me, get out of here!", "threaten", 3647820805, 3418409987, Spawn, 0)
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ end
+ end
+ end
+end
+end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Bah! Keep your meddling to yourself and leave me be. And STAY OFF MY PORCH!")
+ PlayFlavor(NPC, "","","glare",0,0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/old_man_muckwort/fprt_hood03/qst_oldmanmuckwort.mp3",3076890390,3782590712)
+
+
+ if CanReceiveQuest(Spawn, MucksQuest) then
+ Dialog.AddOption("Let me guess: you live here so you can be the tallest?", "Dialog1a")
+ elseif GetQuestStep(Spawn, MucksQuest)==2 then
+ Dialog.AddOption("Here's the vial from Crantik. Take it quick, old man.", "Dialog2")
+ end
+
+ Dialog.AddOption("Alright! I'm going.")
+ Dialog.Start()
+end
+
+
+
+function Dialog1a(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("For your information, I've always lived here. The Militia told me to move out and I told them to stuff it! You don't live to be my age by following orders from whippersnapper Militia guards! Now all these pesky little gnomes and rats scurry around and wake me up in the middle of the night! BAH!")
+ Dialog.AddVoiceover("voiceover/english/old_man_muckwort/fprt_hood03/quests/oldmanmuckwort/muckwort_x1_initial.mp3",4224386696,2671412005)
+ Dialog.AddOption("I see. Well, do you have anything that needs doing?", "Dialog1b")
+ Dialog.AddOption("Don't worry. I'll see myself out.")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you implying I can't take care of myself? I can hold my own, you little punk. Don't make me put up my dukes! I'll knock your socks off doggone it!")
+ Dialog.AddVoiceover("voiceover/english/old_man_muckwort/fprt_hood03/quests/oldmanmuckwort/muckwort_x1_initial2.mp3",2387965843,630955162)
+ PlayFlavor(NPC, "","","stare",0,0, Spawn)
+ Dialog.AddOption("No, no! I am trying to help cool your temper!", "OfferQuest1")
+ Dialog.AddOption("Maybe I'll come back when you're not so angry.")
+ Dialog.Start()
+end
+
+function OfferQuest1(NPC,Spawn)
+ if CanReceiveQuest(Spawn, MucksQuest) then
+ OfferQuest(NPC, Spawn, MucksQuest)
+ end
+end
+
+function Dialog2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It took you long enough! I'm not getting any younger you know! Now, how much did he make? Good. Good. This is enough for another spray down ... Traipse on my lawn will those gnomes and Ratonga? More like run around screaming with holes burned in their feet! Heee heeee heeeee ... Now, look here, this copper is for you! Don't spend it in one place, you hear? NOW GET OFF MY LAWN!")
+ Dialog.AddVoiceover("voiceover/english/old_man_muckwort/fprt_hood03/quests/oldmanmuckwort/muckwort_x1_finish.mp3",2708189106,591579773)
+ PlayFlavor(NPC, "","","lookaway",0,0, Spawn)
+
+ if GetRace(Spawn)== 5 then
+ Dialog.AddOption("Well, it won't stop this gnome!...\n\n[Swipe a stien off the table]")
+ elseif GetRace(Spawn)== 13 then
+ Dialog.AddOption("Well, it won't stop this ratonga!...\n\n[Swipe a stien off the table]")
+ else
+ Dialog.AddOption("You had me deliver... poison... for this?!...\n\n[Swipe a stien off the table]")
+ end
+ Dialog.Start()
+ SetStepComplete(Spawn, MucksQuest, 2)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/OverseerIvagora.lua b/server/SpawnScripts/TempleSt/OverseerIvagora.lua
index 176981c50..bb8fe1850 100755
--- a/server/SpawnScripts/TempleSt/OverseerIvagora.lua
+++ b/server/SpawnScripts/TempleSt/OverseerIvagora.lua
@@ -6,22 +6,99 @@
:
--]]
-function spawn(NPC)
+local Welcome = 5864
+require "SpawnScripts/Generic/DialogModule"
+local CalloutTimer = false
+
+function spawn(NPC)
+ProvidesQuest(NPC,Welcome)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn) --Quest Callout
+if GetFactionAmount(Spawn,12)<0 then
+PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+FaceTarget(NPC, Spawn)
+elseif GetRace(Spawn)== 5 or GetRace(Spawn) ==13 then
+ if CanReceiveQuest(Spawn, Welcome)then
+ PlayFlavor(NPC,"voiceover/english/overseer_ivagora/fprt_hood03/qst_overseer_ivagora_callout2_29d95cf.mp3","Here! Here! Here! Refugees come here!!!","beckon",50468124,3582989183,Spawn)
+ elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+elseif CalloutTimer == false then
+ CalloutTimer = true
+ AddTimer(NPC,90000,"ResetCallout",1,Spawn)
+ Talk(NPC,Spawn)
+ end
+end
+
+
+
+function ResetCallout(NPC,Spawn)
+ CalloutTimer = false
end
function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ PlayFlavor(NPC,"","","heckno",0,0,Spawn)
+ else
+if GetRace(Spawn)== 5 or GetRace(Spawn) ==13 then
+ if not HasQuest(Spawn, Welcome) and not HasCompletedQuest(Spawn,Welcome)then
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You are to talk to me, because I am the overseer of the refugees! You will listen to me, understand? I am telling you what you need to do now that you are owned by Freeport! You will listen, you got it?!")
+ Dialog.AddVoiceover("voiceover/english/overseer_ivagora/fprt_hood03/overseer_ivagora001.mp3", 697563957, 4075827788)
+ PlayFlavor(NPC,"","","smirk",0,0,Spawn)
+ Dialog.AddOption("What do I need to do?","Dialog1")
+ Dialog.AddOption("I... must be going!")
+ Dialog.Start()
+ else
+ Talk(NPC,Spawn)
+ end
+else
+ Talk(NPC,Spawn)
+ end
+end
+end
+
+function Talk(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
local choice = MakeRandomInt(1,2)
if choice == 1 then
PlayFlavor(NPC,"voiceover/english/overseer_ivagora/fprt_hood03/qst_overseer_ivagora_callout1_7a7c78d2.mp3","I am very important! You speak to me only when I speak to you!","stare",629512654,4246602300,Spawn)
elseif choice == 2 then
PlayFlavor(NPC,"voiceover/english/overseer_ivagora/fprt_hood03/qst_overseer_ivagora_callout2_29d95cf.mp3","Here! Here! Here! Refugees come here!!!","beckon",50468124,3582989183,Spawn)
- end
- if GetQuestStep(Spawn, 5758)==2 then
- SetStepComplete(Spawn, 5758,2)
- end
+ end
end
function respawn(NPC)
spawn(NPC)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What you do is you say \"Thank you, Overlord\" and \"You are so strong, Overlord\" and \"Thank you for giving me a house in Freeport because you are the best Overlord, Overlord\". If you are bad and you do not say these things, then you will be given a new dagger.")
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/overseer_ivagora/fprt_hood03/overseer_ivagora002.mp3", 1025867876, 338880904)
+ Dialog.AddOption("I could always use a new dagger!", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No, no. You are not understanding! We will give you a dagger in your back. You don't want that kind of dagger. If you are good and you say these things about the Overlord, then you will get a house. The Overlord likes giving houses to refugees. It's free! No strings attached! Trust me!")
+ Dialog.AddVoiceover("voiceover/english/overseer_ivagora/fprt_hood03/overseer_ivagora003.mp3", 1768168077, 1553750759)
+ PlayFlavor(NPC,"","","no",0,0,Spawn)
+ Dialog.AddOption("I see. I'll take a house instead!", "QuestStart")
+ Dialog.Start()
+end
+
+function QuestStart(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Welcome)
end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/PlordoBlotterdook.lua b/server/SpawnScripts/TempleSt/PlordoBlotterdook.lua
index 1cd02b308..1b33da5fc 100755
--- a/server/SpawnScripts/TempleSt/PlordoBlotterdook.lua
+++ b/server/SpawnScripts/TempleSt/PlordoBlotterdook.lua
@@ -9,6 +9,7 @@
require "SpawnScripts/Generic/DialogModule"
local DoortoDoorAnger = 5688
+local QwergosPlan = 5916
function spawn(NPC)
end
@@ -18,19 +19,36 @@ function respawn(NPC)
end
function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
if GetQuestStep(Spawn, DoortoDoorAnger) == 1 then
SetStepComplete(Spawn, DoortoDoorAnger, 1)
end
-
Dialog1(NPC, Spawn)
end
+end
function Dialog1(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("Yes, yes, I am hurrying. What can good 'ole Plordo sell you today?")
Dialog.AddVoiceover("voiceover/english/merchant_plordo_blotterdook/fprt_hood03/mer_merchantplordoblotterdook.mp3", 438412116, 3436978899)
- Dialog.AddOption("I am not interested. ")
+ if GetQuestStep(Spawn, QwergosPlan)==1 then
+ Dialog.AddOption("Qwergo wants a rumblestick or whatever it is.","Dialog2")
+ end
+ Dialog.AddOption("I am not interested.")
Dialog.Start()
end
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("An igniter rumblerod, my friend, and I regret I have sold my last one. To Chrna, that is. Yes, I sold it to Chrna ... ehh ... she may be around here, someplace, if you have the will to go looking for her. Qwergo must want this item quite badly.")
+ Dialog.AddVoiceover("voiceover/english/merchant_plordo_blotterdook/fprt_hood03/quests/qwergotogglesmeet/ploordo_qwergo_x1_initial.mp3", 939756391, 1996785139)
+ PlayFlavor(NPC, "","","agree",0,0, Spawn)
+ SetStepComplete(Spawn, QwergosPlan, 1)
+ Dialog.AddOption("Fine. I'll try to get it from her.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Pockets.lua b/server/SpawnScripts/TempleSt/Pockets.lua
new file mode 100755
index 000000000..d1fc833fe
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Pockets.lua
@@ -0,0 +1,214 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Pockets.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.24 08:10:54
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(3000,6000),"ChefCheck")
+AddTimer(NPC,MakeRandomInt(3000,6000),"waypoints")
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+function InRange(NPC,Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HissTimer")~="1" then
+ local Choice = MakeRandomInt(0,100)
+ if GetRace(Spawn)== 13 then
+ if Choice <=75 then
+ InRange_Attack(NPC,Spawn)
+ end
+ elseif Choice <= 40 then
+ InRange_Attack(NPC,Spawn)
+ end
+end
+end
+
+function InRange_Attack(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ FaceTarget(NPC,Spawn)
+ AddTimer(NPC,1000,"HissAttack",1,Spawn)
+ else
+ AddTimer(NPC,500,"Hiss",1,Spawn)
+ end
+SetTempVariable(NPC,"HissTimer", "1")
+AddTimer(NPC,25000,"HissReset",1,Spawn)
+end
+
+
+
+function HissAttack(NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function Hiss(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ else
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss002.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+ SetTarget(NPC,nil)
+end
+
+function HissReset(NPC,Spawn)
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+
+function ChefCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ChefCheck")
+
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ if not IsInCombat(NPC) and Chef~= nil and not IsInCombat(Chef)then
+ local Distance = GetDistance(NPC,Chef,1)
+ if Distance <=4 then
+ Attack(Chef,NPC)
+ Attack(NPC,Chef)
+ local x = GetX(Chef)
+ local y = GetY(Chef)
+ local z = GetZ(Chef)
+ SetFollowTarget(Chef,NPC)
+ SetFollowTarget(NPC,Chef)
+ ToggleFollow(Chef)
+ ToggleFollow(NPC)
+ SetTarget(Chef,NPC)
+ FaceTarget(Chef,NPC)
+ FaceTarget(NPC,Chef)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"kill",1,Spawn)
+ end
+ end
+end
+end
+
+function kill (NPC,Spawn)
+ ApplySpellVisual(NPC,51)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","1h_sword_attack",0,0)
+ KillSpawn(NPC)
+ AddTimer(Chef,2500,"scoop")
+ AddTimer(NPC,3000,"Despawning")
+end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function scoop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","gathering_success",0,0)
+ Despawn(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ SetTempVariable(NPC,"Speed1_Set", "1")
+ SetTempVariable(NPC,"Speed2_Set", "4")
+ else
+ SetTempVariable(NPC,"Speed1_Set", "4")
+ SetTempVariable(NPC,"Speed2_Set", "1")
+ end
+ local Speed1 = GetTempVariable(NPC,"Speed1_Set")
+ local Speed2 = GetTempVariable(NPC,"Speed2_Set")
+
+ MovementLoopAddLocation(NPC, -61.41, 2.85, 128.83, Speed1, 11)
+ MovementLoopAddLocation(NPC, -62.02, 2.84, 130.9, Speed1, 0)
+ MovementLoopAddLocation(NPC, -58.28, 2.84, 128.57, Speed2, 0)
+ MovementLoopAddLocation(NPC, -34.35, 2.83, 116.34, Speed1, 11)
+ MovementLoopAddLocation(NPC, -34.07, 2.82, 112.86, Speed2, 0)
+ MovementLoopAddLocation(NPC, -31.12, 2.8, 109.17, Speed2, 0)
+ MovementLoopAddLocation(NPC, -21.38, 2.74, 104.08, Speed2, 0)
+ MovementLoopAddLocation(NPC, -13.46, 3, 103.88, Speed2, 0)
+ MovementLoopAddLocation(NPC, -6.45, 3, 100.2, Speed2, 0)
+ MovementLoopAddLocation(NPC, -0.39, 3, 106.7, Speed2, 0)
+ MovementLoopAddLocation(NPC, 3.51, 3, 109.95, Speed2, 0)
+ MovementLoopAddLocation(NPC, 10.76, 3, 106.88, Speed2, 0)
+ MovementLoopAddLocation(NPC, 13.12, 3, 103.9, Speed2, 11)
+ MovementLoopAddLocation(NPC, 11.46, 3, 107.51, Speed1, 0)
+ MovementLoopAddLocation(NPC, 2.61, 3, 111.09, Speed1, 0)
+ MovementLoopAddLocation(NPC, -2.04, 3, 102.97, Speed1, 0)
+ MovementLoopAddLocation(NPC, -6.05, 3, 98.32, Speed1, 0)
+ MovementLoopAddLocation(NPC, -6.89, 3, 91.65, Speed1, 0)
+ MovementLoopAddLocation(NPC, -5.91, 3, 88.59, Speed2, 0)
+ MovementLoopAddLocation(NPC, -10.87, 3, 82.13, Speed2, 0)
+ MovementLoopAddLocation(NPC, -8.98, 3, 79.39, Speed2, 0)
+ MovementLoopAddLocation(NPC, -1.98, 3, 71.53, Speed1, 0)
+ MovementLoopAddLocation(NPC, -0.55, 3, 70.39, Speed1, 0)
+ MovementLoopAddLocation(NPC, 8.78, 3, 68.85, Speed1, 0)
+ MovementLoopAddLocation(NPC, 17.25, 3.01, 70.19, Speed1, 0)
+ MovementLoopAddLocation(NPC, 26.64, 3, 71.57, Speed1, 4)
+ MovementLoopAddLocation(NPC, 27.99, 3, 62.05, Speed2, 0)
+ MovementLoopAddLocation(NPC, 32.29, 3, 51.47, Speed2, 0)
+ MovementLoopAddLocation(NPC, 29.68, 3, 49.47, Speed2, 0)
+ MovementLoopAddLocation(NPC, 25.59, 2.92, 41.69, Speed2, 0)
+ MovementLoopAddLocation(NPC, 21.24, 2.92, 35.89, Speed1, 0)
+ MovementLoopAddLocation(NPC, 13.67, 2.92, 33.38, Speed1, 0)
+ MovementLoopAddLocation(NPC, 5, 2.92, 39.08, Speed1, 11)
+ MovementLoopAddLocation(NPC, 11.29, 2.92, 36.82, Speed1, 0)
+ MovementLoopAddLocation(NPC, 14.53, 2.92, 39.66, Speed2, 0)
+ MovementLoopAddLocation(NPC, 15.98, 2.92, 41.06, Speed2, 0)
+ MovementLoopAddLocation(NPC, 21.53, 2.92, 39.83, Speed2, 0)
+ MovementLoopAddLocation(NPC, 24.28, 2.92, 38.63, Speed2, 0)
+ MovementLoopAddLocation(NPC, 33.49, 2.99, 46.77, Speed2, 0)
+ MovementLoopAddLocation(NPC, 37.69, 3, 50.56, Speed1, 0)
+ MovementLoopAddLocation(NPC, 43.68, 3, 49.92, Speed1, 0)
+ MovementLoopAddLocation(NPC, 50.72, 3, 60.3, Speed1, 0)
+ MovementLoopAddLocation(NPC, 54.45, 3, 63.38, Speed1, 0)
+ MovementLoopAddLocation(NPC, 63.11, 2.79, 67.74, Speed1, 0)
+ MovementLoopAddLocation(NPC, 70.85, 1.28, 71.33, Speed2, 0)
+ MovementLoopAddLocation(NPC, 72.42, 0.01, 76.44, Speed2, 0)
+ MovementLoopAddLocation(NPC, 72.92, -1.51, 81.33, Speed2, 0)
+ MovementLoopAddLocation(NPC, 77.34, -3.88, 86.47, Speed2, 0)
+ MovementLoopAddLocation(NPC, 84.48, -4.57, 95.07, Speed2, 0)
+ MovementLoopAddLocation(NPC, 86.81, -4.57, 99.49, Speed1, 0)
+ MovementLoopAddLocation(NPC, 92.37, -4.57, 101.07, Speed1, 0)
+ MovementLoopAddLocation(NPC, 101.18, -4.57, 103.36, Speed1, 0)
+ MovementLoopAddLocation(NPC, 105.98, -4.57, 98.41, Speed1, 11)
+ MovementLoopAddLocation(NPC, 98.05, -4.57, 101.28, Speed2, 0)
+ MovementLoopAddLocation(NPC, 90.17, -4.57, 101.22, Speed2, 0)
+ MovementLoopAddLocation(NPC, 78.03, -4.57, 105.5, Speed2, 11)
+ MovementLoopAddLocation(NPC, 80.47, -4.57, 102.26, Speed1, 0)
+ MovementLoopAddLocation(NPC, 80.19, -4.57, 97.13, Speed1, 0)
+ MovementLoopAddLocation(NPC, 73.24, -1.86, 82.39, Speed1, 0)
+ MovementLoopAddLocation(NPC, 71.94, 0.24, 76.21, Speed1, 0)
+ MovementLoopAddLocation(NPC, 68.5, 1.81, 70.66, Speed2, 0)
+ MovementLoopAddLocation(NPC, 65.39, 2.7, 69.96, Speed2, 0)
+ MovementLoopAddLocation(NPC, 54.85, 3, 66.9, Speed2, 0)
+ MovementLoopAddLocation(NPC, 44.08, 3, 50.5, Speed1, 0)
+ MovementLoopAddLocation(NPC, 43.21, 3, 49.47, Speed1, 0)
+ MovementLoopAddLocation(NPC, 30.81, 3, 56.06, Speed1, 0)
+ MovementLoopAddLocation(NPC, 25.8, 3, 62.48, Speed2, 0)
+ MovementLoopAddLocation(NPC, 15.21, 3, 83.94, Speed2, 0)
+ MovementLoopAddLocation(NPC, 10.84, 3, 85.49, Speed2, 0)
+ MovementLoopAddLocation(NPC, 4.46, 3, 84.47, Speed2, 11)
+ MovementLoopAddLocation(NPC, -3.77, 3, 90.83, Speed2, 0)
+ MovementLoopAddLocation(NPC, -6.1, 3, 93.04, Speed1, 0)
+ MovementLoopAddLocation(NPC, -5.06, 3, 98.95, Speed1, 0)
+ MovementLoopAddLocation(NPC, -6.67, 3, 102.04, Speed2, 0)
+ MovementLoopAddLocation(NPC, -15.04, 3, 106.09, Speed1, 0)
+ MovementLoopAddLocation(NPC, -17.55, 2.9, 106.09, Speed2, 0)
+ MovementLoopAddLocation(NPC, -35.95, 2.82, 113.86, Speed1, 0)
+ MovementLoopAddLocation(NPC, -49.54, 2.83, 123.09, Speed2, 0)
+ MovementLoopAddLocation(NPC, -58.43, 2.84, 124.19, Speed1, 11)
+ MovementLoopAddLocation(NPC, -59.49, 2.84, 123.88, Speed1, 0)
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/RamiaSpattermot.lua b/server/SpawnScripts/TempleSt/RamiaSpattermot.lua
new file mode 100755
index 000000000..100d3d49f
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/RamiaSpattermot.lua
@@ -0,0 +1,124 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/RamiaSpattermot.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,6)then
+ Garbled(NPC,Spawn)
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,6)then
+ if math.random(0,100)<40 then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ end
+ else
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -2.31, 3, 106.54, 2, 1)
+ MovementLoopAddLocation(NPC, -2.31, 3, 106.54, 2, MakeRandomInt(15,20),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -2.31, 3, 106.54, 2, 0)
+ MovementLoopAddLocation(NPC, -4.15, 3, 100.8, 2, 0)
+ MovementLoopAddLocation(NPC, -5.71, 3, 97.41, 2, 0)
+ MovementLoopAddLocation(NPC, -6.16, 3, 94.76, 2, 0)
+ MovementLoopAddLocation(NPC, -8.59, 3, 90.17, 2, 1)
+ MovementLoopAddLocation(NPC, -8.59, 3, 90.17, 2, MakeRandomInt(15,20),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -0.85, 3, 89.43, 2, 1)
+ MovementLoopAddLocation(NPC, -0.85, 3, 89.43, 2, MakeRandomInt(15,20),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -2.72, 3, 89.42, 2, 0)
+ MovementLoopAddLocation(NPC, -6.41, 3, 92.07, 2, 0)
+ MovementLoopAddLocation(NPC, -6.47, 3, 92.96, 2, 0)
+ MovementLoopAddLocation(NPC, -3.17, 3, 98.54, 2, 1)
+ MovementLoopAddLocation(NPC, -3.17, 3, 98.54, 2, MakeRandomInt(15,20),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -4.59, 3, 99.36, 2, 0)
+ MovementLoopAddLocation(NPC, -9.93, 3, 103.61, 2, 0)
+ MovementLoopAddLocation(NPC, -15.54, 3, 107.86, 2, 1)
+ MovementLoopAddLocation(NPC, -15.54, 3, 107.86, 2, MakeRandomInt(15,20),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -14.73, 3, 106.13, 2, 0)
+ MovementLoopAddLocation(NPC, -21.6, 2.89, 102.27, 2, 0)
+ MovementLoopAddLocation(NPC, -21.95, 2.88, 102.32, 2, 1)
+ MovementLoopAddLocation(NPC, -21.95, 2.88, 102.32, 2, MakeRandomInt(15,20),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -22.71, 2.79, 104, 2, 0)
+ MovementLoopAddLocation(NPC, -22.67, 2.74, 105.12, 2, 0)
+ MovementLoopAddLocation(NPC, -16.26, 3, 104.32, 2, 0)
+ MovementLoopAddLocation(NPC, -14.9, 3, 104.3, 2, 0)
+ MovementLoopAddLocation(NPC, -9.46, 3, 102.15, 2, 0)
+ MovementLoopAddLocation(NPC, -6.75, 3, 100.82, 2, 0)
+ MovementLoopAddLocation(NPC, -2.21, 3, 101.87, 2, 0)
+ MovementLoopAddLocation(NPC, 0.15, 3, 106.11, 2, 0)
+ MovementLoopAddLocation(NPC, -0.94, 3, 104.78, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, -5.53, 3.02, 108.11, 2, 0,"Door")
+ MovementLoopAddLocation(NPC, -6.48, 3.02, 109.98, 2, 1)
+ MovementLoopAddLocation(NPC, -6.48, 3.02, 109.98, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -7.28, 3.02, 107.64, 2, 0)
+ MovementLoopAddLocation(NPC, -7.28, 3.02, 107.64, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -6.48, 3.02, 109.98, 2, 1)
+ MovementLoopAddLocation(NPC, -6.48, 3.02, 109.98, 2, MakeRandomInt(25,30),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -5.53, 3.02, 108.11, 2, 2,"Door")
+ MovementLoopAddLocation(NPC, -0.94, 3, 104.78, 2, 0,"Door")
+ MovementLoopAddLocation(NPC, 0.15, 3, 106.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2.21, 3, 101.87, 2, 0)
+ MovementLoopAddLocation(NPC, -6.75, 3, 100.82, 2, 0)
+ MovementLoopAddLocation(NPC, -9.46, 3, 102.15, 2, 0)
+ MovementLoopAddLocation(NPC, -14.9, 3, 104.3, 2, 0)
+ MovementLoopAddLocation(NPC, -16.26, 3, 104.32, 2, 0)
+ MovementLoopAddLocation(NPC, -22.67, 2.74, 105.12, 2, 0)
+ MovementLoopAddLocation(NPC, -22.71, 2.79, 104, 2, 0)
+ MovementLoopAddLocation(NPC, -21.95, 2.88, 102.32, 2, 1)
+ MovementLoopAddLocation(NPC, -21.95, 2.88, 102.32, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -14.73, 3, 106.13, 2, 0)
+ MovementLoopAddLocation(NPC, -15.54, 3, 107.86, 2, 1)
+ MovementLoopAddLocation(NPC, -15.54, 3, 107.86, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -9.93, 3, 103.61, 2, 0)
+ MovementLoopAddLocation(NPC, -4.59, 3, 99.36, 2, 0)
+ MovementLoopAddLocation(NPC, -3.17, 3, 98.54, 2, 1)
+ MovementLoopAddLocation(NPC, -3.17, 3, 98.54, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -6.47, 3, 92.96, 2, 0)
+ MovementLoopAddLocation(NPC, -6.41, 3, 92.07, 2, 0)
+ MovementLoopAddLocation(NPC, -2.72, 3, 89.42, 2, 0)
+ MovementLoopAddLocation(NPC, -0.85, 3, 89.43, 2, 1)
+ MovementLoopAddLocation(NPC, -0.85, 3, 89.43, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -7.49, 3, 90.08, 2, 0)
+ MovementLoopAddLocation(NPC, -8.59, 3, 90.17, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -6.16, 3, 94.76, 2, 0)
+ MovementLoopAddLocation(NPC, -5.71, 3, 97.41, 2, 0)
+ MovementLoopAddLocation(NPC, -4.15, 3, 100.8, 2, 0)
+ MovementLoopAddLocation(NPC, -1.18, 3, 103.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2.31, 3, 106.54, 2, 0)
+end
+
+
+
+
+function Door(NPC,Spawn)
+ local door = GetSpawn(NPC, 1360081)
+ UseWidget(door)
+end
+
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/RegiasFlutzrubble.lua b/server/SpawnScripts/TempleSt/RegiasFlutzrubble.lua
new file mode 100755
index 000000000..50bbb9dc7
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/RegiasFlutzrubble.lua
@@ -0,0 +1,171 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/RegiasFlutzrubble.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog9(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Uuuummm... no, well, yes, I mean yes, a war ship, but it's so much more than that! Don't you see! It'll be able to carry an army of a thousand men, and will be able to traverse any part of the Shattered Seas with ease!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_002.mp3", 3970511826, 4107157131)
+ Dialog.AddOption("Sounds a bit ambitious. Why do you want to do this?", "Dialog12")
+ Dialog.AddOption("I have to go now.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm? You're interested in my work, are you? Well, why didn't you say so?! Please, please, have a seat and listen! I'm currently working on schematics for a very powerful, very sturdy ship that can withstand even the worst of the Shattered Seas' fits! It's all very exciting!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_001.mp3", 1795784999, 3837102654)
+ Dialog.AddOption("You're trying to make a war ship?", "Dialog5")
+ Dialog.AddOption("What's wrong with Freeport's vessels? We seem to have a capable navy.", "Dialog3")
+ Dialog.AddOption("On second thought, I should leave you to your work.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you mad?! The seas are too terrible, too unpredictable! The effects of the great cataclysms haven't subsided entirely, you know. We need powerful, secure and sturdy vessels in order to travel and explore the unexplored reaches of the world!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_004.mp3", 16821237, 3341915909)
+ Dialog.AddOption("Why are the seas so terrible?", "Dialog11")
+ Dialog.AddOption("So you're making a war ship to traverse the seas?", "Dialog5")
+ Dialog.AddOption("You're the one who's mad. Good bye.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm? You're interested in my work, are you? Well, why didn't you say so?! Please, please, have a seat and listen! I'm currently working on schematics for a very powerful, very sturdy ship that can withstand even the worst of the Shattered Seas' fits! It's all very exciting!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_001.mp3", 1795784999, 3837102654)
+ Dialog.AddOption("You're trying to make a war ship?", "Dialog1")
+ Dialog.AddOption("What's wrong with Freeport's vessels? We seem to have a capable navy.", "Dialog6")
+ Dialog.AddOption("On second thought, I should leave you to your work.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Uuuummm... no, well, yes, I mean yes, a war ship, but it's so much more than that! Don't you see! It'll be able to carry an army of a thousand men, and will be able to traverse any part of the Shattered Seas with ease!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_002.mp3", 3970511826, 4107157131)
+ Dialog.AddOption("Sounds a bit ambitious. Why do you want to do this?", "Dialog12")
+ Dialog.AddOption("I have to go now.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Are you mad?! The seas are too terrible, too unpredictable! The effects of the great cataclysms haven't subsided entirely, you know. We need powerful, secure and sturdy vessels in order to travel and explore the unexplored reaches of the world!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_004.mp3", 16821237, 3341915909)
+ Dialog.AddOption("Why are the seas so terrible?", "Dialog10")
+ Dialog.AddOption("So you're making a war ship to traverse the seas?", "Dialog1")
+ Dialog.AddOption("You're the one who's mad. Good bye.")
+ Dialog.Start()
+end
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, that's common knowledge! What else would have caused the water levels to rise so high so quickly? Yes, yes, the ice of the world is all gone. I'm eager to go to the rock of Velious and see what sort of mysteries and treasures the ice left behind!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_007.mp3", 2431672398, 3998434397)
+ Dialog.AddOption("Well, good luck with that, I guess.")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No! Go away! You're disrupting my concentration! I must have total and complete and utter quiet if I'm going to finish these schematics! Now, go away! Away!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_000.mp3", 2585802283, 4039166261)
+ Dialog.AddOption("What you working on?", "Dialog4")
+ Dialog.AddOption("Alright, I'm going! I'm going!")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("No! Go away! You're disrupting my concentration! I must have total and complete and utter quiet if I'm going to finish these schematics! Now, go away! Away!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_000.mp3", 2585802283, 4039166261)
+ Dialog.AddOption("What you working on?", "Dialog2")
+ Dialog.AddOption("Alright, I'm going! I'm going!")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It takes thousands of years for such dramatic environmental effects to subside, don't you know anything?! The seas are still raging, and besides, the known shores of the world are as of yet uncharted. Who knows what sort of troubles one could run into.")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_005.mp3", 3259471582, 1564630871)
+ Dialog.AddOption("What do you mean the shores are uncharted? We have maps for reference.", "Dialog14")
+ Dialog.AddOption("This is all very interesting, but I'm going to go now.")
+ Dialog.Start()
+end
+
+function Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It takes thousands of years for such dramatic environmental effects to subside, don't you know anything?! The seas are still raging, and besides, the known shores of the world are as of yet uncharted. Who knows what sort of troubles one could run into.")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_005.mp3", 3259471582, 1564630871)
+ Dialog.AddOption("What do you mean the shores are uncharted? We have maps for reference.", "Dialog15")
+ Dialog.AddOption("This is all very interesting, but I'm going to go now.")
+ Dialog.Start()
+end
+
+function Dialog12(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aside from creating the greatest invention ever invented in Freeport, I've always dreamed of traveling the world's oceans, just like my great, great, great grandfather, Captain Nalot! ")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_003.mp3", 1152684026, 1730897113)
+ Dialog.AddOption("Why don't you just go out and explore them?", "Dialog6")
+ Dialog.AddOption("I have to go now.")
+ Dialog.Start()
+end
+
+function Dialog13(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, that's common knowledge! What else would have caused the water levels to rise so high so quickly? Yes, yes, the ice of the world is all gone. I'm eager to go to the rock of Velious and see what sort of mysteries and treasures the ice left behind!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_007.mp3", 2431672398, 3998434397)
+ Dialog.AddOption("Well, good luck with that, I guess.")
+ Dialog.Start()
+end
+
+function Dialog14(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Maps schmaps! They don't mean nothin' anymore! Since the ice of Velious and Everfrost melted, the sea levels have risen so high that we don't know how shorelines have shifted. Not to mention all the earthquakes. The continents may have shifted to other hemispheres!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_006.mp3", 3492338575, 1829255468)
+ Dialog.AddOption("Okay, I've enough of this foolishness. Good bye.")
+ Dialog.AddOption("Velious and Everfrost have melted?! How do you know?", "Dialog13")
+ Dialog.Start()
+end
+
+function Dialog15(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Maps schmaps! They don't mean nothin' anymore! Since the ice of Velious and Everfrost melted, the sea levels have risen so high that we don't know how shorelines have shifted. Not to mention all the earthquakes. The continents may have shifted to other hemispheres!")
+ Dialog.AddVoiceover("voiceover/english/regias_flutzrubble/fprt_hood03/quests/regiasflutzrubble/lore_regias_006.mp3", 3492338575, 1829255468)
+ Dialog.AddOption("Ok, I've enough of this foolishness. Good bye.")
+ Dialog.AddOption("Velious and Everfrost have melted?! How do you know?", "Dialog7")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/TempleSt/Rhast.lua b/server/SpawnScripts/TempleSt/Rhast.lua
new file mode 100755
index 000000000..b53f7f07f
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Rhast.lua
@@ -0,0 +1,75 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Rhast.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:58
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 93.23, -4.57, 100.4, 2, 1)
+ MovementLoopAddLocation(NPC, 93.23, -4.57, 100.4, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 93.23, -4.57, 100.4, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 93.23, -4.57, 100.4, 2, 0)
+ MovementLoopAddLocation(NPC, 94.22, -4.57, 101.35, 2, 0)
+ MovementLoopAddLocation(NPC, 92.92, -4.57, 102.22, 2, 0)
+ MovementLoopAddLocation(NPC, 86.16, -4.57, 103.94, 2, 0)
+ MovementLoopAddLocation(NPC, 83.65, -4.57, 109.76, 2, 0)
+ MovementLoopAddLocation(NPC, 81.93, -4.57, 112.9, 2, 0)
+ MovementLoopAddLocation(NPC, 78.67, -4.57, 115, 2, 1)
+ MovementLoopAddLocation(NPC, 78.67, -4.57, 115, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 81.34, -4.57, 113.59, 2, 0)
+ MovementLoopAddLocation(NPC, 80.99, -4.57, 111.82, 2, 1)
+ MovementLoopAddLocation(NPC, 80.99, -4.57, 111.82, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 80.99, -4.57, 111.82, 2, 0)
+ MovementLoopAddLocation(NPC, 82.59, -4.57, 111.99, 2, 0)
+ MovementLoopAddLocation(NPC, 83.83, -4.57, 110.25, 2, 0)
+ MovementLoopAddLocation(NPC, 88.09, -4.57, 104.42, 2, 0)
+ MovementLoopAddLocation(NPC, 97.45, -4.57, 101.72, 2, 0)
+ MovementLoopAddLocation(NPC, 101.39, -4.57, 100.11, 2, 0)
+ MovementLoopAddLocation(NPC, 101.39, -4.57, 100.11, 2, 1)
+ MovementLoopAddLocation(NPC, 101.39, -4.57, 100.11, 2, 30,"Drink")
+ MovementLoopAddLocation(NPC, 101.04, -4.57, 100.48, 2, 0)
+ MovementLoopAddLocation(NPC, 99.76, -4.57, 100.93, 2, 0)
+ MovementLoopAddLocation(NPC, 95.38, -4.57, 102.42, 2, 0)
+end
+
+function Drink(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+ AddTimer(NPC,8000, "Drink2")
+end
+
+function Drink2(NPC)
+ choice = math.random(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","yawn",0,0)
+ else
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ AddTimer(NPC,6000, "Drink3")
+end
+
+function Drink3(NPC)
+ PlayFlavor(NPC,"","","drinking_idle",0,0)
+end
diff --git a/server/SpawnScripts/TempleSt/ScribeFriziFigglesnip.lua b/server/SpawnScripts/TempleSt/ScribeFriziFigglesnip.lua
new file mode 100755
index 000000000..c52fec17b
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ScribeFriziFigglesnip.lua
@@ -0,0 +1,132 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ScribeFriziFigglesnip.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.07 04:11:22
+ Script Purpose :
+ :
+--]]
+--Didn't you hear what I said? Sorry. I thought you were asking something else. Some loathsome, unkempt fiends called Guttersnipes accosted me.
+
+require "SpawnScripts/Generic/DialogModule"
+local Books = 5922
+local Ingredients = 5923
+
+function spawn(NPC)
+ ProvidesQuest(NPC, Books)
+ ProvidesQuest(NPC, Ingredients)
+ SetInfoStructString(NPC, "action_state", "ponder")
+end
+
+function hailed(NPC, Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif CanReceiveQuest(Spawn, Books) then
+ Dialog1(NPC,Spawn)
+elseif HasQuest(Spawn, Books) and GetQuestStep(Spawn,Books) ==1 then
+ DialogWait_Quest1(NPC,Spawn)
+elseif HasQuest(Spawn, Books) and GetQuestStep(Spawn,Books) ==2 then
+ Dialog1(NPC,Spawn)
+elseif CanReceiveQuest(Spawn, Ingredients) then
+ Dialog3_Quest2 (NPC,Spawn)
+elseif HasQuest(Spawn, Ingredients) and GetQuestStep(Spawn,Ingredients) <5 then
+ Dialog3_Quest2 (NPC,Spawn)
+elseif HasQuest(Spawn, Ingredients) and GetQuestStep(Spawn,Ingredients) ==5 then
+ Dialog3_Quest2 (NPC,Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm busy with other customers. Come back later.")
+ Dialog.AddVoiceover("voiceover/english/optional5/scribe_frizi_figglesnip/scribefigglesnip_multhail1_edit_64.mp3", 3159692842, 3138177466)
+ PlayFlavor(NPC,"","","sniff",0,0,Spawn)
+ if CanReceiveQuest(Spawn, Books) then
+ Dialog.AddOption("Sorry, but what customers?","Dialog1_Quest1")
+ elseif GetQuestStep(Spawn, Books)==2 then
+ Dialog.AddOption("I've exacted your revenge on the Guttersnipe crooks!","Dialog2_Quest1")
+ end
+ Dialog.AddOption("I'm just browsing your wares.")
+ Dialog.Start()
+end
+
+function Dialog1_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The ones who come in here and STEAL ALL OF MY BOOKS! They notebooks may have been blank, but have you SEEN the walls here in Temple Street?! I've run out of paper and notebooks so many times that everyone is writing WHATEVER they want on any surface they can reach!... All because some Crooks came in here and ran off with my books...")
+ PlayFlavor(NPC, "", "", "swear", 0, 0, Spawn)
+ Dialog.AddOption("I could try to find your books if that would help?","Offer1")
+ Dialog.AddOption("So it is 'your' fault the streets are covered in graffiti!")
+ Dialog.Start()
+end
+
+function Offer1(NPC,Spawn)
+ OfferQuest(NPC, Spawn, Books)
+end
+
+function DialogWait_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well? Are the worthless Crooks dead and in the ground yet? Don't come back until you've killed the 'lot!")
+ PlayFlavor(NPC, "", "", "tapfoot", 0, 0, Spawn)
+ Dialog.AddOption("Soon enough.")
+ Dialog.Start()
+end
+
+function Dialog2_Quest1(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ SetStepComplete(Spawn, Books, 2)
+ Dialog.AddDialog("YESSSsss!... *coughs*... That will do nicely. Even though my books are a lost cause, at least I don't have to worry about that rabble coming in here to steal more of my things. Please, take this coin for performing... 'justice'. Now I just need to take inventory of what I have left. Now, off with you.")
+ PlayFlavor(NPC, "", "", "howl", 0, 0, Spawn)
+ Dialog.AddOption("I'm glad I could be of assistance.")
+ Dialog.Start()
+end
+
+function Dialog3_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "no", 0, 0, Spawn)
+ Dialog.AddDialog("Ah ... yes, you killed the Guttersnipes. Unfortunately, that doesn't solve my book problem. Leave me alone. I've no further use for you.")
+ Dialog.AddVoiceover("voiceover/english/optional5/scribe_frizi_figglesnip/scribefigglesnip_multhail4_edit_64.mp3", 4232546415, 1790498085)
+ if CanReceiveQuest(Spawn,Ingredients) then
+ Dialog.AddOption("What seems to be the problem Frizi? Don't I deserve some credit?","Dialog4_Quest2")
+ end
+ if GetQuestStep(Spawn, Ingredients)==5 then
+ Dialog.AddOption("Here are your ingredients. Please take them... now!","Dialog5_Quest2")
+ end
+ Dialog.AddOption("Fine.")
+ Dialog.Start()
+end
+
+
+function Dialog4_Quest2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddDialog("You know what? Sure, I could use some assistance if it will stop you from pestering me. I've taken tally of my suppiles and realized those Guttersnipes took more than just books. They took my entire collection of... 'reagents', and they are my best sellers! Would you be a sweet little thing and gather a few things for me?")
+ Dialog.AddOption("Sure. Write them down in my journal.","Offer2")
+ Dialog.AddOption("This sounds suspicious. I'm out of here.")
+ Dialog.Start()
+end
+
+function Offer2(NPC,Spawn)
+ OfferQuest(NPC, Spawn, Ingredients)
+end
+
+function Dialog5_Quest2(NPC,Spawn)
+ SetStepComplete(Spawn, Ingredients, 5)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "lookaway", 0, 0, Spawn)
+ Dialog.AddDialog("Oh dear. You brought them all back, but you not wear protection handling all that?! You poor thing... Let me take those now... and... Here, take some of these gloves for protection in the future. It might be too late now, but better late than never I suppose? Also, if that spot -right there- on you gets any worse, I recomend you have it looked at... Now, I must prepare this inventory.")
+ Dialog.AddOption("Thanks, I think?")
+ Dialog.Start()
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/SemproniaGallus.lua b/server/SpawnScripts/TempleSt/SemproniaGallus.lua
new file mode 100755
index 000000000..d100603d8
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/SemproniaGallus.lua
@@ -0,0 +1,131 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/SemproniaGallus.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.28 05:06:22
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+local Citizenship = 5864
+local Keys = 5921
+
+function spawn(NPC)
+ ProvidesQuest(NPC,Keys)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function InRange(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "Are you the one opening the new account?", "bye", 0, 0, Spawn)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+
+if GetFactionAmount(Spawn,12) <0 then
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+elseif HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+Dialog2(NPC, Spawn)
+else
+Dialog1(NPC, Spawn)
+end
+end
+
+
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, you look like the one Valthun described. Before we can open your account, we need some information from you. What's your name?")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/bnk_semproniagallus_hail005.mp3", 261268347, 2512652131)
+ Dialog.AddOption(""..GetName(Spawn).."","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Occupation?")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/bnk_semproniagallus_hail006.mp3", 1872994041, 2564550567)
+ Dialog.AddOption("Adventurer","Dialog2b")
+ Dialog.AddOption("Crafter","Dialog2b")
+ if GetRace(Spawn)==5 then
+ Dialog.AddOption("Making things explode... Demolition expert?","Dialog2b")
+ elseif GetRace(Spawn)==13 then
+ Dialog.AddOption("I can sniff out all the best treasures!","Dialog2b")
+ end
+ Dialog.Start()
+end
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Any surviving relatives, do you ever leave your house unarmed, and are you a deep sleeper?")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/bnk_semproniagallus_hail007.mp3", 482951073, 2945397215)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddOption("No, no, and no.","Dialog2c")
+ Dialog.AddOption("[Lie] No, no, and no.","Dialog2c")
+ Dialog.AddOption("No - Wait... what?","Dialog2c")
+ Dialog.Start()
+end
+
+function Dialog2c(NPC, Spawn)
+if HasQuest(Spawn,Citizenship) and GetQuestStep(Spawn,Citizenship)==4 then
+ SetStepComplete(Spawn, Citizenship,4)
+end
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("How convenient for you. Very well ... we've set aside a place for you within the Freeport Reserve vaults. Feel free to deposit large amounts of coin or valuable artifacts with us anytime. We'll be sure to keep it ... safe. Is there anything else?")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/bnk_semproniagallus_hail008.mp3", 2091439632, 2628015098)
+ PlayFlavor(NPC, "", "", "scheme", 0, 0, Spawn)
+ Dialog.AddOption("Not right now.")
+ Dialog.Start()
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("This is the Freeport Reserve. Please make sure all deposits are in exact change and recognizable currency, thank you.")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/bnk_semproniagallus_hail.mp3", 2059269441, 1111799165)
+ if CanReceiveQuest(Spawn,Keys) then
+ Dialog.AddOption("Aren't you a little tall for a place like this?","Quest1")
+ elseif GetQuestStep(Spawn,Keys) == 2 then
+ Dialog.AddOption("The ratonga has been \"cured\". Here are your keys. ","Quest1Done")
+ end
+ Dialog.AddOption("Thank you.")
+ Dialog.Start()
+end
+
+function Quest1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It seems you are painfully unaware of the consequences of allowing either Ratonga or Gnomes handling and distributing large amounts of money. The Coalition of Tradesfolke have sent me to this district to try to prevent anymore mishaps that are a result of allowing these races a position with the bank. As it stands, we are still looking for a Ratonga who has all of the keys to our safety deposit vaults.")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/quests/semproniagallus/sempronia_x1_initial.mp3", 986781087, 1487041958)
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
+ Dialog.AddOption("Is there something I could do?","Quest1Offer")
+ Dialog.AddOption("Lost bank keys?! I want nothing to do with this bank!")
+ Dialog.Start()
+end
+
+function Quest1Offer(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Keys)
+end
+
+function Quest1Done(NPC, Spawn)
+ SetStepComplete(Spawn, Keys,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Excellent... were the Coalition to have found out someone managed to abscond with the vault keys.... well, I don't even like thinking about it. As per our agreement, here are some coins for your time. Perhaps you may wish to deposit them within the Reserves?")
+ Dialog.AddVoiceover("voiceover/english/banker_sempronia_gallus/fprt_hood03/quests/semproniagallus/sempronia_x1_finish.mp3", 1236347558, 864344705)
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("I'll consider it.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Shalvo.lua b/server/SpawnScripts/TempleSt/Shalvo.lua
new file mode 100755
index 000000000..0b32f1b26
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Shalvo.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Shalvo.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:47
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasLanguage(Spawn,26)then
+ Garbled(NPC,Spawn)
+ else
+ GenericEcologyHail(NPC, Spawn, faction)
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,26)then
+ if math.random(0,100)<40 then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+ end
+ else
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 43.26, 3, 85.42, 2, 1)
+ MovementLoopAddLocation(NPC, 43.26, 3, 85.42, 2, 25,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 43.99, 3, 78.04, 2, 1,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 43.99, 3, 78.04, 2, 10)
+ MovementLoopAddLocation(NPC, 43.34, 3, 76.25, 2, 0)
+ MovementLoopAddLocation(NPC, 44.07, 3, 75.74, 2, 1)
+ MovementLoopAddLocation(NPC, 44.07, 3, 75.74, 2, 10,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 44.07, 3, 75.74, 2, 0)
+ MovementLoopAddLocation(NPC, 43.25, 3, 76.07, 2, 0)
+ MovementLoopAddLocation(NPC, 43.17, 3, 76.76, 2, 0)
+ MovementLoopAddLocation(NPC, 48.77, 3, 86.87, 2, 1)
+ MovementLoopAddLocation(NPC, 48.77, 3, 86.87, 2, 34,"EcologyEmotes")
+
+end
+
+
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/ShieldsmithFubbledodge.lua b/server/SpawnScripts/TempleSt/ShieldsmithFubbledodge.lua
new file mode 100755
index 000000000..5c35c28d8
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ShieldsmithFubbledodge.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ShieldsmithFubbledodge.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:21
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 33 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/gnome_eco_evil_1/ft/service/merchant/gnome_merchant_service_evil_1_aoi_gm_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 991835348, 673767052, Spawn, 0)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/service/petretailer/barbarian_petretailer_service_good_1_notcitizen_gm_820dc7e.mp3", "I'm afraid that I'm closed for the day. I'm going to have to ask you to leave now.", "heckno", 1325380097, 3928490350
+, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/gnome_eco_evil_1/ft/service/merchant/gnome_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1076899557, 563502184, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/gnome_eco_evil_1/ft/service/merchant/gnome_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 4264249232, 4201092275, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/gnome_eco_evil_1/ft/service/merchant/gnome_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 1962442487, 899461162, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Skitter.lua b/server/SpawnScripts/TempleSt/Skitter.lua
new file mode 100755
index 000000000..35ac22423
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Skitter.lua
@@ -0,0 +1,275 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Skitter.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.24 08:10:17
+ Script Purpose :
+ :
+--]]
+local Speed1 = nil
+local Speed2 = nil
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(3000,6000),"ChefCheck")
+AddTimer(NPC,MakeRandomInt(3000,6000),"waypoints")
+SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+SetTempVariable(NPC,"HissTimer", "0")
+end
+
+function InRange(NPC,Spawn)
+if not IsInCombat(NPC) and GetTempVariable(NPC,"HissTimer")~="1" then
+ local Choice = MakeRandomInt(0,100)
+ if GetRace(Spawn)== 13 then
+ if Choice <=75 then
+ InRange_Attack(NPC,Spawn)
+ end
+ elseif Choice <= 40 then
+ InRange_Attack(NPC,Spawn)
+ end
+end
+end
+
+function InRange_Attack(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ FaceTarget(NPC,Spawn)
+ AddTimer(NPC,1000,"HissAttack",1,Spawn)
+ else
+ AddTimer(NPC,500,"Hiss",1,Spawn)
+ end
+SetTempVariable(NPC,"HissTimer", "1")
+AddTimer(NPC,25000,"HissReset",1,Spawn)
+end
+
+
+function HissAttack(NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function Hiss(NPC,Spawn)
+ local Choice = MakeRandomInt(1,2)
+ if Choice == 1 then
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ else
+ PlaySound(NPC,"sounds/critters/cat/cat_hiss002.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+ SetTarget(NPC,nil)
+end
+
+function HissReset(NPC,Spawn)
+ SetTempVariable(NPC,"HissTimer", "0")
+end
+
+function ChefCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ChefCheck")
+
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ if not IsInCombat(NPC) and Chef~= nil and not IsInCombat(Chef)then
+ local Distance = GetDistance(NPC,Chef,1)
+ if Distance <=4 then
+ Attack(Chef,NPC)
+ Attack(NPC,Chef)
+ local x = GetX(Chef)
+ local y = GetY(Chef)
+ local z = GetZ(Chef)
+ SetFollowTarget(Chef,NPC)
+ SetFollowTarget(NPC,Chef)
+ ToggleFollow(Chef)
+ ToggleFollow(NPC)
+ SetTarget(Chef,NPC)
+ FaceTarget(Chef,NPC)
+ FaceTarget(NPC,Chef)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"kill",1,Spawn)
+ end
+ end
+end
+end
+
+function kill (NPC,Spawn)
+ ApplySpellVisual(NPC,51)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","1h_sword_attack",0,0)
+ KillSpawn(NPC)
+ AddTimer(Chef,2500,"scoop")
+ AddTimer(NPC,3000,"Despawning")
+end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function scoop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","gathering_success",0,0)
+ Despawn(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function waypoints(NPC)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ SetTempVariable(NPC,"Speed1_Set", "1")
+ SetTempVariable(NPC,"Speed2_Set", "6")
+ else
+ SetTempVariable(NPC,"Speed1_Set", "6")
+ SetTempVariable(NPC,"Speed2_Set", "1")
+ end
+ local Speed1 = GetTempVariable(NPC,"Speed1_Set")
+ local Speed2 = GetTempVariable(NPC,"Speed2_Set")
+
+ MovementLoopAddLocation(NPC, -4.01, 3, 114.66, 1, 0)
+ MovementLoopAddLocation(NPC, -4.01, 3, 114.66, Speed1, 0)
+ MovementLoopAddLocation(NPC, 0.54, 3.00, 110.66, 1, 0)
+ MovementLoopAddLocation(NPC, 0.63, 3, 110.73, Speed1, 0)
+ MovementLoopAddLocation(NPC, -4.22, 3, 100.21, Speed1, 0)
+ MovementLoopAddLocation(NPC, -7, 3, 91.34, Speed1, 0)
+ MovementLoopAddLocation(NPC, -10.22, 3, 82.31, Speed1, 0)
+ MovementLoopAddLocation(NPC, -10.22, 3, 82.31, Speed2, 0)
+ MovementLoopAddLocation(NPC, -8.57, 3, 77.81, Speed1, 0)
+ MovementLoopAddLocation(NPC, 0.25, 3, 72.69, Speed2, 0)
+ MovementLoopAddLocation(NPC, 7.1, 3, 69.48, Speed2, 0)
+ MovementLoopAddLocation(NPC, 7.1, 3, 69.48, Speed2, 0)
+ MovementLoopAddLocation(NPC, 13.57, 3, 71.59, Speed1, 0)
+ MovementLoopAddLocation(NPC, 21.57, 2.96, 76.43, Speed1, 0)
+ MovementLoopAddLocation(NPC, 19.41, 3, 86.01, Speed1, 12)
+ MovementLoopAddLocation(NPC, 25.5, 2.99, 57, Speed1, 0)
+ MovementLoopAddLocation(NPC, 25.5, 2.99, 57, Speed2, 0)
+ MovementLoopAddLocation(NPC, 25.5, 2.99, 57, Speed2, 10)
+ MovementLoopAddLocation(NPC, 32.82, 3, 73.14, Speed2, 0)
+ MovementLoopAddLocation(NPC, 45.29, 3, 81.61, Speed2, 0)
+ MovementLoopAddLocation(NPC, 49.39, 3, 92.25, Speed2, 0)
+ MovementLoopAddLocation(NPC, 51.92, 3, 99.67, Speed1, 0)
+ MovementLoopAddLocation(NPC, 51.92, 3, 99.67, Speed2, 0)
+ MovementLoopAddLocation(NPC, 46.89, 3, 105.05, Speed2, 0)
+ MovementLoopAddLocation(NPC, 35.42, 3, 109.79, Speed2, 0)
+ MovementLoopAddLocation(NPC, 33.42, 3, 107.62, Speed2, 0)
+ MovementLoopAddLocation(NPC, 25.28, 3, 94.82, Speed2, 0)
+ MovementLoopAddLocation(NPC, 21.82, 3, 92.27, Speed2, 10)
+ MovementLoopAddLocation(NPC, 21.79, 3, 91.48, Speed1, 0)
+ MovementLoopAddLocation(NPC, 21.79, 3, 91.48, Speed1, 0)
+ MovementLoopAddLocation(NPC, 16.18, 3, 83.15, Speed2, 0)
+ MovementLoopAddLocation(NPC, 5.03, 3, 85.76, Speed2, 0)
+ MovementLoopAddLocation(NPC, -3.76, 3, 89.72, Speed1, 0)
+ MovementLoopAddLocation(NPC, -7, 3, 92.01, Speed1, 0)
+ MovementLoopAddLocation(NPC, -8.2, 3, 89.87, Speed1, 4)
+ MovementLoopAddLocation(NPC, -8.2, 3, 89.87, Speed2, 0)
+ MovementLoopAddLocation(NPC, -7.59, 3, 89.21, 6, 0)
+ MovementLoopAddLocation(NPC, -12.05, 3, 79.9, Speed1, 0,"Rat_1")
+ MovementLoopAddLocation(NPC, -12.38, 3, 79.3, Speed2, 1)
+ MovementLoopAddLocation(NPC, -12.38, 3, 79.3, Speed2, 1,"Rat_1_Target")
+ MovementLoopAddLocation(NPC, -12.38, 3, 79.3, Speed2, 1,"Rat_1_Attack")
+ MovementLoopAddLocation(NPC, -12.38, 3, 79.3, Speed2, 1)
+ MovementLoopAddLocation(NPC, -22.81, 3, 83.91, 6, 1,"Rat_1_Run")
+ MovementLoopAddLocation(NPC, -12.18, 3, 79.22, 6, 0)
+ MovementLoopAddLocation(NPC, -6.65, 3, 89.24, 6, 0)
+ MovementLoopAddLocation(NPC, -4.77, 3, 99.87, 6, 0)
+ MovementLoopAddLocation(NPC, -12.57, 3, 104.86, 6, 0)
+ MovementLoopAddLocation(NPC, -17.18, 2.97, 105.37, 6, 0)
+ MovementLoopAddLocation(NPC, -32.7, 3, 112.34, 6, 0)
+ MovementLoopAddLocation(NPC, -35.23, 2.84, 114.18, 6, 0)
+ MovementLoopAddLocation(NPC, -60.02, 2.84, 128.2, 6, 0)
+ MovementLoopAddLocation(NPC, -47.68, 2.84, 120.5, 6, 0)
+ MovementLoopAddLocation(NPC, -39.01, 2.83, 116.71, 6, 0)
+ MovementLoopAddLocation(NPC, -34.13, 2.84, 121.18, 6, 0)
+ MovementLoopAddLocation(NPC, -36.74, 2.83, 119.12, 6, 0)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 0)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 0)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 1)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 7,"Rat1_Kill")
+ MovementLoopAddLocation(NPC, -39.18, 2.81, 112.46, 1, 0)
+ MovementLoopAddLocation(NPC, -33.88, 2.93, 112.57, 1, 0)
+ MovementLoopAddLocation(NPC, -23.41, 2.81, 103.94, 1, 0)
+ MovementLoopAddLocation(NPC, -18.63, 3, 101.25, 1, 0)
+ MovementLoopAddLocation(NPC, -17.31, 3, 99.16, 1, 10)
+ MovementLoopAddLocation(NPC, -17.48, 3, 100.27, 1, 0)
+ MovementLoopAddLocation(NPC, -14.73, 3, 104.05, Speed1, 0)
+ MovementLoopAddLocation(NPC, -13.85, 3, 104.15, Speed1, 0)
+ MovementLoopAddLocation(NPC, -4.4, 3, 100.16, Speed1, 0)
+ MovementLoopAddLocation(NPC, -1.56, 3, 103.09, Speed2, 0)
+ MovementLoopAddLocation(NPC, 0.56, 3, 107.36, Speed2, 0)
+ MovementLoopAddLocation(NPC, 1.58, 3, 110.59, Speed1, 0)
+ MovementLoopAddLocation(NPC, -3.78, 3, 114.94, Speed2, 0)
+ MovementLoopAddLocation(NPC, -3.78, 3, 114.94, Speed2, 6)
+end
+
+function Rat_1(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420316)
+ if Rat1 == nil or not IsAlive(Rat1) then
+ SpawnByLocationID(zone,420316)
+ end
+SetTempVariable(NPC,"HissTimer", "1")
+end
+
+function Rat_1_Run(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420316)
+ if Rat1 ~= nil then
+ waypoints2(Rat1)
+ end
+end
+
+
+function Rat_1_Target(NPC)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420316)
+ if Rat1 ~= nil then
+ SetTarget(NPC,Rat1)
+ FaceTarget(NPC,Rat1)
+ PlayFlavor(NPC,"","","attack",0,0)
+ end
+end
+
+function Rat_1_Attack(NPC)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420316)
+ if Rat1 ~= nil then
+ PlayFlavor(Rat1,"","","attack",0,0)
+ end
+end
+
+function Rat1_Kill(NPC)
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420316)
+ if Rat1 ~= nil then
+ PlayFlavor(NPC,"","","attack",0,0)
+ KillSpawn(Rat1)
+ SetTempVariable(NPC,"HissTimer", "0")
+ end
+end
+
+function waypoints2(NPC)
+ if GetSpawnLocationID(NPC) ==420316 then
+ local zone = GetZone(NPC)
+ local Rat1 = GetSpawnByLocationID(zone,420316)
+ MovementLoopAddLocation(Rat1, -22.81, 3, 83.91, 6, 0)
+ MovementLoopAddLocation(Rat1, -12.18, 3, 79.22, 6, 0)
+ MovementLoopAddLocation(Rat1, -6.65, 3, 89.24, 6, 0)
+ MovementLoopAddLocation(Rat1, -4.77, 3, 99.87, 6, 0)
+ MovementLoopAddLocation(Rat1, -12.57, 3, 104.86, 6, 0)
+ MovementLoopAddLocation(Rat1, -17.18, 2.97, 105.37, 6, 0)
+ MovementLoopAddLocation(Rat1, -32.7, 3, 112.34, 6, 0)
+ MovementLoopAddLocation(Rat1, -35.23, 2.84, 114.18, 6, 0)
+ MovementLoopAddLocation(Rat1, -60.02, 2.84, 128.2, 6, 0)
+ MovementLoopAddLocation(Rat1, -47.68, 2.84, 120.5, 6, 0)
+ MovementLoopAddLocation(Rat1, -39.01, 2.83, 116.71, 6, 0)
+ MovementLoopAddLocation(Rat1, -34.13, 2.84, 121.18, 6, 0)
+ MovementLoopAddLocation(Rat1, -36.74, 2.83, 119.12, 6, 0)
+ MovementLoopAddLocation(Rat1, -44.02, 2.83, 105.2, 6, 0)
+ MovementLoopAddLocation(Rat1, -44.02, 2.83, 105.2, 6, 1)
+ MovementLoopAddLocation(Rat1, -44.02, 2.83, 105.2, 6, 1)
+ MovementLoopAddLocation(Rat1, -44.02, 2.83, 105.2, 6, 12)
+ MovementLoopAddLocation(Rat1, -39.18, 2.81, 112.46, 1, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/SparzitCogsnibble.lua b/server/SpawnScripts/TempleSt/SparzitCogsnibble.lua
new file mode 100755
index 000000000..9adc80843
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/SparzitCogsnibble.lua
@@ -0,0 +1,163 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/SparzitCogsnibble.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.08 03:07:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local Teeth = 5876
+local Design = 5920
+
+
+function spawn(NPC)
+ ProvidesQuest(NPC,Teeth)
+ ProvidesQuest(NPC,Design)
+ SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC,Spawn)
+if GetTempVariable(NPC,"CalloutTimer")=="false" then
+ if CanReceiveQuest(Spawn,Teeth) or CanReceiveQuest(Spawn,Design) then
+ SetTempVariable(NPC,"CalloutTimer","true")
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+ if CanReceiveQuest(Spawn,Teeth) then
+ PlayFlavor(NPC, "voiceover/english/sparzit_cogsnibble/fprt_hood03/100_barpatronsparzitcogsnibble_callout_ba239822.mp3", "Those voices ... why I do I keep hearing those maddening voices? You there ... do you hear the voices?", "scream", 2305242707, 1619320864, Spawn, 0)
+ elseif CanReceiveQuest(Spawn,Design) then
+ PlayFlavor(NPC, "voiceover/english/sparzit_cogsnibble/fprt_hood03/100_barpatronsparzitcogsnibble_callout2_db4179dc.mp3", "Hmmm ... let's see ... yes ... yes ... these teeth are very basic. I must extend the teeth of my snake and draw out its tips ... yesssss ... I see where I went wrong. The barbs I use stick after puncturing a person's vitals. Woohoo! I'm on to something. Here, friend, take this coin for your time.", "tapfoot", 3052258109, 3734604849, Spawn, 0)
+ end
+ AddTimer(NPC,24000,"ResetCallout",1,Spawn)
+ end
+end
+end
+
+function ResetCallout(NPC,Spawn)
+ SetTempVariable(NPC,"CalloutTimer","false")
+end
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+else
+ Dialog1(NPC,Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What? Of course I would like a beer. All of those nasty little voices are so much easier to ignore after I've had a few. Now serve up, my good rat.")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/qst_barpatronsparzitcogsnibble.mp3", 1913284555, 4209865742)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ if CanReceiveQuest(Spawn,Teeth) then
+ Dialog.AddOption("What voices are you talking about?","Dialog2")
+ elseif GetQuestStep(Spawn,Teeth) == 2 then
+ Dialog.AddOption("Here are some of fine snake teeth you asked for.","Quest1Done")
+ end
+ if CanReceiveQuest(Spawn,Design) then
+ Dialog.AddOption("Tell me. How are your contraption improvements coming along?","Dialog4")
+ elseif GetQuestStep(Spawn,Design) == 2 then
+ Dialog.AddOption("Here are your \"fresh Bone-Rot\" samples.","Quest2Done")
+ end
+ Dialog.AddOption("Perhaps you've had enough...")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, just the voice that whispers in my ear while I whip up gadgets. They say things like, \"more spikes\" and \"make a larger explosion\" ... Hee hee hee ... little things like that. On my latest gadget, the voice says: \"make the fangs sharper\" and \"kill, kill, kill!\"")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x1_initial.mp3", 3048716634, 4074203837)
+ PlayFlavor(NPC,"","","shrug",0,0,Spawn)
+ Dialog.AddOption("Those voices must keep you busy! What are you working on?","Dialog3")
+ Dialog.AddOption("Right. I should be going... now.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm building a contraption to solve an annoying problem. Living in such a small neighborhood, people constantly barge into my home, thinking it's theirs. In turn, I'm creating a clockwork snake that keeps people from glancing -- AHA! You can help me!")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x1_initial2.mp3", 2187428014, 4274175998)
+ PlayFlavor(NPC,"","","orate",0,0,Spawn)
+ Dialog.AddOption("What is it your voices... er you need?","Offer")
+ Dialog.AddOption("Clockwork snake? I'll pass.")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+if CanReceiveQuest(Spawn,Teeth) then
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Teeth)
+ end
+end
+
+function Quest1Done(NPC, Spawn)
+ SetStepComplete(Spawn,Teeth,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hmmm ... let's see ... yes ... yes ... these teeth are very basic. Hmmm ... I must extend the teeth and draw out its tips ... yesssss ... I see where I went wrong. The barbs I use stick after puncturing a person's vitals. Woohoo! I'm on to something. Here, friend, take this coin for your time.")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x1_finish.mp3", 2748213193, 2852199972)
+ PlayFlavor(NPC,"","","ponder",0,0,Spawn)
+ Dialog.AddOption("I'll be sure to stay away once you've perfected them.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Marvelously! I re-plated the teeth with a corrosion resistant, super hard conducting alloy that delivers an electrical shock while piercing the toughest conventional armor! The silly people who encounter my mechanisnake will hardly know what bit 'em! Hoo-hoo! Hear that scream? Another victim!")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x2_initial.mp3", 3138412668, 1958117669)
+ PlayFlavor(NPC,"","","scheme",0,0,Spawn)
+ Dialog.AddOption("Doesn't that seem a bit... harsh?","Dialog5")
+ Dialog.AddOption("Keep your mad ideas away from me!")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Not at all! Why, it's an act of mercy, in my opinion. Those who escape the metallic jaws of my snake will be more careful in the future, thus better ensuring their own survival. And those who do not escape ... well, the snake is swift. Performing a public service, I am!")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x2_initial2.mp3", 2211265631, 4238303201)
+ Dialog.AddOption("I suppose that would teach them a lesson before a painful death.","Dialog6")
+ Dialog.AddOption("You AND your ideas are insane! Stay away from me!")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I'm glad you follow my logic. Although, the lesson would be more clear if the victims didn't die quite so suddenly. If they had time to go into the streets and tell their neighbors ... perhaps because of a slow-acting poison. That's it! My mechanisnake needs a venom that will kill only after the victim has had time to tell others what has happened! Perhaps you will help me get some venom?")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x2_initial3.mp3", 2455502637, 3404107398)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("Sounds like a worthy cause. What do you need?","Offer2")
+ Dialog.AddOption("No! I don't think so.")
+ Dialog.Start()
+end
+
+function Offer2(NPC,Spawn)
+if CanReceiveQuest(Spawn,Design) then
+ FaceTarget(NPC, Spawn)
+ OfferQuest(NPC,Spawn,Design)
+ end
+end
+
+function Quest2Done(NPC, Spawn)
+ SetStepComplete(Spawn,Design,2)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Spectacular! With all of this grubby matter, I should be able to find a way to inject it into their skin. With a little help from an alchemist, this'll be just dandy! Hollow out the teeth, add this poison ... no, it needs to be excruciating so that those who don't speak their language can still understand. Whoohoo ... this will be great. Here's some coin for your time, friend.")
+ Dialog.AddVoiceover("voiceover/english/sparzit_cogsnibble/fprt_hood03/quests/sparzitcogsnibble/sparzit_x2_finish.mp3", 3769729864, 234643773)
+ PlayFlavor(NPC,"","","yes",0,0,Spawn)
+ Dialog.AddOption("Thanks. Just keep your inventions away from me!")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/SpezitheStreetHag.lua b/server/SpawnScripts/TempleSt/SpezitheStreetHag.lua
new file mode 100755
index 000000000..5461dbfc6
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/SpezitheStreetHag.lua
@@ -0,0 +1,60 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/SpezitheStreetHag.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.22 05:10:59
+ Script Purpose :
+ :
+--]]
+local KrasaWontTakeIt = 5924
+local TheMissingBook = 5681
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "flirt")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Take a good look! There are nots many as attractive as I, Spezi. You want somes company?")
+ Dialog.AddVoiceover("voiceover/english/spezi_the_street_hag/fprt_hood03/qst_streethagspezi.mp3", 1064590659, 1345460348)
+ PlayFlavor(NPC,"","","flustered",0,0,Spawn)
+ if GetQuestStep(Spawn, TheMissingBook) == 1 then
+ Dialog.AddOption("Enough! Where is the stolen tome from Longshadow Alley?","Dialog2")
+ end
+ if GetQuestStep(Spawn, KrasaWontTakeIt) == 1 then
+ Dialog.AddOption("I have a message from Krasa. She says Krysa's door will be open tonight.","Dialog3")
+ end
+ Dialog.AddOption("Yes, there are very few with your level of attractiveness. I have to be someplace else now.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I do nots know who you speaks of! You mistakes me for someoneses else!")
+ Dialog.AddVoiceover("voiceover/english/spezi_the_street_hag/fprt_hood05/quests/lotniklria/falseratonga_lotni_x1_initial.mp3", 1342345543, 1293466742)
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddOption("Alright.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ SetStepComplete(Spawn,KrasaWontTakeIt,1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Aha! Krysa thinks she's sooo pretty, and tells everyone not to see Spezi! That ratznitch Krysa will pay tonight! She's going to smile from ear to ear tonight! Hahaha!!! You tell Krasa I give her thanks, and I tell no one what she do for us.")
+ Dialog.AddVoiceover("voiceover/english/spezi_the_street_hag/fprt_hood03/quests/krasa/spezi_krasa_x1_initial.mp3", 3124201712, 3516119767)
+ PlayFlavor(NPC,"","","scheme",0,0,Spawn)
+ Dialog.AddOption("I'm glad to see you understand.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Sprocket.lua b/server/SpawnScripts/TempleSt/Sprocket.lua
new file mode 100755
index 000000000..6b501d8f3
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Sprocket.lua
@@ -0,0 +1,285 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Sprocket.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+local AttackTimer = false --TIMER FOR ATTACK RESPONSE (ATTACKS KERRAN)
+local FollowTimer = false --TIMER FOR FOLLOW SCRIPT
+
+function spawn(NPC)
+ SetTempVariable(NPC,"BarkTimer", nil)
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ButtonCheck")
+ AddTimer(NPC,MakeRandomInt(4000,7000),"SkitterCheck")
+ AddTimer(NPC,MakeRandomInt(4000,7000),"PocketCheck")
+ AddTimer(NPC,MakeRandomInt(4000,7000),"MethosCheck")
+ AddTimer(NPC,MakeRandomInt(4000,7000),"CogCheck")
+ if GetSpawnLocationID(NPC) == 420583 then
+ waypoints(NPC)
+ end
+ SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
+end
+
+
+
+function ButtonCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ButtonCheck")
+
+ if not IsInCombat(NPC) and GetSpawnByLocationID(zone,420594)~=nil then
+ SetTempVariable(NPC,"BarkTimer", true)
+ local zone = GetZone(NPC)
+ local Cat = GetSpawnByLocationID(zone,420594)
+ local Distance = GetDistance(NPC,Cat,1)
+ if Distance <=4 then
+ SetTarget(NPC,Cat)
+ FaceTarget(Cat,NPC)
+ FaceTarget(NPC,Cat)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"Attack2",1,Spawn)
+ AddTimer(NPC,6000,"ResetStart",1,Spawn)
+ AddTimer(Cat,6000,"Attack2",1,Spawn)
+ AddTimer(Cat,6000,"ResetTimer",1,Spawn)
+ end
+ end
+end
+end
+
+function SkitterCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"SkitterCheck")
+
+ if not IsInCombat(NPC) and GetSpawnByLocationID(zone,420680)~=nil then
+ SetTempVariable(NPC,"BarkTimer", true)
+ local zone = GetZone(NPC)
+ local Cat = GetSpawnByLocationID(zone,420680)
+ local Distance = GetDistance(NPC,Cat,1)
+ if Distance <=4 then
+ SetTarget(NPC,Cat)
+ FaceTarget(Cat,NPC)
+ FaceTarget(NPC,Cat)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"Attack2",1,Spawn)
+ AddTimer(NPC,6000,"ResetStart",1,Spawn)
+ AddTimer(Cat,6000,"Attack2",1,Spawn)
+ AddTimer(Cat,6000,"ResetTimer",1,Spawn)
+ end
+ end
+end
+end
+
+function PocketCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"PocketCheck")
+
+ if not IsInCombat(NPC) and GetSpawnByLocationID(zone,420680)~=nil then
+ SetTempVariable(NPC,"BarkTimer", true)
+ local zone = GetZone(NPC)
+ local Cat = GetSpawnByLocationID(zone,420680)
+ local Distance = GetDistance(NPC,Cat,1)
+ if Distance <=4 then
+ SetTarget(NPC,Cat)
+ FaceTarget(Cat,NPC)
+ FaceTarget(NPC,Cat)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"Attack2",1,Spawn)
+ AddTimer(NPC,6000,"ResetStart",1,Spawn)
+ AddTimer(Cat,6000,"Attack2",1,Spawn)
+ AddTimer(Cat,6000,"ResetTimer",1,Spawn)
+ end
+ end
+end
+end
+
+function MethosCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"MethosCheck")
+
+ if not IsInCombat(NPC) and GetSpawnByLocationID(zone,420494)~=nil then
+ SetTempVariable(NPC,"BarkTimer", true)
+ local zone = GetZone(NPC)
+ local Cat = GetSpawnByLocationID(zone,420494)
+ local Distance = GetDistance(NPC,Cat,1)
+ if Distance <=4 then
+ SetTarget(NPC,Cat)
+ FaceTarget(Cat,NPC)
+ FaceTarget(NPC,Cat)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"Attack2",1,Spawn)
+ AddTimer(NPC,6000,"ResetStart",1,Spawn)
+ AddTimer(Cat,6000,"Attack2",1,Spawn)
+ AddTimer(Cat,6000,"ResetTimer",1,Spawn)
+ end
+ end
+end
+end
+
+function CogCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"CogCheck")
+ if not IsInCombat(NPC) and GetSpawnByLocationID(zone,420519)~=nil then
+ SetTempVariable(NPC,"BarkTimer", true)
+ local zone = GetZone(NPC)
+ local Pig = GetSpawnByLocationID(zone,420519)
+ local Distance = GetDistance(NPC,Pig)
+ if Distance <=5 then
+ SetTarget(NPC,Pig)
+ FaceTarget(Pig,NPC)
+ FaceTarget(NPC,Pig)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"Attack2",1,Pig)
+ AddTimer(NPC,6000,"ResetStart",1,Spawn)
+ AddTimer(Pig,6000,"Attack2",1,Spawn)
+ AddTimer(Pig,6000,"ResetTimer",1,Spawn)
+ end
+ end
+end
+end
+
+
+function Attack2 (NPC,Spawn)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function ResetStart (NPC,Spawn)
+ AddTimer(NPC,2500,"ResetTimer")
+ AddTimer(NPC,51000,"ResetBark")
+end
+
+function ResetTimer (NPC,Spawn)
+ SetTarget(NPC,nil)
+ PlayFlavor(NPC,"","","attack",0,0)
+end
+
+function ResetBark (NPC,Spawn)
+ SetTempVariable(NPC,"BarkTimer", nil)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetRace(Spawn)==11 then --KERRAN RESPONSE
+ local choice = math.random(1, 2)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "", "attack", 0, 0,Spawn)
+ SendMessage(Spawn, "Sprocket lunges at your tail threateningly.")
+ elseif choice == 2 then
+ SendMessage(Spawn, "Sprocket growls at you menecingly.")
+ end
+end
+end
+
+
+function InRange(NPC, Spawn) --FOLLOW TARGET SCRIPT IS TOO SLOW. DOG WALKS, BUT SPEED IS NOT ADJUSTABLE.
+if GetRace(Spawn)==11 or GetFactionAmount(Spawn,12)<-10000 then --KERRAN RESPONSE
+ if AttackTimer == false then
+ if FollowTimer == false then
+ FollowTimer = true
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "attack", 0, 0)
+ local choice = math.random(1, 2)
+ if choice == 1 then
+ SendMessage(Spawn, "Sprocket snarls and eyes you closely.")
+ elseif choice == 2 then
+ SendMessage(Spawn, "Sprocket leers at you with a quivering jowl.")
+ end
+ AddTimer(NPC,10000,"ResetFollow",1,Spawn)
+ AddTimer(NPC,45000,"ResetFollowTimer",1,Spawn)
+ end
+end
+end
+end
+
+
+function ResetFollow(NPC)
+ if IsFollowing(NPC) then
+ SetTarget(NPC,nil)
+ ToggleFollow(NPC)
+ AttackTimer = false
+end
+end
+
+function ResetFollowTimer(NPC)
+FollowTimer = false
+SetTarget(NPC,nil)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Sleep(NPC)
+local choice = math.random(1,2)
+if choice == 1 then
+ SpawnSet(NPC, "action_state", 540)
+ AddTimer(NPC, 22000, "Wake")
+ AttackTimer = true
+elseif choice ==2 then
+end
+end
+
+function Wake(NPC)
+ SpawnSet(NPC, "action_state", 0)
+ AttackTimer = false
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 89.77, -4.57, 96.68, 1, MakeRandomInt(7,12))
+ MovementLoopAddLocation(NPC, 87.3, -4.57, 100.58, 1, 0)
+ MovementLoopAddLocation(NPC, 84.12, -4.57, 99.11, 1, 0)
+ MovementLoopAddLocation(NPC, 80.06, -4.57, 94.6, 1, 0)
+ MovementLoopAddLocation(NPC, 76.63, -3.97, 87.12, 1, 0)
+ MovementLoopAddLocation(NPC, 71.63, -0.7, 79.47, 1, 0)
+ MovementLoopAddLocation(NPC, 71.43, 0.82, 73.9, 1, 0)
+ MovementLoopAddLocation(NPC, 69.25, 1.76, 70.83, 1, 0)
+ MovementLoopAddLocation(NPC, 64.34, 2.79, 69.93, 1, 0)
+ MovementLoopAddLocation(NPC, 55.05, 3, 68.57, 1, 0)
+ MovementLoopAddLocation(NPC, 46.3, 3, 73.43, 1, 0)
+ MovementLoopAddLocation(NPC, 39.4, 3, 79.12, 1, MakeRandomInt(7,12))
+ MovementLoopAddLocation(NPC, 39.62, 3, 78.25, 1, 0)
+ MovementLoopAddLocation(NPC, 40.67, 3, 78.6, 1, 0)
+ MovementLoopAddLocation(NPC, 45.23, 3, 81.01, 1, 0)
+ MovementLoopAddLocation(NPC, 48.78, 3, 90.17, 1, 0)
+ MovementLoopAddLocation(NPC, 52.21, 3, 97.46, 1, 0)
+ MovementLoopAddLocation(NPC, 52.94, 3, 100.06, 1, 0)
+ MovementLoopAddLocation(NPC, 45.58, 3, 106.06, 1, 0)
+ MovementLoopAddLocation(NPC, 34.06, 3, 109.56, 1, 0)
+ MovementLoopAddLocation(NPC, 27.19, 3, 98.39, 1, 0)
+ MovementLoopAddLocation(NPC, 22.51, 3, 88.38, 1, 0)
+ MovementLoopAddLocation(NPC, 22.58, 3, 85.36, 1, 0)
+ MovementLoopAddLocation(NPC, 28.79, 3, 79.44, 1, 0)
+ MovementLoopAddLocation(NPC, 24.23, 3, 74.6, 1, 0)
+ MovementLoopAddLocation(NPC, 3.07, 3, 67.34, 1, 0)
+ MovementLoopAddLocation(NPC, -2.13, 3, 62.05, 1, 0)
+ MovementLoopAddLocation(NPC, -6.39, 3, 55.57, 1, MakeRandomInt(7,12))
+ MovementLoopAddLocation(NPC, -1.46, 3, 60.62, 1, 0)
+ MovementLoopAddLocation(NPC, 2.71, 3, 68.49, 1, 0)
+ MovementLoopAddLocation(NPC, 1.4, 3, 72.9, 1, 0)
+ MovementLoopAddLocation(NPC, -13.52, 3, 79.71, 1, 0)
+ MovementLoopAddLocation(NPC, -17.93, 3, 81.95, 1, MakeRandomInt(7,12))
+ MovementLoopAddLocation(NPC, -20.3, 3, 83.25, 1, 0)
+ MovementLoopAddLocation(NPC, -20.63, 3, 82.64, 1, 0)
+ MovementLoopAddLocation(NPC, -20.07, 3, 81.42, 1, 0)
+ MovementLoopAddLocation(NPC, -9.95, 3, 80.6, 1, 0)
+ MovementLoopAddLocation(NPC, -5.36, 3, 88.08, 1, 0)
+ MovementLoopAddLocation(NPC, 10.34, 3, 83.84, 1, 0)
+ MovementLoopAddLocation(NPC, 35.83, 3, 75.19, 1, 0)
+ MovementLoopAddLocation(NPC, 43.81, 3, 72.25, 1, 0)
+ MovementLoopAddLocation(NPC, 53.42, 3, 67.52, 1, 0)
+ MovementLoopAddLocation(NPC, 65, 2.74, 68.47, 1, 0)
+ MovementLoopAddLocation(NPC, 72.36, 0.83, 73.05, 1, 0)
+ MovementLoopAddLocation(NPC, 72.4, -0.63, 78.62, 1, 0)
+ MovementLoopAddLocation(NPC, 75.75, -2.78, 83.79, 1, 0)
+ MovementLoopAddLocation(NPC, 82.04, -4.57, 91.56, 1, 0)
+ MovementLoopAddLocation(NPC, 86.52, -4.57, 98.96, 1, 0)
+ MovementLoopAddLocation(NPC, 95.74, -4.57, 105.36, 1, 0)
+ MovementLoopAddLocation(NPC, 105.53, -4.57, 107.28, 1, 0)
+ MovementLoopAddLocation(NPC, 107.37, -4.57, 108.58, 1, MakeRandomInt(7,12))
+ MovementLoopAddLocation(NPC, 92.92, -4.57, 100.77, 1, 0)
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/TailorSipka.lua b/server/SpawnScripts/TempleSt/TailorSipka.lua
new file mode 100755
index 000000000..ba0dce9ff
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/TailorSipka.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/TailorSipka.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:00
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "tailoring_idle")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 20 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 1269771027, 1321830597, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/ratonga/ratonga_eco_evil_1_notcitizen_gf_8d2a0876.mp3", "I heard you screaming from all the way over there.", "point", 3634348917, 2158238801, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 3896024368, 3267129756, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 4265688146, 2432877514, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3557499503, 3758276116, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/Tarakh.lua b/server/SpawnScripts/TempleSt/Tarakh.lua
new file mode 100755
index 000000000..98b8ff93f
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Tarakh.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Tarakh.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 04:10:27
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+local NatashaNote = 5927
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,1)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/tarakh/fprt_hood03/100_barpatrontarakh_callout_843c542c.mp3", "Keep your tongue to yourself, lest you find it missing.", "", 84248268, 2425627383, Spawn, 0)
+ end
+end
+
+--
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Keep your tongue to yourself, lest you find it missing.")
+ Dialog.AddVoiceover("voiceover/english/tarakh/fprt_hood03/qst_barpatrontarakh.mp3", 3608596443, 357856972)
+ PlayFlavor(NPC,"","","stare",0,0,Spawn)
+ if GetQuestStep(Spawn,NatashaNote)==1 then
+ Dialog.AddOption("Actually, I found a note with your name on it. Give me a few coins and you can have it.","Dialog3")
+ end
+ Dialog.AddOption("Big talk from a little rat.", "Dialog2")
+ Dialog.AddOption("My apologies, I will move on.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Try me! First I'll gut you then I'll return to your grave to rob it! Though it's unlikely you would have anything of value in your pine box.")
+ Dialog.AddVoiceover("voiceover/english/tarakh/fprt_hood03/qst_barpatrontarakh000.mp3", 33100111, 1117280474)
+ PlayFlavor(NPC,"","","threaten",0,0,Spawn)
+ Dialog.AddOption("It doesn't surprise me that you are a dirty little grave robber. ")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What's this now? Fine. Let me see it we'll see if you get anything from me.")
+ Dialog.AddOption("Sure. It details an upcoming haul you're not invited to.", "Dialog4")
+ Dialog.AddOption("On second thought, nevermind.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Hey! This doesn't tell me where to find the meeting place or crypt!")
+ PlayFlavor(NPC,"","","confused",0,0,Spawn)
+ Dialog.AddOption("I don't care. Pay up.", "Dialog5")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Eeehk! What a worthless scrap... I suppose I'll stake out the usual spots... Here. Take this coin. Tread lightly or I'll just take it off your corpse later. Now, don't bother me again unless you have something actually worth my time!")
+ PlayFlavor(NPC,"","","frustrated",0,0,Spawn)
+ Dialog.AddOption("Fair enough.")
+ SetStepComplete(Spawn, NatashaNote,1)
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/ThignatzDustinia.lua b/server/SpawnScripts/TempleSt/ThignatzDustinia.lua
new file mode 100755
index 000000000..3d73164f0
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ThignatzDustinia.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ThignatzDustinia.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 03:10:00
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcologyHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcologyCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 21.06, 2.9, 64.87, 2, 0)
+ MovementLoopAddLocation(NPC, 25, 3, 64.48, 2, 0)
+ MovementLoopAddLocation(NPC, 27.25, 3, 58.49, 2, 0)
+ MovementLoopAddLocation(NPC, 29.66, 3, 56.87, 2, 0)
+ MovementLoopAddLocation(NPC, 29.02, 3, 55.16, 2, 0)
+ MovementLoopAddLocation(NPC, 29.02, 3, 55.16, 2, 1)
+ MovementLoopAddLocation(NPC, 29.02, 3, 55.16, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 30.6, 3, 54.2, 2, 0)
+ MovementLoopAddLocation(NPC, 38.07, 3, 49.89, 2, 0)
+ MovementLoopAddLocation(NPC, 41.56, 3, 48.95, 2, 0)
+ MovementLoopAddLocation(NPC, 47.87, 3, 51.5, 2, 1)
+ MovementLoopAddLocation(NPC, 47.87, 3, 51.5, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 45.29, 3, 50.59, 2, 0)
+ MovementLoopAddLocation(NPC, 43.79, 3, 50.07, 2, 0)
+ MovementLoopAddLocation(NPC, 40.87, 3, 51.42, 2, 0)
+ MovementLoopAddLocation(NPC, 36.78, 3, 53.58, 2, 0)
+ MovementLoopAddLocation(NPC, 30.85, 2.98, 48.01, 2, 0)
+ MovementLoopAddLocation(NPC, 25.42, 2.92, 40.54, 2, 0)
+ MovementLoopAddLocation(NPC, 22.99, 2.92, 37.18, 2, 0)
+ MovementLoopAddLocation(NPC, 19.47, 2.92, 35.29, 2, 0)
+ MovementLoopAddLocation(NPC, 12.7, 2.92, 38.17, 2, 0)
+ MovementLoopAddLocation(NPC, 12.21, 2.92, 39.74, 2, 1)
+ MovementLoopAddLocation(NPC, 12.21, 2.92, 39.74, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 13.13, 2.92, 37.51, 2, 0)
+ MovementLoopAddLocation(NPC, 17.09, 2.92, 35.14, 2, 0)
+ MovementLoopAddLocation(NPC, 21.7, 2.92, 36.63, 2, 0)
+ MovementLoopAddLocation(NPC, 29.06, 2.92, 39.17, 2, 0)
+ MovementLoopAddLocation(NPC, 33.6, 2.97, 45.64, 2, 0)
+ MovementLoopAddLocation(NPC, 33.94, 3, 51.12, 2, 0)
+ MovementLoopAddLocation(NPC, 32.73, 3, 55.95, 2, 0)
+ MovementLoopAddLocation(NPC, 31.65, 3, 57.14, 2, 0)
+ MovementLoopAddLocation(NPC, 34.03, 3, 60.78, 2, 0)
+ MovementLoopAddLocation(NPC, 34.39, 3, 59.24, 2, 1)
+ MovementLoopAddLocation(NPC, 34.39, 3, 59.24, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 33.84, 3, 60.46, 2, 0)
+ MovementLoopAddLocation(NPC, 30.61, 3, 61.49, 2, 0)
+ MovementLoopAddLocation(NPC, 24.29, 3, 61.02, 2, 0)
+ MovementLoopAddLocation(NPC, 19.21, 3.02, 65.83, 2, 1)
+ MovementLoopAddLocation(NPC, 19.21, 3.02, 65.83, 2, 30,"EcologyEmotes")
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/TinkTonksnipper.lua b/server/SpawnScripts/TempleSt/TinkTonksnipper.lua
new file mode 100755
index 000000000..3e6805bb0
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/TinkTonksnipper.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/TinkTonksnipper.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 03:10:17
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericRaceCheckHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericRaceCheckCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 15.82, 3, 78.54, 2, 0)
+ MovementLoopAddLocation(NPC, 15.06, 3, 80.53, 2, 0)
+ MovementLoopAddLocation(NPC, 12.75, 3, 82.45, 2, 0)
+ MovementLoopAddLocation(NPC, 3.96, 3, 86.64, 2, 0)
+ MovementLoopAddLocation(NPC, -6.12, 3, 92.35, 2, 0)
+ MovementLoopAddLocation(NPC, -5.71, 3, 94.1, 2, 0)
+ MovementLoopAddLocation(NPC, -3.96, 3, 96.94, 2, 0)
+ MovementLoopAddLocation(NPC, -6.72, 3, 102.07, 2, 0)
+ MovementLoopAddLocation(NPC, -13.37, 3, 105.11, 2, 0)
+ MovementLoopAddLocation(NPC, -17.99, 2.75, 105.42, 2, 0)
+ MovementLoopAddLocation(NPC, -33.91, 2.83, 113.82, 2, 0)
+ MovementLoopAddLocation(NPC, -35.11, 2.83, 117.53, 2, 0)
+ MovementLoopAddLocation(NPC, -33.36, 2.82, 122.34, 2, 1)
+ MovementLoopAddLocation(NPC, -33.36, 2.82, 122.34, 2, MakeRandomInt(20,33),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -33.36, 2.82, 122.34, 2, 0)
+ MovementLoopAddLocation(NPC, -37.43, 2.84, 120.85, 2, 1)
+ MovementLoopAddLocation(NPC, -37.43, 2.84, 120.85, 2, MakeRandomInt(20,33),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, -37.43, 2.84, 120.85, 2, 0)
+ MovementLoopAddLocation(NPC, -37.43, 2.85, 118.14, 2, 0)
+ MovementLoopAddLocation(NPC, -35.93, 2.85, 112.96, 2, 0)
+ MovementLoopAddLocation(NPC, -31.07, 2.79, 110.23, 2, 0)
+ MovementLoopAddLocation(NPC, -26.75, 2.84, 106.56, 2, 0)
+ MovementLoopAddLocation(NPC, -17.15, 3, 102.03, 2, 0)
+ MovementLoopAddLocation(NPC, -14.07, 3, 104.13, 2, 0)
+ MovementLoopAddLocation(NPC, -6.86, 3, 100.57, 2, 0)
+ MovementLoopAddLocation(NPC, -6.05, 3, 98.24, 2, 0)
+ MovementLoopAddLocation(NPC, -7.04, 3, 93.38, 2, 0)
+ MovementLoopAddLocation(NPC, -4.36, 3, 89.01, 2, 0)
+ MovementLoopAddLocation(NPC, 1.39, 3, 86.32, 2, 0)
+ MovementLoopAddLocation(NPC, 7.47, 3, 84.59, 2, 0)
+ MovementLoopAddLocation(NPC, 12.98, 3, 82.01, 2, 0)
+ MovementLoopAddLocation(NPC, 15.05, 3, 79.38, 2, 0)
+ MovementLoopAddLocation(NPC, 18.84, 3.01, 78.23, 2, 0)
+ MovementLoopAddLocation(NPC, 27.41, 3, 72.98, 2, 1)
+ MovementLoopAddLocation(NPC, 27.41, 3, 72.98, 2, MakeRandomInt(20,33),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 26.54, 3, 74, 2, 0)
+ MovementLoopAddLocation(NPC, 33.89, 3, 79.3, 2, 0)
+ MovementLoopAddLocation(NPC, 35.1, 3.14, 80.71, 2, 1)
+ MovementLoopAddLocation(NPC, 35.1, 3.14, 80.71, 2, MakeRandomInt(20,33),"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 35.95, 3, 79.79, 2, 0)
+ MovementLoopAddLocation(NPC, 34.75, 3, 78.57, 2, 0)
+ MovementLoopAddLocation(NPC, 31.89, 3, 79.47, 2, 0)
+ MovementLoopAddLocation(NPC, 25.06, 3, 83.17, 2, 0)
+ MovementLoopAddLocation(NPC, 18.72, 3, 82.92, 2, 0)
+ MovementLoopAddLocation(NPC, 14.91, 3, 80.02, 2, 0)
+ MovementLoopAddLocation(NPC, 12.51, 3.00, 77.51, 2, 1)
+ MovementLoopAddLocation(NPC, 12.51, 3.00, 77.51, 2, MakeRandomInt(20,33),"EcologyEmotes")
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/TippinWagglewrench.lua b/server/SpawnScripts/TempleSt/TippinWagglewrench.lua
new file mode 100755
index 000000000..5d17f3b43
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/TippinWagglewrench.lua
@@ -0,0 +1,81 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/TippinWagglewrench.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 03:10:33
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericEcology2Hail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericEcology2Callout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 28.13, 3, 84.94, 2, 1)
+ MovementLoopAddLocation(NPC, 28.13, 3, 84.94, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 25.42, 3, 83.57, 2, 0)
+ MovementLoopAddLocation(NPC, 17.89, 3, 85.41, 2, 1)
+ MovementLoopAddLocation(NPC, 17.89, 3, 85.41, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 18.78, 3, 84.38, 2, 0)
+ MovementLoopAddLocation(NPC, 23.16, 3, 90.93, 2, 0)
+ MovementLoopAddLocation(NPC, 28.29, 3, 100.17, 2, 0)
+ MovementLoopAddLocation(NPC, 29.34, 3, 103.79, 2, 0)
+ MovementLoopAddLocation(NPC, 33.86, 3, 110.37, 2, 0)
+ MovementLoopAddLocation(NPC, 34.68, 3, 111.14, 2, 1)
+ MovementLoopAddLocation(NPC, 34.68, 3, 111.14, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 37.48, 3, 108.35, 2, 0)
+ MovementLoopAddLocation(NPC, 40.17, 3, 108.85, 2, 0)
+ MovementLoopAddLocation(NPC, 34.92, 3, 109.59, 2, 0)
+ MovementLoopAddLocation(NPC, 29.94, 3, 103.69, 2, 0)
+ MovementLoopAddLocation(NPC, 27.36, 3, 98.82, 2, 0)
+ MovementLoopAddLocation(NPC, 21.73, 3, 93.37, 2, 0)
+ MovementLoopAddLocation(NPC, 19.64, 3, 87.48, 2, 0)
+ MovementLoopAddLocation(NPC, 20.47, 3.01, 83.03, 2, 0)
+ MovementLoopAddLocation(NPC, 20.81, 3, 80.26, 2, 0)
+ MovementLoopAddLocation(NPC, 18.32, 3.01, 70.82, 2, 0)
+ MovementLoopAddLocation(NPC, 21.11, 2.91, 65.83, 2, 0)
+ MovementLoopAddLocation(NPC, 23.28, 2.97, 57.21, 2, 1)
+ MovementLoopAddLocation(NPC, 23.28, 2.97, 57.21, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 23.57, 2.99, 58.79, 2, 0)
+ MovementLoopAddLocation(NPC, 25.79, 3, 59.44, 2, 0)
+ MovementLoopAddLocation(NPC, 27.94, 3, 58.35, 2, 0)
+ MovementLoopAddLocation(NPC, 29.98, 3, 56.56, 2, 0)
+ MovementLoopAddLocation(NPC, 31.69, 3, 52.63, 2, 0)
+ MovementLoopAddLocation(NPC, 28.79, 2.99, 46.6, 2, 0)
+ MovementLoopAddLocation(NPC, 25.92, 2.92, 38.63, 2, 0)
+ MovementLoopAddLocation(NPC, 29.25, 2.92, 25.61, 2, 0)
+ MovementLoopAddLocation(NPC, 30.62, 2.92, 26.17, 2, 1)
+ MovementLoopAddLocation(NPC, 30.62, 2.92, 26.17, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 30, 3, 26.1, 2, 1)
+ MovementLoopAddLocation(NPC, 30, 3, 26.1, 2, 20)
+ MovementLoopAddLocation(NPC, 29.07, 2.92, 29.97, 2, 0)
+ MovementLoopAddLocation(NPC, 28.14, 2.92, 33.84, 2, 0)
+ MovementLoopAddLocation(NPC, 33.03, 2.99, 47.44, 2, 0)
+ MovementLoopAddLocation(NPC, 34.11, 3, 52.7, 2, 0)
+ MovementLoopAddLocation(NPC, 30.37, 3, 57.38, 2, 0)
+ MovementLoopAddLocation(NPC, 25.84, 3, 60.13, 2, 0)
+ MovementLoopAddLocation(NPC, 20.36, 3.09, 62.66, 2, 1)
+ MovementLoopAddLocation(NPC, 20.36, 3.09, 62.66, 2, 20,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 22.3, 2.95, 62.58, 2, 0)
+ MovementLoopAddLocation(NPC, 21.58, 2.93, 66.26, 2, 0)
+ MovementLoopAddLocation(NPC, 19.38, 3.01, 77.73, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/TempleSt/Torsha.lua b/server/SpawnScripts/TempleSt/Torsha.lua
new file mode 100755
index 000000000..be7eb818d
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/Torsha.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/Torsha.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 04:10:51
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+GenericRaceCheckHail(NPC, Spawn, faction)
+end
+
+function InRange(NPC,Spawn)
+GenericRaceCheckCallout(NPC, Spawn, faction)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+ end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 42.33, 3, 83.5, 2, 1)
+ MovementLoopAddLocation(NPC, 42.33, 3, 83.5, 2, 29,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 44.35, 3, 84.45, 2, 0)
+ MovementLoopAddLocation(NPC, 49.66, 3, 92.49, 2, 0)
+ MovementLoopAddLocation(NPC, 51.82, 3, 92.96, 2, 1)
+ MovementLoopAddLocation(NPC, 51.82, 3, 92.96, 2, 24,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 48.4, 3, 90.19, 2, 0)
+ MovementLoopAddLocation(NPC, 48.23, 3, 84.92, 2, 1)
+ MovementLoopAddLocation(NPC, 48.23, 3, 84.92, 2, 29,"EcologyEmotes")
+ MovementLoopAddLocation(NPC, 47.86, 3, 85.96, 2, 0)
+ MovementLoopAddLocation(NPC, 46.17, 3, 86.04, 2, 0)
+end
diff --git a/server/SpawnScripts/TempleSt/TrainerYurik.lua b/server/SpawnScripts/TempleSt/TrainerYurik.lua
new file mode 100755
index 000000000..79d34e826
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/TrainerYurik.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/TrainerYurik.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.07 05:11:05
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/ratonga/ratonga_eco_evil_1_notcitizen_gm_8d2a0876.mp3", "I heard you screaming from all the way over there.", "glare", 3634348917, 2158238801, Spawn)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 1147153942, 3317877781, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 2902124396, 1772494629, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 686446071, 58743600, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/TuberFattleweeble.lua b/server/SpawnScripts/TempleSt/TuberFattleweeble.lua
new file mode 100755
index 000000000..6a6e2da66
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/TuberFattleweeble.lua
@@ -0,0 +1,127 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/TuberFattleweeble.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.27 03:06:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+dofile("SpawnScripts/Generic/GenericVoiceOvers.lua")
+
+-- Item ID's
+local ARTISAN_ESSENTIALS_VOLUME_2 = 31373
+
+function spawn(NPC)
+end
+
+function RandomGreeting(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1054.mp3", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1054.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1054.mp3", 0, 0, Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864) == 8 then
+ Dialog1(NPC,Spawn)
+ elseif GetTradeskillLevel(Spawn) <2 then
+ RandomGreeting(NPC,Spawn)
+
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ RandomGreeting(NPC,Spawn)
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ else
+ RandomGreeting(NPC,Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in West Freeport. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ end
+end
+
+
+function dlg_39_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5864)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
+ StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
+end
+
+function Dialog1(NPC,Spawn)
+ SetStepComplete(Spawn,5864,8)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "hello", 0, 0, Spawn)
+ Dialog.AddDialog("I don't care where you've been or where you're from. As long as you can get a job done, there's a place for you with us. Are you interested in joining The Circle of Vaniki?")
+ RandomGreeting(NPC,Spawn)
+ Dialog.AddOption("Just looking around. As you were.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "orate", 0, 0, Spawn)
+ Dialog.AddDialog("Many things can be done at a tradeskill society and there are many in the city... but ours is obviously the best! Each is equipped with quality crafting stations and fuels needed to become proficient at any tradeskill class you might desire.")
+ Dialog.AddOption("Anything else I should know?", "CanDo2")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function CanDo2(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other players. A very handy connection, indeed!")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn)<2 then
+ Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
+ end
+ Dialog.Start()
+end
+
+function HelpMe(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ Dialog.AddDialog("In order to be competitive in today's marketplace, the Circle of Vaniki provides you with this basic guide to commerce. You will learn many things on your own over time, so do not consider this book your only guide to success. Rely on your own resources and skills and you will prosper.")
+ Dialog.AddOption("What can I do here?", "CanDo")
+ Dialog.AddOption("Thank you for all the information!")
+ if GetTradeskillLevel(Spawn) <2 then
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/ZaZaLenska.lua b/server/SpawnScripts/TempleSt/ZaZaLenska.lua
new file mode 100755
index 000000000..726950f17
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ZaZaLenska.lua
@@ -0,0 +1,88 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ZaZaLenska.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.27 12:10:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+local ZaZasLittleProblem = 451
+
+function spawn(NPC)
+ ProvidesQuest(NPC, ZaZasLittleProblem)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Have you seen my husband, Valeri? He leaves home too often. He comes and goes as he pleases, and I never know where he is! I've had other husbands, and I know the signs of a cheater.")
+ Dialog.AddVoiceover("voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska000.mp3", 1406443097, 3435338985)
+ if CanReceiveQuest(Spawn, ZaZasLittleProblem) then
+ Dialog.AddOption("I don't know whether I have or not. Describe him for me.", "Dialog2")
+ elseif GetQuestStep(Spawn, ZaZasLittleProblem) == 4 then
+ Dialog.AddOption("I've got what you needed.", "Dialog5")
+ end
+ Dialog.AddOption("I've got to do some visiting of my own.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("He's tall and slim with jet black fur and three hoops in his left ear. He's handsome, oh, so handsome! Surely you could not have missed him! Unless, perhaps, his visits are in a ... private home.")
+ Dialog.AddVoiceover("voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska001.mp3", 3365678449, 1708895230)
+ PlayFlavor(NPC,"","","flustered",0,0,Spawn)
+ Dialog.AddOption("Private residences? You mean, visiting friends?", "Dialog3")
+ Dialog.AddOption("Nope, haven't seen him. Good luck in your search.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, to think of Valeri--my sweet, precious husband--in the arms of another! No! I cannot bear it! I must know the truth! And I know just the way. Mama's potion will show me whether he's faithful to his ZaZa, or not. Can you help this poor, unhappy wife?")
+ Dialog.AddVoiceover("voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska002.mp3", 25646826, 3084524681)
+ PlayFlavor(NPC,"","","cry",0,0,Spawn)
+ Dialog.AddOption("What kind of help are you looking for?", "Dialog4")
+ Dialog.AddOption("I won't be able to help. Sorry.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I need ingredients for my potion. Not too many and they must be fresh. I need to spread this potion on my Valeri's clothes ... and then I will have the answers I need. Let me write this down for you; it's complex.")
+ Dialog.AddVoiceover("voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska003.mp3", 1627354695, 3008513581)
+ PlayFlavor(NPC,"","","agree",0,0,Spawn)
+ Dialog.AddOption("I will help you. What will you need?", "Offer")
+ Dialog.AddOption("Perhaps another time.")
+ Dialog.Start()
+end
+
+function Offer(NPC,Spawn)
+ OfferQuest(NPC,Spawn,ZaZasLittleProblem)
+end
+
+function Dialog5(NPC, Spawn)
+ SetStepComplete(Spawn, ZaZasLittleProblem, 4)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Oh, yes ... I'm sure you do. Well, then, you helped me, and I can repay you. It's not much, considering what you did for me and my Valeri, but it's all I can give you. At least for now...")
+ Dialog.AddVoiceover("voiceover/english/zaza_lenska/fprt_hood03/quests/zazalenska/zazalenska008.mp3", 2402358505, 3193482805)
+ PlayFlavor(NPC,"","","happy",0,0,Spawn)
+ Dialog.AddOption("I hope your potion works. Whatever it does.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/TempleSt/ZninkiFlatzazzle.lua b/server/SpawnScripts/TempleSt/ZninkiFlatzazzle.lua
new file mode 100755
index 000000000..8ab87b4da
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/ZninkiFlatzazzle.lua
@@ -0,0 +1,152 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/ZninkiFlatzazzle.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.01 04:11:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+dofile("SpawnScripts/Generic/GenericEcologyVoiceOvers.lua")
+dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+
+local SinceTheWheel = 5919
+
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC,9, "InRange", "LeaveRange")
+ProvidesQuest(NPC,SinceTheWheel)
+ SetInfoStructString(NPC, "action_state", "gathering_search")
+end
+
+function hailed(NPC, Spawn)
+ SetTarget(NPC,Spawn)
+if GetFactionAmount(Spawn,12) <0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "","","shakefist",0,0, Spawn)
+elseif not HasLanguage(Spawn,6) then
+ FaceTarget(NPC, Spawn)
+ Garbled(NPC,Spawn)
+else
+ if GetQuestStep(Spawn,SinceTheWheel) ==1 then
+ PlayFlavor(NPC,"voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1020.mp3","My tracking device does not show the Bisecter with you! Go and get it!... Please?","confused",0,0,Spawn, 6)
+ FaceTarget(NPC, Spawn)
+ else
+ Dialog1(NPC,Spawn)
+ end
+end
+end
+
+function InRange(NPC,Spawn)
+if GetFactionAmount(Spawn,12)<0 then
+ FactionCheckCallout(NPC,Spawn,faction)
+ else
+ if not HasLanguage(Spawn,6)then
+ if math.random(0,100)<80 then
+ PlayFlavor(NPC, "", "", "gathering_search", 0, 0, Spawn)
+ Garbled(NPC,Spawn)
+ end
+ elseif CanReceiveQuest(Spawn,SinceTheWheel) then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "My Bread Bisector! My beautiful Bread Bisector! I'll never rest until it's returned to me!", "grumble", 0, 0, Spawn, 6)
+end
+end
+end
+
+
+
+function Dialog1(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ if CanReceiveQuest(Spawn,SinceTheWheel) then
+ Dialog.AddDialog("Oh dear! The riff-raff that's allowed to roam free in this town. Don't just stand there. Help me locate a sprocket that can connect with this flizgig. I must hurry!")
+ PlayFlavor(NPC, "","","frustrated",0,0, Spawn)
+ else
+ Dialog.AddDialog("I wonder if my next invention will ever live up to my Bisector... What if I attached rockets...")
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ end
+ Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_"..MakeRandomInt(1,3).."_1020.mp3",0,0)
+ Dialog.AddLanguage(6)
+
+ if CanReceiveQuest(Spawn, SinceTheWheel) then
+ Dialog.AddOption("Why do you need it?", "Dialog1a")
+ elseif GetQuestStep(Spawn, SinceTheWheel)==2 then
+ Dialog.AddOption("Here is the orcish sword you requested.", "Dialog2")
+ end
+ Dialog.AddOption("I don't have time for this.")
+ Dialog.Start()
+end
+
+
+
+function Dialog1a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I need it to complete a tracking device to locate some squatter who absconded with my Bread Bisector! Ah-ha! Found one! Now I can activate the anti-theft mechanism on the Bisector ... just so ... it's a good thing I installed that Sanguine Atomizing Locator.")
+ Dialog.AddLanguage(6)
+ PlayFlavor(NPC, "","","ponder",0,0, Spawn)
+ Dialog.AddOption("Sangui-what? Are you mad?", "Dialog1b")
+ Dialog.AddOption("I have much better thing to do than listen to this!")
+ Dialog.Start()
+end
+
+function Dialog1b(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You've never heard of my Sanguine Atomizing Locator? It's how I keep thieves from using my inventions. See, if I clink this tuning fork like this, the Locator rockets the thief a mile into the air, where he suddenly explodes in a spectacular burst of blood ... making him much easier to locate. Ah-ha! You see that red cloud up there? That must be the vagrant who took my Bread Bisector! Oh, I simply must retrieve it!")
+ Dialog.AddLanguage(6)
+ PlayFlavor(NPC, "","","confused",0,0, Spawn)
+ Dialog.AddOption("Impressive! I suppose I could try to find it for you.", "OfferQuest1")
+ Dialog.AddOption("Potentional explosions sound too messy for me.")
+ Dialog.Start()
+end
+
+function OfferQuest1(NPC,Spawn)
+ if CanReceiveQuest(Spawn, SinceTheWheel) then
+ OfferQuest(NPC, Spawn, SinceTheWheel)
+ end
+end
+
+function Dialog2(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes! Yes! You've found it! I knew when those squatters moved in they would be trouble... Please, you must accept this prototype as payment. I'll even disable the Sanguine Atomizing Locator so you need not worry about blowing up in the future! I can envision the improvements I can make on this design!")
+ Dialog.AddLanguage(6)
+ PlayFlavor(NPC, "","","heelclick",0,0, Spawn)
+ Dialog.AddOption("It just looks like a knife...","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC,Spawn)
+ SetTarget(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It's no ordinary knife, my friend. It's the Bread Bisector! See, you take an ordinary loaf of bread and, using the Bisector, you slice it in twain! And if you adjust this little knob here, you can bisect it many many times over ... creating \"slices.\" Have you ever seen the like?")
+ Dialog.AddLanguage(6)
+ PlayFlavor(NPC, "","","scheme",0,0, Spawn)
+ Dialog.AddOption("Remarkable!","Finish")
+ Dialog.AddOption("Amazing!","Finish")
+ Dialog.AddOption("Glorious!","Finish")
+ Dialog.Start()
+end
+
+function Finish(NPC,Spawn)
+ SetStepComplete(Spawn, SinceTheWheel, 2)
+end
+
+
+
+
+--
+--You've never heard of my Sanguine Atomizing Locator? It's how I keep thieves from using my inventions. See, if I clink this tuning fork like this, the Locator rockets the thief a mile into the air, where he suddenly explodes in a spectacular burst of blood ... making him much easier to locate. Ah-ha! You see that red cloud up there? That must be the goblin who took my Bread Bisector! Oh, I simply must retrieve it!
+--Would you? That would be most satisfactory! Why yes, I like that idea very much. I shall eagerly await the return of my ingenious device – the Bread Bisector!
+--I've found the Bread Bisector on one of the a Blackshield pillagers.
+
+--My Bread Bisector! My beautiful Bread Bisector! I'll never rest until it's returned to me!
+
+--I've managed to find the Bread Bisector, which looks awfully similar to a knife.
+--It's no ordinary knife, my friend. It's the Bread Bisector! See, you take an ordinary loaf of bread and, using the Bisector, you slice it in twain! And if you adjust this little knob here, you can bisect it many many times over ... creating "slices." Have you ever seen the like?
diff --git a/server/SpawnScripts/TempleSt/acrudeweapon.lua b/server/SpawnScripts/TempleSt/acrudeweapon.lua
new file mode 100755
index 000000000..6f5d8ff6d
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/acrudeweapon.lua
@@ -0,0 +1,64 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/acrudeweapon.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.31 12:10:38
+ Script Purpose :
+ :
+--]]
+
+local VlepoPlan = 5917
+
+function spawn(NPC)
+ SetRequiredQuest(NPC, VlepoPlan, 1, 1)
+SetTempVariable(NPC,"Callout","false")
+end
+--
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Attempt to steal' then
+ local zone = GetZone(NPC)
+ local Shinska = GetSpawnByLocationID(zone, 420479)
+ local Guard = GetSpawnByLocationID(zone, 133787206)
+ local GuardDistance = GetDistance(Spawn,Guard)
+
+ if GetTempVariable(NPC,"Callout") ~= "true" then
+ SetTempVariable(NPC,"Callout","true")
+ PlayFlavor(Shinska,"","You! What yous think yous doing?! Speak to me if you want to buy weapons.","shakefist",0,0,Spawn)
+ FaceTarget(Shinska,Spawn)
+ AddTimer(NPC,7000,"ResetCallout",1,Spawn)
+
+ if GuardDistance <=4 then
+ GuardAttack(NPC,Spawn)
+ AddTimer(NPC,3500,"Kick",1,Spawn)
+ end
+
+ else
+ AddTimer(NPC,10000,"Kick",1,Spawn)
+ PlayFlavor(Shinska,"","THIEF! Guards! Guards!!","point",0,0,Spawn)
+ FaceTarget(Shinska,Spawn)
+ GuardAttack(NPC,Spawn)
+ end
+end
+end
+
+function GuardAttack(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Guard = GetSpawnByLocationID(zone, 133787206)
+ Attack(Guard,Spawn)
+ PlayFlavor(Guard,"","Stop thief!!","",0,0,Spawn)
+ SendPopUpMessage(Spawn,"A guard has spotted you!",250,0,0)
+ SendMessage(Spawn,"A guard has spotted you!","red")
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function Kick(NPC,Spawn)
+ ZoneRef = GetZone("TempleSt")
+ Zone(ZoneRef,Spawn)
+end
+
+function ResetCallout(NPC,Spawn)
+SetTempVariable(NPC,"Callout","false")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/arat.lua b/server/SpawnScripts/TempleSt/arat.lua
new file mode 100755
index 000000000..912e984ea
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/arat.lua
@@ -0,0 +1,399 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/arat.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.23 11:10:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ waypoints1(NPC)
+ DespawnCheck(NPC)
+ if GetSpawnLocationID(NPC) ==420362 or
+ GetSpawnLocationID(NPC) ==420349 or
+ GetSpawnLocationID(NPC) ==420316 then
+ else
+ AddTimer(NPC,MakeRandomInt(3000,6000),"ChefCheck")
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function DespawnCheck(NPC)
+ if GetSpawnLocationID(NPC) ==420362 then
+ AddTimer(NPC,184000,"Despawning")
+ elseif GetSpawnLocationID(NPC) ==420349 then
+ AddTimer(NPC,123000,"Despawning")
+ elseif GetSpawnLocationID(NPC) ==420316 then
+ AddTimer(NPC,123000,"Despawning")
+ end
+end
+
+function ChefCheck(NPC,Spawn)
+ if IsAlive(NPC) then
+ AddTimer(NPC,MakeRandomInt(4000,7000),"ChefCheck")
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ if not IsInCombat(NPC) and Chef~= nil and not IsInCombat(Chef)then
+ local Distance = GetDistance(NPC,Chef,1)
+ if Distance <=4 then
+ Attack(Chef,NPC)
+ Attack(NPC,Chef)
+ local x = GetX(Chef)
+ local y = GetY(Chef)
+ local z = GetZ(Chef)
+ SetFollowTarget(Chef,NPC)
+ SetFollowTarget(NPC,Chef)
+ ToggleFollow(Chef)
+ ToggleFollow(NPC)
+ SetTarget(Chef,NPC)
+ FaceTarget(Chef,NPC)
+ FaceTarget(NPC,Chef)
+ PlayFlavor(NPC,"","","attack",0,0)
+ AddTimer(NPC,MakeRandomInt(2500,4500),"kill",1,Spawn)
+ end
+ end
+end
+end
+
+function kill (NPC,Spawn)
+ ApplySpellVisual(NPC,51)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","1h_sword_attack",0,0)
+ KillSpawn(NPC)
+ AddTimer(Chef,2500,"scoop")
+ AddTimer(NPC,3000,"Despawning")
+end
+
+function Despawning(NPC,Spawn)
+ Despawn(NPC)
+end
+
+function scoop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Chef = GetSpawnByLocationID(zone,420550)
+ PlayFlavor(Chef,"","","gathering_success",0,0)
+ Despawn(NPC)
+end
+
+function waypoints1(NPC)
+ if GetSpawnLocationID(NPC) ==420362 then--Methos1
+ MoveToLocation(NPC,28.6, 3, 61.12, 1)
+ elseif GetSpawnLocationID(NPC) ==420349 then--Methos2
+ MoveToLocation(NPC,33.31, 3.00, 71.43, 4)
+ elseif GetSpawnLocationID(NPC) ==420316 then--Skitter
+ MoveToLocation(NPC,-22.84, 3.00, 84.05, 4)
+ elseif GetSpawnLocationID(NPC) ==420418 then --roamer1
+ MovementLoopAddLocation(NPC, 50.22, 3, 60.54, 2, 0)
+ MovementLoopAddLocation(NPC, 46.6, 3, 54.03, 2, 0)
+ MovementLoopAddLocation(NPC, 50.28, 3, 42.38, 2, 18)
+ MovementLoopAddLocation(NPC, 48.27, 3, 48.06, 4, 0)
+ MovementLoopAddLocation(NPC, 47.57, 3, 51.15, 4, 0)
+ MovementLoopAddLocation(NPC, 50.07, 3, 59.61, 4, 0)
+ MovementLoopAddLocation(NPC, 53.1, 3, 63.73, 4, 0)
+ MovementLoopAddLocation(NPC, 53.17, 3, 68.48, 4, 0)
+ MovementLoopAddLocation(NPC, 47.78, 3, 72.85, 4, 6)
+ MovementLoopAddLocation(NPC, 42.18, 3.00, 75.57, 2, 0)
+ MovementLoopAddLocation(NPC, 46.98, 3.00, 80.83, 2, 18)
+ MovementLoopAddLocation(NPC, 43.67, 3, 80.19, 2, 0)
+ MovementLoopAddLocation(NPC, 45.03, 3, 71.96, 4, 0)
+ MovementLoopAddLocation(NPC, 53.2, 3, 66.09, 4, 0)
+ MovementLoopAddLocation(NPC, 58.40, 3.00, 61.48, 4, 0)
+ MovementLoopAddLocation(NPC, 65.21, 3, 60, 2, 0)
+ MovementLoopAddLocation(NPC, 65.21, 3, 60, 2, 18)
+ MovementLoopAddLocation(NPC, 59.17, 3, 60.8, 2, 0)
+ MovementLoopAddLocation(NPC, 54.7, 3, 63.07, 2, 0)
+ MovementLoopAddLocation(NPC, 51.18, 3, 62.03, 4, 0)
+ MovementLoopAddLocation(NPC, 48.25, 3, 55.38, 4, 0)
+ MovementLoopAddLocation(NPC, 42.85, 3, 49.97, 4, 0)
+ MovementLoopAddLocation(NPC, 37.28, 3, 50.96, 4, 0)
+ MovementLoopAddLocation(NPC, 29.87, 2.99, 48.11, 2, 0)
+ MovementLoopAddLocation(NPC, 23.79, 2.92, 39.37, 2, 0)
+ MovementLoopAddLocation(NPC, 20.73, 2.92, 39.49, 2, 18)
+ MovementLoopAddLocation(NPC, 18.33, 2.92, 36.27, 4, 0)
+ MovementLoopAddLocation(NPC, 4.64, 2.92, 28.45, 4, 0)
+ MovementLoopAddLocation(NPC, 4.79, 2.92, 27.57, 2, 18)
+ MovementLoopAddLocation(NPC, 7.39, 2.92, 30.12, 2, 0)
+ MovementLoopAddLocation(NPC, 19.62, 2.92, 34.94, 2, 0)
+ MovementLoopAddLocation(NPC, 34.67, 2.92, 28.9, 2, 18)
+ MovementLoopAddLocation(NPC, 30.63, 2.92, 31.15, 4, 0)
+ MovementLoopAddLocation(NPC, 29.61, 2.92, 35.36, 4, 0)
+ MovementLoopAddLocation(NPC, 33.03, 2.95, 45.05, 4, 0)
+ MovementLoopAddLocation(NPC, 38.31, 3, 49.99, 4, 0)
+ MovementLoopAddLocation(NPC, 42.27, 3.00, 49.37, 4, 0)
+ MovementLoopAddLocation(NPC, 50.8, 3, 58.39, 2, 18)
+ elseif GetSpawnLocationID(NPC) ==420319 then --roamer2
+ MovementLoopAddLocation(NPC, 3.31, 3, 52.7, 4, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 1.61, 3, 56.29, 4, 0)
+ MovementLoopAddLocation(NPC, -0.33, 3, 63.8, 4, 0)
+ MovementLoopAddLocation(NPC, 1.79, 3, 70.83, 4, 0)
+ MovementLoopAddLocation(NPC, -3.19, 3, 75.71, 4, 0)
+ MovementLoopAddLocation(NPC, -8.54, 3, 79.15, 4, 0)
+ MovementLoopAddLocation(NPC, -13.67, 3, 79.65, 4, 0)
+ MovementLoopAddLocation(NPC, -23.53, 3, 83.75, 4, 0)
+ MovementLoopAddLocation(NPC, -30.23, 3, 79.81, 4, 0)
+ MovementLoopAddLocation(NPC, -31.27, 3, 77.92, 4, 0)
+ MovementLoopAddLocation(NPC, -27.5, 3, 71.29, 4, 0)
+ MovementLoopAddLocation(NPC, -24.61, 3, 67.05, 4, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, -27.47, 3, 74.66, 4, 0)
+ MovementLoopAddLocation(NPC, -28.88, 3, 76.96, 4, 0)
+ MovementLoopAddLocation(NPC, -26.4, 3, 82.04, 4, 0)
+ MovementLoopAddLocation(NPC, -21.04, 3, 84.58, 4, 0)
+ MovementLoopAddLocation(NPC, -13.17, 3, 79.84, 4, 0)
+ MovementLoopAddLocation(NPC, -9.42, 3, 77.55, 4, 0)
+ MovementLoopAddLocation(NPC, -6.94, 3, 88.58, 4, 0)
+ MovementLoopAddLocation(NPC, 4.62, 3, 86.19, 4, 0)
+ MovementLoopAddLocation(NPC, 15.72, 3, 83.36, 4, 0)
+ MovementLoopAddLocation(NPC, 20.94, 3.01, 86.49, 4, 0)
+ MovementLoopAddLocation(NPC, 29.33, 3, 85.66, 4, 0)
+ MovementLoopAddLocation(NPC, 32.1, 3, 84.54, 4, 0)
+ MovementLoopAddLocation(NPC, 32.27, 3, 79.66, 4, 0)
+ MovementLoopAddLocation(NPC, 36.16, 3, 64.43, 4, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 32.66, 3, 59.03, 4, 0)
+ MovementLoopAddLocation(NPC, 31.89, 3, 55.81, 4, 0)
+ MovementLoopAddLocation(NPC, 35.17, 3, 46.31, 4, MakeRandomInt(10,20))
+ MovementLoopAddLocation(NPC, 29.3, 3, 57.84, 4, 0)
+ MovementLoopAddLocation(NPC, 20.79, 2.95, 70.82, 4, 0)
+ MovementLoopAddLocation(NPC, 14.68, 3, 73.55, 4, 0)
+ MovementLoopAddLocation(NPC, 0.87, 3, 66.21, 4, 0)
+ MovementLoopAddLocation(NPC, -1.66, 3, 59.99, 4, 0)
+ elseif GetSpawnLocationID(NPC) ==420307 then --roamer3
+ MovementLoopAddLocation(NPC, -34.04, 2.86, 122.62, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -38.34, 2.85, 118.87, 4, 0)
+ MovementLoopAddLocation(NPC, -33.16, 3.03, 112.12, 4, 0)
+ MovementLoopAddLocation(NPC, -26.17, 2.75, 107.21, 4, 0)
+ MovementLoopAddLocation(NPC, -18.56, 3, 102.99, 4, 0)
+ MovementLoopAddLocation(NPC, -19.36, 3, 97.14, 4, 10)
+ MovementLoopAddLocation(NPC, -19.36, 3, 97.14, 4, 0)
+ MovementLoopAddLocation(NPC, -13.79, 3, 104.47, 4, 0)
+ MovementLoopAddLocation(NPC, -6.69, 3, 101.42, 4, 0)
+ MovementLoopAddLocation(NPC, -1.94, 3, 102.93, 4, 0)
+ MovementLoopAddLocation(NPC, 0.35, 3, 110.97, 4, 0)
+ MovementLoopAddLocation(NPC, -2.57, 3, 113.71, 4, 0)
+ MovementLoopAddLocation(NPC, -9.48, 3, 116.75, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -0.24, 3, 112.11, 4, 0)
+ MovementLoopAddLocation(NPC, 0.37, 3, 109.8, 4, 0)
+ MovementLoopAddLocation(NPC, -4.65, 3, 98.85, 4, 0)
+ MovementLoopAddLocation(NPC, -6.95, 3, 92.88, 4, 0)
+ MovementLoopAddLocation(NPC, -4.88, 3, 90.4, 4, 0)
+ MovementLoopAddLocation(NPC, 2.35, 3, 86.32, 4, 0)
+ MovementLoopAddLocation(NPC, 11.51, 3, 83.06, 4, 0)
+ MovementLoopAddLocation(NPC, 12.79, 3, 81.17, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, 18.86, 3, 84.01, 4, 0)
+ MovementLoopAddLocation(NPC, 29.86, 3, 102.37, 4, 0)
+ MovementLoopAddLocation(NPC, 34.26, 3, 108.75, 4, 0)
+ MovementLoopAddLocation(NPC, 44.05, 3.1, 103.55, 4, 0)
+ MovementLoopAddLocation(NPC, 51.2, 3, 99.48, 4, 0)
+ MovementLoopAddLocation(NPC, 46.04, 3, 89.15, 4, 0)
+ MovementLoopAddLocation(NPC, 45.64, 3, 83.43, 4, 0)
+ MovementLoopAddLocation(NPC, 42.66, 3, 79.1, 4, 0)
+ MovementLoopAddLocation(NPC, 34.79, 3, 75.25, 4, 0)
+ MovementLoopAddLocation(NPC, 31.02, 3, 67.66, 4, 0)
+ MovementLoopAddLocation(NPC, 29.34, 3, 60.05, 4, 0)
+ MovementLoopAddLocation(NPC, 35.42, 3, 46.23, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, 34.57, 3, 51.93, 4, 0)
+ MovementLoopAddLocation(NPC, 31.61, 3, 57.1, 4, 0)
+ MovementLoopAddLocation(NPC, 36.27, 3, 64.26, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, 34.19, 3, 71.14, 4, 0)
+ MovementLoopAddLocation(NPC, 33.26, 3, 74.34, 4, 0)
+ MovementLoopAddLocation(NPC, 27.07, 3, 76.92, 4, 0)
+ MovementLoopAddLocation(NPC, 11.65, 3, 70.79, 4, 0)
+ MovementLoopAddLocation(NPC, 7.1, 3, 68.84, 4, 0)
+ MovementLoopAddLocation(NPC, -1.14, 3, 70.64, 4, 0)
+ MovementLoopAddLocation(NPC, -4.93, 3, 75.08, 4, 0)
+ MovementLoopAddLocation(NPC, -25.79, 3, 84.46, 4, 0)
+ MovementLoopAddLocation(NPC, -28.99, 3, 81.59, 4, 0)
+ MovementLoopAddLocation(NPC, -28.53, 3, 76.05, 4, 0)
+ MovementLoopAddLocation(NPC, -25.03, 3, 71.16, 4, 0)
+ MovementLoopAddLocation(NPC, -20.24, 3, 69.95, 4, 0)
+ MovementLoopAddLocation(NPC, -19.01, 3, 70.96, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -22.9, 3, 69.39, 4, 0)
+ MovementLoopAddLocation(NPC, -27.43, 3, 73.35, 4, 0)
+ MovementLoopAddLocation(NPC, -29.36, 3, 76.45, 4, 0)
+ MovementLoopAddLocation(NPC, -27.29, 3, 83.2, 4, 0)
+ MovementLoopAddLocation(NPC, -24.71, 3, 84, 4, 0)
+ MovementLoopAddLocation(NPC, -12.64, 3, 78.39, 4, 0)
+ MovementLoopAddLocation(NPC, -5.14, 3, 88.64, 4, 0)
+ MovementLoopAddLocation(NPC, -6.25, 3, 92.46, 4, 0)
+ MovementLoopAddLocation(NPC, -4.26, 3.27, 99.63, 4, 0)
+ MovementLoopAddLocation(NPC, -3.23, 3, 104.85, 4, 0)
+ MovementLoopAddLocation(NPC, -3.23, 3, 104.85, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -4.53, 3, 101.11, 4, 0)
+ MovementLoopAddLocation(NPC, -14.43, 3, 104.5, 4, 0)
+ MovementLoopAddLocation(NPC, -32.17, 3.18, 108, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -31.54, 2.84, 109.77, 4, 0)
+ MovementLoopAddLocation(NPC, -33.48, 2.87, 113.22, 4, 0)
+ MovementLoopAddLocation(NPC, -47.3, 2.84, 122.62, 4, 0)
+ MovementLoopAddLocation(NPC, -63.57, 2.84, 126.96, 4, 0)
+ MovementLoopAddLocation(NPC, -49.6, 2.83, 120.21, 4, 0)
+ MovementLoopAddLocation(NPC, -19.08, 2.65, 105.32, 4, 0)
+ MovementLoopAddLocation(NPC, -9.01, 3, 102.93, 4, 0)
+ MovementLoopAddLocation(NPC, -5.34, 3, 98.16, 4, 0)
+ MovementLoopAddLocation(NPC, -7.39, 3, 89.53, 4, 0)
+ MovementLoopAddLocation(NPC, -10.11, 3, 78.03, 4, 0)
+ MovementLoopAddLocation(NPC, 4.34, 3, 71.36, 4, 0)
+ MovementLoopAddLocation(NPC, 1.48, 3, 65.69, 4, 0)
+ MovementLoopAddLocation(NPC, -4.74, 3, 58.51, 4, 0)
+ MovementLoopAddLocation(NPC, -11.18, 3, 62.23, 4, 0)
+ MovementLoopAddLocation(NPC, -11.14, 3, 63.36, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -11.18, 3, 62.23, 4, 0)
+ MovementLoopAddLocation(NPC, -4.74, 3, 58.51, 4, 0)
+ MovementLoopAddLocation(NPC, 1.48, 3, 65.69, 4, 0)
+ MovementLoopAddLocation(NPC, 4.34, 3, 71.36, 4, 0)
+ MovementLoopAddLocation(NPC, -10.11, 3, 78.03, 4, 0)
+ MovementLoopAddLocation(NPC, -7.39, 3, 89.53, 4, 0)
+ MovementLoopAddLocation(NPC, -5.34, 3, 98.16, 4, 0)
+ MovementLoopAddLocation(NPC, -9.01, 3, 102.93, 4, 0)
+ MovementLoopAddLocation(NPC, -19.08, 2.65, 105.32, 4, 0)
+ MovementLoopAddLocation(NPC, -49.6, 2.83, 120.21, 4, 0)
+ MovementLoopAddLocation(NPC, -63.57, 2.84, 126.96, 4, 0)
+ MovementLoopAddLocation(NPC, -47.3, 2.84, 122.62, 4, 0)
+ MovementLoopAddLocation(NPC, -33.48, 2.87, 113.22, 4, 0)
+ MovementLoopAddLocation(NPC, -31.54, 2.84, 109.77, 4, 0)
+ MovementLoopAddLocation(NPC, -32.17, 3.18, 108, 4, 10)
+ MovementLoopAddLocation(NPC, -14.43, 3, 104.5, 4, 0)
+ MovementLoopAddLocation(NPC, -4.53, 3, 101.11, 4, 0)
+ MovementLoopAddLocation(NPC, -3.23, 3, 104.85, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -3.23, 3, 104.85, 4, 0)
+ MovementLoopAddLocation(NPC, -4.26, 3.27, 99.63, 4, 0)
+ MovementLoopAddLocation(NPC, -6.25, 3, 92.46, 4, 0)
+ MovementLoopAddLocation(NPC, -5.14, 3, 88.64, 4, 0)
+ MovementLoopAddLocation(NPC, -12.64, 3, 78.39, 4, 0)
+ MovementLoopAddLocation(NPC, -24.71, 3, 84, 4, 0)
+ MovementLoopAddLocation(NPC, -27.29, 3, 83.2, 4, 0)
+ MovementLoopAddLocation(NPC, -29.36, 3, 76.45, 4, 0)
+ MovementLoopAddLocation(NPC, -27.43, 3, 73.35, 4, 0)
+ MovementLoopAddLocation(NPC, -22.9, 3, 69.39, 4, 0)
+ MovementLoopAddLocation(NPC, -19.01, 3, 70.96, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -20.24, 3, 69.95, 4, 0)
+ MovementLoopAddLocation(NPC, -25.03, 3, 71.16, 4, 0)
+ MovementLoopAddLocation(NPC, -28.53, 3, 76.05, 4, 0)
+ MovementLoopAddLocation(NPC, -28.99, 3, 81.59, 4, 0)
+ MovementLoopAddLocation(NPC, -25.79, 3, 84.46, 4, 0)
+ MovementLoopAddLocation(NPC, -4.93, 3, 75.08, 4, 0)
+ MovementLoopAddLocation(NPC, -1.14, 3, 70.64, 4, 0)
+ MovementLoopAddLocation(NPC, 7.1, 3, 68.84, 4, 0)
+ MovementLoopAddLocation(NPC, 11.65, 3, 70.79, 4, 0)
+ MovementLoopAddLocation(NPC, 27.07, 3, 76.92, 4, 0)
+ MovementLoopAddLocation(NPC, 33.26, 3, 74.34, 4, 0)
+ MovementLoopAddLocation(NPC, 34.19, 3, 71.14, 4, 0)
+ MovementLoopAddLocation(NPC, 36.27, 3, 64.26, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, 31.61, 3, 57.1, 4, 0)
+ MovementLoopAddLocation(NPC, 34.57, 3, 51.93, 4, 0)
+ MovementLoopAddLocation(NPC, 35.42, 3, 46.23, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, 29.34, 3, 60.05, 4, 0)
+ MovementLoopAddLocation(NPC, 31.02, 3, 67.66, 4, 0)
+ MovementLoopAddLocation(NPC, 34.79, 3, 75.25, 4, 0)
+ MovementLoopAddLocation(NPC, 42.66, 3, 79.1, 4, 0)
+ MovementLoopAddLocation(NPC, 45.64, 3, 83.43, 4, 0)
+ MovementLoopAddLocation(NPC, 46.04, 3, 89.15, 4, 0)
+ MovementLoopAddLocation(NPC, 51.2, 3, 99.48, 4, 0)
+ MovementLoopAddLocation(NPC, 44.05, 3.1, 103.55, 4, 0)
+ MovementLoopAddLocation(NPC, 34.26, 3, 108.75, 4, 0)
+ MovementLoopAddLocation(NPC, 29.86, 3, 102.37, 4, 0)
+ MovementLoopAddLocation(NPC, 18.86, 3, 84.01, 4, 0)
+ MovementLoopAddLocation(NPC, 12.79, 3, 81.17, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, 11.51, 3, 83.06, 4, 0)
+ MovementLoopAddLocation(NPC, 2.35, 3, 86.32, 4, 0)
+ MovementLoopAddLocation(NPC, -4.88, 3, 90.4, 4, 0)
+ MovementLoopAddLocation(NPC, -6.95, 3, 92.88, 4, 0)
+ MovementLoopAddLocation(NPC, -4.65, 3, 98.85, 4, 0)
+ MovementLoopAddLocation(NPC, 0.37, 3, 109.8, 4, 0)
+ MovementLoopAddLocation(NPC, -0.24, 3, 112.11, 4, 0)
+ MovementLoopAddLocation(NPC, -9.48, 3, 116.75, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -2.57, 3, 113.71, 4, 0)
+ MovementLoopAddLocation(NPC, 0.35, 3, 110.97, 4, 0)
+ MovementLoopAddLocation(NPC, -1.94, 3, 102.93, 4, 0)
+ MovementLoopAddLocation(NPC, -6.69, 3, 101.42, 4, 0)
+ MovementLoopAddLocation(NPC, -13.79, 3, 104.47, 4, 0)
+ MovementLoopAddLocation(NPC, -19.36, 3, 97.14, 4, 0)
+ MovementLoopAddLocation(NPC, -19.36, 3, 97.14, 4, MakeRandomInt(8,14))
+ MovementLoopAddLocation(NPC, -18.56, 3, 102.99, 4, 0)
+ MovementLoopAddLocation(NPC, -26.17, 2.75, 107.21, 4, 0)
+ MovementLoopAddLocation(NPC, -33.16, 3.03, 112.12, 4, 0)
+ MovementLoopAddLocation(NPC, -38.34, 2.85, 118.87, 4, 0)
+ end
+end
+
+function waypoints2(NPC)
+ if GetSpawnLocationID(NPC) ==420362 then
+ MovementLoopAddLocation(NPC, 31.95, 3, 55.2, 6, 2)
+ MovementLoopAddLocation(NPC, 39.86, 3, 50.85, 6, 0)
+ MovementLoopAddLocation(NPC, 44.76, 3, 52.29, 6, 0)
+ MovementLoopAddLocation(NPC, 50.85, 3, 60.83, 6, 0)
+ MovementLoopAddLocation(NPC, 54.89, 3, 64.29, 6, 0)
+ MovementLoopAddLocation(NPC, 63.8, 2.77, 67.88, 6, 0)
+ MovementLoopAddLocation(NPC, 70.13, 1.63, 70.44, 6, 0)
+ MovementLoopAddLocation(NPC, 72.76, 0.37, 74.76, 4, 0)
+ MovementLoopAddLocation(NPC, 75.94, -2.87, 84.52, 4, 0)
+ MovementLoopAddLocation(NPC, 81.62, -4.57, 92.12, 4, 0)
+ MovementLoopAddLocation(NPC, 81.83, -4.57, 101.89, 4, 0)
+ MovementLoopAddLocation(NPC, 76.4, -4.57, 109.38, 4, 0)
+ MovementLoopAddLocation(NPC, 74.74, -4.57, 119.51, 4, 0)
+ MovementLoopAddLocation(NPC, 79.26, -4.57, 129.48, 4, 0)
+ MovementLoopAddLocation(NPC, 81.52, -4.57, 129.65, 4, 0)
+ MovementLoopAddLocation(NPC, 80.34, -4.57, 127.54, 4, 30)
+ MovementLoopAddLocation(NPC, 76.3, -4.57, 119.97, 1, 0)
+ MovementLoopAddLocation(NPC, 75.12, -4.57, 112.32, 1, 0)
+ MovementLoopAddLocation(NPC, 75.38, -4.57, 108.35, 1, 10)
+ MovementLoopAddLocation(NPC, 79.18, -4.57, 103.91, 1, 0)
+ MovementLoopAddLocation(NPC, 80.15, -4.57, 100.38, 1, 0)
+ MovementLoopAddLocation(NPC, 77.45, -4.56, 94.18, 1, 0)
+ MovementLoopAddLocation(NPC, 73.76, -3.52, 87.56, 1, 0)
+ MovementLoopAddLocation(NPC, 73.33, -3.11, 86.74, 1, 5)
+ MovementLoopAddLocation(NPC, 71.66, -0.27, 77.96, 1, 0)
+ MovementLoopAddLocation(NPC, 71.52, 0.81, 73.98, 1, 0)
+ MovementLoopAddLocation(NPC, 70.47, 1.33, 72.3, 1, 0)
+ MovementLoopAddLocation(NPC, 64.81, 2.71, 69.86, 1, 0)
+ MovementLoopAddLocation(NPC, 63.46, 3, 61.49, 1, 10)
+ MovementLoopAddLocation(NPC, 59.5, 3, 60.81, 1, 0)
+ MovementLoopAddLocation(NPC, 53, 3, 66.82, 1, 0)
+ MovementLoopAddLocation(NPC, 47.39, 3, 72.82, 1, 0)
+ MovementLoopAddLocation(NPC, 38.52, 3, 76.35, 1, 0)
+ MovementLoopAddLocation(NPC, 34.5, 3, 68.86, 1, 0)
+ MovementLoopAddLocation(NPC, 36.18, 3, 64.02, 1, 0)
+ MovementLoopAddLocation(NPC, 36.18, 3, 64.02, 1, 4)
+ elseif GetSpawnLocationID(NPC) ==420349 then
+ MovementLoopAddLocation(NPC, 30.93, 3, 69.23, 6, 0)
+ MovementLoopAddLocation(NPC, 28.76, 3, 61.79, 6, 0)
+ MovementLoopAddLocation(NPC, 24.7, 3, 61.78, 6, 0)
+ MovementLoopAddLocation(NPC, 21.63, 2.93, 66.95, 6, 0)
+ MovementLoopAddLocation(NPC, 17.96, 3.01, 72.13, 6, 0)
+ MovementLoopAddLocation(NPC, 5.76, 3, 67.83, 6, 0)
+ MovementLoopAddLocation(NPC, -2.09, 3, 61.88, 6, 0)
+ MovementLoopAddLocation(NPC, -1.3, 3, 57.67, 6, 0)
+ MovementLoopAddLocation(NPC, -5.37, 3, 56.58, 6, 0)
+ MovementLoopAddLocation(NPC, -6.35, 3, 58.17, 6, 0)
+ MovementLoopAddLocation(NPC, -6.35, 3, 58.17, 6, 10)
+ MovementLoopAddLocation(NPC, -0.77, 3.00, 57.48, 1, 0)
+ MovementLoopAddLocation(NPC, 4.15, 3.00, 52.91, 6, 999)
+ elseif GetSpawnLocationID(NPC) ==420349 then
+ MovementLoopAddLocation(NPC, -22.81, 3, 83.91, 6, 0)
+ MovementLoopAddLocation(NPC, -12.18, 3, 79.22, 6, 0)
+ MovementLoopAddLocation(NPC, -6.65, 3, 89.24, 6, 0)
+ MovementLoopAddLocation(NPC, -4.77, 3, 99.87, 6, 0)
+ MovementLoopAddLocation(NPC, -12.57, 3, 104.86, 6, 0)
+ MovementLoopAddLocation(NPC, -17.18, 2.97, 105.37, 6, 0)
+ MovementLoopAddLocation(NPC, -32.7, 3, 112.34, 6, 0)
+ MovementLoopAddLocation(NPC, -35.23, 2.84, 114.18, 6, 0)
+ MovementLoopAddLocation(NPC, -60.02, 2.84, 128.2, 6, 0)
+ MovementLoopAddLocation(NPC, -47.68, 2.84, 120.5, 6, 0)
+ MovementLoopAddLocation(NPC, -39.01, 2.83, 116.71, 6, 0)
+ MovementLoopAddLocation(NPC, -34.13, 2.84, 121.18, 6, 0)
+ MovementLoopAddLocation(NPC, -36.74, 2.83, 119.12, 6, 0)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 0)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 1)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 1)
+ MovementLoopAddLocation(NPC, -44.02, 2.83, 105.2, 6, 12)
+ MovementLoopAddLocation(NPC, -39.18, 2.81, 112.46, 4, 0)
+ MovementLoopAddLocation(NPC, -39.18, 2.81, 112.46, 4, 0)
+ MovementLoopAddLocation(NPC, -33.88, 2.93, 112.57, 4, 0)
+ MovementLoopAddLocation(NPC, -23.41, 2.81, 103.94, 4, 0)
+ MovementLoopAddLocation(NPC, -18.63, 3, 101.25, 4, 0)
+ MovementLoopAddLocation(NPC, -17.31, 3, 99.16, 4, 900)
+end
+end
+
diff --git a/server/SpawnScripts/TempleSt/astein.lua b/server/SpawnScripts/TempleSt/astein.lua
new file mode 100755
index 000000000..5f99a0701
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/astein.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/astein.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.29 12:10:06
+ Script Purpose :
+ :
+--]]
+local MucksQuest = 5874
+
+function spawn(NPC)
+ SetRequiredQuest(NPC, MucksQuest, 2, 1)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/forestspidershipment.lua b/server/SpawnScripts/TempleSt/forestspidershipment.lua
new file mode 100755
index 000000000..b903d533f
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/forestspidershipment.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/forestspidershipment.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.14 04:11:00
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC, 1, 1,0)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/tofprtcitizenshiptrial.lua b/server/SpawnScripts/TempleSt/tofprtcitizenshiptrial.lua
new file mode 100755
index 000000000..cdadbbe07
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/tofprtcitizenshiptrial.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/tofprtcitizenshiptrial.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.27 02:06:34
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetRequiredQuest(NPC, 5864, 13)
+SetRequiredQuest(NPC, 5871, 2)
+SetRequiredQuest(NPC, 5871, 3)
+SetRequiredQuest(NPC, 5871, 4)
+SetRequiredQuest(NPC, 5871, 5)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+local TaskSheet = 13901
+local WelcomeQuest = 5864
+local TaskQuest = 5871
+
+function casted_on(NPC, Spawn,SpellName)
+ if SpellName == 'Use citizenship sign' then
+ if HasQuest(Spawn,WelcomeQuest) and not HasCompletedQuest(Spawn,TaskQuest) and not HasItem(Spawn, TaskSheet,1) then
+ Quest = GetQuest(Spawn,WelcomeQuest)
+ SendMessage(Spawn, "You pull an application for citizenship from the wall.")
+ GiveQuestItem(Quest, Spawn, "I must complete this task to become a Citizen of Freeport.", TaskSheet)
+
+ elseif not HasQuest(Spawn, TaskQuest) and HasItem(Spawn, TaskSheet,1) or GetQuestStep(Spawn,TaskQuest)==1 and HasItem(Spawn, TaskSheet,1) then
+ SendMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.")
+ SendPopUpMessage(Spawn, "I must complete my citizenship task before performing the Citizenship Trial.", 200, 200, 200)
+
+ elseif HasQuest(Spawn, TaskQuest) and GetQuestStep(Spawn,TaskQuest)>=2 and GetQuestStep(Spawn,TaskQuest)<=5 then
+ local con = CreateConversation()
+ AddConversationOption(con, "Yes", "Leave")
+ AddConversationOption(con, "No","CloseConversation")
+ StartDialogConversation(con, 1, NPC, Spawn, "You have all the tokens required to enter the Trial Chamber. Do you wish to begin the trial?")
+end
+end
+end
+
+ function Leave(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ if GetQuestStep(Spawn,TaskQuest)==2 then
+ SetStepComplete(Spawn,TaskQuest,2)
+ end
+ ZoneRef = GetZone("FreeportCitizenshipTrialChamber")
+ Zone(ZoneRef,Spawn)
+ end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TempleSt/zonetofprtsouth.lua b/server/SpawnScripts/TempleSt/zonetofprtsouth.lua
new file mode 100755
index 000000000..fc8023a8b
--- /dev/null
+++ b/server/SpawnScripts/TempleSt/zonetofprtsouth.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TempleSt/zonetofprtsouth.lua
+ Script Author : Dorbin
+ Script Date : 2023.06.29 12:06:17
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn,SpellName)
+ local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter South Freeport' then
+ if not HasCompletedQuest(Spawn,5866) and
+ not HasCompletedQuest(Spawn,5867) and
+ not HasCompletedQuest(Spawn,5868) and
+ not HasCompletedQuest(Spawn,5869) and
+ not HasCompletedQuest(Spawn,5870) and
+ not HasCompletedQuest(Spawn,5871)
+ and GetFactionAmount(Spawn,12)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5864) and GetQuestStep(Spawn,5864)==10 then
+ SetStepComplete(Spawn,5864,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only Freeport citizens may enter the city.",255,50,50)
+ SendMessage(Spawn,"Only Freeport citizens may enter the city.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,12) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("SouthFreeport")
+ Zone(ZoneRef,Spawn,-174.94, -36.63, 325.07, 37.31)
+ end
+end
+end
diff --git a/server/SpawnScripts/TempleStreetOld/ChuggleValvesplitter.lua b/server/SpawnScripts/TempleStreetOld/ChuggleValvesplitter.lua
index 5c7bf0550..90c9a36b4 100755
--- a/server/SpawnScripts/TempleStreetOld/ChuggleValvesplitter.lua
+++ b/server/SpawnScripts/TempleStreetOld/ChuggleValvesplitter.lua
@@ -5,6 +5,7 @@
Script Purpose :
Script Notes : full dialogue is missing
--]]
+require "SpawnScripts/Generic/DialogModule"
local ChugglesToolbox = 483
@@ -13,17 +14,29 @@ function spawn(NPC)
end
function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- if GetQuestStep(Spawn, ChugglesToolbox) == 2 then
- conversation = CreateConversation()
- StartConversation(conversation, NPC, Spawn, "Sorry, sorry. What is it? I can''t really help out much since those local 858 union members stole my blasted toolbox!")
- AddConversationOption(conversation, "I have found your toolbox", "complete")
- PlayFlavor(NPC, "voiceover/english/chuggle_valvesplitter/fprt_hood03/hail_chuggle000.mp3", "", "", 986790684, 3595790226, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Sorry, sorry. What is it? I can't really help out much since those local 858 union members stole my blasted toolbox!")
+ Dialog.AddVoiceover("voiceover/english/chuggle_valvesplitter/fprt_hood03/hail_chuggle000.mp3", 986790684, 3595790226)
+ if GetQuestStep(Spawn,ChugglesToolbox) ==6 then
+ Dialog.AddOption("I have your toolbox and tools right here. Let's talk reward.", "Dialog2")
+ end
+ Dialog.AddOption("I'll leave you to your depression. ")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Thank you! Thank you! Thank you! Yes! Yes! Yes! A reward! Tell you what I'll do. I need these tools to make my newest invention. I'll make an invention for you and give it to you as a reward! This piece of equipment will be all the rage! Functional and stylish if I do say so myself!")
+ PlayFlavor(NPC,"","","","happy",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/chuggle_valvesplitter/fprt_hood03/hail_chuggle001.mp3", 3252705361, 2081071070)
+ Dialog.AddOption("That'll do, I suppose.","complete")
+ Dialog.Start()
end
- end
function complete(NPC, Spawn)
-SetStepComplete(Spawn, ChugglesToolbox, 2)
+ PlayFlavor(NPC,"","","","thanks",0,0,Spawn)
+ SetStepComplete(Spawn, ChugglesToolbox, 6)
end
diff --git a/server/SpawnScripts/TheBaubbleshire/GornitPenwiggle.lua b/server/SpawnScripts/TheBaubbleshire/GornitPenwiggle.lua
index adc07cce4..9f3818140 100755
--- a/server/SpawnScripts/TheBaubbleshire/GornitPenwiggle.lua
+++ b/server/SpawnScripts/TheBaubbleshire/GornitPenwiggle.lua
@@ -11,7 +11,7 @@ local AnIntriguingEye = 5366
local TheMotleyMerchantManifest = 5368
function spawn(NPC)
-
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/TheBaubbleshire/KaldinDeeppockets.lua b/server/SpawnScripts/TheBaubbleshire/KaldinDeeppockets.lua
index c011d8cd1..5b74e9bff 100755
--- a/server/SpawnScripts/TheBaubbleshire/KaldinDeeppockets.lua
+++ b/server/SpawnScripts/TheBaubbleshire/KaldinDeeppockets.lua
@@ -53,7 +53,7 @@ function hailed(NPC, Spawn)
if GetFactionAmount(Spawn,11) <0 then
PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
else
- if not HasCompletedQuest (Spawn, Delivery) and not HasQuest (Spawn, Delivery) then
+ if CanReceiveQuest(Spawn, Delivery) then
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
Dialog.AddDialog("What's all this madness?! Are Deeppockets working for someone else? What's become of us!? Enough of my woes. What's your order? Be quick with it.")
diff --git a/server/SpawnScripts/TheBaubbleshire/LozoriaShinkicker.lua b/server/SpawnScripts/TheBaubbleshire/LozoriaShinkicker.lua
index a0847c1fa..f5fe66d1d 100755
--- a/server/SpawnScripts/TheBaubbleshire/LozoriaShinkicker.lua
+++ b/server/SpawnScripts/TheBaubbleshire/LozoriaShinkicker.lua
@@ -14,6 +14,7 @@ local OroRoots = 5438
function spawn(NPC)
SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
ProvidesQuest(NPC, OroRoots)
+ SetInfoStructString(NPC, "action_state", "drinking_idle")
end
function respawn(NPC)
@@ -45,7 +46,7 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- if not HasQuest(Spawn,OroRoots) then
+ if CanReceiveQuest(Spawn,OroRoots) then
Dialog.AddDialog("Bring me another pint, Bregun! Mine's almost empty! Well, hello there! What brings you into my Papa's fine establishment?")
Dialog.AddVoiceover("voiceover/english/lozoria_shinkicker/qey_village06/lozoriashinkicker000.mp3", 1408955306, 2441116246)
-- Dialog.AddRequirement(REQ_QUEST_DOESNT_HAVE_QUEST, OroRoots)
@@ -53,15 +54,20 @@ function hailed(NPC, Spawn)
Dialog.AddDialog("Well hello, friend. I do hate rushin' ya, but I must have that oro root! Bregun's itchin' to make the next batch of brew!")
Dialog.AddVoiceover("voiceover/english/voice_emotes/greetings/greetings_1_1006.mp3", 0, 0)
-- Dialog.AddRequirement(REQ_QUEST_HAS_QUEST, OroRoots)
- end
+ else
+ Dialog.AddDialog("Bring me another pint, Bregun! Mine's almost empty! Well, hello there! What brings you into my Papa's fine establishment?")
+ Dialog.AddVoiceover("voiceover/english/lozoria_shinkicker/qey_village06/lozoriashinkicker000.mp3", 1408955306, 2441116246)
+ end
Dialog.AddOption("I smell that pie! You were the one that took it from Nyla's window!", "Guilty")
Dialog.AddOptionRequirement(REQ_QUEST_HAS_QUEST, PieThief)
Dialog.AddOptionRequirement(REQ_QUEST_ON_STEP, PieThief ,4)
+ if CanReceiveQuest(Spawn,OroRoots) then
Dialog.AddOption("I'm actually looking for work. Have any jobs that need doing?", "OroStart")
Dialog.AddOptionRequirement(REQ_QUEST_DOESNT_HAVE_QUEST, OroRoots)
Dialog.AddOptionRequirement(REQ_QUEST_NOT_HAS_COMPLETED_QUEST, OroRoots)
-
+ end
+
Dialog.AddOption("I've found your Oro roots. Here you go.", "FoundRoots")
Dialog.AddOptionRequirement(REQ_QUEST_ON_STEP, OroRoots , 2)
diff --git a/server/SpawnScripts/TheBaubbleshire/NylaDiggs.lua b/server/SpawnScripts/TheBaubbleshire/NylaDiggs.lua
index 9c826e6f5..0d00d0ca8 100755
--- a/server/SpawnScripts/TheBaubbleshire/NylaDiggs.lua
+++ b/server/SpawnScripts/TheBaubbleshire/NylaDiggs.lua
@@ -16,6 +16,7 @@ local PieThief = 5437
function spawn(NPC)
ProvidesQuest(NPC, PieThief)
SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "cooking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/TheBaubbleshire/TapsterBregun.lua b/server/SpawnScripts/TheBaubbleshire/TapsterBregun.lua
index d787dd376..dd1c9767c 100755
--- a/server/SpawnScripts/TheBaubbleshire/TapsterBregun.lua
+++ b/server/SpawnScripts/TheBaubbleshire/TapsterBregun.lua
@@ -77,7 +77,7 @@ end
SetStepComplete(Spawn, YolaPicnic, 2)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("So ya are! I hope she enjoys her lunch. I gave her my best breads and cheeses! Mmmm ... makes me hungry thinkin' about it! Here are the coins I promised.")
+ Dialog.AddDialog("Hehe. So ya are! I hope she enjoys her lunch. I gave her my best breads and cheeses! Mmmm ... makes me hungry thinkin' about it! Haha! Oh, as promised, here's your coin!")
Dialog.AddVoiceover("voiceover/english/tapster_bregun/qey_village06/tapsterbregun003.mp3",1121129450,2689540838)
PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
Dialog.AddOption("Thanks, Bregun")
diff --git a/server/SpawnScripts/TheDisconcertingMeditation/AWarning.lua b/server/SpawnScripts/TheDisconcertingMeditation/AWarning.lua
new file mode 100755
index 000000000..16f4a3b4e
--- /dev/null
+++ b/server/SpawnScripts/TheDisconcertingMeditation/AWarning.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheDisconcertingMeditation/AWarning.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 05:11:47
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+end
+
+
+function InRange(NPC,Spawn,Zone)
+SendPopUpMessage(Spawn,"Stay back! You are near the edge of the vision.",255,0,0)
+SendMessage(Spawn,"Stay back! You are near the edge of the vision.","red")
+PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheDisconcertingMeditation/Adisturbingshadow.lua b/server/SpawnScripts/TheDisconcertingMeditation/Adisturbingshadow.lua
new file mode 100755
index 000000000..b8573109e
--- /dev/null
+++ b/server/SpawnScripts/TheDisconcertingMeditation/Adisturbingshadow.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheDisconcertingMeditation/Adisturbingshadow.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.23 06:09:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheDisconcertingMeditation/EnterWarning.lua b/server/SpawnScripts/TheDisconcertingMeditation/EnterWarning.lua
new file mode 100755
index 000000000..d3630b687
--- /dev/null
+++ b/server/SpawnScripts/TheDisconcertingMeditation/EnterWarning.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : SpawnScripts/TheDisconcertingMeditation/EnterWarning.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 04:11:26
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetTempVariable(NPC, "Enter", "true")
+end
+
+function InRange(NPC,Spawn,Zone)
+if GetTempVariable(NPC,"Enter")=="true" then
+ SetTempVariable(NPC, "Enter", "false")
+
+AddTimer(NPC,15000,"FirstWarning",1,Spawn)
+AddTimer(NPC,60000,"SecondWarning",1,Spawn)
+AddTimer(NPC,75000,"ThirdWarning",1,Spawn)
+AddTimer(NPC,80000,"Shake",1,Spawn)
+AddTimer(NPC,84000,"Shake",1,Spawn)
+AddTimer(NPC,86000,"Shake",1,Spawn)
+AddTimer(NPC,88000,"Shake",1,Spawn)
+AddTimer(NPC,90000,"FourthWarning",1,Spawn)
+AddTimer(NPC,90300,"Shake",1,Spawn)
+AddTimer(NPC,90600,"Shake",1,Spawn)
+AddTimer(NPC,90900,"Shake",1,Spawn)
+AddTimer(NPC,91000,"Ending",1,Spawn)
+end
+end
+
+function FirstWarning(Zone,Spawn)
+ SendMessage(Spawn, "You begin to feel the meditation wane...","yellow")
+ SendPopUpMessage(Spawn, "You begin to feel the meditation wane...",250,250,250)
+ zone = GetZone(Spawn)
+ PerformCameraShake(Spawn, 0.10000000149011612)
+ SpawnByLocationID(zone,133780775)
+ SpawnByLocationID(zone,133780776)
+end
+
+function SecondWarning(Zone,Spawn)
+ SendMessage(Spawn, "Only a short time remains before you return to your body...","yellow")
+ SendPopUpMessage(Spawn, "Only a short time remains before you return to your body...",250,250,250)
+ zone = GetZone(Spawn)
+ PerformCameraShake(Spawn, 0.20000000298023224)
+ SpawnByLocationID(zone,133780777)
+ SpawnByLocationID(zone,133780778)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(Spawn), GetY(Spawn), GetZ(Spawn))
+end
+
+function ThirdWarning(Zone,Spawn)
+ SendMessage(Spawn, "Your concentration is starting to slip...","yellow")
+ SendPopUpMessage(Spawn, "Your concentration is starting to slip...",250,250,250)
+ PerformCameraShake(Spawn, 0.699999988079071)
+ zone = GetZone(Spawn)
+ SpawnByLocationID(zone,133780779)
+ SpawnByLocationID(zone,133780780)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(Spawn), GetY(Spawn), GetZ(Spawn))
+end
+
+function Shake(Zone,Spawn)
+ PerformCameraShake(Spawn, 0.699999988079071)
+end
+
+
+function FourthWarning(Zone,Spawn)
+ SendMessage(Spawn, "The mediation ends.","yellow")
+ SendPopUpMessage(Spawn, "The mediation ends.",250,250,250)
+ PerformCameraShake(Spawn, 0.699999988079071)
+end
+
+function Ending(NPC,Spawn)
+ NQ = GetZone("northqeynos")
+ PerformCameraShake(Spawn, 0.10000000149011612)
+ Zone(NQ,Spawn,281.55, -13.58, 97.29, 283.43)
+ SpawnSet(Player,"visual_state",0)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheDisconcertingMeditation/ShrineofInnerReflection.lua b/server/SpawnScripts/TheDisconcertingMeditation/ShrineofInnerReflection.lua
new file mode 100755
index 000000000..705078abb
--- /dev/null
+++ b/server/SpawnScripts/TheDisconcertingMeditation/ShrineofInnerReflection.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheDisconcertingMeditation/ShrineofInnerReflection.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 03:11:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetRequiredQuest(NPC,5774,1,0,0,1)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Begin Meditation' and not IsInCombat(Spawn)then
+ local con = CreateConversation()
+ AddConversationOption(con, "Close your eyes...","Step2")
+ StartDialogConversation(con, 1, NPC, Spawn, "Calming yourself after the combat with the shade proves to be difficult. Looking back on the recent events, you attempt to focus your mind and will yourself into a state of relaxation.")
+-- SendMessage(Spawn,"Calming yourself after the combat with the shade proves to be difficult. Looking back on the recent events, you attempt to focus your mind and will yourself into a state of relaxation.")
+ ApplySpellVisual(NPC,572)
+end
+end
+
+function Step2(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Breathe deeply...","Step3")
+ StartDialogConversation(con, 1, NPC, Spawn, "The creature you faced seems to bear some significance, for you know you have never faced one. You can think of nothing that you have done to draw the ire of something like this, but it seems to be your destiny to cross paths with them... at least, if this meditation serves its purpose.")
+-- SendMessage(Spawn,"The creature you faced seems to bear some significance, for you know you have never faced one. You can think of nothing that you have done to draw the ire of something like this, but it seems to be your destiny to cross paths with them... at least, if this meditation serves its purpose.")
+end
+
+
+function Step3(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn,5774,1)
+ AddConversationOption(con, "Reflect...","Reflect")
+ StartDialogConversation(con, 1, NPC, Spawn, "You turn your attention back to a more worldly task and begin trying to wake yourself from the state. Soon, the room fades out, and your body begins to stir.")
+-- SendMessage(Spawn,"You turn your attention back to a more worldly task and begin trying to wake yourself from the state. Soon, the room fades out, and your body begins to stir.")
+ ApplySpellVisual(NPC,728)
+ ApplySpellVisual(Spawn,572)
+end
+
+function Reflect(NPC,Spawn)
+ NQ = GetZone("northqeynos")
+ Zone(NQ,Spawn,281.55, -13.58, 97.29, 283.43)
+ SpawnSet(Player,"visual_state",0)
+ CloseConversation(NPC,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheDisconcertingMeditation/Toofar.lua b/server/SpawnScripts/TheDisconcertingMeditation/Toofar.lua
new file mode 100755
index 000000000..e3f858951
--- /dev/null
+++ b/server/SpawnScripts/TheDisconcertingMeditation/Toofar.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheDisconcertingMeditation/Toofar.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 05:11:29
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+end
+
+
+function InRange(NPC,Spawn)
+SendPopUpMessage(Spawn,"You have stepped beyond the meditation and are awakened.",255,255,255)
+SendMessage(Spawn,"You have stepped beyond the meditation and are awakened.","white")
+ NQ = GetZone("northqeynos")
+ Zone(NQ,Spawn,281.55, -13.58, 97.29, 283.43)
+SpawnSet(Player,"visual_state",0)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/GraverobberNatasha.lua b/server/SpawnScripts/TheGraveyard_Classic/GraverobberNatasha.lua
new file mode 100755
index 000000000..9a90a1cf4
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/GraverobberNatasha.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/GraverobberNatasha.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.14 06:11:15
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(15 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(26 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/GuardLSek.lua b/server/SpawnScripts/TheGraveyard_Classic/GuardLSek.lua
new file mode 100755
index 000000000..fa0335ebc
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/GuardLSek.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/GuardLSek.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:58
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/GuardTCrit.lua b/server/SpawnScripts/TheGraveyard_Classic/GuardTCrit.lua
new file mode 100755
index 000000000..185898e7d
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/GuardTCrit.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/GuardTCrit.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:13
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/HangmanSantoth.lua b/server/SpawnScripts/TheGraveyard_Classic/HangmanSantoth.lua
new file mode 100755
index 000000000..7c4e6de41
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/HangmanSantoth.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/HangmanSantoth.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:11
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ PlayFlavor(NPC,"","","tapfoot",0,0,Spawn)
+ SendMessage(NPC,"The Hangman appears disinterested in your presence. He appears to be waiting for someone or something...","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/MerchantRTok.lua b/server/SpawnScripts/TheGraveyard_Classic/MerchantRTok.lua
new file mode 100755
index 000000000..187d329d6
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/MerchantRTok.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/MerchantRTok.lua
+ Script Author : Dorbin
+ Script Date : 2023.11.04 12:11:19
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 33 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_aoi_gm_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "beckon", 1403936443, 3068231605, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_notcitizen_gm_85c35337.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "heckno", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 1302153135, 3653961458, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 2781916825, 678640011, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/darkelf_eco_evil_1/ft/service/merchant/darkelf_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 898812878, 1402234103, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/TheBonewatcher.lua b/server/SpawnScripts/TheGraveyard_Classic/TheBonewatcher.lua
new file mode 100755
index 000000000..1ccc366bc
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/TheBonewatcher.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/TheBonewatcher.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:47
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hail(NPC,Spawn)
+ SendMessage(NPC,"The Bonewatcher stares in your general direction... Almost as if it is looking through you.","white")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/TheKeeperofEthernere.lua b/server/SpawnScripts/TheGraveyard_Classic/TheKeeperofEthernere.lua
new file mode 100755
index 000000000..571a95f9e
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/TheKeeperofEthernere.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/TheKeeperofEthernere.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 05:08:51
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1034.mp3", "We watch over those you have not yet passed on to the Ethernere.", "orate", 0, 0, Spawn, 0)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/TheMalevolentKnight.lua b/server/SpawnScripts/TheGraveyard_Classic/TheMalevolentKnight.lua
new file mode 100755
index 000000000..4982e7e8f
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/TheMalevolentKnight.lua
@@ -0,0 +1,124 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/TheMalevolentKnight.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 10:08:06
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 29.88, -10.13, 24.05, 2, 0)
+ MovementLoopAddLocation(NPC, 29.88, -10.13, 24.05, 2, 0)
+ MovementLoopAddLocation(NPC, 28.1, -10.12, 22.77, 2, 0)
+ MovementLoopAddLocation(NPC, 21.23, -5.88, 17.57, 2, 0)
+ MovementLoopAddLocation(NPC, 16.87, -5.88, 14.32, 2, 0)
+ MovementLoopAddLocation(NPC, 19.3, -5.65, 8.88, 2, 0)
+ MovementLoopAddLocation(NPC, 24.6, -5.14, -6.96, 2, 0)
+ MovementLoopAddLocation(NPC, 25.29, -5.07, -16.98, 2, 0)
+ MovementLoopAddLocation(NPC, 26.52, -4.95, -23.42, 2, 0)
+ MovementLoopAddLocation(NPC, 28.96, -4.71, -31.5, 2, 0)
+ MovementLoopAddLocation(NPC, 30.88, -4.52, -33.93, 2, 0)
+ MovementLoopAddLocation(NPC, 43.99, -3.57, -43.32, 2, 0)
+ MovementLoopAddLocation(NPC, 46.19, -3.39, -46.22, 2, 0)
+ MovementLoopAddLocation(NPC, 47.19, -3.1, -49.45, 2, 0)
+ MovementLoopAddLocation(NPC, 47.84, -3.25, -56.64, 2, 0)
+ MovementLoopAddLocation(NPC, 47.84, -3.25, -56.64, 2, 0)
+ MovementLoopAddLocation(NPC, 47.36, -3.16, -53.28, 2, 0)
+ MovementLoopAddLocation(NPC, 46.98, -3.23, -47.78, 2, 0)
+ MovementLoopAddLocation(NPC, 45.47, -3.45, -45.07, 2, 0)
+ MovementLoopAddLocation(NPC, 32, -4.42, -35.23, 2, 0)
+ MovementLoopAddLocation(NPC, 29.48, -4.66, -32.22, 2, 0)
+ MovementLoopAddLocation(NPC, 25.88, -5.01, -21.74, 2, 0)
+ MovementLoopAddLocation(NPC, 24.94, -5.1, -9.19, 2, 0)
+ MovementLoopAddLocation(NPC, 21.43, -5.44, 5.02, 2, 0)
+ MovementLoopAddLocation(NPC, 20.16, -5.57, 7.32, 2, 0)
+ MovementLoopAddLocation(NPC, 17.16, -5.86, 7.21, 2, 0)
+ MovementLoopAddLocation(NPC, 9.99, -6.47, 6.21, 2, 0)
+ MovementLoopAddLocation(NPC, 3.66, -6.98, 5.32, 2, 0)
+ MovementLoopAddLocation(NPC, -6.42, -7.8, 1.69, 2, 0)
+ MovementLoopAddLocation(NPC, -11.23, -8.16, -2.25, 2, 0)
+ MovementLoopAddLocation(NPC, -12.34, -8.24, -4.68, 2, 0)
+ MovementLoopAddLocation(NPC, -14.65, -8.45, -9.34, 2, 0)
+ MovementLoopAddLocation(NPC, -19.43, -8.85, -14.28, 2, 0)
+ MovementLoopAddLocation(NPC, -23.52, -9.3, -22.75, 2, 0)
+ MovementLoopAddLocation(NPC, -25.7, -9.57, -26.4, 2, 0)
+ MovementLoopAddLocation(NPC, -35.64, -10.65, -35.42, 2, 0)
+ MovementLoopAddLocation(NPC, -35.64, -10.65, -35.42, 2, 0)
+ MovementLoopAddLocation(NPC, -31.24, -10.19, -31.17, 2, 0)
+ MovementLoopAddLocation(NPC, -25.46, -9.54, -26.02, 2, 0)
+ MovementLoopAddLocation(NPC, -22.86, -9.23, -22.67, 2, 0)
+ MovementLoopAddLocation(NPC, -20.35, -8.93, -15.33, 2, 0)
+ MovementLoopAddLocation(NPC, -16.96, -8.65, -10.87, 2, 0)
+ MovementLoopAddLocation(NPC, -15.31, -8.5, -9.3, 2, 0)
+ MovementLoopAddLocation(NPC, -14.52, -8.43, -8.12, 2, 0)
+ MovementLoopAddLocation(NPC, -11.81, -8.21, -2.81, 2, 0)
+ MovementLoopAddLocation(NPC, -10.24, -8.11, -1.2, 2, 0)
+ MovementLoopAddLocation(NPC, -6.16, -7.78, 1.6, 2, 0)
+ MovementLoopAddLocation(NPC, 0.22, -7.24, 3.93, 2, 0)
+ MovementLoopAddLocation(NPC, 15.86, -5.98, 6.71, 2, 0)
+ MovementLoopAddLocation(NPC, 18.19, -5.76, 7.71, 2, 0)
+ MovementLoopAddLocation(NPC, 18.83, -5.7, 9.67, 2, 0)
+ MovementLoopAddLocation(NPC, 18.19, -5.76, 11.4, 2, 0)
+ MovementLoopAddLocation(NPC, 8.29, -6.59, 24.69, 2, 0)
+ MovementLoopAddLocation(NPC, 4.63, -6.9, 28.68, 2, 0)
+ MovementLoopAddLocation(NPC, 1.6, -7.15, 35.6, 2, 0)
+ MovementLoopAddLocation(NPC, 0.66, -7.21, 43.06, 2, 0)
+ MovementLoopAddLocation(NPC, 1.85, -7.13, 49.47, 2, 0)
+ MovementLoopAddLocation(NPC, 4.41, -6.92, 53.72, 2, 0)
+ MovementLoopAddLocation(NPC, 10.13, -6.45, 59.66, 2, 0)
+ MovementLoopAddLocation(NPC, 13.1, -6.21, 60.96, 2, 0)
+ MovementLoopAddLocation(NPC, 21.54, -5.43, 61.9, 2, 0)
+ MovementLoopAddLocation(NPC, 26.17, -4.98, 63.9, 2, 0)
+ MovementLoopAddLocation(NPC, 30.17, -4.59, 67.9, 2, 0)
+ MovementLoopAddLocation(NPC, 32.51, -4.36, 72.23, 2, 0)
+ MovementLoopAddLocation(NPC, 32.92, -4.33, 75.32, 2, 0)
+ MovementLoopAddLocation(NPC, 32.92, -4.33, 75.32, 2, 0)
+ MovementLoopAddLocation(NPC, 32.08, -4.41, 70.86, 2, 0)
+ MovementLoopAddLocation(NPC, 30.19, -4.59, 67.47, 2, 0)
+ MovementLoopAddLocation(NPC, 25.55, -5.04, 63.73, 2, 0)
+ MovementLoopAddLocation(NPC, 21.28, -5.46, 62.28, 2, 0)
+ MovementLoopAddLocation(NPC, 15.26, -6.04, 61.52, 2, 0)
+ MovementLoopAddLocation(NPC, 11.94, -6.31, 60.25, 2, 0)
+ MovementLoopAddLocation(NPC, 6.43, -6.76, 56.24, 2, 0)
+ MovementLoopAddLocation(NPC, 3.54, -6.99, 53.13, 2, 0)
+ MovementLoopAddLocation(NPC, 2.25, -7.09, 50.49, 2, 0)
+ MovementLoopAddLocation(NPC, 0.77, -7.2, 44, 2, 0)
+ MovementLoopAddLocation(NPC, 1.74, -7.14, 35.55, 2, 0)
+ MovementLoopAddLocation(NPC, 4.88, -6.88, 28.53, 2, 0)
+ MovementLoopAddLocation(NPC, 13.4, -6.19, 18.07, 2, 0)
+ MovementLoopAddLocation(NPC, 16.53, -5.92, 16.49, 2, 0)
+ MovementLoopAddLocation(NPC, 20.81, -5.88, 17.92, 2, 0)
+ MovementLoopAddLocation(NPC, 28.3, -10.12, 22.99, 2, 0)
+ MovementLoopAddLocation(NPC, 29.88, -10.13, 24.05, 2, 0)
+ MovementLoopAddLocation(NPC, 29.88, -10.13, 24.05, 2, 0, "Action")
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/TheSpiritofValeron.lua b/server/SpawnScripts/TheGraveyard_Classic/TheSpiritofValeron.lua
new file mode 100755
index 000000000..42e76d644
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/TheSpiritofValeron.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/TheSpiritofValeron.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 05:08:45
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGhost1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/aboneyardwatcher.lua b/server/SpawnScripts/TheGraveyard_Classic/aboneyardwatcher.lua
new file mode 100755
index 000000000..3246b963f
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/aboneyardwatcher.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/aboneyardwatcher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 08:08:03
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ SendMessage(NPC,"The watcher's cold and unwavering stare leaves you uneasy.","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/abrittleskeleton.lua b/server/SpawnScripts/TheGraveyard_Classic/abrittleskeleton.lua
new file mode 100755
index 000000000..064a9585d
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/abrittleskeleton.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/abrittleskeleton.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.08 03:08:02
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/acontagiousrat.lua b/server/SpawnScripts/TheGraveyard_Classic/acontagiousrat.lua
new file mode 100755
index 000000000..9bdc61916
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/acontagiousrat.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/acontagiousrat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.19 09:08:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/acontagiousratRoam.lua b/server/SpawnScripts/TheGraveyard_Classic/acontagiousratRoam.lua
new file mode 100755
index 000000000..e05f26b30
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/acontagiousratRoam.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/acontagiousratRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.19 09:08:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3.5, -3.5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/TheGraveyard_Classic/acrumblingskeleton.lua b/server/SpawnScripts/TheGraveyard_Classic/acrumblingskeleton.lua
new file mode 100755
index 000000000..5b90d8a46
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/acrumblingskeleton.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/acrumblingskeleton.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.08 03:08:01
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/acrumblingskeletonHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/acrumblingskeletonHeroic.lua
new file mode 100755
index 000000000..d448fff1f
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/acrumblingskeletonHeroic.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/acrumblingskeletonHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.10 04:08:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ SpawnSet(NPC, "heroic", 1)
+ SetSpawnAnimation(NPC, 13016)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/adisturbedsoul.lua b/server/SpawnScripts/TheGraveyard_Classic/adisturbedsoul.lua
new file mode 100755
index 000000000..a95334265
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/adisturbedsoul.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/adisturbedsoul.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 01:10:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/adreadspider.lua b/server/SpawnScripts/TheGraveyard_Classic/adreadspider.lua
new file mode 100755
index 000000000..120528ce4
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/adreadspider.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/adreadspider.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 12:08:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/adurableskeleton.lua b/server/SpawnScripts/TheGraveyard_Classic/adurableskeleton.lua
new file mode 100755
index 000000000..04ae400e1
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/adurableskeleton.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/adurableskeleton.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.08 03:08:59
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/TheGraveyard_Classic/adurableskeletonHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/adurableskeletonHeroic.lua
new file mode 100755
index 000000000..d1a98f75c
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/adurableskeletonHeroic.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/adurableskeletonHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.13 11:08:29
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/afearsomespider.lua b/server/SpawnScripts/TheGraveyard_Classic/afearsomespider.lua
new file mode 100755
index 000000000..eb09748af
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/afearsomespider.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/afearsomespider.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 12:08:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/TheGraveyard_Classic/afiendishghoul.lua b/server/SpawnScripts/TheGraveyard_Classic/afiendishghoul.lua
new file mode 100755
index 000000000..5c04c525d
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/afiendishghoul.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/afiendishghoul.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 07:08:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/afiendishghoulHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/afiendishghoulHeroic.lua
new file mode 100755
index 000000000..82bed45ea
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/afiendishghoulHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/afiendishghoulHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 07:08:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/afiendishghoulPath.lua b/server/SpawnScripts/TheGraveyard_Classic/afiendishghoulPath.lua
new file mode 100755
index 000000000..729cd366d
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/afiendishghoulPath.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/afiendishghoulPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 08:08:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 0.37, -7.1, 24.92, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, 0.37, -7.1, 24.92, 2, 0)
+ MovementLoopAddLocation(NPC, -2.01, -7.29, 27.12, 2, 0)
+ MovementLoopAddLocation(NPC, -2.01, -7.29, 27.12, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -1.09, -7.22, 33.07, 2, 0)
+ MovementLoopAddLocation(NPC, -0.21, -7.29, 39.61, 2, 0)
+ MovementLoopAddLocation(NPC, 0.24, -7.19, 50.39, 2, 0)
+ MovementLoopAddLocation(NPC, -2.83, -7.36, 53.29, 2, 0)
+ MovementLoopAddLocation(NPC, -4.47, -7.49, 53.43, 2, 0)
+ MovementLoopAddLocation(NPC, -4.47, -7.49, 53.43, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -2.42, -7.32, 52.88, 2, 0)
+ MovementLoopAddLocation(NPC, -0.85, -7.21, 49.98, 2, 0)
+ MovementLoopAddLocation(NPC, -2.88, -7.36, 39.25, 2, 0)
+ MovementLoopAddLocation(NPC, -2.88, -7.36, 39.25, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -1.17, -7.22, 30.63, 2, 0)
+ MovementLoopAddLocation(NPC, -1.17, -7.22, 30.63, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, 0.55, -7.23, 33.99, 2, 0)
+ MovementLoopAddLocation(NPC, 0.3, -7.25, 37.32, 2, 0)
+ MovementLoopAddLocation(NPC, 0.37, -7.25, 41.51, 2, 0)
+ MovementLoopAddLocation(NPC, -2.84, -7.37, 43.88, 2, 0)
+ MovementLoopAddLocation(NPC, -5.96, -7.61, 45.13, 2, 0)
+ MovementLoopAddLocation(NPC, -5.96, -7.61, 45.13, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -4.59, -7.5, 44.66, 2, 0)
+ MovementLoopAddLocation(NPC, -3.5, -7.42, 43.41, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/agraverobber.lua b/server/SpawnScripts/TheGraveyard_Classic/agraverobber.lua
new file mode 100755
index 000000000..02abc333e
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/agraverobber.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/agraverobber.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 01:10:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/agraverobberHuman.lua b/server/SpawnScripts/TheGraveyard_Classic/agraverobberHuman.lua
new file mode 100755
index 000000000..c07f7be65
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/agraverobberHuman.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/agraverobberHuman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.02 01:10:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEthernerecaretaker.lua b/server/SpawnScripts/TheGraveyard_Classic/anEthernerecaretaker.lua
new file mode 100755
index 000000000..7663c1660
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEthernerecaretaker.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEthernerecaretaker.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:02
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1047.mp3", "Be gone! I have work to do.", "glare", 0, 0, Spawn, 0)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEtherneredefender.lua b/server/SpawnScripts/TheGraveyard_Classic/anEtherneredefender.lua
new file mode 100755
index 000000000..ccf02dddb
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEtherneredefender.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEtherneredefender.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.17 08:08:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEtherneredefenderHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anEtherneredefenderHeroic.lua
new file mode 100755
index 000000000..d9cfd4270
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEtherneredefenderHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEtherneredefenderHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.17 07:08:41
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SendMessage(Spawn,"The defender looks at you with a tired, but determined, stare. Unwavered from its duties.","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard1.lua b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard1.lua
new file mode 100755
index 000000000..8d4783559
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard1.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEthernereguard1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 11:08:16
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SendMessage(Spawn,"The ethernere guard stares you down. They obviously don't have time for you.","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -35.82, -10.69, -37.06, 2, 0)
+ MovementLoopAddLocation(NPC, -42.85, -11.1, -33.52, 2, 0)
+ MovementLoopAddLocation(NPC, -47.68, -11.34, -28.13, 2, 0)
+ MovementLoopAddLocation(NPC, -54.67, -11.68, -16.01, 2, 0)
+ MovementLoopAddLocation(NPC, -54.97, -11.69, -14.13, 2, 0)
+ MovementLoopAddLocation(NPC, -54.96, -11.71, 6.22, 2, 0)
+ MovementLoopAddLocation(NPC, -54.51, -11.69, 22.2, 2, 0)
+ MovementLoopAddLocation(NPC, -52.52, -11.62, 40.91, 2, 0)
+ MovementLoopAddLocation(NPC, -52.52, -11.62, 40.91, 2, 0)
+ MovementLoopAddLocation(NPC, -51.9, -11.58, 49.46, 2, 0)
+ MovementLoopAddLocation(NPC, -49.3, -11.4, 57.35, 2, 0)
+ MovementLoopAddLocation(NPC, -40, -10.76, 65.37, 2, 0)
+ MovementLoopAddLocation(NPC, -40, -10.76, 65.37, 2, 0)
+ MovementLoopAddLocation(NPC, -45.11, -11.1, 61.69, 2, 0)
+ MovementLoopAddLocation(NPC, -49.16, -11.39, 57.21, 2, 0)
+ MovementLoopAddLocation(NPC, -49.97, -11.45, 55.56, 2, 0)
+ MovementLoopAddLocation(NPC, -51.65, -11.56, 49.58, 2, 0)
+ MovementLoopAddLocation(NPC, -52.85, -11.63, 39.81, 2, 0)
+ MovementLoopAddLocation(NPC, -54.14, -11.69, 30.08, 2, 0)
+ MovementLoopAddLocation(NPC, -55.16, -11.72, 8.62, 2, 0)
+ MovementLoopAddLocation(NPC, -55.49, -11.73, -11.2, 2, 0)
+ MovementLoopAddLocation(NPC, -53.81, -11.65, -16.93, 2, 0)
+ MovementLoopAddLocation(NPC, -48.86, -11.4, -26.19, 2, 0)
+ MovementLoopAddLocation(NPC, -44.48, -11.18, -32.16, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard2.lua b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard2.lua
new file mode 100755
index 000000000..53b96db0a
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard2.lua
@@ -0,0 +1,85 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEthernereguard2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 11:08:11
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SendMessage(Spawn,"The ethernere guard stares you down. They obviously don't have time for you.","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -36.74, -10.49, 67.44, 2, 0)
+ MovementLoopAddLocation(NPC, -36.74, -10.49, 67.44, 2, 0)
+ MovementLoopAddLocation(NPC, -31.87, -10.02, 69.86, 2, 0)
+ MovementLoopAddLocation(NPC, -28.24, -9.69, 72.8, 2, 0)
+ MovementLoopAddLocation(NPC, -26.34, -9.5, 75.66, 2, 0)
+ MovementLoopAddLocation(NPC, -22.27, -8.8, 83.57, 2, 0)
+ MovementLoopAddLocation(NPC, -18.42, -8.42, 87.52, 2, 0)
+ MovementLoopAddLocation(NPC, -14.25, -8.22, 89.74, 2, 0)
+ MovementLoopAddLocation(NPC, -5.76, -7.75, 93.09, 2, 0)
+ MovementLoopAddLocation(NPC, -2.14, -7.46, 93.26, 2, 0)
+ MovementLoopAddLocation(NPC, 3.22, -7.01, 91.14, 2, 0)
+ MovementLoopAddLocation(NPC, 5.42, -6.89, 87.81, 2, 0)
+ MovementLoopAddLocation(NPC, 5.9, -6.83, 82.26, 2, 0)
+ MovementLoopAddLocation(NPC, 11.35, -6.36, 67.05, 2, 0)
+ MovementLoopAddLocation(NPC, 11.91, -6.31, 63.15, 2, 0)
+ MovementLoopAddLocation(NPC, 10.8, -6.4, 60.54, 2, 0)
+ MovementLoopAddLocation(NPC, 4.35, -6.92, 54.2, 2, 0)
+ MovementLoopAddLocation(NPC, 2.31, -7.09, 51.03, 2, 0)
+ MovementLoopAddLocation(NPC, 0.69, -7.2, 43.22, 2, 0)
+ MovementLoopAddLocation(NPC, 1.22, -7.18, 36.23, 2, 0)
+ MovementLoopAddLocation(NPC, 2.55, -7.07, 32.95, 2, 0)
+ MovementLoopAddLocation(NPC, 5.41, -6.84, 27.74, 2, 0)
+ MovementLoopAddLocation(NPC, 13.43, -6.19, 18.24, 2, 0)
+ MovementLoopAddLocation(NPC, 18.22, -5.76, 11.75, 2, 0)
+ MovementLoopAddLocation(NPC, 18.94, -5.69, 9.96, 2, 0)
+ MovementLoopAddLocation(NPC, 18.94, -5.69, 9.96, 2, 0)
+ MovementLoopAddLocation(NPC, 17, -5.88, 13.17, 2, 0)
+ MovementLoopAddLocation(NPC, 11.72, -6.33, 20.57, 2, 0)
+ MovementLoopAddLocation(NPC, 5.91, -6.79, 27.1, 2, 0)
+ MovementLoopAddLocation(NPC, 1.75, -7.13, 34.93, 2, 0)
+ MovementLoopAddLocation(NPC, 1.03, -7.18, 43.56, 2, 0)
+ MovementLoopAddLocation(NPC, 2.43, -7.08, 50.65, 2, 0)
+ MovementLoopAddLocation(NPC, 5.11, -6.86, 54.33, 2, 0)
+ MovementLoopAddLocation(NPC, 11.08, -6.38, 60.21, 2, 0)
+ MovementLoopAddLocation(NPC, 12.85, -6.23, 61.31, 2, 0)
+ MovementLoopAddLocation(NPC, 17.75, -5.8, 61.56, 2, 0)
+ MovementLoopAddLocation(NPC, 22.64, -5.33, 62.22, 2, 0)
+ MovementLoopAddLocation(NPC, 24.84, -5.11, 63.25, 2, 0)
+ MovementLoopAddLocation(NPC, 28.38, -4.77, 66.2, 2, 0)
+ MovementLoopAddLocation(NPC, 30.37, -4.57, 68.2, 2, 0)
+ MovementLoopAddLocation(NPC, 31.95, -4.42, 70.63, 2, 0)
+ MovementLoopAddLocation(NPC, 32.76, -4.34, 73.38, 2, 0)
+ MovementLoopAddLocation(NPC, 31.91, -4.43, 78.54, 2, 0)
+ MovementLoopAddLocation(NPC, 29.56, -4.77, 82.34, 2, 0)
+ MovementLoopAddLocation(NPC, 26.37, -5.27, 84.81, 2, 0)
+ MovementLoopAddLocation(NPC, 16.53, -6.74, 89.88, 2, 0)
+ MovementLoopAddLocation(NPC, 14.34, -6.82, 90.48, 2, 0)
+ MovementLoopAddLocation(NPC, 8.58, -6.86, 89.89, 2, 0)
+ MovementLoopAddLocation(NPC, 5.52, -6.91, 90.47, 2, 0)
+ MovementLoopAddLocation(NPC, 0.82, -7.21, 92.81, 2, 0)
+ MovementLoopAddLocation(NPC, -1.38, -7.4, 93.38, 2, 0)
+ MovementLoopAddLocation(NPC, -6.56, -7.81, 92.71, 2, 0)
+ MovementLoopAddLocation(NPC, -16.35, -8.31, 88.84, 2, 0)
+ MovementLoopAddLocation(NPC, -19.98, -8.55, 86.09, 2, 0)
+ MovementLoopAddLocation(NPC, -23.11, -8.96, 81.68, 2, 0)
+ MovementLoopAddLocation(NPC, -25.31, -9.4, 77.28, 2, 0)
+ MovementLoopAddLocation(NPC, -28.94, -9.75, 72.92, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard3.lua b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard3.lua
new file mode 100755
index 000000000..921a9ad0a
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard3.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEthernereguard3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 11:08:39
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SendMessage(Spawn,"The ethernere guard stares you down. They obviously don't have time for you.","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 90.95, -1.77, 102.9, 2, 0)
+ MovementLoopAddLocation(NPC, 90.95, -1.77, 102.9, 2, 0)
+ MovementLoopAddLocation(NPC, 86.74, -1.87, 92.78, 2, 0)
+ MovementLoopAddLocation(NPC, 83.35, -1.93, 85.72, 2, 0)
+ MovementLoopAddLocation(NPC, 76.43, -2.04, 78.53, 2, 0)
+ MovementLoopAddLocation(NPC, 68.95, -2.22, 75.45, 2, 0)
+ MovementLoopAddLocation(NPC, 58.53, -2.73, 75.28, 2, 0)
+ MovementLoopAddLocation(NPC, 47.8, -3.32, 76.48, 2, 0)
+ MovementLoopAddLocation(NPC, 35.66, -4.11, 77.36, 2, 0)
+ MovementLoopAddLocation(NPC, 35.66, -4.11, 77.36, 2, 0)
+ MovementLoopAddLocation(NPC, 41.35, -3.74, 77.1, 2, 0)
+ MovementLoopAddLocation(NPC, 51.59, -3.08, 75.73, 2, 0)
+ MovementLoopAddLocation(NPC, 60.87, -2.61, 74.78, 2, 0)
+ MovementLoopAddLocation(NPC, 68.66, -2.23, 75.51, 2, 0)
+ MovementLoopAddLocation(NPC, 74.56, -2.07, 77.29, 2, 0)
+ MovementLoopAddLocation(NPC, 78.75, -2, 80.6, 2, 0)
+ MovementLoopAddLocation(NPC, 83.38, -1.92, 85.55, 2, 0)
+ MovementLoopAddLocation(NPC, 85.6, -1.89, 90.62, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard4.lua b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard4.lua
new file mode 100755
index 000000000..be624cb8e
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEthernereguard4.lua
@@ -0,0 +1,72 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEthernereguard4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 01:08:50
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ SendMessage(Spawn,"The ethernere guard stares you down. They obviously don't have time for you.","white")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 57.67, -2.74, -91.79, 2, 0)
+ MovementLoopAddLocation(NPC, 57.67, -2.74, -91.79, 2, 0)
+ MovementLoopAddLocation(NPC, 48.41, -3.01, -67.11, 2, 0)
+ MovementLoopAddLocation(NPC, 47.28, -3.1, -49.44, 2, 0)
+ MovementLoopAddLocation(NPC, 45.98, -3.4, -45.47, 2, 0)
+ MovementLoopAddLocation(NPC, 31.59, -4.46, -34.78, 2, 0)
+ MovementLoopAddLocation(NPC, 28.95, -4.71, -31.4, 2, 0)
+ MovementLoopAddLocation(NPC, 25.88, -5.01, -19.05, 2, 0)
+ MovementLoopAddLocation(NPC, 24.87, -5.11, -8.81, 2, 0)
+ MovementLoopAddLocation(NPC, 21.26, -5.46, 4.07, 2, 0)
+ MovementLoopAddLocation(NPC, 19.84, -5.6, 5.86, 2, 0)
+ MovementLoopAddLocation(NPC, 16.59, -5.91, 6.89, 2, 0)
+ MovementLoopAddLocation(NPC, 13.24, -6.2, 6.57, 2, 0)
+ MovementLoopAddLocation(NPC, 4.24, -6.93, 5.55, 2, 0)
+ MovementLoopAddLocation(NPC, -4.64, -7.65, 2.24, 2, 0)
+ MovementLoopAddLocation(NPC, -9.55, -8.05, -0.46, 2, 0)
+ MovementLoopAddLocation(NPC, -11.68, -8.2, -2.84, 2, 0)
+ MovementLoopAddLocation(NPC, -13.76, -8.39, -6.88, 2, 0)
+ MovementLoopAddLocation(NPC, -17.9, -8.73, -11.53, 2, 0)
+ MovementLoopAddLocation(NPC, -20.01, -8.9, -14.78, 2, 0)
+ MovementLoopAddLocation(NPC, -23.23, -9.28, -23.25, 2, 0)
+ MovementLoopAddLocation(NPC, -25.11, -9.5, -25.5, 2, 0)
+ MovementLoopAddLocation(NPC, -34.33, -10.52, -34.3, 2, 0)
+ MovementLoopAddLocation(NPC, -34.33, -10.52, -34.3, 2, 0)
+ MovementLoopAddLocation(NPC, -25.19, -9.51, -25.88, 2, 0)
+ MovementLoopAddLocation(NPC, -23.78, -9.34, -23.85, 2, 0)
+ MovementLoopAddLocation(NPC, -20.1, -8.91, -14.68, 2, 0)
+ MovementLoopAddLocation(NPC, -15.06, -8.48, -9.21, 2, 0)
+ MovementLoopAddLocation(NPC, -11.17, -8.16, -2.09, 2, 0)
+ MovementLoopAddLocation(NPC, -7.68, -7.9, 0.74, 2, 0)
+ MovementLoopAddLocation(NPC, -7.68, -7.9, 0.74, 2, 0)
+ MovementLoopAddLocation(NPC, 1.27, -7.16, 4.21, 2, 0)
+ MovementLoopAddLocation(NPC, 9.43, -6.51, 6.33, 2, 0)
+ MovementLoopAddLocation(NPC, 16.71, -5.9, 7.01, 2, 0)
+ MovementLoopAddLocation(NPC, 19.88, -5.6, 6.63, 2, 0)
+ MovementLoopAddLocation(NPC, 20.92, -5.49, 5.19, 2, 0)
+ MovementLoopAddLocation(NPC, 24.62, -5.13, -7.58, 2, 0)
+ MovementLoopAddLocation(NPC, 25.43, -5.06, -19.69, 2, 0)
+ MovementLoopAddLocation(NPC, 29.44, -4.66, -32.18, 2, 0)
+ MovementLoopAddLocation(NPC, 32.71, -4.35, -35.82, 2, 0)
+ MovementLoopAddLocation(NPC, 45.09, -3.49, -44.3, 2, 0)
+ MovementLoopAddLocation(NPC, 47.15, -3.2, -48.6, 2, 0)
+ MovementLoopAddLocation(NPC, 48.78, -2.96, -68.4, 2, 0)
+ MovementLoopAddLocation(NPC, 51.46, -2.89, -75.44, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anEthernereundertaker.lua b/server/SpawnScripts/TheGraveyard_Classic/anEthernereundertaker.lua
new file mode 100755
index 000000000..fe701dc88
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anEthernereundertaker.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anEthernereundertaker.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.29 12:08:57
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseDarkElf1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1052.mp3", "Do not interrupt my work or you may become part of it.", "no", 0, 0, Spawn, 0)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anexhumedskeleton.lua b/server/SpawnScripts/TheGraveyard_Classic/anexhumedskeleton.lua
new file mode 100755
index 000000000..f85827e0c
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anexhumedskeleton.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anexhumedskeleton.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.13 09:08:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriest.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriest.lua
new file mode 100755
index 000000000..ab6fe76b6
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriest.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadbattlepriest.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 03:08:14
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+ Appearance(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",1521)
+ else
+ SpawnSet(NPC,"model_type",140)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestHeroic.lua
new file mode 100755
index 000000000..db1399f34
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestHeroic.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 03:08:49
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+ Appearance(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",1521)
+ else
+ SpawnSet(NPC,"model_type",140)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestNarrowPath.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestNarrowPath.lua
new file mode 100755
index 000000000..fae17977d
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestNarrowPath.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestNarrowPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:14
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+ Appearance(NPC)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",1521)
+ else
+ SpawnSet(NPC,"model_type",140)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestValeron.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestValeron.lua
new file mode 100755
index 000000000..db580def3
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestValeron.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadbattlepriestValeron.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.17 03:08:16
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SpawnSet(NPC, "heroic", 1)
+ SetSpawnAnimation(NPC, 13016)
+ SpawnSet(NPC,"model_type",140)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadcrusader.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadcrusader.lua
new file mode 100755
index 000000000..1d51c3f96
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadcrusader.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadcrusader.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 09:08:56
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadcrusaderValeron.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadcrusaderValeron.lua
new file mode 100755
index 000000000..32d1d7fd6
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadcrusaderValeron.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadcrusaderValeron.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 01:08:19
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadfighter.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadfighter.lua
new file mode 100755
index 000000000..c40820731
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadfighter.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadfighter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 03:08:26
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadfighterHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadfighterHeroic.lua
new file mode 100755
index 000000000..8fc9306bc
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadfighterHeroic.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadfighterHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 03:08:34
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadfighterNarrowPath.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadfighterNarrowPath.lua
new file mode 100755
index 000000000..03b0ee8b2
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadfighterNarrowPath.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadfighterNarrowPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadknight.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadknight.lua
new file mode 100755
index 000000000..046d460de
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadknight.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadknight.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 05:08:07
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadknightHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadknightHeroic.lua
new file mode 100755
index 000000000..fce4b58e8
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadknightHeroic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadknightHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 05:08:04
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SpawnSet(NPC, "heroic", 1)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadknightRoam.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadknightRoam.lua
new file mode 100755
index 000000000..2e804cb54
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadknightRoam.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadknightRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 11:08:34
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadknightValeron.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadknightValeron.lua
new file mode 100755
index 000000000..1e029ed9c
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadknightValeron.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadknightValeron.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 01:08:26
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadlancer.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadlancer.lua
new file mode 100755
index 000000000..6c4c0e692
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadlancer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadlancer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:45
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadlancerHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadlancerHeroic.lua
new file mode 100755
index 000000000..aa1d80f3e
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadlancerHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadlancerHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:24
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadpikeman.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadpikeman.lua
new file mode 100755
index 000000000..f8a7b8260
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadpikeman.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadpikeman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 01:08:08
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadpikemanHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadpikemanHeroic.lua
new file mode 100755
index 000000000..84a09614e
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadpikemanHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadpikemanHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 01:08:52
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadpriest.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriest.lua
new file mode 100755
index 000000000..a00eca72f
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriest.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadpriest.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:10
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestHeroic.lua
new file mode 100755
index 000000000..e921525a8
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadpriestHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:00
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestRoam.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestRoam.lua
new file mode 100755
index 000000000..74d38ecc0
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestRoam.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadpriestRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 11:08:39
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestValeron.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestValeron.lua
new file mode 100755
index 000000000..0805b4ffe
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadpriestValeron.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadpriestValeron.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 01:08:05
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadsquire.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadsquire.lua
new file mode 100755
index 000000000..dd77ee7d9
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadsquire.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadsquire.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 10:08:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/anundeadsquireNarrowPath.lua b/server/SpawnScripts/TheGraveyard_Classic/anundeadsquireNarrowPath.lua
new file mode 100755
index 000000000..9440c2afb
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/anundeadsquireNarrowPath.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/anundeadsquireNarrowPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 10:08:19
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/aplaguerat.lua b/server/SpawnScripts/TheGraveyard_Classic/aplaguerat.lua
new file mode 100755
index 000000000..e1b9ad80d
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/aplaguerat.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/aplaguerat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 12:08:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
diff --git a/server/SpawnScripts/TheGraveyard_Classic/aputridzombie.lua b/server/SpawnScripts/TheGraveyard_Classic/aputridzombie.lua
new file mode 100755
index 000000000..a7b7c3c97
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/aputridzombie.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/aputridzombie.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 05:08:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/aputridzombieNarrowPath.lua b/server/SpawnScripts/TheGraveyard_Classic/aputridzombieNarrowPath.lua
new file mode 100755
index 000000000..e5221cbdc
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/aputridzombieNarrowPath.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/aputridzombieNarrowPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 09:08:34
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseZombie1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3.5, -3.5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
diff --git a/server/SpawnScripts/TheGraveyard_Classic/arottingzombie.lua b/server/SpawnScripts/TheGraveyard_Classic/arottingzombie.lua
new file mode 100755
index 000000000..e4bfdf695
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/arottingzombie.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/arottingzombie.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 08:08:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/arottingzombieHeroic.lua b/server/SpawnScripts/TheGraveyard_Classic/arottingzombieHeroic.lua
new file mode 100755
index 000000000..828826f8b
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/arottingzombieHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/arottingzombieHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 02:08:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/arottingzombieRoamer.lua b/server/SpawnScripts/TheGraveyard_Classic/arottingzombieRoamer.lua
new file mode 100755
index 000000000..7c0278383
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/arottingzombieRoamer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/arottingzombieRoamer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.15 08:08:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/ascourgerat.lua b/server/SpawnScripts/TheGraveyard_Classic/ascourgerat.lua
new file mode 100755
index 000000000..0243feb52
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/ascourgerat.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/ascourgerat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 01:08:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/ascourgeratNarrowPath.lua b/server/SpawnScripts/TheGraveyard_Classic/ascourgeratNarrowPath.lua
new file mode 100755
index 000000000..71c772966
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/ascourgeratNarrowPath.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/ascourgeratNarrowPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.14 04:08:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3.5, -3.5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/asmallspider.lua b/server/SpawnScripts/TheGraveyard_Classic/asmallspider.lua
new file mode 100755
index 000000000..6c7099db4
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/asmallspider.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/asmallspider.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.08 02:08:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/awoolyspider.lua b/server/SpawnScripts/TheGraveyard_Classic/awoolyspider.lua
new file mode 100755
index 000000000..89e286f20
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/awoolyspider.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/awoolyspider.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.08 02:08:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheGraveyard_Classic/widgetinspectthexmonument.lua b/server/SpawnScripts/TheGraveyard_Classic/widgetinspectthexmonument.lua
new file mode 100755
index 000000000..b0691890a
--- /dev/null
+++ b/server/SpawnScripts/TheGraveyard_Classic/widgetinspectthexmonument.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/TheGraveyard_Classic/widgetinspectthexmonument.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.16 04:10:36
+ Script Purpose :
+ :
+--]]
+
+local TheStolenArtifactsofThex = 5683
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'inspect' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Stop inspecting.","Close")
+ if HasLanguage(Spawn,2) and GetQuestStepProgress(Spawn,TheStolenArtifactsofThex,6)==0 then
+ AddConversationOption(con, "Make a note of the artifact.","Dialog2")
+ end
+ StartDialogConversation(con, 1, NPC, Spawn, "This is a gravestone made of ancient looking stone. The name of the deceased appears on the stone as well as odd writing of a foreign language. The name looks to have been added more recently than the foreign writing.")
+end
+end
+
+function Dialog2(NPC, Spawn)
+ local con = CreateConversation()
+ SetStepComplete(Spawn, TheStolenArtifactsofThex, 6)
+ AddConversationOption(con, "Stop studying.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "You make a note of the location of the Thex artifact as ordered by Kylanith D'Lar.")
+end
+
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+end
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/ArmsdealerNylzs.lua b/server/SpawnScripts/TheRuins_Classic/ArmsdealerNylzs.lua
new file mode 100755
index 000000000..468991831
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/ArmsdealerNylzs.lua
@@ -0,0 +1,62 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/ArmsdealerNylzs.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 05:07:56
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 12, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)>0 then
+ if MakeRandomInt(1, 100) <= 25 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_aoi_gm_b9dbd27d.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 3019943489, 1406568446, Spawn, 0)
+ end
+ end
+end
+
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_notcitizen_gm_34401a59.mp3", "It is treasonous to sell wares to the citizens of Qeynos! Remove yourself and I will not summon the militia!", "tapfoot", 3207287074, 2285969803, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_notcitizen_gm_aef2fedb.mp3", "I'm sorry. We don't sell lollipops and daisies here. Go on now, run along and play.", "frustrated", 4198095463, 3568397698, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_notcitizen_gm_a42fcf6.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "no", 1225129708, 2416370663, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 105908870, 230263487, Spawn)
+ end
+ else
+ RandomGreeting(NPC, Spawn)
+ end
+end
+
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,4)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_hail_gm_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 105908870, 230263487, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_hail_gm_6ec08438.mp3", "In spite of the cost of living, it's still quite a popular item.", "ponder", 2596269432, 669710728, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_hail_gm_1a08e567.mp3", "Hello! Can I offer you one of our new lifetime extended warranties for any merchandise you purchase? ", "nod", 1197055422, 631535840, Spawn, 0)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/iksar_eco_evil_1/ft/service/merchant/iksar_merchant_service_evil_1_hail_gm_aff3fc07.mp3", "Are you going to buy anything today, or am I just wasting my time? This isn't a museum display you know!", "glare", 1394544165, 1181852771, Spawn, 0)
+ end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/BonduhrLonetusk.lua b/server/SpawnScripts/TheRuins_Classic/BonduhrLonetusk.lua
new file mode 100755
index 000000000..e0502915c
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/BonduhrLonetusk.lua
@@ -0,0 +1,134 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/BonduhrLonetusk.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.05 08:07:35
+ Script Purpose :
+ :
+--]]
+
+
+
+-- VO COLLECTION --
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_d552223c.mp3", "GEKKKKnoh! Ezzrrt sha kemm.", "", 1083788244, 2181690295, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_95912cdc.mp3", "Harkt brecht ogglot kressht", "", 1749294695, 2575234394, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_73b2c225.mp3", "Gretz kagh lotgg vep nabrecht", "", 3140410719, 1155418716, Player, 17)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_cd184493.mp3", "Purzt gort NARGAAAAA!!! Durzog carb!", "", 2698130766, 658534720, Player, 17)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_2d2ccd12.mp3", "Incoming! Summon the warriors.", "", 3730616476, 4212115469, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_478609c4.mp3", "This must be my lucky day.", "", 1552928496, 830976152, Player, 17)
+ elseif choice == 3 then
+ if GetClass(Player) <=1 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_maofighter_42d206ef.mp3", "Kill the ugly one! He has the most armor!", "", 1385896447, 1033709680, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7afa7bb1.mp3", "Perfect! This one has some nice things.", "", 3642130783, 1736257146, Player, 17)
+ end
+end
+end
+end
+end
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_death_f7b415bf.mp3", "Run for your life!", "", 1229175170, 4046634541, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_145827a4.mp3", "Help! I can't feel my arm.", "", 2498804724, 1519811140, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_77dcb788.mp3", "Uh ohhhhhhhhh!", "", 422612512, 3900776578, Player, 17)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_9bab0561.mp3", "Wait, where is my book?", "", 3815705437, 2144969522, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 2 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_dc33f5e9.mp3", "Does anybody have an extra fire beetle eye? ...Never mind.", "", 88571247, 1912603138, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 3 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_f79b266b.mp3", "Help! I only know one spell!", "", 2648192261, 1154758802, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c234f7ec.mp3", "We don't need reinforcements. Attack!", "", 3931748607, 200204217, Player, 17)
+ end
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_22527607.mp3", "Get em! Get em! Get em!", "", 2020932501, 2692113351, Player, 17)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_27011747.mp3", "Who cares if they're stronger, we're orcs!", "", 769549584, 170271605, Player, 17)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,17 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_4a834d11.mp3", "I killed one?", "", 494264984, 880425961, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_5ec9f9e2.mp3", "Keep fighting while I get these boots!", "", 1910539619, 2233613105, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_82b00e31.mp3", "I must have scared them to Death.", "", 4172718711, 2353147238, Player, 17)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/ChieftainRekrin.lua b/server/SpawnScripts/TheRuins_Classic/ChieftainRekrin.lua
new file mode 100755
index 000000000..dfac238dc
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/ChieftainRekrin.lua
@@ -0,0 +1,134 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/ChieftainRekrin.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.05 08:07:44
+ Script Purpose :
+ :
+--]]
+
+
+
+-- VO COLLECTION --
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_d552223c.mp3", "GEKKKKnoh! Ezzrrt sha kemm.", "", 1083788244, 2181690295, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_95912cdc.mp3", "Harkt brecht ogglot kressht", "", 1749294695, 2575234394, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_73b2c225.mp3", "Gretz kagh lotgg vep nabrecht", "", 3140410719, 1155418716, Player, 17)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_cd184493.mp3", "Purzt gort NARGAAAAA!!! Durzog carb!", "", 2698130766, 658534720, Player, 17)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_2d2ccd12.mp3", "Incoming! Summon the warriors.", "", 3730616476, 4212115469, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_478609c4.mp3", "This must be my lucky day.", "", 1552928496, 830976152, Player, 17)
+ elseif choice == 3 then
+ if GetClass(Player) <=1 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_maofighter_42d206ef.mp3", "Kill the ugly one! He has the most armor!", "", 1385896447, 1033709680, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7afa7bb1.mp3", "Perfect! This one has some nice things.", "", 3642130783, 1736257146, Player, 17)
+ end
+end
+end
+end
+end
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_death_f7b415bf.mp3", "Run for your life!", "", 1229175170, 4046634541, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_145827a4.mp3", "Help! I can't feel my arm.", "", 2498804724, 1519811140, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_77dcb788.mp3", "Uh ohhhhhhhhh!", "", 422612512, 3900776578, Player, 17)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_9bab0561.mp3", "Wait, where is my book?", "", 3815705437, 2144969522, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 2 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_dc33f5e9.mp3", "Does anybody have an extra fire beetle eye? ...Never mind.", "", 88571247, 1912603138, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 3 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_f79b266b.mp3", "Help! I only know one spell!", "", 2648192261, 1154758802, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c234f7ec.mp3", "We don't need reinforcements. Attack!", "", 3931748607, 200204217, Player, 17)
+ end
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_22527607.mp3", "Get em! Get em! Get em!", "", 2020932501, 2692113351, Player, 17)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_27011747.mp3", "Who cares if they're stronger, we're orcs!", "", 769549584, 170271605, Player, 17)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,17 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_4a834d11.mp3", "I killed one?", "", 494264984, 880425961, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_5ec9f9e2.mp3", "Keep fighting while I get these boots!", "", 1910539619, 2233613105, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_82b00e31.mp3", "I must have scared them to Death.", "", 4172718711, 2353147238, Player, 17)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/DreghBrokentusk.lua b/server/SpawnScripts/TheRuins_Classic/DreghBrokentusk.lua
new file mode 100755
index 000000000..cfd3ac590
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/DreghBrokentusk.lua
@@ -0,0 +1,139 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/DreghBrokentusk.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.05 08:07:28
+ Script Purpose :
+ :
+--]]
+
+
+
+
+
+
+
+
+-- VO COLLECTION --
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_d552223c.mp3", "GEKKKKnoh! Ezzrrt sha kemm.", "", 1083788244, 2181690295, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_95912cdc.mp3", "Harkt brecht ogglot kressht", "", 1749294695, 2575234394, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_73b2c225.mp3", "Gretz kagh lotgg vep nabrecht", "", 3140410719, 1155418716, Player, 17)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_cd184493.mp3", "Purzt gort NARGAAAAA!!! Durzog carb!", "", 2698130766, 658534720, Player, 17)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_2d2ccd12.mp3", "Incoming! Summon the warriors.", "", 3730616476, 4212115469, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_478609c4.mp3", "This must be my lucky day.", "", 1552928496, 830976152, Player, 17)
+ elseif choice == 3 then
+ if GetClass(Player) <=1 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_maofighter_42d206ef.mp3", "Kill the ugly one! He has the most armor!", "", 1385896447, 1033709680, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7afa7bb1.mp3", "Perfect! This one has some nice things.", "", 3642130783, 1736257146, Player, 17)
+ end
+end
+end
+end
+end
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_death_f7b415bf.mp3", "Run for your life!", "", 1229175170, 4046634541, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_145827a4.mp3", "Help! I can't feel my arm.", "", 2498804724, 1519811140, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_77dcb788.mp3", "Uh ohhhhhhhhh!", "", 422612512, 3900776578, Player, 17)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_9bab0561.mp3", "Wait, where is my book?", "", 3815705437, 2144969522, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 2 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_dc33f5e9.mp3", "Does anybody have an extra fire beetle eye? ...Never mind.", "", 88571247, 1912603138, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 3 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_f79b266b.mp3", "Help! I only know one spell!", "", 2648192261, 1154758802, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c234f7ec.mp3", "We don't need reinforcements. Attack!", "", 3931748607, 200204217, Player, 17)
+ end
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_22527607.mp3", "Get em! Get em! Get em!", "", 2020932501, 2692113351, Player, 17)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_27011747.mp3", "Who cares if they're stronger, we're orcs!", "", 769549584, 170271605, Player, 17)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,17 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_4a834d11.mp3", "I killed one?", "", 494264984, 880425961, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_5ec9f9e2.mp3", "Keep fighting while I get these boots!", "", 1910539619, 2233613105, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_82b00e31.mp3", "I must have scared them to Death.", "", 4172718711, 2353147238, Player, 17)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/GuardGriz.lua b/server/SpawnScripts/TheRuins_Classic/GuardGriz.lua
new file mode 100755
index 000000000..4d013c31f
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/GuardGriz.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/GuardGriz.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 04:07:47
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/GuardNTal.lua b/server/SpawnScripts/TheRuins_Classic/GuardNTal.lua
new file mode 100755
index 000000000..ce6361ba6
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/GuardNTal.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/GuardNTal.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 05:07:08
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/GuardValinus.lua b/server/SpawnScripts/TheRuins_Classic/GuardValinus.lua
new file mode 100755
index 000000000..7cb986619
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/GuardValinus.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/GuardValinus.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 04:07:44
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ else
+ FaceTarget(NPC, Spawn)
+ GenericGuardHail(NPC,Spawn)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/KlaydLonetusk.lua b/server/SpawnScripts/TheRuins_Classic/KlaydLonetusk.lua
new file mode 100755
index 000000000..526feef4d
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/KlaydLonetusk.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/KlaydLonetusk.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.11 04:07:20
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/KlaydSpawner.lua b/server/SpawnScripts/TheRuins_Classic/KlaydSpawner.lua
new file mode 100755
index 000000000..7fdc3ae1f
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/KlaydSpawner.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/KlaydSpawner.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.11 02:07:28
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+CampSpawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+
+function CampSpawn(NPC, Spawn) -- Stage 1
+ local zone = GetZone(NPC)
+ local CampSpawn1 = SpawnByLocationID(zone, 133785955)
+ local CampSpawn2 = SpawnByLocationID(zone, 133785956)
+ local CampSpawn3 = SpawnByLocationID(zone, 133785957)
+ local CampSpawn4 = SpawnByLocationID(zone, 133785958)
+ local CampSpawn5 = SpawnByLocationID(zone, 133785959)
+ local CampSpawn6 = SpawnByLocationID(zone, 133785960)
+
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1")
+end
+
+function CampSpawnCheck_Stage1(NPC, Spawn) --Stage 1 Living Check
+ local zone = GetZone(NPC)
+ local CampSpawn1 = GetSpawnByLocationID(zone, 133785955)
+ local CampSpawn2 = GetSpawnByLocationID(zone, 133785956)
+ local CampSpawn3 = GetSpawnByLocationID(zone, 133785957)
+ local CampSpawn4 = GetSpawnByLocationID(zone, 133785958)
+ local CampSpawn5 = GetSpawnByLocationID(zone, 133785959)
+ local CampSpawn6 = GetSpawnByLocationID(zone, 133785960)
+
+if IsAlive(CampSpawn1) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn2) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn3) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn4) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+ elseif IsAlive(CampSpawn5) == true then
+ AddTimer(NPC,6000,"CampSpawnCheck_Stage1",1, Spawn)
+
+ else
+ AddTimer(NPC, 6000, "CampReset")
+ end
+end
+
+
+function CampReset(NPC)
+local zone = GetZone(NPC)
+local CampObject = GetSpawnByLocationID(zone, 133785961)
+ if CampObject~= nil then
+ Despawn(CampObject)
+ end
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/KoduhlBrokentusk.lua b/server/SpawnScripts/TheRuins_Classic/KoduhlBrokentusk.lua
new file mode 100644
index 000000000..d471e2bb8
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/KoduhlBrokentusk.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/KoduhlBrokentusk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.01 10:01:53
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 9.51, -4.24, 162.1, 2, 0)
+ MovementLoopAddLocation(NPC, -1.32, -4.24, 161.85, 2, 0)
+ MovementLoopAddLocation(NPC, -11.35, -4.24, 161.61, 2, 0)
+ MovementLoopAddLocation(NPC, -19.89, -4.24, 159.03, 2, 0)
+ MovementLoopAddLocation(NPC, -21.75, -4.24, 156.69, 2, 0)
+ MovementLoopAddLocation(NPC, -23.38, -4.32, 148.91, 2, 0)
+ MovementLoopAddLocation(NPC, -22.05, -4.34, 145.02, 2, 0)
+ MovementLoopAddLocation(NPC, -24.85, -4.28, 141.44, 2, 0)
+ MovementLoopAddLocation(NPC, -28.17, -4.28, 139.93, 2, 0)
+ MovementLoopAddLocation(NPC, -35.27, -4.31, 132.41, 2, 0)
+ MovementLoopAddLocation(NPC, -50.01, -2.94, 116.58, 2, 0)
+ MovementLoopAddLocation(NPC, -59.29, -2.75, 108.84, 2, 0)
+ MovementLoopAddLocation(NPC, -54.06, -2.82, 111.77, 2, 0)
+ MovementLoopAddLocation(NPC, -49.66, -2.96, 117.91, 2, 0)
+ MovementLoopAddLocation(NPC, -32.06, -4.28, 136.37, 2, 0)
+ MovementLoopAddLocation(NPC, -24.68, -4.28, 140.58, 2, 0)
+ MovementLoopAddLocation(NPC, -23.13, -4.31, 144.69, 2, 0)
+ MovementLoopAddLocation(NPC, -22.38, -4.24, 155.98, 2, 0)
+ MovementLoopAddLocation(NPC, -19.28, -4.25, 159.72, 2, 0)
+ MovementLoopAddLocation(NPC, -12.03, -4.24, 161.17, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/LieutenantGurg.lua b/server/SpawnScripts/TheRuins_Classic/LieutenantGurg.lua
new file mode 100644
index 000000000..cb6bf65ca
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/LieutenantGurg.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/LieutenantGurg.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.01 10:01:05
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function death(NPC, Spawn)
+ AddTimer(NPC, 6000, "Koduhl")
+end
+
+function Koduhl(NPC, Spawn)
+ local zone = GetZone(NPC)
+ local Koduhl = SpawnByLocationID(zone, 133789172)
+
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 9.51, -4.24, 162.1, 2, 0)
+ MovementLoopAddLocation(NPC, -1.32, -4.24, 161.85, 2, 0)
+ MovementLoopAddLocation(NPC, -11.35, -4.24, 161.61, 2, 0)
+ MovementLoopAddLocation(NPC, -19.89, -4.24, 159.03, 2, 0)
+ MovementLoopAddLocation(NPC, -21.75, -4.24, 156.69, 2, 0)
+ MovementLoopAddLocation(NPC, -23.38, -4.32, 148.91, 2, 0)
+ MovementLoopAddLocation(NPC, -22.05, -4.34, 145.02, 2, 0)
+ MovementLoopAddLocation(NPC, -24.85, -4.28, 141.44, 2, 0)
+ MovementLoopAddLocation(NPC, -28.17, -4.28, 139.93, 2, 0)
+ MovementLoopAddLocation(NPC, -35.27, -4.31, 132.41, 2, 0)
+ MovementLoopAddLocation(NPC, -50.01, -2.94, 116.58, 2, 0)
+ MovementLoopAddLocation(NPC, -59.29, -2.75, 108.84, 2, 0)
+ MovementLoopAddLocation(NPC, -54.06, -2.82, 111.77, 2, 0)
+ MovementLoopAddLocation(NPC, -49.66, -2.96, 117.91, 2, 0)
+ MovementLoopAddLocation(NPC, -32.06, -4.28, 136.37, 2, 0)
+ MovementLoopAddLocation(NPC, -24.68, -4.28, 140.58, 2, 0)
+ MovementLoopAddLocation(NPC, -23.13, -4.31, 144.69, 2, 0)
+ MovementLoopAddLocation(NPC, -22.38, -4.24, 155.98, 2, 0)
+ MovementLoopAddLocation(NPC, -19.28, -4.25, 159.72, 2, 0)
+ MovementLoopAddLocation(NPC, -12.03, -4.24, 161.17, 2, 0)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/LonetuskSparring.lua b/server/SpawnScripts/TheRuins_Classic/LonetuskSparring.lua
new file mode 100755
index 000000000..7e296b2ac
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/LonetuskSparring.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/LonetuskSparring.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.04 08:07:34
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ AddTimer(NPC, MakeRandomInt(2500,4000), "AttackAnim")
+end
+
+function hailed(NPC, Spawn)
+-- FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+end
+
+function AttackAnim(NPC,Spawn)
+ if IsInCombat(NPC) == false then
+ choice = MakeRandomInt(1,7)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","1h_sword_ouch_down",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","1h_sword_dodge_forehand",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","kick",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","1h_sword_parry_backhand",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","pugilist_attack",0,0)
+ elseif choice == 6 then
+ PlayFlavor(NPC,"","","pugilist_attack",0,0)
+ elseif choice == 7 then
+ PlayFlavor(NPC,"","","pugilist_attack",0,0)
+
+end
+ end
+ AddTimer(NPC, MakeRandomInt(2500,4000), "AttackAnim")
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/MerchantPitrova.lua b/server/SpawnScripts/TheRuins_Classic/MerchantPitrova.lua
new file mode 100755
index 000000000..6337f9362
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/MerchantPitrova.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/MerchantPitrova.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 05:07:48
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 12, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function InRange(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)>0 then
+ if MakeRandomInt(1, 100) <= 25 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 1269771027, 1321830597, Spawn, 0)
+ end
+ end
+end
+
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12)<0 then
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_notcitizen_gf_a42fcf6.mp3", "We don't serve your pathetic kind here. Get out of my sight!", "glare", 2693427635, 1267181463, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_notcitizen_gf_6967bdd1.mp3", "I'm sorry. We don't sell lollipops and daisies here. Go on now, run along and play.", "swear", 918667969, 4244893713, Spawn, 0)
+ end
+ else
+ RandomGreeting(NPC, Spawn)
+ end
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3557499503, 3758276116, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 3896024368, 3267129756, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 4265688146, 2432877514, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/MerchantTalia.lua b/server/SpawnScripts/TheRuins_Classic/MerchantTalia.lua
new file mode 100755
index 000000000..6b71c9d4f
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/MerchantTalia.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/MerchantTalia.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.04 02:07:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What do you want to purchase? Don't be shy. My fine wares are worth spending your coin.")
+ Dialog.AddVoiceover("voiceover/english/merchant_talia_of_the_coalition/fprt_adv04_ruins/merchanttalia000.mp3", 1965549585, 3553254734)
+ if GetQuestStep(Spawn,5872)==1 then
+ Dialog.AddOption("I hate to be the bearer of bad news, but G'Zule sent me to deliver this death certificate. ", "Dialog2")
+ end
+ Dialog.AddOption("Give me a moment.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Barel, dead?! Really?! It took too long for that no-good son of a... Well, he deserved to die, you know! I hope it was painful! Now, let me unload some of your coin... I know you need something...")
+ PlayFlavor(NPC,"","","boggle",0,0,Spawn)
+ Dialog.AddVoiceover("voiceover/english/merchant_talia_of_the_coalition/fprt_adv04_ruins/merchanttalia001.mp3", 871186766, 640332456)
+ Dialog.AddOption("I do believe that was the shortest bereavement I've ever witnessed.")
+ Dialog.Start()
+ SetStepComplete(Spawn,5872,1)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/RingleaderRadko.lua b/server/SpawnScripts/TheRuins_Classic/RingleaderRadko.lua
new file mode 100644
index 000000000..e6dab5ca3
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/RingleaderRadko.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/RingleaderRadko.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.01 10:01:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/SlaynBrokentusk.lua b/server/SpawnScripts/TheRuins_Classic/SlaynBrokentusk.lua
new file mode 100755
index 000000000..a3a14620c
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/SlaynBrokentusk.lua
@@ -0,0 +1,151 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/SlaynBrokentusk.lua
+ Script Author : Dorbin
+ Script Date : 2023.08.01 03:08:17
+ Script Purpose :
+ :
+--]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- VO COLLECTION --
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,4)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_d552223c.mp3", "GEKKKKnoh! Ezzrrt sha kemm.", "", 1083788244, 2181690295, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_95912cdc.mp3", "Harkt brecht ogglot kressht", "", 1749294695, 2575234394, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_73b2c225.mp3", "Gretz kagh lotgg vep nabrecht", "", 3140410719, 1155418716, Player, 17)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_garbled_cd184493.mp3", "Purzt gort NARGAAAAA!!! Durzog carb!", "", 2698130766, 658534720, Player, 17)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_2d2ccd12.mp3", "Incoming! Summon the warriors.", "", 3730616476, 4212115469, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_aggro_478609c4.mp3", "This must be my lucky day.", "", 1552928496, 830976152, Player, 17)
+ elseif choice == 3 then
+ if GetClass(Player) <=1 and GetClass(Player) >=10 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_maofighter_42d206ef.mp3", "Kill the ugly one! He has the most armor!", "", 1385896447, 1033709680, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_aggro_7afa7bb1.mp3", "Perfect! This one has some nice things.", "", 3642130783, 1736257146, Player, 17)
+ end
+end
+end
+end
+end
+
+function death(NPC,Player)
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if math.random(0,100)<=35 then
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_death_f7b415bf.mp3", "Run for your life!", "", 1229175170, 4046634541, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_145827a4.mp3", "Help! I can't feel my arm.", "", 2498804724, 1519811140, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_brokentusk/ft/orc/orc_brokentusk_1_death_77dcb788.mp3", "Uh ohhhhhhhhh!", "", 422612512, 3900776578, Player, 17)
+ end
+ end
+end
+end
+end
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_9bab0561.mp3", "Wait, where is my book?", "", 3815705437, 2144969522, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 2 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_dc33f5e9.mp3", "Does anybody have an extra fire beetle eye? ...Never mind.", "", 88571247, 1912603138, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_m_cee9556a.mp3", "Okay, try using your weapon this time!", "", 2617802671, 3658192888, Player, 17)
+ end
+ elseif choice == 3 then
+ if GetClass(NPC) <=11 and GetClass(NPC)>=30 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c_f79b266b.mp3", "Help! I only know one spell!", "", 2648192261, 1154758802, Player, 17)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_c234f7ec.mp3", "We don't need reinforcements. Attack!", "", 3931748607, 200204217, Player, 17)
+ end
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_22527607.mp3", "Get em! Get em! Get em!", "", 2020932501, 2692113351, Player, 17)
+ elseif choice == 5 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_battle_27011747.mp3", "Who cares if they're stronger, we're orcs!", "", 769549584, 170271605, Player, 17)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,MakeRandomInt(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,17 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,17 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_4a834d11.mp3", "I killed one?", "", 494264984, 880425961, Player, 17)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_5ec9f9e2.mp3", "Keep fighting while I get these boots!", "", 1910539619, 2233613105, Player, 17)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional3/orc_lonetusk/ft/orc/orc_lonetusk_2_victory_82b00e31.mp3", "I must have scared them to Death.", "", 4172718711, 2353147238, Player, 17)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/SpiritofGurbLandle.lua b/server/SpawnScripts/TheRuins_Classic/SpiritofGurbLandle.lua
new file mode 100755
index 000000000..7227f3203
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/SpiritofGurbLandle.lua
@@ -0,0 +1,78 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/SpiritofGurbLandle.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.06 04:07:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+AddTimer(NPC,MakeRandomInt(10000,300000),"FairyCheck")
+end
+
+function FairyCheck(NPC)
+local zone = GetZone(NPC)
+if GetSpawnByLocationID(zone, 133785613)==nil then --WELE
+ SpawnByLocationID(zone,133785613)
+end
+ if GetSpawnByLocationID(zone, 133785612)==nil then --XEL
+ SpawnByLocationID(zone,133785612)
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function RandomGreeting(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1020.mp3", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1020.mp3", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayVoice(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1020.mp3", 0, 0, Spawn)
+ end
+end
+
+function hailed(NPC, Spawn)
+RandomGreeting(NPC, Spawn)
+Dialog1(NPC, Spawn)
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The fairies, there here! They're looking for me.")
+ PlayFlavor(NPC,"","","cringe",0,0,Spawn)
+ Dialog.AddOption("What fairies, and why are they looking for you? ", "Dialog2")
+ Dialog.AddOption("Looks like someone found you already. Be gone!")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("A long time ago, I stole something from the fairies of Faydwer. I made away with a golden anvil, and with it I could make golden weapons. I became one of the wealthiest halflings in all of Freeport.")
+ Dialog.AddOption("What happened to you?", "Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Using the anvil in life was slowly scarring my soul for what I had done. The fairies had placed a curse on the anvil to work against those who would use it for personal gain. With each strike of my hammer, a piece of my soul would absorb into it.")
+ PlayFlavor(NPC,"","","sigh",0,0,Spawn)
+ Dialog.AddOption("But how did you get... like this?", "Dialog4")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I was murdered in my sleep by a band of thieves who had learned of my golden weapons. They stole the anvil from me and along with it, a portion of my soul. I am now cursed to walk these ruins until the anvil is returned to the fairies, and they release my soul from it.")
+ PlayFlavor(NPC,"","","grumble",0,0,Spawn)
+ Dialog.AddOption("That is aweful, but I need to go.")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/TestOrc.lua b/server/SpawnScripts/TheRuins_Classic/TestOrc.lua
new file mode 100755
index 000000000..d6bc2bbe8
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/TestOrc.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/TestOrc.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.02 03:07:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SpawnSet(NPC, "visual_state", "threaten")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/WeleLyoli.lua b/server/SpawnScripts/TheRuins_Classic/WeleLyoli.lua
new file mode 100755
index 000000000..22c59cdc3
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/WeleLyoli.lua
@@ -0,0 +1,103 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/WeleLyoli.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.06 04:07:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "Timer1", "false")
+ SetTempVariable(NPC, "Timer2", "false")
+ AddTimer(NPC,500,"FairyCheck")
+ AddTimer(NPC,2000,"waypoints")
+ AddTimer(NPC,900000,"Depsawning")
+end
+
+function hailed(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,3000,"ResetTimer",1,Spawn)
+ if GetTempVariable(NPC, "Timer1")== "false"then
+ PlayFlavor(NPC, "", "We were tricked! It must be found.", "", 0, 0, Spawn, 0)
+ SetTempVariable(NPC, "Timer1", "true")
+
+ elseif GetTempVariable(NPC, "Timer2")== "false"then
+ PlayFlavor(NPC, "", "Where is he? Where is Gurb?", "", 0, 0, Spawn, 0)
+ SetTempVariable(NPC, "Timer2", "true")
+
+ else
+ SetTempVariable(NPC, "Timer1", "false")
+ SetTempVariable(NPC, "Timer2", "false")
+ PlayFlavor(NPC, "", "It was stolen from us! It must be returned home.", "", 0, 0, Spawn, 0)
+ end
+ end
+ end
+
+function FairyCheck(NPC)
+local zone = GetZone(NPC)
+if GetSpawnByLocationID(zone, 133785614)==nil then
+ SpawnByLocationID(zone,133785614)
+end
+ if GetSpawnByLocationID(zone, 133785615)==nil then
+ SpawnByLocationID(zone,133785615)
+end
+end
+
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -203.24, 2.59, 63.08, 2, 0)
+ MovementLoopAddLocation(NPC, -200.15, 2.59, 76, 2, 0)
+ MovementLoopAddLocation(NPC, -198.86, 2.59, 86.53, 2, 6)
+ MovementLoopAddLocation(NPC, -185.98, 2.59, 90.34, 2, 0)
+ MovementLoopAddLocation(NPC, -171.48, 2.59, 88.34, 2, 6)
+ MovementLoopAddLocation(NPC, -168.28, 2.59, 89.38, 2, 0)
+ MovementLoopAddLocation(NPC, -175.75, 2.59, 91.57, 2, 0)
+ MovementLoopAddLocation(NPC, -189.95, 2.59, 84.36, 2, 0)
+ MovementLoopAddLocation(NPC, -196.7, 2.59, 75.38, 2, 6)
+ MovementLoopAddLocation(NPC, -195.57, 2.59, 67.68, 2, 0)
+ MovementLoopAddLocation(NPC, -191.87, 2.59, 81.86, 2, 0)
+ MovementLoopAddLocation(NPC, -184.04, 2.59, 90.04, 2, 0)
+ MovementLoopAddLocation(NPC, -179.26, 2.59, 89.89, 2, 6)
+ MovementLoopAddLocation(NPC, -158.33, 15.17, 83.6, 2, 0)
+ MovementLoopAddLocation(NPC, -141.24, 15.17, 80.33, 2, 0)
+ MovementLoopAddLocation(NPC, -129, 5.53, 76.78, 2, 0)
+ MovementLoopAddLocation(NPC, -121.93, 5.53, 73.06, 2, 0)
+ MovementLoopAddLocation(NPC, -106.21, 1.83, 74.89, 2, 6)
+ MovementLoopAddLocation(NPC, -92.12, 12.85, 72.3, 2, 0)
+ MovementLoopAddLocation(NPC, -68.79, 6.91, 64.16, 2, 0)
+ MovementLoopAddLocation(NPC, -59.8, 4.07, 60.3, 2, 0)
+ MovementLoopAddLocation(NPC, -57.28, 3.07, 58.01, 2, 6)
+ MovementLoopAddLocation(NPC, -59.54, 3.07, 73.13, 2, 6)
+ MovementLoopAddLocation(NPC, -69.72, 3.07, 75.28, 2, 6)
+ MovementLoopAddLocation(NPC, -76.06, 3.07, 68.34, 2, 0)
+ MovementLoopAddLocation(NPC, -74.85, 4.07, 63.2, 2, 0)
+ MovementLoopAddLocation(NPC, -70.43, 3.75, 60.1, 2, 6)
+ MovementLoopAddLocation(NPC, -74.95, 13.34, 63.96, 2, 0)
+ MovementLoopAddLocation(NPC, -97.21, 4.67, 74.03, 2, 0)
+ MovementLoopAddLocation(NPC, -113.88, 4.25, 75.31, 2, 0)
+ MovementLoopAddLocation(NPC, -117.32, 1.65, 71.43, 2, 6)
+ MovementLoopAddLocation(NPC, -125.82, 4.25, 75.49, 2, 0)
+ MovementLoopAddLocation(NPC, -137.05, 9.46, 79.24, 2, 0)
+ MovementLoopAddLocation(NPC, -158.24, 14.83, 76.67, 2, 0)
+ MovementLoopAddLocation(NPC, -164.35, 5.73, 87.24, 2, 0)
+ MovementLoopAddLocation(NPC, -169.29, 0.11, 86.26, 2, 6)
+ MovementLoopAddLocation(NPC, -185.62, 0.11, 88.17, 2, 0)
+ MovementLoopAddLocation(NPC, -195.9, 0.11, 88.74, 2, 0)
+ MovementLoopAddLocation(NPC, -198.53, 0.11, 81.75, 2, 0)
+ MovementLoopAddLocation(NPC, -201.85, 8.92, 64.78, 2, 0)
+ MovementLoopAddLocation(NPC, -201.79, 16.45, 44.64, 2, 2)
+ MovementLoopAddLocation(NPC, -201.79, 16.45, 44.64, 2, 0,"Despawning")
+end
+
+function Despawning(NPC)
+ Despawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/XelFyara.lua b/server/SpawnScripts/TheRuins_Classic/XelFyara.lua
new file mode 100755
index 000000000..f853fc81d
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/XelFyara.lua
@@ -0,0 +1,89 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/XelFyara.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.06 05:07:54
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "Timer1", "false")
+ SetTempVariable(NPC, "Timer2", "false")
+ AddTimer(NPC,500,"FairyCheck")
+ AddTimer(NPC,2000,"waypoints")
+ AddTimer(NPC,900000,"Depsawning")
+
+end
+
+function hailed(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,3000,"ResetTimer",1,Spawn)
+ if GetTempVariable(NPC, "Timer1")== "false"then
+ PlayFlavor(NPC, "", "We were tricked! It must be found.", "", 0, 0, Spawn, 0)
+ SetTempVariable(NPC, "Timer1", "true")
+
+ elseif GetTempVariable(NPC, "Timer2")== "false"then
+ PlayFlavor(NPC, "", "Where is he? Where is Gurb?", "", 0, 0, Spawn, 0)
+ SetTempVariable(NPC, "Timer2", "true")
+
+ else
+ SetTempVariable(NPC, "Timer1", "false")
+ SetTempVariable(NPC, "Timer2", "false")
+ PlayFlavor(NPC, "", "It was stolen from us! It must be returned home.", "", 0, 0, Spawn, 0)
+ end
+ end
+ end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function FairyCheck(NPC)
+local zone = GetZone(NPC)
+if GetSpawnByLocationID(zone, 133785610)==nil then
+ SpawnByLocationID(zone,133785610)
+end
+ if GetSpawnByLocationID(zone, 133785611)==nil then
+ SpawnByLocationID(zone,133785611)
+end
+end
+
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -117.14, 4.73, 154.48, 2, 0)
+ MovementLoopAddLocation(NPC, -116.49, 5.21, 143.58, 2, 8)
+ MovementLoopAddLocation(NPC, -132.87, 5.21, 118.47, 2, 8)
+ MovementLoopAddLocation(NPC, -113.29, 5.21, 120.03, 2, 8)
+ MovementLoopAddLocation(NPC, -126.4, 5.21, 137.95, 2, 8)
+ MovementLoopAddLocation(NPC, -147, 5.21, 143.27, 2, 3)
+ MovementLoopAddLocation(NPC, -154.03, 5.21, 152.55, 2, 0)
+ MovementLoopAddLocation(NPC, -156.28, 5.21, 164.66, 2, 8)
+ MovementLoopAddLocation(NPC, -168.02, 5.21, 153.82, 2, 8)
+ MovementLoopAddLocation(NPC, -152.85, 5.21, 143.18, 2, 0)
+ MovementLoopAddLocation(NPC, -146.98, 5.21, 129.89, 2, 8)
+ MovementLoopAddLocation(NPC, -141.51, 5.68, 144.41, 2, 8)
+ MovementLoopAddLocation(NPC, -129.9, 8.25, 125.66, 2, 4)
+ MovementLoopAddLocation(NPC, -124.19, 8.25, 108.35, 2, 0)
+ MovementLoopAddLocation(NPC, -117.19, 0.52, 95, 2, 8)
+ MovementLoopAddLocation(NPC, -124.18, 0.52, 90.06, 2, 0)
+ MovementLoopAddLocation(NPC, -131.15, 8.42, 85.15, 2, 0)
+ MovementLoopAddLocation(NPC, -162.17, 12.23, 83.36, 2, 4)
+ MovementLoopAddLocation(NPC, -167.15, 7.23, 71.97, 2, 0)
+ MovementLoopAddLocation(NPC, -165.57, 0.76, 69.65, 2, 5)
+ MovementLoopAddLocation(NPC, -176.42, 0.76, 72.76, 2, 8)
+ MovementLoopAddLocation(NPC, -185.12, 0.76, 69.26, 2, 5)
+ MovementLoopAddLocation(NPC, -190.26, 0.76, 78.94, 2, 8)
+ MovementLoopAddLocation(NPC, -194.95, 0.76, 66.54, 2, 4)
+ MovementLoopAddLocation(NPC, -195.66, 5.62, 63.77, 2, 0)
+ MovementLoopAddLocation(NPC, -200.06, 14.32, 44.62, 2, 2)
+ MovementLoopAddLocation(NPC, -200.06, 14.32, 44.62, 2, 0,"Despawning")
+end
+
+function Despawning(NPC)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskcrusher.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskcrusher.lua
new file mode 100755
index 000000000..4ee22d4b4
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskcrusher.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskcrusher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 05:08:34
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskcrusherHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskcrusherHeroic.lua
new file mode 100755
index 000000000..218214e43
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskcrusherHeroic.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskcrusherHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 06:08:25
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskguard.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskguard.lua
new file mode 100755
index 000000000..d76c1f847
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskguard.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.30 09:07:33
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskguardHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskguardHeroic.lua
new file mode 100755
index 000000000..4a9b5bec0
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskguardHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskguardHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.30 09:07:22
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawn.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawn.lua
new file mode 100755
index 000000000..9176a31c2
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawn.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 11:07:37
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath1.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath1.lua
new file mode 100755
index 000000000..52009017b
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath1.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 11:07:00
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -57.01, -2.67, 149.23, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -57.01, -2.67, 149.23, 2, 0)
+ MovementLoopAddLocation(NPC, -48.26, -2.56, 137.92, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -48.26, -2.56, 137.92, 2, 0)
+ MovementLoopAddLocation(NPC, -60.21, -2.67, 159.33, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -60.21, -2.67, 159.33, 2, 0)
+ MovementLoopAddLocation(NPC, -60.84, -2.52, 142.45, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -60.84, -2.52, 142.45, 2, 0)
+ MovementLoopAddLocation(NPC, -60.64, -2.54, 144.59, 2, 0)
+ MovementLoopAddLocation(NPC, -46.77, -2.59, 145.59, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -46.77, -2.59, 145.59, 2, 0)
+ MovementLoopAddLocation(NPC, -50.22, -2.67, 146.25, 2, 0)
+ MovementLoopAddLocation(NPC, -53.32, -2.67, 154.03, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -53.32, -2.67, 154.03, 2, 0)
+ MovementLoopAddLocation(NPC, -57.61, -2.67, 153.46, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath2.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath2.lua
new file mode 100755
index 000000000..cf1fac3af
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath2.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 11:07:42
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -62.59, -2.66, 162.4, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -62.59, -2.66, 162.4, 2, 0)
+ MovementLoopAddLocation(NPC, -57.18, -2.67, 154.81, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -57.18, -2.67, 154.81, 2, 0)
+ MovementLoopAddLocation(NPC, -53.15, -2.67, 158.69, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -53.15, -2.67, 158.69, 2, 0)
+ MovementLoopAddLocation(NPC, -57.11, -2.67, 152.18, 2, 0)
+ MovementLoopAddLocation(NPC, -56.11, -2.67, 143.97, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -56.11, -2.67, 143.97, 2, 0)
+ MovementLoopAddLocation(NPC, -55.91, -2.67, 148.18, 2, 0)
+ MovementLoopAddLocation(NPC, -52.19, -2.67, 150.71, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -52.19, -2.67, 150.71, 2, 0)
+ MovementLoopAddLocation(NPC, -62.54, -2.67, 154.17, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -62.54, -2.67, 154.17, 2, 0)
+ MovementLoopAddLocation(NPC, -60.57, -2.67, 155.83, 2, 0)
+ MovementLoopAddLocation(NPC, -57.74, -2.67, 161.5, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -57.74, -2.67, 161.5, 2, 0)
+ MovementLoopAddLocation(NPC, -61.98, -2.55, 165.18, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath3.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath3.lua
new file mode 100755
index 000000000..c9cd7b690
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath3.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 11:07:48
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -45.55, -2.73, 148.9, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -45.55, -2.73, 148.9, 2, 0)
+ MovementLoopAddLocation(NPC, -46.1, -2.74, 150.32, 2, 0)
+ MovementLoopAddLocation(NPC, -54.93, -2.67, 157.47, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -54.93, -2.67, 157.47, 2, 0)
+ MovementLoopAddLocation(NPC, -52.12, -2.67, 152.89, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -52.12, -2.67, 152.89, 2, 0)
+ MovementLoopAddLocation(NPC, -51.27, -2.67, 159.18, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -51.27, -2.67, 159.18, 2, 0)
+ MovementLoopAddLocation(NPC, -52.92, -2.67, 157.98, 2, 0)
+ MovementLoopAddLocation(NPC, -58.98, -2.67, 156.81, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -58.98, -2.67, 156.81, 2, 0)
+ MovementLoopAddLocation(NPC, -56.02, -2.67, 154.52, 2, 0)
+ MovementLoopAddLocation(NPC, -52.67, -2.67, 148.81, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -52.67, -2.67, 148.81, 2, 0)
+ MovementLoopAddLocation(NPC, -52.85, -2.67, 144.96, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -52.85, -2.67, 144.96, 2, 0)
+ MovementLoopAddLocation(NPC, -52.85, -2.67, 144.96, 2, 0)
+ MovementLoopAddLocation(NPC, -61.58, -2.52, 144.2, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -61.58, -2.52, 144.2, 2, 0)
+ MovementLoopAddLocation(NPC, -58.63, -2.65, 146.28, 2, 0)
+ MovementLoopAddLocation(NPC, -50.61, -2.67, 155.9, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -50.61, -2.67, 155.9, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath4.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath4.lua
new file mode 100755
index 000000000..94c932cde
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath4.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpawnPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 11:07:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -47.79, -2.65, 149.56, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -47.79, -2.65, 149.56, 2, 0)
+ MovementLoopAddLocation(NPC, -43.71, -2.87, 147.4, 2, 0)
+ MovementLoopAddLocation(NPC, -36.65, -3.73, 148.23, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -36.65, -3.73, 148.23, 2, 0)
+ MovementLoopAddLocation(NPC, -39.73, -3.43, 146.65, 2, 0)
+ MovementLoopAddLocation(NPC, -47.75, -2.72, 133.38, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -47.75, -2.72, 133.38, 2, 0)
+ MovementLoopAddLocation(NPC, -45.74, -2.6, 137.92, 2, 0)
+ MovementLoopAddLocation(NPC, -42.54, -2.97, 142.66, 2, 0)
+ MovementLoopAddLocation(NPC, -39.71, -3.52, 143.08, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -39.71, -3.52, 143.08, 2, 0)
+ MovementLoopAddLocation(NPC, -44.59, -2.7, 143.34, 2, 0)
+ MovementLoopAddLocation(NPC, -55.28, -2.57, 138.06, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -55.28, -2.57, 138.06, 2, 0)
+ MovementLoopAddLocation(NPC, -55.08, -2.54, 133.38, 2, 0)
+ MovementLoopAddLocation(NPC, -53.79, -2.53, 129.9, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -53.79, -2.53, 129.9, 2, 0)
+ MovementLoopAddLocation(NPC, -50.83, -2.54, 135.83, 2, 0)
+ MovementLoopAddLocation(NPC, -50.74, -2.67, 149.16, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -50.74, -2.67, 149.16, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpounder.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpounder.lua
new file mode 100755
index 000000000..894f63231
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpounder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpounder.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.01 11:07:55
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskpounderHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpounderHeroic.lua
new file mode 100755
index 000000000..c44066db0
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskpounderHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskpounderHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 07:08:53
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophet.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophet.lua
new file mode 100755
index 000000000..9b5eebbb4
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophet.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskprophet.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 06:08:45
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophetGurg.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophetGurg.lua
new file mode 100644
index 000000000..044bf02fc
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophetGurg.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskprophetGurg.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.03 01:01:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ AddTimer(NPC, 9000, "Gurg")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Gurg(NPC)
+ local zone = GetZone(NPC)
+ local Gurg= GetSpawnByLocationID(zone, 133789171)
+
+ local leaderX = GetX(Gurg)
+ local leaderY = GetY(Gurg)
+ local leaderZ = GetZ(Gurg)
+ local speed = 2
+ if Gurg ~=nil and not IsInCombat(NPC) then
+ if GetDistance(NPC, Gurg) >= 2 then
+ MoveToLocation(NPC, leaderX, leaderY, leaderZ, speed)
+ end
+ end
+ AddTimer(NPC, 1500, "Gurg")
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophetHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophetHeroic.lua
new file mode 100755
index 000000000..156273528
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskprophetHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskprophetHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 06:08:55
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentusksentry.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentusksentry.lua
new file mode 100755
index 000000000..fe2c0d591
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentusksentry.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentusksentry.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.30 10:07:35
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentusksentryHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentusksentryHeroic.lua
new file mode 100755
index 000000000..484b8e5f5
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentusksentryHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentusksentryHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 07:08:03
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskshaman.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskshaman.lua
new file mode 100755
index 000000000..649112d8c
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskshaman.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskshaman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.30 09:07:58
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskshamanHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskshamanHeroic.lua
new file mode 100755
index 000000000..f7f863cd2
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskshamanHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskshamanHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 07:08:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarrior.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarrior.lua
new file mode 100755
index 000000000..d6285471b
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarrior.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskwarrior.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 06:08:06
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAlert(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarriorGurg.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarriorGurg.lua
new file mode 100644
index 000000000..54c6c751a
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarriorGurg.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskwarriorGurg.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.02 04:01:48
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ AddTimer(NPC, 7000, "Gurg")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Gurg(NPC)
+ local zone = GetZone(NPC)
+ local Gurg= GetSpawnByLocationID(zone, 133789171)
+
+ local leaderX = GetX(Gurg)
+ local leaderY = GetY(Gurg)
+ local leaderZ = GetZ(Gurg)
+ local speed = 2
+ if Gurg ~=nil and not IsInCombat(NPC) then
+ if GetDistance(NPC, Gurg) >= 2 then
+ MoveToLocation(NPC, leaderX, leaderY, leaderZ, speed)
+ end
+ end
+ AddTimer(NPC, 1500, "Gurg")
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarriorHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarriorHeroic.lua
new file mode 100755
index 000000000..32a9102fd
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aBrokentuskwarriorHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aBrokentuskwarriorHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.05 09:08:11
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/BrokenTusk1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Brokentusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskEndPatrol.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskEndPatrol.lua
new file mode 100755
index 000000000..3e30ef02e
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskEndPatrol.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskEndPatrol.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.04 04:07:21
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -164.04, -2.67, 34.78, 2, 10)
+ MovementLoopAddLocation(NPC, -159.92, -2.67, 34.68, 2, 0)
+ MovementLoopAddLocation(NPC, -147.13, -2.67, 34.18, 2, 0)
+ MovementLoopAddLocation(NPC, -142.66, -2.67, 31.82, 2, 10)
+ MovementLoopAddLocation(NPC, -142.66, -2.67, 31.82, 2, 0)
+ MovementLoopAddLocation(NPC, -146.47, -2.67, 33.88, 2, 0)
+
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusher.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusher.lua
new file mode 100755
index 000000000..55d8c998a
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusher.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskcrusher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 07:07:56
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusherHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusherHeroic.lua
new file mode 100755
index 000000000..8e219b7bb
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusherHeroic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskcrusherHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 08:07:43
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SpawnSet(NPC, "heroic", 1)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusherRekrin.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusherRekrin.lua
new file mode 100755
index 000000000..b21c6da81
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskcrusherRekrin.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskcrusherRekrin.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.01 12:08:38
+ Script Purpose :
+ :
+--]]
+
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskguard.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskguard.lua
new file mode 100755
index 000000000..76dc7528e
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskguard.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:02
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskguardHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardHeroic.lua
new file mode 100755
index 000000000..4d68e2e48
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskguardHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.01 08:07:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPath1.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPath1.lua
new file mode 100755
index 000000000..92b13ed1c
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPath1.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskguardPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:23
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 6
+ local level2 = 7
+ local difficulty1 = 6
+ local hp1 = 150
+ local power1 = 80
+ local difficulty2 = 6
+ local hp2 = 200
+ local power2 = 90
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -79.45, -2.76, 36.09, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -79.45, -2.76, 36.09, 2, 0)
+ MovementLoopAddLocation(NPC, -80.29, -2.75, 35.01, 2, 0)
+ MovementLoopAddLocation(NPC, -83.77, -2.75, 36.04, 2, 0)
+ MovementLoopAddLocation(NPC, -89.27, -2.74, 36.2, 2, 0)
+ MovementLoopAddLocation(NPC, -92.34, -2.72, 33.86, 2, 0)
+ MovementLoopAddLocation(NPC, -94.5, -2.69, 29.38, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -94.5, -2.69, 29.38, 2, 0)
+ MovementLoopAddLocation(NPC, -92.89, -2.72, 32.87, 2, 0)
+ MovementLoopAddLocation(NPC, -90.13, -2.79, 39.05, 2, 0)
+ MovementLoopAddLocation(NPC, -89.78, -2.85, 42.65, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -89.78, -2.85, 42.65, 2, 0)
+ MovementLoopAddLocation(NPC, -88.67, -2.8, 40.55, 2, 0)
+ MovementLoopAddLocation(NPC, -85.1, -2.76, 38.42, 2, 0)
+ MovementLoopAddLocation(NPC, -81.37, -2.75, 35.5, 2, 0)
+ MovementLoopAddLocation(NPC, -78.04, -2.74, 30.68, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -78.04, -2.74, 30.68, 2, 0)
+ MovementLoopAddLocation(NPC, -82.88, -2.73, 32.32, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -86.23, -2.73, 32.11, 2, 0)
+ MovementLoopAddLocation(NPC, -93.02, -2.69, 26.93, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -93.02, -2.69, 26.93, 2, 0)
+ MovementLoopAddLocation(NPC, -91.53, -2.71, 30.88, 2, 0)
+ MovementLoopAddLocation(NPC, -87.36, -2.73, 32.84, 2, 0)
+ MovementLoopAddLocation(NPC, -80.5, -2.74, 32.78, 2, 0)
+ MovementLoopAddLocation(NPC, -78.43, -2.74, 31.84, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -78.43, -2.74, 31.84, 2, 0)
+
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPath2.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPath2.lua
new file mode 100755
index 000000000..02c489b74
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPath2.lua
@@ -0,0 +1,78 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskguardPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:46
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 6
+ local level2 = 7
+ local difficulty1 = 6
+ local hp1 = 150
+ local power1 = 80
+ local difficulty2 = 6
+ local hp2 = 200
+ local power2 = 90
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+
+waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -90.61, -2.69, 16.64, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -90.61, -2.69, 16.64, 2, 0)
+ MovementLoopAddLocation(NPC, -89.1, -2.67, 21.35, 2, 0)
+ MovementLoopAddLocation(NPC, -86.19, -2.68, 22.44, 2, 0)
+ MovementLoopAddLocation(NPC, -82.36, -2.69, 22.42, 2, 0)
+ MovementLoopAddLocation(NPC, -79.09, -2.7, 22.88, 2, 0)
+ MovementLoopAddLocation(NPC, -77.05, -2.72, 25.86, 2, 0)
+ MovementLoopAddLocation(NPC, -76.45, -2.72, 27.8, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -76.45, -2.72, 27.8, 2, 0)
+ MovementLoopAddLocation(NPC, -76.74, -2.72, 26.04, 2, 0)
+ MovementLoopAddLocation(NPC, -76.4, -2.69, 19.78, 2, 0)
+ MovementLoopAddLocation(NPC, -74.62, -2.81, 14.01, 2, 0)
+ MovementLoopAddLocation(NPC, -71.78, -2.87, 12.58, 2, 0)
+ MovementLoopAddLocation(NPC, -70.21, -2.71, 13.14, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -70.21, -2.71, 13.14, 2, 0)
+ MovementLoopAddLocation(NPC, -72.97, -2.84, 12.23, 2, 0)
+ MovementLoopAddLocation(NPC, -75.26, -2.71, 15.66, 2, 0)
+ MovementLoopAddLocation(NPC, -76.66, -2.69, 19.92, 2, 0)
+ MovementLoopAddLocation(NPC, -78.88, -2.7, 23.24, 2, 0)
+ MovementLoopAddLocation(NPC, -82.66, -2.69, 22.77, 2, 0)
+ MovementLoopAddLocation(NPC, -86.82, -2.68, 23.03, 2, 0)
+ MovementLoopAddLocation(NPC, -90.5, -2.68, 24.95, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -90.5, -2.68, 24.95, 2, 0)
+ MovementLoopAddLocation(NPC, -89.15, -2.68, 22.84, 2, 0)
+ MovementLoopAddLocation(NPC, -86.96, -2.65, 17.3, 2, 0)
+ MovementLoopAddLocation(NPC, -82.3, -2.67, 10.96, 2, 0)
+ MovementLoopAddLocation(NPC, -82.93, -2.67, 9.4, 2, 0)
+ MovementLoopAddLocation(NPC, -84.26, -2.51, 8.38, 2, 0)
+ MovementLoopAddLocation(NPC, -84.26, -2.51, 8.38, 2, 0)
+ MovementLoopAddLocation(NPC, -91.11, -2.7, 28.27, 2, math.random(5,10))
+ MovementLoopAddLocation(NPC, -91.11, -2.7, 28.27, 2, 0)
+ MovementLoopAddLocation(NPC, -89.34, -2.69, 26.69, 2, 0)
+ MovementLoopAddLocation(NPC, -87.94, -2.67, 20.5, 2, 0)
+ MovementLoopAddLocation(NPC, -90.2, -2.69, 14.37, 2, 0)
+ MovementLoopAddLocation(NPC, -90.61, -2.69, 16.64, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPatrol.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPatrol.lua
new file mode 100755
index 000000000..956206ffa
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskguardPatrol.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskguardPatrol.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 04:07:12
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -102.25, -2.65, 22.64, 2, 10)
+ MovementLoopAddLocation(NPC, -102.25, -2.65, 22.64, 2, 0)
+ MovementLoopAddLocation(NPC, -112.04, -2.61, 19.86, 2, 0)
+ MovementLoopAddLocation(NPC, -120.98, -2.59, 18.02, 2, 0)
+ MovementLoopAddLocation(NPC, -121.97, -2.58, 18.39, 2, 0)
+ MovementLoopAddLocation(NPC, -126.98, -2.59, 21.28, 2, 0)
+ MovementLoopAddLocation(NPC, -130.07, -2.59, 23.51, 2, 0)
+ MovementLoopAddLocation(NPC, -137, -2.59, 26.03, 2, 10)
+ MovementLoopAddLocation(NPC, -137, -2.59, 26.03, 2, 0)
+ MovementLoopAddLocation(NPC, -132.45, -2.59, 25.01, 2, 0)
+ MovementLoopAddLocation(NPC, -128.31, -2.59, 22.53, 2, 0)
+ MovementLoopAddLocation(NPC, -123.77, -2.58, 18.95, 2, 0)
+ MovementLoopAddLocation(NPC, -118.68, -2.59, 18.74, 2, 0)
+ MovementLoopAddLocation(NPC, -112.85, -2.61, 19.69, 2, 0)
+ MovementLoopAddLocation(NPC, -108.17, -2.63, 21.75, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskpawn.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawn.lua
new file mode 100755
index 000000000..93803bff9
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawn.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskpawn.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:03
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath1.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath1.lua
new file mode 100755
index 000000000..06544d76b
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath1.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskpawnPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:18
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -81.23, -2.72, 28.32, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -81.23, -2.72, 28.32, 2, 0)
+ MovementLoopAddLocation(NPC, -78.76, -2.75, 34.11, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -78.76, -2.75, 34.11, 2, 0)
+ MovementLoopAddLocation(NPC, -83.51, -2.74, 33.2, 2, 0)
+ MovementLoopAddLocation(NPC, -87.66, -2.79, 40.12, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -87.66, -2.79, 40.12, 2, 0)
+ MovementLoopAddLocation(NPC, -80.81, -2.74, 32.88, 2, 0)
+ MovementLoopAddLocation(NPC, -79.95, -2.71, 26.69, 2, 0)
+ MovementLoopAddLocation(NPC, -80.52, -2.69, 22.19, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -80.52, -2.69, 22.19, 2, 0)
+ MovementLoopAddLocation(NPC, -81.09, -2.7, 24.86, 2, 0)
+ MovementLoopAddLocation(NPC, -79.53, -2.71, 26.88, 2, 0)
+ MovementLoopAddLocation(NPC, -75.87, -2.67, 28.44, 2, 0)
+ MovementLoopAddLocation(NPC, -69.39, -2.55, 28.49, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -69.39, -2.55, 28.49, 2, 0)
+ MovementLoopAddLocation(NPC, -72.51, -2.55, 28.25, 2, 0)
+ MovementLoopAddLocation(NPC, -75.66, -2.64, 29.3, 2, 0)
+ MovementLoopAddLocation(NPC, -78.35, -2.75, 32.73, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -78.35, -2.75, 32.73, 2, 0)
+ MovementLoopAddLocation(NPC, -77.81, -2.74, 31.38, 2, 0)
+ MovementLoopAddLocation(NPC, -78.2, -2.73, 28.77, 2, 0)
+ MovementLoopAddLocation(NPC, -80.83, -2.71, 25.96, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -80.83, -2.71, 25.96, 2, 0)
+ MovementLoopAddLocation(NPC, -79.45, -2.72, 26.99, 2, 0)
+ MovementLoopAddLocation(NPC, -78.2, -2.74, 31.16, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -78.2, -2.74, 31.16, 2, 0)
+ MovementLoopAddLocation(NPC, -79.12, -2.73, 29.1, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath2.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath2.lua
new file mode 100755
index 000000000..4a85b1069
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath2.lua
@@ -0,0 +1,61 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskpawnPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:47
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -89.52, -2.68, 23.61, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -89.52, -2.68, 23.61, 2, 0)
+ MovementLoopAddLocation(NPC, -87.3, -2.69, 25.82, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -87.3, -2.69, 25.82, 2, 0)
+ MovementLoopAddLocation(NPC, -89.33, -2.68, 24.98, 2, 0)
+ MovementLoopAddLocation(NPC, -92.02, -2.69, 26.23, 2, 0)
+ MovementLoopAddLocation(NPC, -95.46, -2.7, 31.45, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -95.46, -2.7, 31.45, 2, 0)
+ MovementLoopAddLocation(NPC, -91.9, -2.69, 27.23, 2, 0)
+ MovementLoopAddLocation(NPC, -89.04, -2.69, 26.08, 2, 0)
+ MovementLoopAddLocation(NPC, -87.54, -2.7, 26.64, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -87.54, -2.7, 26.64, 2, 0)
+ MovementLoopAddLocation(NPC, -88.32, -2.68, 24.14, 2, 0)
+ MovementLoopAddLocation(NPC, -87.64, -2.67, 20.09, 2, 0)
+ MovementLoopAddLocation(NPC, -86.5, -2.66, 18.56, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -86.5, -2.66, 18.56, 2, 0)
+ MovementLoopAddLocation(NPC, -88.83, -2.67, 20.77, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -88.83, -2.67, 20.77, 2, 0)
+ MovementLoopAddLocation(NPC, -88.02, -2.67, 21.55, 2, 0)
+ MovementLoopAddLocation(NPC, -87.38, -2.68, 24.06, 2, 0)
+ MovementLoopAddLocation(NPC, -87.67, -2.7, 27.01, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -87.67, -2.7, 27.01, 2, 0)
+ MovementLoopAddLocation(NPC, -88.72, -2.69, 25.7, 2, 0)
+ MovementLoopAddLocation(NPC, -91.63, -2.67, 23.77, 2, 0)
+ MovementLoopAddLocation(NPC, -96.21, -2.66, 22.17, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -96.21, -2.66, 22.17, 2, 0)
+ MovementLoopAddLocation(NPC, -94.73, -2.67, 24.62, 2, 0)
+ MovementLoopAddLocation(NPC, -94.19, -2.69, 29.19, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -94.19, -2.69, 29.19, 2, 0)
+ MovementLoopAddLocation(NPC, -90.23, -2.69, 27.02, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -90.23, -2.69, 27.02, 2, 0)
+ MovementLoopAddLocation(NPC, -92.12, -2.67, 23.34, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath3.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath3.lua
new file mode 100755
index 000000000..a073ea844
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskpawnPath3.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskpawnPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:45
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -107.71, -2.63, 21.18, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -101.53, -2.65, 22.66, 2, 0)
+ MovementLoopAddLocation(NPC, -93.74, -2.66, 20.89, 2, 0)
+ MovementLoopAddLocation(NPC, -87.03, -2.68, 22.27, 2, 0)
+ MovementLoopAddLocation(NPC, -85.85, -2.69, 24.25, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -85.85, -2.69, 24.25, 2, 0)
+ MovementLoopAddLocation(NPC, -85.85, -2.69, 24.25, 2, 0)
+ MovementLoopAddLocation(NPC, -81.08, -2.7, 23.49, 2, 0)
+ MovementLoopAddLocation(NPC, -77.19, -2.72, 26.16, 2, 0)
+ MovementLoopAddLocation(NPC, -74.68, -2.59, 27.54, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -74.68, -2.59, 27.54, 2, 0)
+ MovementLoopAddLocation(NPC, -76.18, -2.71, 27.64, 2, 0)
+ MovementLoopAddLocation(NPC, -79.67, -2.73, 29.51, 2, 0)
+ MovementLoopAddLocation(NPC, -84.2, -2.73, 32.33, 2, 0)
+ MovementLoopAddLocation(NPC, -88.91, -2.72, 32.33, 2, 0)
+ MovementLoopAddLocation(NPC, -92.67, -2.7, 29.44, 2, 0)
+ MovementLoopAddLocation(NPC, -94.39, -2.68, 25.73, 2, 0)
+ MovementLoopAddLocation(NPC, -98.51, -2.66, 23.94, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -98.51, -2.66, 23.94, 2, 0)
+ MovementLoopAddLocation(NPC, -97.84, -2.65, 21.52, 2, 0)
+ MovementLoopAddLocation(NPC, -97.87, -2.64, 19.01, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -97.87, -2.64, 19.01, 2, 0)
+ MovementLoopAddLocation(NPC, -99.1, -2.64, 20.93, 2, 0)
+ MovementLoopAddLocation(NPC, -102.72, -2.66, 24.77, 2, 0)
+ MovementLoopAddLocation(NPC, -106, -2.7, 25.96, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -106, -2.7, 25.96, 2, 0)
+ MovementLoopAddLocation(NPC, -107.54, -2.63, 22.43, 2, 0)
+ MovementLoopAddLocation(NPC, -109.77, -2.62, 20.44, 2, 0)
+ MovementLoopAddLocation(NPC, -114.03, -2.61, 19.5, 2, 0)
+ MovementLoopAddLocation(NPC, -120.15, -2.59, 18.44, 2, 0)
+ MovementLoopAddLocation(NPC, -123.54, -2.59, 19.34, 2, math.random(10,20))
+ MovementLoopAddLocation(NPC, -123.54, -2.59, 19.34, 2, 0)
+ MovementLoopAddLocation(NPC, -121.57, -2.59, 18.52, 2, 0)
+ MovementLoopAddLocation(NPC, -116.21, -2.6, 19.25, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskpounder.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskpounder.lua
new file mode 100755
index 000000000..221a8daef
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskpounder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskpounder.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.01 11:07:30
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskpounderHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskpounderHeroic.lua
new file mode 100755
index 000000000..c8e4a5ca2
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskpounderHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskpounderHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.01 07:07:31
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskprophet.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskprophet.lua
new file mode 100755
index 000000000..66b2f5a07
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskprophet.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskprophet.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 02:07:33
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskprophetHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskprophetHeroic.lua
new file mode 100755
index 000000000..42aaf1b48
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskprophetHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskprophetHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 04:07:55
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetusksentry.lua b/server/SpawnScripts/TheRuins_Classic/aLonetusksentry.lua
new file mode 100755
index 000000000..9e076fe06
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetusksentry.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetusksentry.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.02 02:07:43
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAlert(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskshaman.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskshaman.lua
new file mode 100755
index 000000000..b9c26686a
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskshaman.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskshaman.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.01 07:07:02
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskshamanHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskshamanHeroic.lua
new file mode 100755
index 000000000..5708275bc
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskshamanHeroic.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskshamanHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.01 07:07:12
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdlePriest(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskwarrior.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskwarrior.lua
new file mode 100755
index 000000000..ab8b1037b
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskwarrior.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskwarrior.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 02:07:07
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskwarriorCheering.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskwarriorCheering.lua
new file mode 100755
index 000000000..1370ea916
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskwarriorCheering.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskwarriorCheering.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.04 07:07:20
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ AddTimer(NPC,MakeRandomInt(1000,3500),"EmoteLoop")
+end
+
+function EmoteLoop(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Dancer = GetSpawnByLocationID(zone,133785473)
+if IsInCombat(NPC)==false then
+ if Dancer ~=nil and IsAlive(Dancer)then
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","cheer",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","woowoo",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","happy",0,0)
+ end
+ else
+ choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","peer",0,0)
+ end
+ end
+end
+ AddTimer(NPC, MakeRandomInt(5500,8500),"EmoteLoop")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/aLonetuskwarriorHeroic.lua b/server/SpawnScripts/TheRuins_Classic/aLonetuskwarriorHeroic.lua
new file mode 100755
index 000000000..51b47753b
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aLonetuskwarriorHeroic.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aLonetuskwarriorHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.03 08:07:20
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SpawnSet(NPC, "heroic", 1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aShoresideadder.lua b/server/SpawnScripts/TheRuins_Classic/aShoresideadder.lua
new file mode 100755
index 000000000..2d4b8357f
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aShoresideadder.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aShoresideadder.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.23 07:09:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aShoresideasp.lua b/server/SpawnScripts/TheRuins_Classic/aShoresideasp.lua
new file mode 100755
index 000000000..c475c30f4
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aShoresideasp.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aShoresideasp.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.22 12:06:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aShoresideracer.lua b/server/SpawnScripts/TheRuins_Classic/aShoresideracer.lua
new file mode 100755
index 000000000..3060e2105
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aShoresideracer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aShoresideracer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.06 04:07:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/abloodviper.lua b/server/SpawnScripts/TheRuins_Classic/abloodviper.lua
new file mode 100755
index 000000000..98d7a9a09
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/abloodviper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/abloodviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.06 04:07:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/afairyseeker.lua b/server/SpawnScripts/TheRuins_Classic/afairyseeker.lua
new file mode 100755
index 000000000..aad4636a9
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/afairyseeker.lua
@@ -0,0 +1,98 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/afairyseeker.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.06 07:07:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+local zone = GetZone(NPC)
+local SpawnLocation = GetSpawnLocationID(NPC)
+if SpawnLocation == 133785610 or SpawnLocation == 133785611 then
+ AddTimer(NPC,2000,"following_Xel")
+elseif SpawnLocation == 133785614 or SpawnLocation == 133785615 then
+ AddTimer(NPC,2000,"following_Wele")
+end
+end
+
+function following_Xel(NPC)
+ local zone = GetZone(NPC)
+ local SpawnLocation = GetSpawnLocationID(NPC)
+ local Xel = GetSpawnByLocationID(zone, 133785612)
+ local Xel_X = GetX(Xel)
+ local Xel_Y = GetY(Xel)
+ local Xel_Z = GetZ(Xel)
+
+ local speed = 2
+
+ if Xel ~=nil then
+ if SpawnLocation == 133785610 then --Xel Fairy 1
+ if GetDistance(NPC, Xel) >= 8 then
+ speed = 5
+ MoveToLocation(NPC, Xel_X - 2, Xel_Y+1.5, Xel_Z, speed)
+ else
+ speed = 2
+ MoveToLocation(NPC, Xel_X - 2, Xel_Y+1.5, Xel_Z, speed)
+ end
+ elseif SpawnLocation == 133785611 then --Xel Fairy 2
+ if GetDistance(NPC, Xel) >= 8 then
+ speed = 5
+ MoveToLocation(NPC, Xel_X, Xel_Y+1.5, 2+ Xel_Z, speed)
+ else
+ speed = 2
+ MoveToLocation(NPC, Xel_X, Xel_Y+1.5, 2+ Xel_Z, speed)
+ end
+ end
+ else
+ Despawn(NPC)
+ end
+ speed = 2
+ AddTimer(NPC, 2000, "following_Xel")
+end
+
+
+function following_Wele(NPC)
+ local zone = GetZone(NPC)
+ local SpawnLocation = GetSpawnLocationID(NPC)
+ local Wele = GetSpawnByLocationID(zone, 133785613)
+
+ local Wele_X = GetX(Wele)
+ local Wele_Y = GetY(Wele)
+ local Wele_Z = GetZ(Wele)
+
+ local speed = 2
+
+
+ if Wele ~=nil then
+ if SpawnLocation == 133785614 then --Wele Fairy 1
+ if GetDistance(NPC, Wele) >= 8 then
+ speed = 5
+ MoveToLocation(NPC, Wele_X - 2, Wele_Y+1.5, Wele_Z, speed)
+ else
+ speed = 2
+ MoveToLocation(NPC, Wele_X - 2, Wele_Y+1.5, Wele_Z, speed)
+ end
+ elseif SpawnLocation == 133785615 then --Wele Fairy 2
+ if GetDistance(NPC, Wele) >= 8 then
+ speed = 5
+ MoveToLocation(NPC, Wele_X, Wele_Y+1.5, 2+ Wele_Z, speed)
+ else
+ speed = 2
+ MoveToLocation(NPC, Wele_X, Wele_Y+1.5, 2+ Wele_Z, speed)
+ end
+ end
+ else
+ Despawn(NPC)
+ end
+ speed = 2
+ AddTimer(NPC, 2000, "following_Wele")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/aharriedvagrantsquatter.lua b/server/SpawnScripts/TheRuins_Classic/aharriedvagrantsquatter.lua
new file mode 100755
index 000000000..c168f98ce
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/aharriedvagrantsquatter.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/aharriedvagrantsquatter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.04 08:07:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetInfoStructString(NPC, "action_state", "dance")
+end
+
+function aggro(NPC,Spawn)
+ SpawnSet(NPC, "visual_state", 0)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
diff --git a/server/SpawnScripts/TheRuins_Classic/alargemouthgulper.lua b/server/SpawnScripts/TheRuins_Classic/alargemouthgulper.lua
new file mode 100755
index 000000000..8d4a2eb3b
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/alargemouthgulper.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/alargemouthgulper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.22 01:06:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/ananchorgrappler1.lua b/server/SpawnScripts/TheRuins_Classic/ananchorgrappler1.lua
new file mode 100755
index 000000000..23f6f3d9e
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/ananchorgrappler1.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/ananchorgrappler1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.22 01:06:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -166.32, -9.34, 67.86, 2, 0)
+ MovementLoopAddLocation(NPC, -172.36, -11.28, 68.19, 2, 0)
+ MovementLoopAddLocation(NPC, -184.66, -12.73, 68.23, 2, 0)
+ MovementLoopAddLocation(NPC, -191.7, -12.1, 69.89, 2, 0)
+ MovementLoopAddLocation(NPC, -198.45, -14.5, 76.39, 2, 0)
+ MovementLoopAddLocation(NPC, -199.06, -14.41, 82.37, 2, 0)
+ MovementLoopAddLocation(NPC, -195.26, -13.74, 87.03, 2, 0)
+ MovementLoopAddLocation(NPC, -188.64, -13.52, 88.71, 2, 0)
+ MovementLoopAddLocation(NPC, -175.05, -11.1, 89.2, 2, 0)
+ MovementLoopAddLocation(NPC, -190.68, -13.82, 88.64, 2, 0)
+ MovementLoopAddLocation(NPC, -196.45, -13.28, 85.28, 2, 0)
+ MovementLoopAddLocation(NPC, -196.89, -13.28, 75.04, 2, 0)
+ MovementLoopAddLocation(NPC, -193.56, -13.28, 70.61, 2, 0)
+ MovementLoopAddLocation(NPC, -189.06, -13.17, 69, 2, 0)
+ MovementLoopAddLocation(NPC, -166.32, -9.34, 67.86, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheRuins_Classic/anebonviper.lua b/server/SpawnScripts/TheRuins_Classic/anebonviper.lua
new file mode 100755
index 000000000..db1855e12
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/anebonviper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/anebonviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.27 02:06:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/anexiledorc.lua b/server/SpawnScripts/TheRuins_Classic/anexiledorc.lua
new file mode 100755
index 000000000..b1feec075
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/anexiledorc.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/anexiledorc.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.11 02:07:17
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/anexiledorcHeroic.lua b/server/SpawnScripts/TheRuins_Classic/anexiledorcHeroic.lua
new file mode 100755
index 000000000..5e9ef5e5e
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/anexiledorcHeroic.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/anexiledorcHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.11 02:07:34
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/LoneTusk2.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomWeapons(NPC)
+ OrcArmorCommon(NPC)
+ Lonetusk(NPC)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/anomadguard.lua b/server/SpawnScripts/TheRuins_Classic/anomadguard.lua
new file mode 100755
index 000000000..2854087c7
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/anomadguard.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/anomadguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.09 07:07:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ IdleAlert(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/anomadseer.lua b/server/SpawnScripts/TheRuins_Classic/anomadseer.lua
new file mode 100755
index 000000000..e155e1bcf
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/anomadseer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/anomadseer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.09 07:07:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ IdlePriest(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/apunysqualidvermin.lua b/server/SpawnScripts/TheRuins_Classic/apunysqualidvermin.lua
new file mode 100755
index 000000000..573795434
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/apunysqualidvermin.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/apunysqualidvermin.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.22 12:06:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/asunviper.lua b/server/SpawnScripts/TheRuins_Classic/asunviper.lua
new file mode 100755
index 000000000..25300afe4
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/asunviper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/asunviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.23 07:09:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatter.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatter.lua
new file mode 100755
index 000000000..5cb2a4566
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatter.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.06 04:07:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ IdleBeggar(NPC)
+ human(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterComplainer.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterComplainer.lua
new file mode 100755
index 000000000..cd4f159a8
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterComplainer.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterComplainer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 03:07:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ IdleAngry(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ Say(NPC, "Don't touch me!")
+ elseif choice ==2 then
+ Say(NPC, "Help! Militia! I'm being harassed!")
+ elseif choice ==3 then
+ Say(NPC, "Mind your own damn business! I have a right to be here, I'm not bothering nobody.")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter soils themself and continues arguing with the sky.","white")
+
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterFarmer.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterFarmer.lua
new file mode 100755
index 000000000..051aeaa3f
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterFarmer.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterFarmer.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 03:07:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ SetInfoStructString(NPC, "action_state", "mining_digging")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterHeroic.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterHeroic.lua
new file mode 100755
index 000000000..f63f46776
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterHeroic.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.06 04:07:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ IdleBeggar(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ SendMessage(Spawn,"The vagrant squatter pays no attention to you.","white")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The vagrant squatter listlessly stares in your direction.","white")
+ elseif choice ==3 then
+ SendMessage(Spawn,"The vagrant squatter's sun-scorched face cares little for your hail.","white")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter eyes you and holds out its hands for an offering.","white")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath1.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath1.lua
new file mode 100755
index 000000000..784c96850
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath1.lua
@@ -0,0 +1,64 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.06 04:07:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+ human(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ SendMessage(Spawn,"The vagrant squatter pays no attention to you.","white")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The vagrant squatter listlessly stares in your direction.","white")
+ elseif choice ==3 then
+ SendMessage(Spawn,"The vagrant squatter's sun-scorched face cares little for your hail.","white")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter flails in your direction!","white")
+ Attack(NPC,Spawn)
+ elseif choice ==5 then
+ SendMessage(Spawn,"The vagrant squatter eyes you and holds out its hands for an offering.","white")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -148.8, 2.26, 129.94, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -148.8, 2.26, 129.94, 2, 0)
+ MovementLoopAddLocation(NPC, -137.81, 2.26, 129.73, 2, 0)
+ MovementLoopAddLocation(NPC, -135.95, 2.26, 131.91, 2, 0)
+ MovementLoopAddLocation(NPC, -130.3, 2.26, 132.87, 2, 0)
+ MovementLoopAddLocation(NPC, -119.88, 2.26, 129.62, 2, 0)
+ MovementLoopAddLocation(NPC, -113.13, 2.27, 129.61, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -113.13, 2.27, 129.61, 2, 0)
+ MovementLoopAddLocation(NPC, -118.35, 2.26, 129.32, 2, 0)
+ MovementLoopAddLocation(NPC, -137.92, 2.26, 138.17, 2, 0)
+ MovementLoopAddLocation(NPC, -146.45, 2.26, 140.55, 2, 0)
+ MovementLoopAddLocation(NPC, -149.15, 2.26, 144.27, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -149.15, 2.26, 144.27, 2, 0)
+ MovementLoopAddLocation(NPC, -147.49, 2.26, 141.58, 2, 0)
+ MovementLoopAddLocation(NPC, -131.03, 2.26, 128.79, 2, 0)
+ MovementLoopAddLocation(NPC, -122.93, 2.13, 125.7, 2, 0)
+ MovementLoopAddLocation(NPC, -121.39, 2.28, 118.93, 2, 0)
+ MovementLoopAddLocation(NPC, -121.96, 2.21, 115.85, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -121.96, 2.21, 115.85, 2, 0)
+ MovementLoopAddLocation(NPC, -122.39, 2.26, 122.72, 2, 0)
+ MovementLoopAddLocation(NPC, -126.3, 2.15, 129.14, 2, 0)
+ MovementLoopAddLocation(NPC, -132.29, 2.26, 130.95, 2, 0)
+ MovementLoopAddLocation(NPC, -139.95, 2.26, 129.52, 2, 0)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath2.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath2.lua
new file mode 100755
index 000000000..8c806d5aa
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath2.lua
@@ -0,0 +1,74 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 08:07:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ SendMessage(Spawn,"The vagrant squatter pays no attention to you.","white")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The vagrant squatter listlessly stares in your direction.","white")
+ elseif choice ==3 then
+ SendMessage(Spawn,"The vagrant squatter's sun-scorched face cares little for your hail.","white")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter eyes you and holds out its hands for an offering.","white")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -16.05, -4.26, 123.16, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -16.05, -4.26, 123.16, 2, 0)
+ MovementLoopAddLocation(NPC, -14.44, -4.3, 119.3, 2, 0)
+ MovementLoopAddLocation(NPC, -16.42, -4.24, 110.14, 2, 0)
+ MovementLoopAddLocation(NPC, -10.43, -4.24, 99.85, 2, 0)
+ MovementLoopAddLocation(NPC, -8.17, -4.24, 90.56, 2, 0)
+ MovementLoopAddLocation(NPC, -14.02, -4.24, 85.31, 2, 0)
+ MovementLoopAddLocation(NPC, -26.05, -3.37, 82.66, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -26.05, -3.37, 82.66, 2, 0)
+ MovementLoopAddLocation(NPC, -22.25, -3.97, 80.81, 2, 0)
+ MovementLoopAddLocation(NPC, -15.85, -4.24, 85.74, 2, 0)
+ MovementLoopAddLocation(NPC, -9.71, -4.24, 87.83, 2, 0)
+ MovementLoopAddLocation(NPC, -5.69, -4.24, 83.57, 2, 0)
+ MovementLoopAddLocation(NPC, -5.61, -4.24, 76.26, 2, 0)
+ MovementLoopAddLocation(NPC, -13.39, -4.24, 66.85, 2, 0)
+ MovementLoopAddLocation(NPC, -8.3, -4.24, 58.66, 2, 0)
+ MovementLoopAddLocation(NPC, -10.42, -4.25, 50.82, 2, 0)
+ MovementLoopAddLocation(NPC, -9.73, -4.54, 43.37, 2, 0)
+ MovementLoopAddLocation(NPC, -12.7, -5.12, 38.06, 2, 0)
+ MovementLoopAddLocation(NPC, -18.66, -5.14, 29.54, 2, 0)
+ MovementLoopAddLocation(NPC, -19.28, -5.05, 20.59, 2, 0)
+ MovementLoopAddLocation(NPC, -16.91, -4.93, 15.49, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -16.91, -4.93, 15.49, 2, 0)
+ MovementLoopAddLocation(NPC, -19.15, -5.03, 20.43, 2, 0)
+ MovementLoopAddLocation(NPC, -17.48, -5.14, 30.31, 2, 0)
+ MovementLoopAddLocation(NPC, -10.89, -5.1, 38.67, 2, 0)
+ MovementLoopAddLocation(NPC, -10.44, -4.3, 49.42, 2, 0)
+ MovementLoopAddLocation(NPC, -8.36, -4.24, 56.19, 2, 0)
+ MovementLoopAddLocation(NPC, -12.12, -4.24, 63.54, 2, 0)
+ MovementLoopAddLocation(NPC, -9.31, -4.24, 72.51, 2, 0)
+ MovementLoopAddLocation(NPC, -15.84, -4.24, 80.73, 2, 0)
+ MovementLoopAddLocation(NPC, -16.51, -4.24, 83.9, 2, 0)
+ MovementLoopAddLocation(NPC, -9.57, -4.24, 92.49, 2, 0)
+ MovementLoopAddLocation(NPC, -7.55, -4.24, 98.14, 2, 0)
+ MovementLoopAddLocation(NPC, -14.31, -4.24, 106.03, 2, 0)
+ MovementLoopAddLocation(NPC, -12.87, -4.24, 112.33, 2, 0)
+end
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath3.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath3.lua
new file mode 100755
index 000000000..832198dc0
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath3.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 08:07:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ SendMessage(Spawn,"The vagrant squatter pays no attention to you.","white")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The vagrant squatter listlessly stares in your direction.","white")
+ elseif choice ==3 then
+ SendMessage(Spawn,"The vagrant squatter's sun-scorched face cares little for your hail.","white")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter eyes you and holds out its hands for an offering.","white")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -1.21, -4.3, 77.25, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -1.21, -4.3, 77.25, 2, 0)
+ MovementLoopAddLocation(NPC, -9.54, -4.24, 84.49, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -9.54, -4.24, 84.49, 2, 0)
+ MovementLoopAddLocation(NPC, -6.74, -4.24, 86.42, 2, 0)
+ MovementLoopAddLocation(NPC, -6.65, -4.24, 92.9, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -6.65, -4.24, 92.9, 2, 0)
+ MovementLoopAddLocation(NPC, -8.21, -4.24, 91.31, 2, 0)
+ MovementLoopAddLocation(NPC, -12.78, -4.24, 90.76, 2, 0)
+ MovementLoopAddLocation(NPC, -16.66, -4.29, 94.22, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -16.66, -4.29, 94.22, 2, 0)
+ MovementLoopAddLocation(NPC, -13.29, -4.24, 95.44, 2, 0)
+ MovementLoopAddLocation(NPC, -12.48, -4.24, 100.33, 2, 0)
+ MovementLoopAddLocation(NPC, -16.74, -4.39, 104.85, 2, 0)
+ MovementLoopAddLocation(NPC, -18.16, -4.38, 105.48, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -18.16, -4.38, 105.48, 2, 0)
+ MovementLoopAddLocation(NPC, -14.89, -4.27, 106.24, 2, 0)
+ MovementLoopAddLocation(NPC, -10.54, -4.24, 110.51, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -10.54, -4.24, 110.51, 2, 0)
+ MovementLoopAddLocation(NPC, -12.59, -4.24, 107.47, 2, 0)
+ MovementLoopAddLocation(NPC, -11.82, -4.24, 101.64, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -11.82, -4.24, 101.64, 2, 0)
+ MovementLoopAddLocation(NPC, -14.62, -4.24, 98.2, 2, 0)
+ MovementLoopAddLocation(NPC, -16.6, -4.19, 91.94, 2, 0)
+ MovementLoopAddLocation(NPC, -13.79, -4.24, 86.37, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -13.79, -4.24, 86.37, 2, 0)
+ MovementLoopAddLocation(NPC, -10.73, -4.24, 85.89, 2, 0)
+ MovementLoopAddLocation(NPC, -7.48, -4.24, 81.86, 2, 0)
+ MovementLoopAddLocation(NPC, -8.78, -4.24, 75.2, 2, 0)
+ MovementLoopAddLocation(NPC, -12.08, -4.24, 71.23, 2, math.random(10, 15))
+ MovementLoopAddLocation(NPC, -12.08, -4.24, 71.23, 2, 0)
+ MovementLoopAddLocation(NPC, -7.44, -4.24, 77.73, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath4.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath4.lua
new file mode 100755
index 000000000..e2dd0ce58
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatterPath4.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatterPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.07.10 09:07:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,4)
+ if choice ==1 then
+ SendMessage(Spawn,"The vagrant squatter pays no attention to you.","white")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The vagrant squatter listlessly stares in your direction.","white")
+ elseif choice ==3 then
+ SendMessage(Spawn,"The vagrant squatter's sun-scorched face cares little for your hail.","white")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter eyes you and holds out its hands for an offering.","white")
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -12.97, -5.12, 39.36, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -12.97, -5.12, 39.36, 2, 0)
+ MovementLoopAddLocation(NPC, -10.64, -4.77, 42.53, 2, 0)
+ MovementLoopAddLocation(NPC, -5.47, -4.52, 45.03, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -5.47, -4.52, 45.03, 2, 0)
+ MovementLoopAddLocation(NPC, -9.51, -4.37, 46.82, 2, 0)
+ MovementLoopAddLocation(NPC, -11.32, -4.25, 52.52, 2, 0)
+ MovementLoopAddLocation(NPC, -10.34, -4.24, 58.84, 2, 0)
+ MovementLoopAddLocation(NPC, -14.1, -4.24, 62.39, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -14.1, -4.24, 62.39, 2, 0)
+ MovementLoopAddLocation(NPC, -10.57, -4.24, 60.72, 2, 0)
+ MovementLoopAddLocation(NPC, -7.05, -4.27, 62.85, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -7.05, -4.27, 62.85, 2, 0)
+ MovementLoopAddLocation(NPC, -9.18, -4.24, 60.09, 2, 0)
+ MovementLoopAddLocation(NPC, -7.21, -4.24, 54.81, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -7.21, -4.24, 54.81, 2, 0)
+ MovementLoopAddLocation(NPC, -10.6, -4.24, 58.45, 2, 0)
+ MovementLoopAddLocation(NPC, -10.29, -4.24, 65.06, 2, 0)
+ MovementLoopAddLocation(NPC, -7.15, -4.24, 71.92, 2, 0)
+ MovementLoopAddLocation(NPC, -10.82, -4.24, 77.58, 2, 0)
+ MovementLoopAddLocation(NPC, -11.02, -4.24, 78.68, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -11.02, -4.24, 78.68, 2, 0)
+ MovementLoopAddLocation(NPC, -7.39, -4.24, 76.17, 2, 0)
+ MovementLoopAddLocation(NPC, -2.43, -4.3, 74.96, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -2.43, -4.3, 74.96, 2, 0)
+ MovementLoopAddLocation(NPC, -5.22, -4.27, 71.72, 2, 0)
+ MovementLoopAddLocation(NPC, -5.9, -4.3, 64.96, 2, 0)
+ MovementLoopAddLocation(NPC, -11.86, -4.31, 56.87, 2, 0)
+ MovementLoopAddLocation(NPC, -11.64, -4.24, 58.54, 2, math.random(10,15))
+ MovementLoopAddLocation(NPC, -11.64, -4.24, 58.54, 2, 0)
+ MovementLoopAddLocation(NPC, -10.98, -4.24, 55.85, 2, 0)
+ MovementLoopAddLocation(NPC, -9, -4.26, 50.5, 2, 0)
+ MovementLoopAddLocation(NPC, -9.14, -4.43, 44.64, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheRuins_Classic/avagrantsquatter_Squatting.lua b/server/SpawnScripts/TheRuins_Classic/avagrantsquatter_Squatting.lua
new file mode 100755
index 000000000..583fbe4a3
--- /dev/null
+++ b/server/SpawnScripts/TheRuins_Classic/avagrantsquatter_Squatting.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/TheRuins_Classic/avagrantsquatter_Squatting.lua
+ Script Author : Dorbin
+ Script Date : 2023.07.06 04:07:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetInfoStructString(NPC, "action_state", "sit_idle")
+ human(NPC)
+end
+
+function hailed(NPC, Spawn)
+if not IsInCombat(NPC)then
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ SendMessage(Spawn,"The vagrant squatter pays no attention to you.","white")
+ elseif choice ==2 then
+ SendMessage(Spawn,"The vagrant squatter listlessly stares in your direction.","white")
+ elseif choice ==3 then
+ SendMessage(Spawn,"The vagrant squatter's sun-scorched face cares little for your hail.","white")
+ elseif choice ==4 then
+ SendMessage(Spawn,"The vagrant squatter flails in your direction!","white")
+ Attack(NPC,Spawn)
+ elseif choice ==5 then
+ FaceTarget(NPC,Spawn)
+ SendMessage(Spawn,"The vagrant squatter eyes you and holds out its hands for an offering.","white")
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+ PlayFlavor(NPC,"","","sit_exit",0,0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/Axefist.lua b/server/SpawnScripts/TheSprawl_Classic/Axefist.lua
new file mode 100755
index 000000000..8fb9524aa
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/Axefist.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/Axefist.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.16 09:11:51
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(6 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(12 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/DariustheBlade.lua b/server/SpawnScripts/TheSprawl_Classic/DariustheBlade.lua
new file mode 100755
index 000000000..45f185b9c
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/DariustheBlade.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/DariustheBlade.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.26 08:11:05
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseHuman1.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(18 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(32 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/Gloomstalker.lua b/server/SpawnScripts/TheSprawl_Classic/Gloomstalker.lua
new file mode 100755
index 000000000..8ea45a925
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/Gloomstalker.lua
@@ -0,0 +1,149 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/Gloomstalker.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.30 09:11:25
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ if MakeRandomInt(1,2)==1 then
+ MovementLoopAddLocation(NPC, -38.74, -2.52, 87.67, 2, 0)
+ MovementLoopAddLocation(NPC, -33.54, -2.52, 88.5, 2, 0)
+ MovementLoopAddLocation(NPC, -29.62, -2.47, 87.76, 2, 0)
+ MovementLoopAddLocation(NPC, -11.59, -1.49, 79.68, 2, 0)
+ MovementLoopAddLocation(NPC, -8.34, -1.64, 76.63, 2, 0)
+ MovementLoopAddLocation(NPC, -7.96, -1.64, 72.26, 2, 0)
+ MovementLoopAddLocation(NPC, -7.96, -2.66, 59.22, 2, 0)
+ MovementLoopAddLocation(NPC, -9.61, -2.52, 55.96, 2, 0)
+ MovementLoopAddLocation(NPC, -18.14, -2.52, 47.07, 2, 0)
+ MovementLoopAddLocation(NPC, -19.12, -2.52, 41.57, 2, 0)
+ MovementLoopAddLocation(NPC, -22.28, -2.58, 35.49, 2, 0)
+ MovementLoopAddLocation(NPC, -23.19, -2.53, 25.09, 2, 0)
+ MovementLoopAddLocation(NPC, -13.72, -2.53, 14.36, 2, 0)
+ MovementLoopAddLocation(NPC, -13.21, -2.53, 5.4, 2, 0)
+ MovementLoopAddLocation(NPC, -14.49, -2.53, -4.58, 2, 0)
+ MovementLoopAddLocation(NPC, -8.36, -2.64, -18.18, 2, 0)
+ MovementLoopAddLocation(NPC, -0.92, -2.64, -18.87, 2, 0)
+ MovementLoopAddLocation(NPC, 3.23, -2.67, -18.1, 2, 0)
+ MovementLoopAddLocation(NPC, 9.54, -2.67, -14.86, 2, 0)
+ MovementLoopAddLocation(NPC, 14.38, -2.63, -13.34, 2, 0)
+ MovementLoopAddLocation(NPC, 20.95, -2.57, -12.16, 2, 0)
+ MovementLoopAddLocation(NPC, 28.1, -2.55, -15.4, 2, 0)
+ MovementLoopAddLocation(NPC, 33.25, -2.55, -20.54, 2, 0)
+ MovementLoopAddLocation(NPC, 40.08, -2.6, -21.65, 2, 0)
+ MovementLoopAddLocation(NPC, 46.24, -2.67, -28.85, 2, 0)
+ MovementLoopAddLocation(NPC, 45.55, -2.56, -37.45, 2, 0)
+ MovementLoopAddLocation(NPC, 40.62, -2.56, -46.65, 2, 0)
+ MovementLoopAddLocation(NPC, 35, -2.5, -50.42, 2, 0)
+ MovementLoopAddLocation(NPC, 27.65, -2.54, -53.08, 2, 0)
+ MovementLoopAddLocation(NPC, -0.13, -2.51, -55.4, 2, 0)
+ MovementLoopAddLocation(NPC, -22.74, -2.65, -51.22, 2, 0)
+ MovementLoopAddLocation(NPC, -29.11, -2.92, -48.05, 2, 0)
+ MovementLoopAddLocation(NPC, -34.19, -4.16, -45.42, 2, 0)
+ MovementLoopAddLocation(NPC, -39.88, -4.28, -43.55, 2, 0)
+ MovementLoopAddLocation(NPC, -45.09, -4.28, -41.2, 2, 0)
+ MovementLoopAddLocation(NPC, -50.57, -4.28, -34.93, 2, 0)
+ MovementLoopAddLocation(NPC, -54.45, -4.28, -33.27, 2, 0)
+ MovementLoopAddLocation(NPC, -57.37, -4.43, -27.77, 2, 0)
+ MovementLoopAddLocation(NPC, -56.61, -4.42, -17.45, 2, 0)
+ MovementLoopAddLocation(NPC, -56.58, -4.52, -11.6, 2, 0)
+ MovementLoopAddLocation(NPC, -57.12, -4.52, -7.96, 2, 0)
+ MovementLoopAddLocation(NPC, -56.85, -4.05, -4.71, 2, 0)
+ MovementLoopAddLocation(NPC, -55.79, -3.25, -1.92, 2, 0)
+ MovementLoopAddLocation(NPC, -56.88, -2.55, 2.9, 2, 0)
+ MovementLoopAddLocation(NPC, -56.25, -2.57, 5.83, 2, 0)
+ MovementLoopAddLocation(NPC, -55.21, -2.63, 8.8, 2, 0)
+ MovementLoopAddLocation(NPC, -51.92, -2.55, 12.92, 2, 0)
+ MovementLoopAddLocation(NPC, -46.23, -2.52, 17.98, 2, 0)
+ MovementLoopAddLocation(NPC, -41.65, -2.62, 20.59, 2, 0)
+ MovementLoopAddLocation(NPC, -37.27, -2.67, 22.45, 2, 0)
+ MovementLoopAddLocation(NPC, -25.22, -2.53, 27.58, 2, 0)
+ MovementLoopAddLocation(NPC, -21.52, -2.56, 36.1, 2, 0)
+ MovementLoopAddLocation(NPC, -19.85, -2.52, 43.56, 2, 0)
+ MovementLoopAddLocation(NPC, -22.64, -2.67, 46.07, 2, 0)
+ MovementLoopAddLocation(NPC, -29.66, -2.67, 51.07, 2, 0)
+ MovementLoopAddLocation(NPC, -38.15, -2.67, 59.82, 2, 0)
+ MovementLoopAddLocation(NPC, -43.08, -2.67, 69.95, 2, 0)
+ MovementLoopAddLocation(NPC, -44.43, -2.55, 79.9, 2, 0)
+ MovementLoopAddLocation(NPC, -38.74, -2.52, 87.67, 2, 0, "Action")
+ else
+ MovementLoopAddLocation(NPC, -38.74, -2.52, 87.67, 2, 0)
+ MovementLoopAddLocation(NPC, -44.43, -2.55, 79.9, 2, 0)
+ MovementLoopAddLocation(NPC, -43.08, -2.67, 69.95, 2, 0)
+ MovementLoopAddLocation(NPC, -38.15, -2.67, 59.82, 2, 0)
+ MovementLoopAddLocation(NPC, -29.66, -2.67, 51.07, 2, 0)
+ MovementLoopAddLocation(NPC, -22.64, -2.67, 46.07, 2, 0)
+ MovementLoopAddLocation(NPC, -19.85, -2.52, 43.56, 2, 0)
+ MovementLoopAddLocation(NPC, -21.52, -2.56, 36.1, 2, 0)
+ MovementLoopAddLocation(NPC, -25.22, -2.53, 27.58, 2, 0)
+ MovementLoopAddLocation(NPC, -37.27, -2.67, 22.45, 2, 0)
+ MovementLoopAddLocation(NPC, -41.65, -2.62, 20.59, 2, 0)
+ MovementLoopAddLocation(NPC, -46.23, -2.52, 17.98, 2, 0)
+ MovementLoopAddLocation(NPC, -51.92, -2.55, 12.92, 2, 0)
+ MovementLoopAddLocation(NPC, -55.21, -2.63, 8.8, 2, 0)
+ MovementLoopAddLocation(NPC, -56.25, -2.57, 5.83, 2, 0)
+ MovementLoopAddLocation(NPC, -56.88, -2.55, 2.9, 2, 0)
+ MovementLoopAddLocation(NPC, -55.79, -3.25, -1.92, 2, 0)
+ MovementLoopAddLocation(NPC, -56.85, -4.05, -4.71, 2, 0)
+ MovementLoopAddLocation(NPC, -57.12, -4.52, -7.96, 2, 0)
+ MovementLoopAddLocation(NPC, -56.58, -4.52, -11.6, 2, 0)
+ MovementLoopAddLocation(NPC, -56.61, -4.42, -17.45, 2, 0)
+ MovementLoopAddLocation(NPC, -57.37, -4.43, -27.77, 2, 0)
+ MovementLoopAddLocation(NPC, -54.45, -4.28, -33.27, 2, 0)
+ MovementLoopAddLocation(NPC, -50.57, -4.28, -34.93, 2, 0)
+ MovementLoopAddLocation(NPC, -45.09, -4.28, -41.2, 2, 0)
+ MovementLoopAddLocation(NPC, -39.88, -4.28, -43.55, 2, 0)
+ MovementLoopAddLocation(NPC, -34.19, -4.16, -45.42, 2, 0)
+ MovementLoopAddLocation(NPC, -29.11, -2.92, -48.05, 2, 0)
+ MovementLoopAddLocation(NPC, -22.74, -2.65, -51.22, 2, 0)
+ MovementLoopAddLocation(NPC, -0.13, -2.51, -55.4, 2, 0)
+ MovementLoopAddLocation(NPC, 27.65, -2.54, -53.08, 2, 0)
+ MovementLoopAddLocation(NPC, 35, -2.5, -50.42, 2, 0)
+ MovementLoopAddLocation(NPC, 40.62, -2.56, -46.65, 2, 0)
+ MovementLoopAddLocation(NPC, 45.55, -2.56, -37.45, 2, 0)
+ MovementLoopAddLocation(NPC, 46.24, -2.67, -28.85, 2, 0)
+ MovementLoopAddLocation(NPC, 40.08, -2.6, -21.65, 2, 0)
+ MovementLoopAddLocation(NPC, 33.25, -2.55, -20.54, 2, 0)
+ MovementLoopAddLocation(NPC, 28.1, -2.55, -15.4, 2, 0)
+ MovementLoopAddLocation(NPC, 20.95, -2.57, -12.16, 2, 0)
+ MovementLoopAddLocation(NPC, 14.38, -2.63, -13.34, 2, 0)
+ MovementLoopAddLocation(NPC, 9.54, -2.67, -14.86, 2, 0)
+ MovementLoopAddLocation(NPC, 3.23, -2.67, -18.1, 2, 0)
+ MovementLoopAddLocation(NPC, -0.92, -2.64, -18.87, 2, 0)
+ MovementLoopAddLocation(NPC, -8.36, -2.64, -18.18, 2, 0)
+ MovementLoopAddLocation(NPC, -14.49, -2.53, -4.58, 2, 0)
+ MovementLoopAddLocation(NPC, -13.21, -2.53, 5.4, 2, 0)
+ MovementLoopAddLocation(NPC, -13.72, -2.53, 14.36, 2, 0)
+ MovementLoopAddLocation(NPC, -23.19, -2.53, 25.09, 2, 0)
+ MovementLoopAddLocation(NPC, -22.28, -2.58, 35.49, 2, 0)
+ MovementLoopAddLocation(NPC, -19.12, -2.52, 41.57, 2, 0)
+ MovementLoopAddLocation(NPC, -18.14, -2.52, 47.07, 2, 0)
+ MovementLoopAddLocation(NPC, -9.61, -2.52, 55.96, 2, 0)
+ MovementLoopAddLocation(NPC, -7.96, -2.66, 59.22, 2, 0)
+ MovementLoopAddLocation(NPC, -7.96, -1.64, 72.26, 2, 0)
+ MovementLoopAddLocation(NPC, -8.34, -1.64, 76.63, 2, 0)
+ MovementLoopAddLocation(NPC, -11.59, -1.49, 79.68, 2, 0)
+ MovementLoopAddLocation(NPC, -29.62, -2.47, 87.76, 2, 0)
+ MovementLoopAddLocation(NPC, -33.54, -2.52, 88.5, 2, 0)
+ MovementLoopAddLocation(NPC, -38.74, -2.52, 87.67, 2, 0, "Action")
+end
+end
+
+function Action(NPC,Spawn)
+ Despawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/GuardGorgo.lua b/server/SpawnScripts/TheSprawl_Classic/GuardGorgo.lua
new file mode 100755
index 000000000..3caf779ee
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/GuardGorgo.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/GuardGorgo.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.27 06:11:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/GuardLUnt.lua b/server/SpawnScripts/TheSprawl_Classic/GuardLUnt.lua
new file mode 100755
index 000000000..67f4b60d6
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/GuardLUnt.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/GuardLUnt.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.27 06:11:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/GuardTalmudius.lua b/server/SpawnScripts/TheSprawl_Classic/GuardTalmudius.lua
new file mode 100755
index 000000000..3991e2529
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/GuardTalmudius.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/GuardTalmudius.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.27 06:11:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/GenericGuardVoiceOvers.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/LiegeAquila.lua b/server/SpawnScripts/TheSprawl_Classic/LiegeAquila.lua
new file mode 100755
index 000000000..582427d5b
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/LiegeAquila.lua
@@ -0,0 +1,333 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/LiegeAquila.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.03 11:12:26
+ Script Purpose :
+ :
+--]]
+
+local QUEST_1 = 5933 -- repeatable Giantslayer
+local QUEST_2 = 5934 -- repeatable Guttersnipe
+
+function spawn(NPC)
+ ProvidesQuest(NPC, QUEST_1)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+ RandomVoiceOver(NPC, Spawn)
+ local count_Giant = GetQuestCompleteCount(Spawn, 5933)
+ local count_Gutter = GetQuestCompleteCount(Spawn, 5934)
+
+ if HasCompletedQuest(Spawn, QUEST_1) then
+ YouveDoneWell(NPC, Spawn, conversation)
+ elseif HasQuest(Spawn, QUEST_1) then
+ OnQuest1(NPC, Spawn, conversation)
+ else
+ Greetings(NPC, Spawn, conversation)
+ end
+
+--[[
+ if convo==5 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "What duty is that?", "dlg_5_1")
+ AddConversationOption(conversation, "Sorry, but I have other things I must do.")
+ StartConversation(conversation, NPC, Spawn, "Greetings, citizen. Are you prepared to do your duty for the Freeport Militia?")
+ end
+
+ if convo==6 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "What duty is that?", "dlg_6_1")
+ AddConversationOption(conversation, "Sorry, but I have other things I must do.")
+ StartConversation(conversation, NPC, Spawn, "Greetings, citizen. Are you prepared to do your duty for the Freeport Militia?")
+ end
+
+ if convo==10 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I took care of a number of those troublemakers.", "dlg_10_1")
+ AddConversationOption(conversation, "Not yet, Aquila.")
+ StartConversation(conversation, NPC, Spawn, "Did you teach the Black Magi who is in charge of Freeport?")
+ end
+
+ if convo==11 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I am ready to attack those troublemakers again!", "dlg_11_1")
+ AddConversationOption(conversation, "I'll take up this cause later.")
+ StartConversation(conversation, NPC, Spawn, "Your efforts to control the Black Magi have been helpful, but more work remains to be done.")
+ end
+
+ if convo==15 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", "", "", 0, 0, Spawn)
+
+ end
+
+ if convo==16 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I guess I need to kill more Dervish, eh?", "dlg_16_1")
+ AddConversationOption(conversation, "I think I've had enough.")
+ StartConversation(conversation, NPC, Spawn, "You've done well for the Freeport Militia so far, but your job isn't over yet, you know.")
+ end
+
+ if convo==20 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I taught those crooks a lesson.", "dlg_20_1")
+ AddConversationOption(conversation, "Not yet.")
+ StartConversation(conversation, NPC, Spawn, "So, did you strike some fear into the hearts of the Dervish?")
+ end
+
+ if convo==21 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I guess I need to kill more Dervish, eh?", "dlg_21_1")
+ AddConversationOption(conversation, "I think I've had enough.")
+ StartConversation(conversation, NPC, Spawn, "You've done well for the Freeport Militia so far, but your job isn't over yet, you know.")
+ end
+
+ if convo==22 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "Not yet.", "dlg_22_1")
+ StartConversation(conversation, NPC, Spawn, "So, did you strike some fear into the hearts of the Dervish?")
+ end
+
+ if convo==31 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I taught those crooks a lesson.", "dlg_31_1")
+ AddConversationOption(conversation, "Not yet.")
+ StartConversation(conversation, NPC, Spawn, "So, did you strike some fear into the hearts of the Dervish?")
+ end
+--]]
+end
+
+function RandomVoiceOver(NPC, Spawn)
+ local choice = math.random(1, 3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_1_1004.mp3", "", "", 0, 0, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_2_1004.mp3", "", "", 0, 0, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/voice_emotes/greetings/greetings_3_1004.mp3", "", "", 0, 0, Spawn)
+ end
+end
+
+---------------------------------------------------------------------------------------------------------
+-- QUEST 1
+---------------------------------------------------------------------------------------------------------
+
+function Greetings(NPC, Spawn, conversation)
+ AddConversationOption(conversation, "What duty is that?", "dlg_6_1")
+ AddConversationOption(conversation, "Sorry, but I have other things I must do.")
+ StartConversation(conversation, NPC, Spawn, "Greetings, citizen. Are you prepared to do your duty for the Freeport Militia?")
+end
+
+function dlg_6_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "What do you mean?", "dlg_6_2")
+ AddConversationOption(conversation, "I don't have time for this.")
+ StartConversation(conversation, NPC, Spawn, "The gangs here in the Sprawl are out of control! Clearly it's time that the Militia took control of the situation. The guards stationed here aren't doing enough to maintain order.")
+end
+
+function dlg_6_2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "I will perform my duty for Freeport.", "dlg_6_3")
+ AddConversationOption(conversation, "Not really.")
+ StartConversation(conversation, NPC, Spawn, "I am supposed to have the run of this place, but in my opinion things would be better if the Militia came here in force and took over. Are you willing to help us do that?")
+end
+
+function dlg_6_3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "I'll do it.", "OfferQuest1")
+ AddConversationOption(conversation, "Maybe later.")
+ StartConversation(conversation, NPC, Spawn, "We need to handle some of these groups. They've infested the Sprawl from their bandit camps in the Commonlands. We've got to show them who's in charge around here! I think it will take a few sweeps to really strike fear into them.")
+end
+
+function OfferQuest1(NPC, Spawn)
+ local count_Giant = GetQuestCompleteCount(Spawn, 5933)
+ local count_Gutter = GetQuestCompleteCount(Spawn, 5934)
+ FaceTarget(NPC, Spawn)
+
+ if count_Giant == 0 or
+ count_Gutter == 1 and count_Giant ==1 or
+ count_Gutter == 2 and count_Giant ==2 then
+ OfferQuest(NPC, Spawn, QUEST_1)
+ elseif count_Gutter ~= 3 then
+ OfferQuest(NPC, Spawn, QUEST_2)
+ end
+end
+
+function OnQuest1(NPC, Spawn, conversation)
+ if GetQuestStep(Spawn, QUEST_1) == 2 then
+ AddConversationOption(conversation, "I taught those crooks a lesson.", "dlg_15_1")
+ end
+ AddConversationOption(conversation, "Not yet.")
+ StartConversation(conversation, NPC, Spawn, "So, did you strike some fear into the hearts of the rabble out here?")
+end
+
+function dlg_15_1(NPC, Spawn)
+ SetStepComplete(Spawn, QUEST_1, 2)
+
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ AddConversationOption(conversation, "I will return.")
+ StartConversation(conversation, NPC, Spawn, "Well done. You show some potential as a worthy servant of the Freeport Militia. Return to me when you are ready for another assignment.")
+end
+
+---------------------------------------------------------------------------------------------------------
+-- QUEST 2
+---------------------------------------------------------------------------------------------------------
+
+function YouveDoneWell(NPC, Spawn, conversation)
+ AddConversationOption(conversation, "I'm ready for a new assignment.", "dlg_6_3")
+ AddConversationOption(conversation, "I think I've had enough.")
+ StartConversation(conversation, NPC, Spawn, "You've done well for the Freeport Militia so far, but your job isn't over yet, you know.")
+end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function dlg_1_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I'll help out.", "dlg_1_2")
+ AddConversationOption(conversation, "That's not my problem.")
+ StartConversation(conversation, NPC, Spawn, "It's not only the Dervish causing problems here. The Black Magi, a secretive group of ratonga, are causing havoc in the streets. We can't allow them to dominate the Sprawl!")
+end
+
+function dlg_1_2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I understand the risks.", "dlg_1_3")
+ AddConversationOption(conversation, "I'll think about it.")
+ StartConversation(conversation, NPC, Spawn, "Strike some fear into those rogue ratonga. Be careful, though. At first they won't pester you much, but once they notice you've been attacking their kind, they'll be out for your blood!")
+end
+
+function dlg_1_3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I will do so.", "dlg_1_4")
+ StartConversation(conversation, NPC, Spawn, "Excellent. Report back when you've put the Black Magi in their place.")
+end
+
+
+
+
+
+
+
+
+
+function dlg_10_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "Thank you. I'll check back for more work.", "dlg_10_2")
+ StartConversation(conversation, NPC, Spawn, "Good. Gangs like that must be kept in line for the sake of Freeport. A job well done, citizen. Check back with me to see if I have more assignments for you.")
+end
+
+function dlg_11_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I understand the risks.", "dlg_11_2")
+ AddConversationOption(conversation, "I'll think about it.")
+ StartConversation(conversation, NPC, Spawn, "Strike some fear into those rogue ratonga. Be careful, though. At first they won't pester you much, but once they notice you've been attacking their kind, they'll be out for your blood!")
+end
+
+function dlg_11_2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I will do so.", "dlg_11_3")
+ StartConversation(conversation, NPC, Spawn, "Excellent. Report back when you've put the Black Magi in their place.")
+end
+
+
+function dlg_16_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I'll do it.", "dlg_16_2")
+ AddConversationOption(conversation, "Maybe later.")
+ StartConversation(conversation, NPC, Spawn, "We need to handle some of these Dervish. They've infested the Sprawl from their bandit camps in the Commonlands. We've got to show them who's in charge around here! I think it will take a few sweeps to really strike fear into them.")
+end
+
+function dlg_16_2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I will do so.", "dlg_16_3")
+ StartConversation(conversation, NPC, Spawn, "Glad to hear it. Defeat them and return to me for your payment.")
+end
+
+function dlg_20_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I will return.", "dlg_20_2")
+ StartConversation(conversation, NPC, Spawn, "Well done. You show some potential as a worthy servant of the Freeport Militia. Return to me when you are ready for another assignment.")
+end
+
+function dlg_21_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I'll do it.", "dlg_21_2")
+ AddConversationOption(conversation, "Maybe later.")
+ StartConversation(conversation, NPC, Spawn, "We need to handle some of these Dervish. They've infested the Sprawl from their bandit camps in the Commonlands. We've got to show them who's in charge around here! I think it will take a few sweeps to really strike fear into them.")
+end
+
+function dlg_21_2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I will do so.", "dlg_21_3")
+ StartConversation(conversation, NPC, Spawn, "Glad to hear it. Defeat them and return to me for your payment.")
+end
+
+function dlg_31_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ conversation = CreateConversation()
+
+ PlayFlavor(NPC, "", "", "", 0, 0, Spawn)
+ AddConversationOption(conversation, "I will return.", "dlg_31_2")
+ StartConversation(conversation, NPC, Spawn, "Well done. You show some potential as a worthy servant of the Freeport Militia. Return to me when you are ready for another assignment.")
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/MerchantLoria.lua b/server/SpawnScripts/TheSprawl_Classic/MerchantLoria.lua
new file mode 100755
index 000000000..68c9106aa
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/MerchantLoria.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/MerchantLoria.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.05 07:12:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 33 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 2632179815, 4191292693, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "", "I'm sorry, much as I want your coin.... My skin intact is considerably more valuable.", "heckno", 0, 0, Spawn, 0)
+ else
+ PlayFlavor(NPC, "", "It is treasonous to sell wares to the citizens of Qeynos! Remove yourself and I will not summon the militia!", "shakefist", 0, 0, Spawn, 0)
+ end
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 1817378690, 2459690771, Spawn)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/human_eco_evil_1/ft/service/merchant/human_merchant_service_evil_1_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 2963689917, 1457704094, Spawn)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/optional2/barbarian_eco_evil_2/ft/service/merchant/barbarian_merchant_service_evil_2_hail_gm_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 1385543830, 1478025098, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/MerchantSasha.lua b/server/SpawnScripts/TheSprawl_Classic/MerchantSasha.lua
new file mode 100755
index 000000000..144b836fc
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/MerchantSasha.lua
@@ -0,0 +1,58 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/MerchantSasha.lua
+ Script Author : Dorbin
+ Script Date : 2023.12.05 07:12:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 9, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function InRange(NPC, Spawn)
+ if MakeRandomInt(1, 100) <= 33 and GetFactionAmount(Spawn,12) >0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_3/ft/service/merchant/ratonga_merchant_service_evil_3_aoi_gf_53388b91.mp3", "Only traitors to the Overlord would pass up a bargain like this. You're not a traitor are you?", "scold", 2288309507, 1188267472, Spawn, 0)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC, "", "", "shakefist", 4267987983, 4115199119, Spawn, 0)
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ if GetFactionAmount(Spawn,12) >0 then
+ Dialog1(NPC, Spawn)
+ elseif GetFactionAmount(Spawn,12) <=0 then
+ FaceTarget(NPC, Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_3/ft/service/merchant/ratonga_merchant_service_evil_3_notcitizen_gf_85c35337.mp3", "I'm sorry, much as I want your coin.... My skin intact is considerably more valuable.", "no", 371334210, 3276810891, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_3/ft/service/merchant/ratonga_merchant_service_evil_3_notcitizen_gf_34401a59.mp3", "It is treasonous to sell wares to the citizens of Qeynos! Remove yourself and I will not summon the militia!", "shakefist", 2607521739, 3744177496, Spawn, 0)
+ else
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_3/ft/service/merchant/ratonga_merchant_service_evil_3_notcitizen_gf_c0c992e7.mp3", "I'm afraid your business is not welcome here. Now please, go away!", "no", 3973165990, 420905398, Spawn, 0)
+ end
+ end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_3/ft/service/merchant/ratonga_merchant_service_evil_3_hail_gf_f715099e.mp3", "Hello there, kind adventurer. My merchandise carries the seal of the Overlord himself! Go ahead, take a look!", "salute_freeport", 3460692084, 694864112, Spawn, 0)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/optional2/ratonga_eco_evil_3/ft/service/merchant/ratonga_merchant_service_evil_3_hail_gf_d088c20d.mp3", "The stuff's over there. Just let me know if you find anything you like.", "ponder", 3740786388, 4176254637, Spawn, 0)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/ratonga_eco_evil_1/ft/service/merchant/ratonga_merchant_service_evil_1_hail_gf_aff3fc07.mp3", "Are you going to buy anything today or am I just wasting my time? This isn't a museum display you know!", "glare", 3896024368, 3267129756, Spawn, 0)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/TheGreatShivo.lua b/server/SpawnScripts/TheSprawl_Classic/TheGreatShivo.lua
new file mode 100755
index 000000000..b4c92f0af
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/TheGreatShivo.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/TheGreatShivo.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.26 12:11:35
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(11 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(21 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aBlackMagianarchist.lua b/server/SpawnScripts/TheSprawl_Classic/aBlackMagianarchist.lua
new file mode 100755
index 000000000..4e92e8613
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aBlackMagianarchist.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aBlackMagianarchist.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ IdleSneaky(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aBlackMagidissident.lua b/server/SpawnScripts/TheSprawl_Classic/aBlackMagidissident.lua
new file mode 100755
index 000000000..876e706e5
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aBlackMagidissident.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aBlackMagidissident.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ IdleSneaky(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aBlackMagifanatic.lua b/server/SpawnScripts/TheSprawl_Classic/aBlackMagifanatic.lua
new file mode 100755
index 000000000..51fcfcec4
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aBlackMagifanatic.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aBlackMagifanatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ IdleSneaky(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aBlackMagiinsurgent.lua b/server/SpawnScripts/TheSprawl_Classic/aBlackMagiinsurgent.lua
new file mode 100755
index 000000000..3bcf586fb
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aBlackMagiinsurgent.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aBlackMagiinsurgent.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BlackMagi.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ IdleSneaky(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasher.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasher.lua
new file mode 100755
index 000000000..155a34be5
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasher.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbasher.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ IdleAggressive(NPC)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherHeroic.lua
new file mode 100755
index 000000000..f868089b8
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherHeroic.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbasherHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.18 10:11:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ SpawnSet(NPC, "heroic", 1)
+ AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath1.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath1.lua
new file mode 100755
index 000000000..b565a0291
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath1.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.18 09:11:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1.87, -2.58, -55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.87, -2.58, -55, 2, 0)
+ MovementLoopAddLocation(NPC, -7.61, -2.51, -55.75, 2, 0)
+ MovementLoopAddLocation(NPC, -21.91, -2.59, -51.93, 2, 0)
+ MovementLoopAddLocation(NPC, -28.34, -2.82, -49, 2, 0)
+ MovementLoopAddLocation(NPC, -32.28, -3.65, -46.4, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -32.28, -3.65, -46.4, 2, 0)
+ MovementLoopAddLocation(NPC, -29.2, -2.93, -48.01, 2, 0)
+ MovementLoopAddLocation(NPC, -24.54, -2.67, -50.65, 2, 0)
+ MovementLoopAddLocation(NPC, -19.3, -2.51, -52.23, 2, 0)
+ MovementLoopAddLocation(NPC, -13, -2.51, -53.07, 2, 0)
+ MovementLoopAddLocation(NPC, -8.82, -2.51, -54.99, 2, 0)
+ MovementLoopAddLocation(NPC, 8.7, -2.67, -54.65, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 8.7, -2.67, -54.65, 2, 0)
+ MovementLoopAddLocation(NPC, 7.41, -2.67, -54.27, 2, 0)
+ MovementLoopAddLocation(NPC, 5.85, -2.67, -48.76, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 5.85, -2.67, -48.76, 2, 0)
+ MovementLoopAddLocation(NPC, 5.09, -2.67, -51.9, 2, 0)
+ MovementLoopAddLocation(NPC, -6.5, -2.51, -57.11, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -6.5, -2.51, -57.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2.67, -2.51, -56.01, 2, 0)
+ MovementLoopAddLocation(NPC, 8.94, -2.67, -54.34, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 8.94, -2.67, -54.34, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath2.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath2.lua
new file mode 100755
index 000000000..fc9eb2904
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath2.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.18 09:11:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 14.49, -2.54, -54.5, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 14.49, -2.54, -54.5, 2, 0)
+ MovementLoopAddLocation(NPC, 18.89, -2.54, -53.47, 2, 0)
+ MovementLoopAddLocation(NPC, 25.99, -2.54, -53.76, 2, 0)
+ MovementLoopAddLocation(NPC, 30.6, -2.54, -53.16, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 30.6, -2.54, -53.16, 2, 0)
+ MovementLoopAddLocation(NPC, 27, -2.54, -53.13, 2, 0)
+ MovementLoopAddLocation(NPC, 23.63, -2.59, -50.38, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 23.63, -2.59, -50.38, 2, 0)
+ MovementLoopAddLocation(NPC, 19.31, -2.54, -54.49, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.31, -2.54, -54.49, 2, 0)
+ MovementLoopAddLocation(NPC, 26.79, -2.54, -52.52, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 26.79, -2.54, -52.52, 2, 0)
+ MovementLoopAddLocation(NPC, 18.57, -2.54, -53.02, 2, 0)
+ MovementLoopAddLocation(NPC, 12.01, -2.62, -50.82, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 12.01, -2.62, -50.82, 2, 0)
+ MovementLoopAddLocation(NPC, 19.73, -2.54, -55.21, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.73, -2.54, -55.21, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath3.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath3.lua
new file mode 100755
index 000000000..5879acf06
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath3.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.19 05:11:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 44.25, -2.67, -26.13, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 44.25, -2.67, -26.13, 2, 0)
+ MovementLoopAddLocation(NPC, 46.43, -2.67, -32.19, 2, 0)
+ MovementLoopAddLocation(NPC, 46.19, -2.63, -35.53, 2, 0)
+ MovementLoopAddLocation(NPC, 42.08, -2.56, -46.55, 2, 0)
+ MovementLoopAddLocation(NPC, 35.34, -2.47, -49.81, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 35.34, -2.47, -49.81, 2, 0)
+ MovementLoopAddLocation(NPC, 38.88, -2.56, -48.9, 2, 0)
+ MovementLoopAddLocation(NPC, 41.71, -2.56, -46.69, 2, 0)
+ MovementLoopAddLocation(NPC, 45.44, -2.56, -37.59, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 45.44, -2.56, -37.59, 2, 0)
+ MovementLoopAddLocation(NPC, 41.89, -2.56, -41.6, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 41.89, -2.56, -41.6, 2, 0)
+ MovementLoopAddLocation(NPC, 44.58, -2.56, -37.55, 2, 0)
+ MovementLoopAddLocation(NPC, 50.3, -2.67, -30.61, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 50.3, -2.67, -30.61, 2, 0)
+ MovementLoopAddLocation(NPC, 48.39, -2.67, -32.09, 2, 0)
+ MovementLoopAddLocation(NPC, 44.99, -2.56, -39.61, 2, 0)
+ MovementLoopAddLocation(NPC, 42.22, -2.56, -46.44, 2, 0)
+ MovementLoopAddLocation(NPC, 40.71, -2.56, -47.97, 2, 0)
+ MovementLoopAddLocation(NPC, 36, -2.53, -49.92, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 36, -2.53, -49.92, 2, 0)
+ MovementLoopAddLocation(NPC, 39.38, -2.56, -48.25, 2, 0)
+ MovementLoopAddLocation(NPC, 42.31, -2.56, -43.66, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 42.31, -2.56, -43.66, 2, 0)
+ MovementLoopAddLocation(NPC, 42.18, -2.56, -45.68, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 42.18, -2.56, -45.68, 2, 0)
+ MovementLoopAddLocation(NPC, 44.43, -2.56, -42.49, 2, 0)
+ MovementLoopAddLocation(NPC, 44.51, -2.56, -42.37, 2, 0)
+ MovementLoopAddLocation(NPC, 44.91, -2.56, -36.8, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath4.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath4.lua
new file mode 100755
index 000000000..2533b5c5f
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath4.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbasherPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.19 06:11:07
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ogre(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 39.17, -2.58, -22.44, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 39.17, -2.58, -22.44, 2, 0)
+ MovementLoopAddLocation(NPC, 34.14, -2.55, -21.31, 2, 0)
+ MovementLoopAddLocation(NPC, 27.14, -2.55, -14.17, 2, 0)
+ MovementLoopAddLocation(NPC, 21.77, -2.55, -12.59, 2, 0)
+ MovementLoopAddLocation(NPC, 16.01, -2.56, -12.73, 2, 0)
+ MovementLoopAddLocation(NPC, 11.53, -2.65, -14.28, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 11.53, -2.65, -14.28, 2, 0)
+ MovementLoopAddLocation(NPC, 15.32, -2.59, -13.16, 2, 0)
+ MovementLoopAddLocation(NPC, 21.66, -2.56, -11.94, 2, 0)
+ MovementLoopAddLocation(NPC, 26.09, -2.55, -13.98, 2, 0)
+ MovementLoopAddLocation(NPC, 32.84, -2.55, -19.91, 2, 0)
+ MovementLoopAddLocation(NPC, 38.6, -2.56, -21.52, 2, 0)
+ MovementLoopAddLocation(NPC, 44.84, -2.67, -14.74, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 44.84, -2.67, -14.74, 2, 0)
+ MovementLoopAddLocation(NPC, 39.27, -2.58, -21.33, 2, 0)
+ MovementLoopAddLocation(NPC, 43.5, -2.67, -24.2, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 43.5, -2.67, -24.2, 2, 0)
+ MovementLoopAddLocation(NPC, 39.41, -2.6, -20.87, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 39.41, -2.6, -20.87, 2, 0)
+ MovementLoopAddLocation(NPC, 46.16, -2.67, -20.27, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 46.16, -2.67, -20.27, 2, 0)
+ MovementLoopAddLocation(NPC, 37.03, -2.55, -21.88, 2, 0)
+ MovementLoopAddLocation(NPC, 34.4, -2.55, -21.16, 2, 0)
+ MovementLoopAddLocation(NPC, 26.01, -2.55, -13.1, 2, 0)
+ MovementLoopAddLocation(NPC, 19.41, -2.55, -12.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.41, -2.55, -12.47, 2, 0)
+ MovementLoopAddLocation(NPC, 25.39, -2.55, -12.9, 2, 0)
+ MovementLoopAddLocation(NPC, 31.25, -2.55, -18.89, 2, 0)
+ MovementLoopAddLocation(NPC, 34.5, -2.55, -21.13, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrute.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrute.lua
new file mode 100755
index 000000000..d6454d425
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrute.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbrute.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ troll(NPC)
+ IdleAggressive(NPC)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteBARBARIAN.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteBARBARIAN.lua
new file mode 100755
index 000000000..ace8e499b
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteBARBARIAN.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbruteBARBARIAN.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.12 07:11:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 4
+ local level2 = 5
+ local difficulty1 = 6
+ local hp1 = 110
+ local power1 = 55
+ local difficulty2 = 6
+ local hp2 = 130
+ local power2 = 65
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",111)
+ else
+ SpawnSet(NPC,"model_type",112)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteHeroic.lua
new file mode 100755
index 000000000..f67a9eae6
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteHeroic.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbruteHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.16 09:11:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ troll(NPC)
+ SpawnSet(NPC, "heroic", 1)
+ AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteOGRE.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteOGRE.lua
new file mode 100755
index 000000000..9f6ee0e00
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteOGRE.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbruteOGRE.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.12 07:11:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 4
+ local level2 = 5
+ local difficulty1 = 6
+ local hp1 = 110
+ local power1 = 55
+ local difficulty2 = 6
+ local hp2 = 130
+ local power2 = 65
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",123)
+ else
+ SpawnSet(NPC,"model_type",124)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath1.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath1.lua
new file mode 100755
index 000000000..8c8ab1891
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath1.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.16 09:11:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ troll(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 1.87, -2.58, -55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.87, -2.58, -55, 2, 0)
+ MovementLoopAddLocation(NPC, -7.61, -2.51, -55.75, 2, 0)
+ MovementLoopAddLocation(NPC, -21.91, -2.59, -51.93, 2, 0)
+ MovementLoopAddLocation(NPC, -28.34, -2.82, -49, 2, 0)
+ MovementLoopAddLocation(NPC, -32.28, -3.65, -46.4, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -32.28, -3.65, -46.4, 2, 0)
+ MovementLoopAddLocation(NPC, -29.2, -2.93, -48.01, 2, 0)
+ MovementLoopAddLocation(NPC, -24.54, -2.67, -50.65, 2, 0)
+ MovementLoopAddLocation(NPC, -19.3, -2.51, -52.23, 2, 0)
+ MovementLoopAddLocation(NPC, -13, -2.51, -53.07, 2, 0)
+ MovementLoopAddLocation(NPC, -8.82, -2.51, -54.99, 2, 0)
+ MovementLoopAddLocation(NPC, 8.7, -2.67, -54.65, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 8.7, -2.67, -54.65, 2, 0)
+ MovementLoopAddLocation(NPC, 7.41, -2.67, -54.27, 2, 0)
+ MovementLoopAddLocation(NPC, 5.85, -2.67, -48.76, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 5.85, -2.67, -48.76, 2, 0)
+ MovementLoopAddLocation(NPC, 5.09, -2.67, -51.9, 2, 0)
+ MovementLoopAddLocation(NPC, -6.5, -2.51, -57.11, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -6.5, -2.51, -57.11, 2, 0)
+ MovementLoopAddLocation(NPC, -2.67, -2.51, -56.01, 2, 0)
+ MovementLoopAddLocation(NPC, 8.94, -2.67, -54.34, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 8.94, -2.67, -54.34, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath2.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath2.lua
new file mode 100755
index 000000000..fdf1bac82
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath2.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbrutePath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.16 09:11:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ troll(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 14.49, -2.54, -54.5, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 14.49, -2.54, -54.5, 2, 0)
+ MovementLoopAddLocation(NPC, 18.89, -2.54, -53.47, 2, 0)
+ MovementLoopAddLocation(NPC, 25.99, -2.54, -53.76, 2, 0)
+ MovementLoopAddLocation(NPC, 30.6, -2.54, -53.16, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 30.6, -2.54, -53.16, 2, 0)
+ MovementLoopAddLocation(NPC, 27, -2.54, -53.13, 2, 0)
+ MovementLoopAddLocation(NPC, 23.63, -2.59, -50.38, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 23.63, -2.59, -50.38, 2, 0)
+ MovementLoopAddLocation(NPC, 19.31, -2.54, -54.49, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.31, -2.54, -54.49, 2, 0)
+ MovementLoopAddLocation(NPC, 26.79, -2.54, -52.52, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 26.79, -2.54, -52.52, 2, 0)
+ MovementLoopAddLocation(NPC, 18.57, -2.54, -53.02, 2, 0)
+ MovementLoopAddLocation(NPC, 12.01, -2.62, -50.82, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 12.01, -2.62, -50.82, 2, 0)
+ MovementLoopAddLocation(NPC, 19.73, -2.54, -55.21, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.73, -2.54, -55.21, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteTROLL.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteTROLL.lua
new file mode 100755
index 000000000..a090cb2c5
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerbruteTROLL.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerbruteTROLL.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.12 07:11:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+ Appearance(NPC)
+ local Level = GetLevel(NPC)
+ local level1 = 4
+ local level2 = 5
+ local difficulty1 = 6
+ local hp1 = 110
+ local power1 = 55
+ local difficulty2 = 6
+ local hp2 = 130
+ local power2 = 65
+ if Level == level1 then
+ SpawnSet(NPC, "difficulty", difficulty1)
+ SpawnSet(NPC, "hp", hp1)
+ SpawnSet(NPC, "power", power1)
+ elseif Level == level2
+ then
+ SpawnSet(NPC, "difficulty", difficulty2)
+ SpawnSet(NPC, "hp", hp2)
+ SpawnSet(NPC, "power", power2)
+ end
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function Appearance(NPC)
+ if GetGender(NPC)==2 then
+ SpawnSet(NPC,"model_type",105)
+ else
+ SpawnSet(NPC,"model_type",106)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthug.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthug.lua
new file mode 100755
index 000000000..371453292
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthug.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerthug.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ barbarian(NPC)
+ IdleAggressive(NPC)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugHeroic.lua
new file mode 100755
index 000000000..8c918e7c5
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugHeroic.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerthugHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.18 10:11:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ barbarian(NPC)
+ SpawnSet(NPC, "heroic", 1)
+
+ AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath3.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath3.lua
new file mode 100755
index 000000000..831c3bffc
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath3.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.19 05:11:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ barbarian(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 44.25, -2.67, -26.13, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 44.25, -2.67, -26.13, 2, 0)
+ MovementLoopAddLocation(NPC, 46.43, -2.67, -32.19, 2, 0)
+ MovementLoopAddLocation(NPC, 46.19, -2.63, -35.53, 2, 0)
+ MovementLoopAddLocation(NPC, 42.08, -2.56, -46.55, 2, 0)
+ MovementLoopAddLocation(NPC, 35.34, -2.47, -49.81, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 35.34, -2.47, -49.81, 2, 0)
+ MovementLoopAddLocation(NPC, 38.88, -2.56, -48.9, 2, 0)
+ MovementLoopAddLocation(NPC, 41.71, -2.56, -46.69, 2, 0)
+ MovementLoopAddLocation(NPC, 45.44, -2.56, -37.59, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 45.44, -2.56, -37.59, 2, 0)
+ MovementLoopAddLocation(NPC, 41.89, -2.56, -41.6, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 41.89, -2.56, -41.6, 2, 0)
+ MovementLoopAddLocation(NPC, 44.58, -2.56, -37.55, 2, 0)
+ MovementLoopAddLocation(NPC, 50.3, -2.67, -30.61, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 50.3, -2.67, -30.61, 2, 0)
+ MovementLoopAddLocation(NPC, 48.39, -2.67, -32.09, 2, 0)
+ MovementLoopAddLocation(NPC, 44.99, -2.56, -39.61, 2, 0)
+ MovementLoopAddLocation(NPC, 42.22, -2.56, -46.44, 2, 0)
+ MovementLoopAddLocation(NPC, 40.71, -2.56, -47.97, 2, 0)
+ MovementLoopAddLocation(NPC, 36, -2.53, -49.92, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 36, -2.53, -49.92, 2, 0)
+ MovementLoopAddLocation(NPC, 39.38, -2.56, -48.25, 2, 0)
+ MovementLoopAddLocation(NPC, 42.31, -2.56, -43.66, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 42.31, -2.56, -43.66, 2, 0)
+ MovementLoopAddLocation(NPC, 42.18, -2.56, -45.68, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 42.18, -2.56, -45.68, 2, 0)
+ MovementLoopAddLocation(NPC, 44.43, -2.56, -42.49, 2, 0)
+ MovementLoopAddLocation(NPC, 44.51, -2.56, -42.37, 2, 0)
+ MovementLoopAddLocation(NPC, 44.91, -2.56, -36.8, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath4.lua b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath4.lua
new file mode 100755
index 000000000..31c10332b
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath4.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGiantslayerthugPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.19 06:11:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Giantslayer.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ barbarian(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 39.17, -2.58, -22.44, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 39.17, -2.58, -22.44, 2, 0)
+ MovementLoopAddLocation(NPC, 34.14, -2.55, -21.31, 2, 0)
+ MovementLoopAddLocation(NPC, 27.14, -2.55, -14.17, 2, 0)
+ MovementLoopAddLocation(NPC, 21.77, -2.55, -12.59, 2, 0)
+ MovementLoopAddLocation(NPC, 16.01, -2.56, -12.73, 2, 0)
+ MovementLoopAddLocation(NPC, 11.53, -2.65, -14.28, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 11.53, -2.65, -14.28, 2, 0)
+ MovementLoopAddLocation(NPC, 15.32, -2.59, -13.16, 2, 0)
+ MovementLoopAddLocation(NPC, 21.66, -2.56, -11.94, 2, 0)
+ MovementLoopAddLocation(NPC, 26.09, -2.55, -13.98, 2, 0)
+ MovementLoopAddLocation(NPC, 32.84, -2.55, -19.91, 2, 0)
+ MovementLoopAddLocation(NPC, 38.6, -2.56, -21.52, 2, 0)
+ MovementLoopAddLocation(NPC, 44.84, -2.67, -14.74, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 44.84, -2.67, -14.74, 2, 0)
+ MovementLoopAddLocation(NPC, 39.27, -2.58, -21.33, 2, 0)
+ MovementLoopAddLocation(NPC, 43.5, -2.67, -24.2, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 43.5, -2.67, -24.2, 2, 0)
+ MovementLoopAddLocation(NPC, 39.41, -2.6, -20.87, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 39.41, -2.6, -20.87, 2, 0)
+ MovementLoopAddLocation(NPC, 46.16, -2.67, -20.27, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 46.16, -2.67, -20.27, 2, 0)
+ MovementLoopAddLocation(NPC, 37.03, -2.55, -21.88, 2, 0)
+ MovementLoopAddLocation(NPC, 34.4, -2.55, -21.16, 2, 0)
+ MovementLoopAddLocation(NPC, 26.01, -2.55, -13.1, 2, 0)
+ MovementLoopAddLocation(NPC, 19.41, -2.55, -12.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.41, -2.55, -12.47, 2, 0)
+ MovementLoopAddLocation(NPC, 25.39, -2.55, -12.9, 2, 0)
+ MovementLoopAddLocation(NPC, 31.25, -2.55, -18.89, 2, 0)
+ MovementLoopAddLocation(NPC, 34.5, -2.55, -21.13, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrook.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrook.lua
new file mode 100755
index 000000000..5710b5516
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrook.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrook.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookHeroic.lua
new file mode 100755
index 000000000..f46ffe3cb
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookHeroic.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 03:11:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ SpawnSet(NPC, "heroic", 1)
+ AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath1.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath1.lua
new file mode 100755
index 000000000..d244a62f6
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath1.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 04:11:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -83.41, -5.02, -13.62, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.41, -5.02, -13.62, 2, 0)
+ MovementLoopAddLocation(NPC, -90.06, -5.29, -19.28, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -90.06, -5.29, -19.28, 2, 0)
+ MovementLoopAddLocation(NPC, -83.67, -4.83, -12.07, 2, 0)
+ MovementLoopAddLocation(NPC, -83.96, -4.24, 3.98, 2, 0)
+ MovementLoopAddLocation(NPC, -79.49, -4.24, 8.29, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -79.49, -4.24, 8.29, 2, 0)
+ MovementLoopAddLocation(NPC, -82.79, -4.24, 6.55, 2, 0)
+ MovementLoopAddLocation(NPC, -88.38, -4.26, 10.9, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -88.38, -4.26, 10.9, 2, 0)
+ MovementLoopAddLocation(NPC, -85.52, -4.24, 1.29, 2, 0)
+ MovementLoopAddLocation(NPC, -83.59, -4.73, -11.24, 2, 0)
+ MovementLoopAddLocation(NPC, -81.12, -4.99, -11.41, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -81.12, -4.99, -11.41, 2, 0)
+ MovementLoopAddLocation(NPC, -82.85, -4.7, -10.62, 2, 0)
+ MovementLoopAddLocation(NPC, -83.92, -4.28, -4.22, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.92, -4.28, -4.22, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath2.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath2.lua
new file mode 100755
index 000000000..d61287a85
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath2.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 04:11:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -84.19, -4.24, 23.4, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -84.19, -4.24, 23.4, 2, 0)
+ MovementLoopAddLocation(NPC, -83.79, -4.24, 30.8, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.79, -4.24, 30.8, 2, 0)
+ MovementLoopAddLocation(NPC, -81.94, -4.24, 28.78, 2, 0)
+ MovementLoopAddLocation(NPC, -75.81, -4.42, 26.35, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -75.81, -4.42, 26.35, 2, 0)
+ MovementLoopAddLocation(NPC, -80.64, -4.24, 26.86, 2, 0)
+ MovementLoopAddLocation(NPC, -85.33, -4.24, 24.85, 2, 0)
+ MovementLoopAddLocation(NPC, -90.24, -4.28, 19.01, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -90.24, -4.28, 19.01, 2, 0)
+ MovementLoopAddLocation(NPC, -87.85, -4.24, 25.15, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -87.85, -4.24, 25.15, 2, 0)
+ MovementLoopAddLocation(NPC, -86.61, -4.24, 19.4, 2, 0)
+ MovementLoopAddLocation(NPC, -79.62, -4.24, 12.38, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -79.62, -4.24, 12.38, 2, 0)
+ MovementLoopAddLocation(NPC, -81.65, -4.24, 13.84, 2, 0)
+ MovementLoopAddLocation(NPC, -83.62, -4.24, 20.29, 2, 0)
+ MovementLoopAddLocation(NPC, -83.76, -4.24, 28.31, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.76, -4.24, 28.31, 2, 0)
+ MovementLoopAddLocation(NPC, -89.81, -4.24, 29.44, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -89.81, -4.24, 29.44, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath3.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath3.lua
new file mode 100755
index 000000000..3bf685714
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath3.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 07:11:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -82.15, -4.24, 45.42, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -82.15, -4.24, 45.42, 2, 0)
+ MovementLoopAddLocation(NPC, -89.7, -4.42, 41.81, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -89.7, -4.42, 41.81, 2, 0)
+ MovementLoopAddLocation(NPC, -83.6, -4.24, 45.72, 2, 0)
+ MovementLoopAddLocation(NPC, -74.27, -4.42, 45.08, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -74.27, -4.42, 45.08, 2, 0)
+ MovementLoopAddLocation(NPC, -80.13, -4.28, 45.03, 2, 0)
+ MovementLoopAddLocation(NPC, -82.81, -4.24, 47.67, 2, 0)
+ MovementLoopAddLocation(NPC, -82.47, -4.24, 60.83, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -82.47, -4.24, 60.83, 2, 0)
+ MovementLoopAddLocation(NPC, -82.23, -4.24, 58.34, 2, 0)
+ MovementLoopAddLocation(NPC, -75.78, -4.25, 55.02, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -75.78, -4.25, 55.02, 2, 0)
+ MovementLoopAddLocation(NPC, -80.8, -4.24, 57.8, 2, 0)
+ MovementLoopAddLocation(NPC, -80.57, -4.42, 68.19, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -80.57, -4.42, 68.19, 2, 0)
+ MovementLoopAddLocation(NPC, -80.21, -4.24, 62.85, 2, 0)
+ MovementLoopAddLocation(NPC, -84.14, -4.24, 41.95, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -84.14, -4.24, 41.95, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath4.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath4.lua
new file mode 100755
index 000000000..e78554f6d
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath4.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 07:11:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -77.85, -4.29, 62.21, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -77.85, -4.29, 62.21, 2, 0)
+ MovementLoopAddLocation(NPC, -72.6, -4.42, 67.17, 2, 0)
+ MovementLoopAddLocation(NPC, -68.36, -4.42, 74.23, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -68.36, -4.42, 74.23, 2, 0)
+ MovementLoopAddLocation(NPC, -72.31, -4.42, 69.09, 2, 0)
+ MovementLoopAddLocation(NPC, -86.31, -4.24, 56.54, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -86.31, -4.24, 56.54, 2, 0)
+ MovementLoopAddLocation(NPC, -79.99, -4.24, 61.65, 2, 0)
+ MovementLoopAddLocation(NPC, -77.69, -4.42, 72.62, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -77.69, -4.42, 72.62, 2, 0)
+ MovementLoopAddLocation(NPC, -73.83, -4.42, 64.21, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -73.83, -4.42, 64.21, 2, 0)
+ MovementLoopAddLocation(NPC, -74.09, -4.42, 70.83, 2, 0)
+ MovementLoopAddLocation(NPC, -72.8, -4.42, 76.81, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -72.8, -4.42, 76.81, 2, 0)
+ MovementLoopAddLocation(NPC, -78.88, -4.24, 61.92, 2, 0)
+ MovementLoopAddLocation(NPC, -76.32, -4.31, 53.17, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -76.32, -4.31, 53.17, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath5.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath5.lua
new file mode 100755
index 000000000..f3b2f6aca
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath5.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath5.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 07:11:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -71.86, -4.42, 73.95, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -71.86, -4.42, 73.95, 2, 0)
+ MovementLoopAddLocation(NPC, -69.51, -4.42, 86.58, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -69.51, -4.42, 86.58, 2, 0)
+ MovementLoopAddLocation(NPC, -71.29, -4.42, 79.04, 2, 0)
+ MovementLoopAddLocation(NPC, -79.43, -4.42, 70.16, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -79.43, -4.42, 70.16, 2, 0)
+ MovementLoopAddLocation(NPC, -72.75, -4.42, 72.22, 2, 0)
+ MovementLoopAddLocation(NPC, -61.2, -4.19, 80.74, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -61.2, -4.19, 80.74, 2, 0)
+ MovementLoopAddLocation(NPC, -69.07, -4.42, 79.25, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -69.07, -4.42, 79.25, 2, 0)
+ MovementLoopAddLocation(NPC, -61.43, -4.22, 81.96, 2, 0)
+ MovementLoopAddLocation(NPC, -53.99, -2.79, 84.6, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -53.99, -2.79, 84.6, 2, 0)
+ MovementLoopAddLocation(NPC, -59.52, -3.85, 83.78, 2, 0)
+ MovementLoopAddLocation(NPC, -68.65, -4.42, 75.45, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -68.65, -4.42, 75.45, 2, 0)
+ MovementLoopAddLocation(NPC, -68.68, -4.42, 81.99, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -68.68, -4.42, 81.99, 2, 0)
+ MovementLoopAddLocation(NPC, -70.72, -4.42, 74, 2, 0)
+ MovementLoopAddLocation(NPC, -75.14, -4.42, 66.68, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -75.14, -4.42, 66.68, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath6.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath6.lua
new file mode 100755
index 000000000..347e63bd5
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath6.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath6.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 08:11:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -84.38, -4.24, 109.5, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -84.38, -4.24, 109.5, 2, 0)
+ MovementLoopAddLocation(NPC, -79.74, -4.24, 107.78, 2, 0)
+ MovementLoopAddLocation(NPC, -74.8, -4.24, 104.19, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -74.8, -4.24, 104.19, 2, 0)
+ MovementLoopAddLocation(NPC, -78.64, -4.24, 107.01, 2, 0)
+ MovementLoopAddLocation(NPC, -86.33, -4.24, 108.63, 2, 0)
+ MovementLoopAddLocation(NPC, -92.7, -4.24, 111.32, 2, 0)
+ MovementLoopAddLocation(NPC, -94.5, -4.3, 113.47, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -94.5, -4.3, 113.47, 2, 0)
+ MovementLoopAddLocation(NPC, -93.16, -4.24, 110.35, 2, 0)
+ MovementLoopAddLocation(NPC, -90.94, -4.42, 101.91, 2, 0)
+ MovementLoopAddLocation(NPC, -89.38, -4.42, 101.71, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -89.38, -4.42, 101.71, 2, 0)
+ MovementLoopAddLocation(NPC, -89.88, -4.42, 102.15, 2, 0)
+ MovementLoopAddLocation(NPC, -89.69, -4.24, 108.86, 2, 0)
+ MovementLoopAddLocation(NPC, -80.9, -4.24, 108.65, 2, 0)
+ MovementLoopAddLocation(NPC, -74.12, -4.42, 111.17, 2, 0)
+ MovementLoopAddLocation(NPC, -71.58, -4.42, 114.69, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -71.58, -4.42, 114.69, 2, 0)
+ MovementLoopAddLocation(NPC, -75.18, -4.42, 111.51, 2, 0)
+ MovementLoopAddLocation(NPC, -79.94, -4.24, 108.73, 2, 0)
+ MovementLoopAddLocation(NPC, -92.17, -4.24, 107.61, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -92.17, -4.24, 107.61, 2, 0)
+ MovementLoopAddLocation(NPC, -89.01, -4.24, 109.33, 2, 0)
+ MovementLoopAddLocation(NPC, -80.21, -4.24, 108.17, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -80.21, -4.24, 108.17, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath7.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath7.lua
new file mode 100755
index 000000000..10b981aca
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath7.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipecrookPath7.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 08:11:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -111.88, -4.23, 109.26, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -111.88, -4.23, 109.26, 2, 0)
+ MovementLoopAddLocation(NPC, -114.55, -4.21, 107.69, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -114.55, -4.21, 107.69, 2, 0)
+ MovementLoopAddLocation(NPC, -109.62, -4.24, 109.14, 2, 0)
+ MovementLoopAddLocation(NPC, -94.82, -4.24, 109.43, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -94.82, -4.24, 109.43, 2, 0)
+ MovementLoopAddLocation(NPC, -98.01, -4.24, 108.9, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -98.01, -4.24, 108.9, 2, 0)
+ MovementLoopAddLocation(NPC, -100.72, -4.41, 105.04, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -100.72, -4.41, 105.04, 2, 0)
+ MovementLoopAddLocation(NPC, -99.36, -4.24, 108.39, 2, 0)
+ MovementLoopAddLocation(NPC, -93.67, -4.24, 111.07, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -93.67, -4.24, 111.07, 2, 0)
+ MovementLoopAddLocation(NPC, -99.3, -4.24, 112.69, 2, 0)
+ MovementLoopAddLocation(NPC, -102.32, -4.42, 117.96, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -102.32, -4.42, 117.96, 2, 0)
+ MovementLoopAddLocation(NPC, -101.23, -4.24, 112.48, 2, 0)
+ MovementLoopAddLocation(NPC, -102.58, -4.24, 111.2, 2, 0)
+ MovementLoopAddLocation(NPC, -113.67, -4.22, 108.44, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -113.67, -4.22, 108.44, 2, 0)
+ MovementLoopAddLocation(NPC, -113.29, -4.22, 110.43, 2, 0)
+ MovementLoopAddLocation(NPC, -115.09, -4.35, 113.3, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -115.09, -4.35, 113.3, 2, 0)
+ MovementLoopAddLocation(NPC, -112.75, -4.23, 110.67, 2, 0)
+ MovementLoopAddLocation(NPC, -100.01, -4.24, 110.09, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -100.01, -4.24, 110.09, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooligan.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooligan.lua
new file mode 100755
index 000000000..575f29b6a
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooligan.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooligan.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ IdleAggressive(NPC)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganHeroic.lua
new file mode 100755
index 000000000..f2f2410b2
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganHeroic.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 03:11:42
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ SpawnSet(NPC, "heroic", 1)
+ AddTimer(NPC,MakeRandomInt(3500,10000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+ if not IsInCombat(NPC) and GetRunbackDistance(NPC)<2 then
+ local choice = MakeRandomInt(1,5)
+ if choice == 1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice == 2 then
+ PlayFlavor(NPC,"","","brandish",0,0)
+ elseif choice == 3 then
+ PlayFlavor(NPC,"","","tapfoot",0,0)
+ elseif choice == 4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice == 5 then
+ PlayFlavor(NPC,"","","ponder",0,0)
+ end
+end
+ AddTimer(NPC,MakeRandomInt(6500,12000),"EmoteLoop")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath1.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath1.lua
new file mode 100755
index 000000000..1ebd28161
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath1.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 04:11:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -83.41, -5.02, -13.62, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.41, -5.02, -13.62, 2, 0)
+ MovementLoopAddLocation(NPC, -90.06, -5.29, -19.28, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -90.06, -5.29, -19.28, 2, 0)
+ MovementLoopAddLocation(NPC, -83.67, -4.83, -12.07, 2, 0)
+ MovementLoopAddLocation(NPC, -83.96, -4.24, 3.98, 2, 0)
+ MovementLoopAddLocation(NPC, -79.49, -4.24, 8.29, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -79.49, -4.24, 8.29, 2, 0)
+ MovementLoopAddLocation(NPC, -82.79, -4.24, 6.55, 2, 0)
+ MovementLoopAddLocation(NPC, -88.38, -4.26, 10.9, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -88.38, -4.26, 10.9, 2, 0)
+ MovementLoopAddLocation(NPC, -85.52, -4.24, 1.29, 2, 0)
+ MovementLoopAddLocation(NPC, -83.59, -4.73, -11.24, 2, 0)
+ MovementLoopAddLocation(NPC, -81.12, -4.99, -11.41, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -81.12, -4.99, -11.41, 2, 0)
+ MovementLoopAddLocation(NPC, -82.85, -4.7, -10.62, 2, 0)
+ MovementLoopAddLocation(NPC, -83.92, -4.28, -4.22, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.92, -4.28, -4.22, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath2.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath2.lua
new file mode 100755
index 000000000..150f352f3
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath2.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 04:11:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -84.19, -4.24, 23.4, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -84.19, -4.24, 23.4, 2, 0)
+ MovementLoopAddLocation(NPC, -83.79, -4.24, 30.8, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.79, -4.24, 30.8, 2, 0)
+ MovementLoopAddLocation(NPC, -81.94, -4.24, 28.78, 2, 0)
+ MovementLoopAddLocation(NPC, -75.81, -4.42, 26.35, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -75.81, -4.42, 26.35, 2, 0)
+ MovementLoopAddLocation(NPC, -80.64, -4.24, 26.86, 2, 0)
+ MovementLoopAddLocation(NPC, -85.33, -4.24, 24.85, 2, 0)
+ MovementLoopAddLocation(NPC, -90.24, -4.28, 19.01, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -90.24, -4.28, 19.01, 2, 0)
+ MovementLoopAddLocation(NPC, -87.85, -4.24, 25.15, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -87.85, -4.24, 25.15, 2, 0)
+ MovementLoopAddLocation(NPC, -86.61, -4.24, 19.4, 2, 0)
+ MovementLoopAddLocation(NPC, -79.62, -4.24, 12.38, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -79.62, -4.24, 12.38, 2, 0)
+ MovementLoopAddLocation(NPC, -81.65, -4.24, 13.84, 2, 0)
+ MovementLoopAddLocation(NPC, -83.62, -4.24, 20.29, 2, 0)
+ MovementLoopAddLocation(NPC, -83.76, -4.24, 28.31, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -83.76, -4.24, 28.31, 2, 0)
+ MovementLoopAddLocation(NPC, -89.81, -4.24, 29.44, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -89.81, -4.24, 29.44, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath3.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath3.lua
new file mode 100755
index 000000000..9d2ede389
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath3.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 07:11:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -82.15, -4.24, 45.42, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -82.15, -4.24, 45.42, 2, 0)
+ MovementLoopAddLocation(NPC, -89.7, -4.42, 41.81, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -89.7, -4.42, 41.81, 2, 0)
+ MovementLoopAddLocation(NPC, -83.6, -4.24, 45.72, 2, 0)
+ MovementLoopAddLocation(NPC, -74.27, -4.42, 45.08, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -74.27, -4.42, 45.08, 2, 0)
+ MovementLoopAddLocation(NPC, -80.13, -4.28, 45.03, 2, 0)
+ MovementLoopAddLocation(NPC, -82.81, -4.24, 47.67, 2, 0)
+ MovementLoopAddLocation(NPC, -82.47, -4.24, 60.83, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -82.47, -4.24, 60.83, 2, 0)
+ MovementLoopAddLocation(NPC, -82.23, -4.24, 58.34, 2, 0)
+ MovementLoopAddLocation(NPC, -75.78, -4.25, 55.02, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -75.78, -4.25, 55.02, 2, 0)
+ MovementLoopAddLocation(NPC, -80.8, -4.24, 57.8, 2, 0)
+ MovementLoopAddLocation(NPC, -80.57, -4.42, 68.19, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -80.57, -4.42, 68.19, 2, 0)
+ MovementLoopAddLocation(NPC, -80.21, -4.24, 62.85, 2, 0)
+ MovementLoopAddLocation(NPC, -84.14, -4.24, 41.95, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -84.14, -4.24, 41.95, 2, 0)
+end
+
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath4.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath4.lua
new file mode 100755
index 000000000..a5ae8045f
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath4.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 07:11:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -77.85, -4.29, 62.21, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -77.85, -4.29, 62.21, 2, 0)
+ MovementLoopAddLocation(NPC, -72.6, -4.42, 67.17, 2, 0)
+ MovementLoopAddLocation(NPC, -68.36, -4.42, 74.23, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -68.36, -4.42, 74.23, 2, 0)
+ MovementLoopAddLocation(NPC, -72.31, -4.42, 69.09, 2, 0)
+ MovementLoopAddLocation(NPC, -86.31, -4.24, 56.54, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -86.31, -4.24, 56.54, 2, 0)
+ MovementLoopAddLocation(NPC, -79.99, -4.24, 61.65, 2, 0)
+ MovementLoopAddLocation(NPC, -77.69, -4.42, 72.62, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -77.69, -4.42, 72.62, 2, 0)
+ MovementLoopAddLocation(NPC, -73.83, -4.42, 64.21, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -73.83, -4.42, 64.21, 2, 0)
+ MovementLoopAddLocation(NPC, -74.09, -4.42, 70.83, 2, 0)
+ MovementLoopAddLocation(NPC, -72.8, -4.42, 76.81, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -72.8, -4.42, 76.81, 2, 0)
+ MovementLoopAddLocation(NPC, -78.88, -4.24, 61.92, 2, 0)
+ MovementLoopAddLocation(NPC, -76.32, -4.31, 53.17, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -76.32, -4.31, 53.17, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath5.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath5.lua
new file mode 100755
index 000000000..80a0e0860
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath5.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath5.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 07:11:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -71.86, -4.42, 73.95, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -71.86, -4.42, 73.95, 2, 0)
+ MovementLoopAddLocation(NPC, -69.51, -4.42, 86.58, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -69.51, -4.42, 86.58, 2, 0)
+ MovementLoopAddLocation(NPC, -71.29, -4.42, 79.04, 2, 0)
+ MovementLoopAddLocation(NPC, -79.43, -4.42, 70.16, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -79.43, -4.42, 70.16, 2, 0)
+ MovementLoopAddLocation(NPC, -72.75, -4.42, 72.22, 2, 0)
+ MovementLoopAddLocation(NPC, -61.2, -4.19, 80.74, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -61.2, -4.19, 80.74, 2, 0)
+ MovementLoopAddLocation(NPC, -69.07, -4.42, 79.25, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -69.07, -4.42, 79.25, 2, 0)
+ MovementLoopAddLocation(NPC, -61.43, -4.22, 81.96, 2, 0)
+ MovementLoopAddLocation(NPC, -53.99, -2.79, 84.6, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -53.99, -2.79, 84.6, 2, 0)
+ MovementLoopAddLocation(NPC, -59.52, -3.85, 83.78, 2, 0)
+ MovementLoopAddLocation(NPC, -68.65, -4.42, 75.45, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -68.65, -4.42, 75.45, 2, 0)
+ MovementLoopAddLocation(NPC, -68.68, -4.42, 81.99, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -68.68, -4.42, 81.99, 2, 0)
+ MovementLoopAddLocation(NPC, -70.72, -4.42, 74, 2, 0)
+ MovementLoopAddLocation(NPC, -75.14, -4.42, 66.68, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -75.14, -4.42, 66.68, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath6.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath6.lua
new file mode 100755
index 000000000..4b1fc986b
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath6.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath6.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 08:11:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -84.38, -4.24, 109.5, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -84.38, -4.24, 109.5, 2, 0)
+ MovementLoopAddLocation(NPC, -79.74, -4.24, 107.78, 2, 0)
+ MovementLoopAddLocation(NPC, -74.8, -4.24, 104.19, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -74.8, -4.24, 104.19, 2, 0)
+ MovementLoopAddLocation(NPC, -78.64, -4.24, 107.01, 2, 0)
+ MovementLoopAddLocation(NPC, -86.33, -4.24, 108.63, 2, 0)
+ MovementLoopAddLocation(NPC, -92.7, -4.24, 111.32, 2, 0)
+ MovementLoopAddLocation(NPC, -94.5, -4.3, 113.47, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -94.5, -4.3, 113.47, 2, 0)
+ MovementLoopAddLocation(NPC, -93.16, -4.24, 110.35, 2, 0)
+ MovementLoopAddLocation(NPC, -90.94, -4.42, 101.91, 2, 0)
+ MovementLoopAddLocation(NPC, -89.38, -4.42, 101.71, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -89.38, -4.42, 101.71, 2, 0)
+ MovementLoopAddLocation(NPC, -89.88, -4.42, 102.15, 2, 0)
+ MovementLoopAddLocation(NPC, -89.69, -4.24, 108.86, 2, 0)
+ MovementLoopAddLocation(NPC, -80.9, -4.24, 108.65, 2, 0)
+ MovementLoopAddLocation(NPC, -74.12, -4.42, 111.17, 2, 0)
+ MovementLoopAddLocation(NPC, -71.58, -4.42, 114.69, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -71.58, -4.42, 114.69, 2, 0)
+ MovementLoopAddLocation(NPC, -75.18, -4.42, 111.51, 2, 0)
+ MovementLoopAddLocation(NPC, -79.94, -4.24, 108.73, 2, 0)
+ MovementLoopAddLocation(NPC, -92.17, -4.24, 107.61, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -92.17, -4.24, 107.61, 2, 0)
+ MovementLoopAddLocation(NPC, -89.01, -4.24, 109.33, 2, 0)
+ MovementLoopAddLocation(NPC, -80.21, -4.24, 108.17, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -80.21, -4.24, 108.17, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath7.lua b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath7.lua
new file mode 100755
index 000000000..5a75b41c1
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath7.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/aGuttersnipehooliganPath7.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.10 08:11:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/Guttersnipe.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -111.88, -4.23, 109.26, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -111.88, -4.23, 109.26, 2, 0)
+ MovementLoopAddLocation(NPC, -114.55, -4.21, 107.69, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -114.55, -4.21, 107.69, 2, 0)
+ MovementLoopAddLocation(NPC, -109.62, -4.24, 109.14, 2, 0)
+ MovementLoopAddLocation(NPC, -94.82, -4.24, 109.43, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -94.82, -4.24, 109.43, 2, 0)
+ MovementLoopAddLocation(NPC, -98.01, -4.24, 108.9, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -98.01, -4.24, 108.9, 2, 0)
+ MovementLoopAddLocation(NPC, -100.72, -4.41, 105.04, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -100.72, -4.41, 105.04, 2, 0)
+ MovementLoopAddLocation(NPC, -99.36, -4.24, 108.39, 2, 0)
+ MovementLoopAddLocation(NPC, -93.67, -4.24, 111.07, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -93.67, -4.24, 111.07, 2, 0)
+ MovementLoopAddLocation(NPC, -99.3, -4.24, 112.69, 2, 0)
+ MovementLoopAddLocation(NPC, -102.32, -4.42, 117.96, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -102.32, -4.42, 117.96, 2, 0)
+ MovementLoopAddLocation(NPC, -101.23, -4.24, 112.48, 2, 0)
+ MovementLoopAddLocation(NPC, -102.58, -4.24, 111.2, 2, 0)
+ MovementLoopAddLocation(NPC, -113.67, -4.22, 108.44, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -113.67, -4.22, 108.44, 2, 0)
+ MovementLoopAddLocation(NPC, -113.29, -4.22, 110.43, 2, 0)
+ MovementLoopAddLocation(NPC, -115.09, -4.35, 113.3, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -115.09, -4.35, 113.3, 2, 0)
+ MovementLoopAddLocation(NPC, -112.75, -4.23, 110.67, 2, 0)
+ MovementLoopAddLocation(NPC, -100.01, -4.24, 110.09, 2, math.random(8,15))
+ MovementLoopAddLocation(NPC, -100.01, -4.24, 110.09, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/adunescorpion.lua b/server/SpawnScripts/TheSprawl_Classic/adunescorpion.lua
new file mode 100755
index 000000000..9c002050e
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/adunescorpion.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/adunescorpion.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -5, 5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/adwarfagitator.lua b/server/SpawnScripts/TheSprawl_Classic/adwarfagitator.lua
new file mode 100755
index 000000000..b140dd4e0
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/adwarfagitator.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/adwarfagitator.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.20 07:11:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ dwarf(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/agravelviper.lua b/server/SpawnScripts/TheSprawl_Classic/agravelviper.lua
new file mode 100755
index 000000000..3ed9b9712
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/agravelviper.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/agravelviper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -5, 5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/ahalflingupstart.lua b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstart.lua
new file mode 100755
index 000000000..7740cc907
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstart.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/ahalflingupstart.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.20 07:11:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfling(NPC)
+ IdleAlert(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartHeroic.lua
new file mode 100755
index 000000000..be01fe41d
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartHeroic.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/ahalflingupstartHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.23 05:11:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfling(NPC)
+ SpawnSet(NPC, "heroic", 1)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath1.lua b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath1.lua
new file mode 100755
index 000000000..bc3c46dfa
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath1.lua
@@ -0,0 +1,69 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/ahalflingupstartPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.24 10:11:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfling(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -14.01, -2.53, -2.99, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -14.01, -2.53, -2.99, 2, 0)
+ MovementLoopAddLocation(NPC, -14.69, -2.57, -6.51, 2, 0)
+ MovementLoopAddLocation(NPC, -11.7, -2.67, -12.15, 2, 0)
+ MovementLoopAddLocation(NPC, -10.44, -2.67, -16.17, 2, 0)
+ MovementLoopAddLocation(NPC, -7.71, -2.56, -18.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2.21, -2.62, -18.75, 2, 0)
+ MovementLoopAddLocation(NPC, 0.01, -2.66, -18.87, 2, 0)
+ MovementLoopAddLocation(NPC, 1.12, -2.67, -18.62, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, 1.12, -2.67, -18.62, 2, 0)
+ MovementLoopAddLocation(NPC, 0.34, -2.67, -18.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2.67, -2.63, -18.65, 2, 0)
+ MovementLoopAddLocation(NPC, -6.95, -2.67, -16.82, 2, 0)
+ MovementLoopAddLocation(NPC, -14.24, -2.67, -8.71, 2, 0)
+ MovementLoopAddLocation(NPC, -12.96, -2.53, 1.37, 2, 0)
+ MovementLoopAddLocation(NPC, -12.26, -2.53, 9.5, 2, 0)
+ MovementLoopAddLocation(NPC, -9.48, -2.53, 11.66, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -9.48, -2.53, 11.66, 2, 0)
+ MovementLoopAddLocation(NPC, -12.92, -2.53, 8.84, 2, 0)
+ MovementLoopAddLocation(NPC, -15.2, -2.53, -5.31, 2, 0)
+ MovementLoopAddLocation(NPC, -18.2, -2.67, -9.23, 2, 0)
+ MovementLoopAddLocation(NPC, -18.2, -2.67, -9.23, 2, 0)
+ MovementLoopAddLocation(NPC, -15.82, -2.64, -6.74, 2, 0)
+ MovementLoopAddLocation(NPC, -12.68, -2.53, 3.75, 2, 0)
+ MovementLoopAddLocation(NPC, -10.31, -2.53, 5.49, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -10.31, -2.53, 5.49, 2, 0)
+ MovementLoopAddLocation(NPC, -11.58, -2.53, 5.39, 2, 0)
+ MovementLoopAddLocation(NPC, -16.09, -2.53, 12.84, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -16.09, -2.53, 12.84, 2, 0)
+ MovementLoopAddLocation(NPC, -13.95, -2.53, 8.85, 2, 0)
+ MovementLoopAddLocation(NPC, -13.7, -2.53, 5.33, 2, 0)
+ MovementLoopAddLocation(NPC, -16.94, -2.61, 3.88, 2, 0)
+ MovementLoopAddLocation(NPC, -21.03, -2.67, 4.08, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -21.03, -2.67, 4.08, 2, 0)
+ MovementLoopAddLocation(NPC, -16.68, -2.6, 4.12, 2, 0)
+ MovementLoopAddLocation(NPC, -8.41, -2.67, -0.5, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -8.41, -2.67, -0.5, 2, 0)
+ MovementLoopAddLocation(NPC, -12.58, -2.53, 0.39, 2, 0)
+ MovementLoopAddLocation(NPC, -15.15, -2.67, -7.13, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -15.15, -2.67, -7.13, 2, 0)
+ MovementLoopAddLocation(NPC, -14.17, -2.53, -0.48, 2, 0)
+ MovementLoopAddLocation(NPC, -12.4, -2.53, 4.21, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -12.4, -2.53, 4.21, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath2.lua b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath2.lua
new file mode 100755
index 000000000..bb598dced
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath2.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/ahalflingupstartPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.24 10:11:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfling(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -4, -2.67, 14.76, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -4, -2.67, 14.76, 2, 0)
+ MovementLoopAddLocation(NPC, 1.24, -2.67, 16.52, 2, 0)
+ MovementLoopAddLocation(NPC, 4.67, -2.67, 19.55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 4.67, -2.67, 19.55, 2, 0)
+ MovementLoopAddLocation(NPC, -1, -2.67, 15.56, 2, 0)
+ MovementLoopAddLocation(NPC, -5.77, -2.66, 8.87, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -5.77, -2.66, 8.87, 2, 0)
+ MovementLoopAddLocation(NPC, -5.88, -2.66, 12.08, 2, 0)
+ MovementLoopAddLocation(NPC, -7.83, -2.67, 18.73, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -7.83, -2.67, 18.73, 2, 0)
+ MovementLoopAddLocation(NPC, -6.4, -2.67, 14.56, 2, 0)
+ MovementLoopAddLocation(NPC, -4.63, -2.67, 6.19, 2, 0)
+ MovementLoopAddLocation(NPC, -6.72, -2.67, 1.85, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -6.72, -2.67, 1.85, 2, 0)
+ MovementLoopAddLocation(NPC, -3.95, -2.67, 6.95, 2, 0)
+ MovementLoopAddLocation(NPC, -3.13, -2.67, 12.87, 2, 0)
+ MovementLoopAddLocation(NPC, 2.05, -2.67, 16.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 2.05, -2.67, 16.63, 2, 0)
+ MovementLoopAddLocation(NPC, 1.74, -2.67, 22.34, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.74, -2.67, 22.34, 2, 0)
+ MovementLoopAddLocation(NPC, 1.54, -2.67, 11.57, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.54, -2.67, 11.57, 2, 0)
+ MovementLoopAddLocation(NPC, 0.3, -2.67, 15.88, 2, 0)
+ MovementLoopAddLocation(NPC, -9.22, -2.63, 16.85, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -9.22, -2.63, 16.85, 2, 0)
+ MovementLoopAddLocation(NPC, -4.07, -2.67, 16.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1.48, -2.67, 17.73, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.48, -2.67, 17.73, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath3.lua b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath3.lua
new file mode 100755
index 000000000..4a0b30e40
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/ahalflingupstartPath3.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/ahalflingupstartPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.24 10:11:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfling(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -14.74, -2.53, 16.9, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -14.74, -2.53, 16.9, 2, 0)
+ MovementLoopAddLocation(NPC, -18.45, -2.53, 19.78, 2, 0)
+ MovementLoopAddLocation(NPC, -22.74, -2.53, 24.09, 2, 0)
+ MovementLoopAddLocation(NPC, -22.87, -2.61, 30.96, 2, 0)
+ MovementLoopAddLocation(NPC, -20.91, -2.57, 35.81, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -20.91, -2.57, 35.81, 2, 0)
+ MovementLoopAddLocation(NPC, -23.44, -2.67, 31.46, 2, 0)
+ MovementLoopAddLocation(NPC, -24.44, -2.53, 26.55, 2, 0)
+ MovementLoopAddLocation(NPC, -30.17, -2.67, 24.49, 2, 0)
+ MovementLoopAddLocation(NPC, -40.85, -2.65, 20.83, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -40.85, -2.65, 20.83, 2, 0)
+ MovementLoopAddLocation(NPC, -35.18, -2.67, 22.51, 2, 0)
+ MovementLoopAddLocation(NPC, -25.51, -2.53, 23.44, 2, 0)
+ MovementLoopAddLocation(NPC, -19, -2.53, 20.47, 2, 0)
+ MovementLoopAddLocation(NPC, -15.49, -2.53, 14.54, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -15.49, -2.53, 14.54, 2, 0)
+ MovementLoopAddLocation(NPC, -15.12, -2.53, 17.62, 2, 0)
+ MovementLoopAddLocation(NPC, -12.78, -2.67, 21.84, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -12.78, -2.67, 21.84, 2, 0)
+ MovementLoopAddLocation(NPC, -15.77, -2.53, 18.11, 2, 0)
+ MovementLoopAddLocation(NPC, -13.35, -2.53, 12.57, 2, 0)
+ MovementLoopAddLocation(NPC, -9.82, -2.53, 8.48, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -9.82, -2.53, 8.48, 2, 0)
+ MovementLoopAddLocation(NPC, -12.45, -2.53, 10.42, 2, 0)
+ MovementLoopAddLocation(NPC, -16.5, -2.53, 16.93, 2, 0)
+ MovementLoopAddLocation(NPC, -21.29, -2.53, 21.15, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -21.29, -2.53, 21.15, 2, 0)
+ MovementLoopAddLocation(NPC, -17.87, -2.53, 17.75, 2, 0)
+ MovementLoopAddLocation(NPC, -10.57, -2.56, 15.86, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -10.57, -2.56, 15.86, 2, 0)
+end
diff --git a/server/SpawnScripts/TheSprawl_Classic/ashoresideasp.lua b/server/SpawnScripts/TheSprawl_Classic/ashoresideasp.lua
new file mode 100755
index 000000000..27d1f4189
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/ashoresideasp.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/ashoresideasp.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -5, 5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awilddog.lua b/server/SpawnScripts/TheSprawl_Classic/awilddog.lua
new file mode 100755
index 000000000..b8fd2803e
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awilddog.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awilddog.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -5, 5, 2, 8, 15)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awilddogPath1.lua b/server/SpawnScripts/TheSprawl_Classic/awilddogPath1.lua
new file mode 100755
index 000000000..420399c1c
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awilddogPath1.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awilddogPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.26 09:11:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -45.62, -2.67, 91.25, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -45.62, -2.67, 91.25, 2, 0)
+ MovementLoopAddLocation(NPC, -38.28, -2.61, 91.58, 2, 0)
+ MovementLoopAddLocation(NPC, -28.85, -2.47, 87.61, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -28.85, -2.47, 87.61, 2, 0)
+ MovementLoopAddLocation(NPC, -35.43, -2.52, 88.5, 2, 0)
+ MovementLoopAddLocation(NPC, -44.15, -2.67, 84.27, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -44.15, -2.67, 84.27, 2, 0)
+ MovementLoopAddLocation(NPC, -40.79, -2.52, 88.33, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -40.79, -2.52, 88.33, 2, 0)
+ MovementLoopAddLocation(NPC, -33.55, -2.66, 101.9, 2, 0)
+ MovementLoopAddLocation(NPC, -35.25, -2.67, 98.71, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -35.25, -2.67, 98.71, 2, 0)
+ MovementLoopAddLocation(NPC, -35.39, -2.54, 90.62, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -35.39, -2.54, 90.62, 2, 0)
+ MovementLoopAddLocation(NPC, -41.91, -2.52, 86.23, 2, 0)
+ MovementLoopAddLocation(NPC, -44.05, -2.6, 80.34, 2, 0)
+ MovementLoopAddLocation(NPC, -43.5, -2.58, 75.6, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -43.5, -2.58, 75.6, 2, 0)
+ MovementLoopAddLocation(NPC, -42.87, -2.65, 83.59, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -42.87, -2.65, 83.59, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awilddogPath2.lua b/server/SpawnScripts/TheSprawl_Classic/awilddogPath2.lua
new file mode 100755
index 000000000..0a0f62934
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awilddogPath2.lua
@@ -0,0 +1,65 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awilddogPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.26 09:11:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -9.22, -1.64, 76.17, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -9.22, -1.64, 76.17, 2, 0)
+ MovementLoopAddLocation(NPC, -7.89, -1.64, 70.42, 2, 0)
+ MovementLoopAddLocation(NPC, -8.24, -2.17, 66.23, 2, 0)
+ MovementLoopAddLocation(NPC, -8.18, -2.52, 63.68, 2, 0)
+ MovementLoopAddLocation(NPC, -7.57, -2.66, 60.06, 2, 0)
+ MovementLoopAddLocation(NPC, -10.74, -2.52, 54.67, 2, 0)
+ MovementLoopAddLocation(NPC, -12.18, -2.52, 53.05, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -12.18, -2.52, 53.05, 2, 0)
+ MovementLoopAddLocation(NPC, -9.63, -2.52, 55.28, 2, 0)
+ MovementLoopAddLocation(NPC, -8.48, -2.56, 57.9, 2, 0)
+ MovementLoopAddLocation(NPC, -8.34, -2.45, 64.15, 2, 0)
+ MovementLoopAddLocation(NPC, -7.74, -1.64, 73.05, 2, 0)
+ MovementLoopAddLocation(NPC, -11.32, -1.54, 78.58, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -11.32, -1.54, 78.58, 2, 0)
+ MovementLoopAddLocation(NPC, -9.2, -1.64, 77.18, 2, 0)
+ MovementLoopAddLocation(NPC, -3.97, -1.51, 77.5, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -3.97, -1.51, 77.5, 2, 0)
+ MovementLoopAddLocation(NPC, -8.52, -1.64, 77.61, 2, 0)
+ MovementLoopAddLocation(NPC, -13.13, -1.57, 80.19, 2, 0)
+ MovementLoopAddLocation(NPC, -19.57, -2.22, 83.37, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -19.57, -2.22, 83.37, 2, 0)
+ MovementLoopAddLocation(NPC, -13.24, -1.57, 80.44, 2, 0)
+ MovementLoopAddLocation(NPC, -8.81, -1.64, 74.49, 2, 0)
+ MovementLoopAddLocation(NPC, -8.43, -1.64, 72.53, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -8.43, -1.64, 72.53, 2, 0)
+ MovementLoopAddLocation(NPC, -6.35, -1.64, 75.92, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -6.35, -1.64, 75.92, 2, 0)
+ MovementLoopAddLocation(NPC, -7.51, -1.89, 68.01, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -7.51, -1.89, 68.01, 2, 0)
+ MovementLoopAddLocation(NPC, -7.96, -1.64, 74.98, 2, 0)
+ MovementLoopAddLocation(NPC, -13.25, -1.57, 79.55, 2, 0)
+ MovementLoopAddLocation(NPC, -21.85, -2.42, 83.5, 2, 0)
+ MovementLoopAddLocation(NPC, -27.53, -2.47, 86.98, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -27.53, -2.47, 86.98, 2, 0)
+ MovementLoopAddLocation(NPC, -20.81, -2.31, 85.58, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -20.81, -2.31, 85.58, 2, 0)
+ MovementLoopAddLocation(NPC, -25.42, -2.47, 85.52, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -25.42, -2.47, 85.52, 2, 0)
+ MovementLoopAddLocation(NPC, -14.14, -1.6, 81.65, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/awilddogPath3.lua b/server/SpawnScripts/TheSprawl_Classic/awilddogPath3.lua
new file mode 100755
index 000000000..68f1a953e
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awilddogPath3.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awilddogPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.26 09:11:23
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -42.02, -2.67, 65.81, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -42.02, -2.67, 65.81, 2, 0)
+ MovementLoopAddLocation(NPC, -39.62, -2.67, 61.84, 2, 0)
+ MovementLoopAddLocation(NPC, -30.28, -2.67, 51.46, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -30.28, -2.67, 51.46, 2, 0)
+ MovementLoopAddLocation(NPC, -33.06, -2.67, 53.53, 2, 0)
+ MovementLoopAddLocation(NPC, -39.45, -2.67, 62.01, 2, 0)
+ MovementLoopAddLocation(NPC, -39.69, -2.67, 62.33, 2, 0)
+ MovementLoopAddLocation(NPC, -43.33, -2.66, 68.16, 2, 0)
+ MovementLoopAddLocation(NPC, -43.48, -2.62, 74.44, 2, 0)
+ MovementLoopAddLocation(NPC, -44.54, -2.53, 78.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -44.54, -2.53, 78.63, 2, 0)
+ MovementLoopAddLocation(NPC, -43.19, -2.67, 71.09, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -43.19, -2.67, 71.09, 2, 0)
+ MovementLoopAddLocation(NPC, -43.31, -2.6, 75.43, 2, 0)
+ MovementLoopAddLocation(NPC, -47.72, -2.53, 80.87, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -47.72, -2.53, 80.87, 2, 0)
+ MovementLoopAddLocation(NPC, -43.59, -2.57, 80.01, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -43.59, -2.57, 80.01, 2, 0)
+ MovementLoopAddLocation(NPC, -41.78, -2.55, 87.8, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -41.78, -2.55, 87.8, 2, 0)
+ MovementLoopAddLocation(NPC, -44.75, -2.67, 85.87, 2, 0)
+ MovementLoopAddLocation(NPC, -43.83, -2.53, 76.93, 2, 0)
+ MovementLoopAddLocation(NPC, -42.95, -2.67, 67.84, 2, 0)
+ MovementLoopAddLocation(NPC, -39.11, -2.66, 61.04, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -39.11, -2.66, 61.04, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awilddogStatic.lua b/server/SpawnScripts/TheSprawl_Classic/awilddogStatic.lua
new file mode 100755
index 000000000..9a9c30d1f
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awilddogStatic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awilddogStatic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.26 09:11:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awilddogpup.lua b/server/SpawnScripts/TheSprawl_Classic/awilddogpup.lua
new file mode 100755
index 000000000..660249598
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awilddogpup.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awilddogpup.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.08 08:11:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awoodelfscout.lua b/server/SpawnScripts/TheSprawl_Classic/awoodelfscout.lua
new file mode 100755
index 000000000..8ee622700
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awoodelfscout.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awoodelfscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.20 07:11:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ woodelf(NPC)
+ IdleAlert(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutHeroic.lua b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutHeroic.lua
new file mode 100755
index 000000000..a97cd4563
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutHeroic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awoodelfscoutHeroic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.23 05:11:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ woodelf(NPC)
+ SpawnSet(NPC, "heroic", 1)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath1.lua b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath1.lua
new file mode 100755
index 000000000..35389f41b
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath1.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awoodelfscoutPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.24 09:11:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ woodelf(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -14.01, -2.53, -2.99, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -14.01, -2.53, -2.99, 2, 0)
+ MovementLoopAddLocation(NPC, -14.69, -2.57, -6.51, 2, 0)
+ MovementLoopAddLocation(NPC, -11.7, -2.67, -12.15, 2, 0)
+ MovementLoopAddLocation(NPC, -10.44, -2.67, -16.17, 2, 0)
+ MovementLoopAddLocation(NPC, -7.71, -2.56, -18.81, 2, 0)
+ MovementLoopAddLocation(NPC, -2.21, -2.62, -18.75, 2, 0)
+ MovementLoopAddLocation(NPC, 0.01, -2.66, -18.87, 2, 0)
+ MovementLoopAddLocation(NPC, 1.12, -2.67, -18.62, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, 1.12, -2.67, -18.62, 2, 0)
+ MovementLoopAddLocation(NPC, 0.34, -2.67, -18.85, 2, 0)
+ MovementLoopAddLocation(NPC, -2.67, -2.63, -18.65, 2, 0)
+ MovementLoopAddLocation(NPC, -6.95, -2.67, -16.82, 2, 0)
+ MovementLoopAddLocation(NPC, -14.24, -2.67, -8.71, 2, 0)
+ MovementLoopAddLocation(NPC, -12.96, -2.53, 1.37, 2, 0)
+ MovementLoopAddLocation(NPC, -12.26, -2.53, 9.5, 2, 0)
+ MovementLoopAddLocation(NPC, -9.48, -2.53, 11.66, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -9.48, -2.53, 11.66, 2, 0)
+ MovementLoopAddLocation(NPC, -12.92, -2.53, 8.84, 2, 0)
+ MovementLoopAddLocation(NPC, -15.2, -2.53, -5.31, 2, 0)
+ MovementLoopAddLocation(NPC, -18.2, -2.67, -9.23, 2, 0)
+ MovementLoopAddLocation(NPC, -18.2, -2.67, -9.23, 2, 0)
+ MovementLoopAddLocation(NPC, -15.82, -2.64, -6.74, 2, 0)
+ MovementLoopAddLocation(NPC, -12.68, -2.53, 3.75, 2, 0)
+ MovementLoopAddLocation(NPC, -10.31, -2.53, 5.49, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -10.31, -2.53, 5.49, 2, 0)
+ MovementLoopAddLocation(NPC, -11.58, -2.53, 5.39, 2, 0)
+ MovementLoopAddLocation(NPC, -16.09, -2.53, 12.84, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -16.09, -2.53, 12.84, 2, 0)
+ MovementLoopAddLocation(NPC, -13.95, -2.53, 8.85, 2, 0)
+ MovementLoopAddLocation(NPC, -13.7, -2.53, 5.33, 2, 0)
+ MovementLoopAddLocation(NPC, -16.94, -2.61, 3.88, 2, 0)
+ MovementLoopAddLocation(NPC, -21.03, -2.67, 4.08, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -21.03, -2.67, 4.08, 2, 0)
+ MovementLoopAddLocation(NPC, -16.68, -2.6, 4.12, 2, 0)
+ MovementLoopAddLocation(NPC, -8.41, -2.67, -0.5, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -8.41, -2.67, -0.5, 2, 0)
+ MovementLoopAddLocation(NPC, -12.58, -2.53, 0.39, 2, 0)
+ MovementLoopAddLocation(NPC, -15.15, -2.67, -7.13, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -15.15, -2.67, -7.13, 2, 0)
+ MovementLoopAddLocation(NPC, -14.17, -2.53, -0.48, 2, 0)
+ MovementLoopAddLocation(NPC, -12.4, -2.53, 4.21, 2, MakeRandomInt(8,10))
+ MovementLoopAddLocation(NPC, -12.4, -2.53, 4.21, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath2.lua b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath2.lua
new file mode 100755
index 000000000..d91bd8a29
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath2.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awoodelfscoutPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.24 10:11:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ woodelf(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -4, -2.67, 14.76, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -4, -2.67, 14.76, 2, 0)
+ MovementLoopAddLocation(NPC, 1.24, -2.67, 16.52, 2, 0)
+ MovementLoopAddLocation(NPC, 4.67, -2.67, 19.55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 4.67, -2.67, 19.55, 2, 0)
+ MovementLoopAddLocation(NPC, -1, -2.67, 15.56, 2, 0)
+ MovementLoopAddLocation(NPC, -5.77, -2.66, 8.87, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -5.77, -2.66, 8.87, 2, 0)
+ MovementLoopAddLocation(NPC, -5.88, -2.66, 12.08, 2, 0)
+ MovementLoopAddLocation(NPC, -7.83, -2.67, 18.73, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -7.83, -2.67, 18.73, 2, 0)
+ MovementLoopAddLocation(NPC, -6.4, -2.67, 14.56, 2, 0)
+ MovementLoopAddLocation(NPC, -4.63, -2.67, 6.19, 2, 0)
+ MovementLoopAddLocation(NPC, -6.72, -2.67, 1.85, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -6.72, -2.67, 1.85, 2, 0)
+ MovementLoopAddLocation(NPC, -3.95, -2.67, 6.95, 2, 0)
+ MovementLoopAddLocation(NPC, -3.13, -2.67, 12.87, 2, 0)
+ MovementLoopAddLocation(NPC, 2.05, -2.67, 16.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 2.05, -2.67, 16.63, 2, 0)
+ MovementLoopAddLocation(NPC, 1.74, -2.67, 22.34, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.74, -2.67, 22.34, 2, 0)
+ MovementLoopAddLocation(NPC, 1.54, -2.67, 11.57, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.54, -2.67, 11.57, 2, 0)
+ MovementLoopAddLocation(NPC, 0.3, -2.67, 15.88, 2, 0)
+ MovementLoopAddLocation(NPC, -9.22, -2.63, 16.85, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -9.22, -2.63, 16.85, 2, 0)
+ MovementLoopAddLocation(NPC, -4.07, -2.67, 16.3, 2, 0)
+ MovementLoopAddLocation(NPC, 1.48, -2.67, 17.73, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 1.48, -2.67, 17.73, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath3.lua b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath3.lua
new file mode 100755
index 000000000..9e28efd03
--- /dev/null
+++ b/server/SpawnScripts/TheSprawl_Classic/awoodelfscoutPath3.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/TheSprawl_Classic/awoodelfscoutPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.24 10:11:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/QeynosAgitator.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ woodelf(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -14.74, -2.53, 16.9, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -14.74, -2.53, 16.9, 2, 0)
+ MovementLoopAddLocation(NPC, -18.45, -2.53, 19.78, 2, 0)
+ MovementLoopAddLocation(NPC, -22.74, -2.53, 24.09, 2, 0)
+ MovementLoopAddLocation(NPC, -22.87, -2.61, 30.96, 2, 0)
+ MovementLoopAddLocation(NPC, -20.91, -2.57, 35.81, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -20.91, -2.57, 35.81, 2, 0)
+ MovementLoopAddLocation(NPC, -23.44, -2.67, 31.46, 2, 0)
+ MovementLoopAddLocation(NPC, -24.44, -2.53, 26.55, 2, 0)
+ MovementLoopAddLocation(NPC, -30.17, -2.67, 24.49, 2, 0)
+ MovementLoopAddLocation(NPC, -40.85, -2.65, 20.83, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -40.85, -2.65, 20.83, 2, 0)
+ MovementLoopAddLocation(NPC, -35.18, -2.67, 22.51, 2, 0)
+ MovementLoopAddLocation(NPC, -25.51, -2.53, 23.44, 2, 0)
+ MovementLoopAddLocation(NPC, -19, -2.53, 20.47, 2, 0)
+ MovementLoopAddLocation(NPC, -15.49, -2.53, 14.54, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -15.49, -2.53, 14.54, 2, 0)
+ MovementLoopAddLocation(NPC, -15.12, -2.53, 17.62, 2, 0)
+ MovementLoopAddLocation(NPC, -12.78, -2.67, 21.84, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -12.78, -2.67, 21.84, 2, 0)
+ MovementLoopAddLocation(NPC, -15.77, -2.53, 18.11, 2, 0)
+ MovementLoopAddLocation(NPC, -13.35, -2.53, 12.57, 2, 0)
+ MovementLoopAddLocation(NPC, -9.82, -2.53, 8.48, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -9.82, -2.53, 8.48, 2, 0)
+ MovementLoopAddLocation(NPC, -12.45, -2.53, 10.42, 2, 0)
+ MovementLoopAddLocation(NPC, -16.5, -2.53, 16.93, 2, 0)
+ MovementLoopAddLocation(NPC, -21.29, -2.53, 21.15, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -21.29, -2.53, 21.15, 2, 0)
+ MovementLoopAddLocation(NPC, -17.87, -2.53, 17.75, 2, 0)
+ MovementLoopAddLocation(NPC, -10.57, -2.56, 15.86, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -10.57, -2.56, 15.86, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/EngineerVeebert.lua b/server/SpawnScripts/TheThievesWay_Classic/EngineerVeebert.lua
new file mode 100644
index 000000000..9e4d4fb03
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/EngineerVeebert.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/EngineerVeebert.lua
+ Script Author : dorbin
+ Script Date : 2024.01.05 09:01:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+
+function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Get out of the way! Get OUT OF THE WAY! I need to keep this clanking-heap working!")
+ Dialog.AddVoiceover("voiceover/english/engineer_veebert/fprt_sewer01/quests/engineerveebert000.mp3", 3787332000, 2245703769)
+ PlayFlavor(NPC, "", "", "frustrated", 0, 0, Spawn, 0)
+ Dialog.AddOption("Okay! I'm going!")
+ Dialog.Start()
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/Krakamen.lua b/server/SpawnScripts/TheThievesWay_Classic/Krakamen.lua
new file mode 100755
index 000000000..aa7c5b367
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/Krakamen.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/Krakamen.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 08:12:22
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(9 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(17 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/LadyDarkblade.lua b/server/SpawnScripts/TheThievesWay_Classic/LadyDarkblade.lua
new file mode 100755
index 000000000..4d2cb17f2
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/LadyDarkblade.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/LadyDarkblade.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 08:12:21
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(24 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(42 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/MariusDarkblade.lua b/server/SpawnScripts/TheThievesWay_Classic/MariusDarkblade.lua
new file mode 100755
index 000000000..653328ef0
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/MariusDarkblade.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/MariusDarkblade.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 08:12:12
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(30 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(60 + dmgMod))
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/Zatzy.lua b/server/SpawnScripts/TheThievesWay_Classic/Zatzy.lua
new file mode 100644
index 000000000..c79ce1ebf
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/Zatzy.lua
@@ -0,0 +1,91 @@
+--[[
+ Script Name : SpawnScripts/ThievesWay/Zatzy.lua
+ Script Author : Premierio015
+ Script Date : 2021.06.28 09:06:20
+ Script Purpose :
+ :
+--]]
+
+local DarkBladesAndDirtyRats = 5264
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 10, "InRange", "", Spawn)
+ ProvidesQuest(NPC, DarkBladesAndDirtyRats)
+end
+
+function InRange(NPC, Spawn)
+ PlayFlavor(NPC, "", "Go! Get away from me! I'm in hiding!", "", 1689589577, 4560189, Spawn)
+end
+
+
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if not HasQuest(Spawn, DarkBladesAndDirtyRats) and not HasCompletedQuest(Spawn, DarkBladesAndDirtyRats) then
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "What are you hiding from?", "Option1")
+ AddConversationOption(conversation, "I'll leave you alone. ")
+ StartConversation(conversation, NPC, Spawn, "I told you to leave! I don't want to draw attention to myself! Go, go away!")
+ PlayFlavor(NPC, "voiceover/english/zatzy/fprt_sewer01/quests/zatzy/zatzy002.mp3", "", "", 2308759245, 2308759245, Spawn)
+ elseif GetQuestStep(Spawn, DarkBladesAndDirtyRats) == 1 then
+ QuestProgress(NPC, Spawn)
+ elseif GetQuestStep(Spawn, DarkBladesAndDirtyRats) == 2 then
+ local conversation = CreateConversation()
+ SetStepComplete(Spawn, DarkBladesAndDirtyRats, 2)
+ PlayFlavor(NPC, "voiceover/english/zatzy/fprt_sewer01/quests/zatzy/zatzy004.mp3", "", "", 1223149553, 2435152199, Spawn)
+ AddConversationOption(conversation, "Yeah, they're all dead.", "Option3")
+ StartConversation(conversation, NPC, Spawn, "You're back! Did you kill them all? Are they all dead? Did you find the trinket?")
+end
+ end
+
+function Option1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ local conversation = CreateConversation()
+ PlayFlavor(NPC, "voiceover/english/zatzy/fprt_sewer01/quests/zatzy/zatzy005.mp3", "", "", 2330580280, 3278449778, Spawn)
+ AddConversationOption(conversation, "Who did this?", "Option2")
+ AddConversationOption(conversation, "I don't want to hear this. ")
+ StartConversation(conversation, NPC, Spawn, "I told you to leave me alone! If they finds me, they'll kill me! They've already killed everyone else. I'm the only one left. They killed them, and there was nothing I could do. What was I supposed to do? I'm just a small ratonga, little, so little. ")
+end
+
+function Option2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ local conversation = CreateConversation()
+ PlayFlavor(NPC, "voiceover/english/zatzy/fprt_sewer01/quests/zatzy/zatzy006.mp3", "", "", 4200140623, 917956186, Spawn)
+ AddConversationOption(conversation, "I'll take care of the Darkblades.", "offer")
+ AddConversationOption(conversation, "This is where I leave. ")
+ StartConversation(conversation, NPC, Spawn, "The Darkblades did it! They're all killers! You find them in the sewers; it's a fitting place for filth. You do me favor and kill them, kill them all, and I'll tell you where their secret den is. You can find much wealth there. ")
+end
+
+function Option3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ local conversation = CreateConversation()
+ AddConversationOption(conversation, "What?", "turn_attack")
+ StartConversation(conversation, NPC, Spawn, "This is very good news for little me, but very bad news for you. That's no trinket, you fool! It's the key to the Darkblades' den, and now they're all dead! I can plunder to my little black heart's content.")
+ PlayFlavor(NPC, "voiceover/english/zatzy/fprt_sewer01/quests/zatzy/zatzy008.mp3", "", "", 754496589, 2919744955, Spawn)
+end
+
+function turn_attack(NPC, Spawn)
+SpawnSet(NPC, "attackable", 1)
+SpawnSet(NPC, "show_level", 1)
+Attack(NPC, Spawn)
+end
+
+
+function offer(NPC, Spawn)
+OfferQuest(NPC, Spawn, DarkBladesAndDirtyRats)
+end
+
+function QuestProgress(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ local conversation = CreateConversation()
+ PlayFlavor(NPC, "voiceover/english/zatzy/fprt_sewer01/quests/zatzy/zatzy003.mp3", "", "", 3408941735, 1760879067, Spawn)
+ AddConversationOption(conversation, "Alright.")
+ StartConversation(conversation, NPC, Spawn, "What! You lie to me? That is so very mean. Don't treat me that way. ")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguard.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguard.lua
new file mode 100755
index 000000000..58c3a42e3
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguard.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfelf(NPC,Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguardPath.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguardPath.lua
new file mode 100644
index 000000000..b27e265cd
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguardPath.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladebodyguardPath.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.22 05:12:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ halfelf(NPC,Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -128.82, 0.56, 139.95, 2, 0)
+ MovementLoopAddLocation(NPC, -128.53, 0.98, 135.09, 2, 0)
+ MovementLoopAddLocation(NPC, -126.4, 1, 132.77, 2, 0)
+ MovementLoopAddLocation(NPC, -123.08, 1, 132.05, 2, 0)
+ MovementLoopAddLocation(NPC, -102.71, 1, 132.19, 2, 0)
+ MovementLoopAddLocation(NPC, -100, 1, 133.59, 2, 0)
+ MovementLoopAddLocation(NPC, -98.92, 0.82, 136.44, 2, 0)
+ MovementLoopAddLocation(NPC, -98.87, 1, 134.42, 2, 0)
+ MovementLoopAddLocation(NPC, -101.05, 1, 132.43, 2, 0)
+ MovementLoopAddLocation(NPC, -105.55, 1, 131.82, 2, 0)
+ MovementLoopAddLocation(NPC, -124.46, 1, 131.6, 2, 0)
+ MovementLoopAddLocation(NPC, -127.17, 1, 132.74, 2, 0)
+ MovementLoopAddLocation(NPC, -128.3, 1, 134.7, 2, 0)
+ MovementLoopAddLocation(NPC, -128.3, 1, 134.7, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigand.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigand.lua
new file mode 100755
index 000000000..2b75ec0eb
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigand.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladebrigand.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandPath1.lua
new file mode 100755
index 000000000..866e9b9f4
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandPath1.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.10 06:12:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -94.78, 1, 57.62, 2, 0)
+ MovementLoopAddLocation(NPC, -95.18, 1, 60.19, 2, 0)
+ MovementLoopAddLocation(NPC, -94.82, 1, 108.2, 2, 0)
+ MovementLoopAddLocation(NPC, -93.11, 1, 110.93, 2, 0)
+ MovementLoopAddLocation(NPC, -91.34, 1, 111.92, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -92.51, 1, 111.53, 2, 0)
+ MovementLoopAddLocation(NPC, -93.92, 1, 109.4, 2, 0)
+ MovementLoopAddLocation(NPC, -94.57, 1, 58.04, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandRoam.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandRoam.lua
new file mode 100755
index 000000000..51c23c846
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandRoam.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladebrigandRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.11 04:12:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefury.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefury.lua
new file mode 100755
index 000000000..2bcdb5260
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefury.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladefury.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.11 04:12:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC, Spawn)
+ class(NPC, Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC, Spawn)
+ spawn(NPC, Spawn)
+end
+
+function class(NPC, Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryPRIEST.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryPRIEST.lua
new file mode 100755
index 000000000..463708dd3
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryPRIEST.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladefuryPRIEST.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC,Spawn)
+ class(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryRoam.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryRoam.lua
new file mode 100755
index 000000000..da83c384d
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryRoam.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladefuryRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.11 04:12:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC,Spawn)
+ class(NPC)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefurySCOUT.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefurySCOUT.lua
new file mode 100755
index 000000000..38ced3242
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefurySCOUT.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladefurySCOUT.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ darkelf(NPC,Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryTest.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryTest.lua
new file mode 100755
index 000000000..19252e283
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladefuryTest.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladefuryTest.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.11 06:12:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ human(NPC,Spawn)
+ class(NPC)
+ SpawnSet(NPC, id, 8430008)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkblademaiden.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkblademaiden.lua
new file mode 100755
index 000000000..0a3067924
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkblademaiden.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkblademaiden.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ halfelf(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkblademaidenPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkblademaidenPath1.lua
new file mode 100755
index 000000000..6dbcc8a8a
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkblademaidenPath1.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkblademaidenPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.10 06:12:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ halfelf(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -94.78, 1, 57.62, 2, 0)
+ MovementLoopAddLocation(NPC, -95.18, 1, 60.19, 2, 0)
+ MovementLoopAddLocation(NPC, -94.82, 1, 108.2, 2, 0)
+ MovementLoopAddLocation(NPC, -93.11, 1, 110.93, 2, 0)
+ MovementLoopAddLocation(NPC, -91.34, 1, 111.92, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -92.51, 1, 111.53, 2, 0)
+ MovementLoopAddLocation(NPC, -93.92, 1, 109.4, 2, 0)
+ MovementLoopAddLocation(NPC, -94.57, 1, 58.04, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladenoble.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladenoble.lua
new file mode 100755
index 000000000..1e5733a63
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladenoble.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladenoble.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ kerra(NPC,Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescout.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescout.lua
new file mode 100755
index 000000000..77ef16405
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescout.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladescout.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ IdleAggressive(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath1.lua
new file mode 100755
index 000000000..ae1156a56
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath1.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.10 06:12:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -94.78, 1, 57.62, 2, 0)
+ MovementLoopAddLocation(NPC, -95.18, 1, 60.19, 2, 0)
+ MovementLoopAddLocation(NPC, -94.82, 1, 108.2, 2, 0)
+ MovementLoopAddLocation(NPC, -93.11, 1, 110.93, 2, 0)
+ MovementLoopAddLocation(NPC, -91.34, 1, 111.92, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -92.51, 1, 111.53, 2, 0)
+ MovementLoopAddLocation(NPC, -93.92, 1, 109.4, 2, 0)
+ MovementLoopAddLocation(NPC, -94.57, 1, 58.04, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath2.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath2.lua
new file mode 100755
index 000000000..1360369be
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath2.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.10 06:12:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -81.48, 1, 56.85, 2, 0)
+ MovementLoopAddLocation(NPC, -81.48, 1, 56.85, 2, 0)
+ MovementLoopAddLocation(NPC, -81.35, 1, 80.67, 2, 0)
+ MovementLoopAddLocation(NPC, -76.09, 1, 86.15, 2, 0)
+ MovementLoopAddLocation(NPC, -65.57, 1, 85.87, 2, 0)
+ MovementLoopAddLocation(NPC, -76.36, 1, 85.41, 2, 0)
+ MovementLoopAddLocation(NPC, -80.74, 1, 81.84, 2, 0)
+ MovementLoopAddLocation(NPC, -81.41, 1, 79.69, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath3.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath3.lua
new file mode 100755
index 000000000..838c60885
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath3.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladescoutPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.10 06:12:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -76.64, 1.31, 114.45, 2, 0)
+ MovementLoopAddLocation(NPC, -66.28, 0.95, 113.56, 2, 0)
+ MovementLoopAddLocation(NPC, -61.95, 1.26, 109.82, 2, 0)
+ MovementLoopAddLocation(NPC, -61.76, 1, 93.22, 2, 0)
+ MovementLoopAddLocation(NPC, -62.45, 1, 108.49, 2, 0)
+ MovementLoopAddLocation(NPC, -65.58, 0.91, 112.14, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutRoam.lua b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutRoam.lua
new file mode 100755
index 000000000..96e13a320
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aDarkbladescoutRoam.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aDarkbladescoutRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.11 04:12:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC,Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/acorruptor.lua b/server/SpawnScripts/TheThievesWay_Classic/acorruptor.lua
new file mode 100755
index 000000000..b2dc464ca
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/acorruptor.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/acorruptor.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath1.lua
new file mode 100644
index 000000000..81a53c7e8
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath1.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/acorruptorPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -28.81, 0, 214.05, 2, 0)
+ MovementLoopAddLocation(NPC, -30.6, 0, 198.2, 2, 0)
+ MovementLoopAddLocation(NPC, -33.31, 0, 193.28, 2, 0)
+ MovementLoopAddLocation(NPC, -42.36, 0, 186.31, 2, 0)
+ MovementLoopAddLocation(NPC, -62.84, 0, 185.26, 2, 0)
+ MovementLoopAddLocation(NPC, -68.79, 0, 187.39, 2, 0)
+ MovementLoopAddLocation(NPC, -70.73, 0, 190.33, 2, 0)
+ MovementLoopAddLocation(NPC, -68.56, 0, 188.49, 2, 0)
+ MovementLoopAddLocation(NPC, -64.17, 0, 186.99, 2, 0)
+ MovementLoopAddLocation(NPC, -38.26, 0, 187.09, 2, 0)
+ MovementLoopAddLocation(NPC, -28.01, 0, 196.59, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath2.lua b/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath2.lua
new file mode 100644
index 000000000..8ee272b64
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath2.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/acorruptorPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -38.66, 0, 214.49, 2, 0)
+ MovementLoopAddLocation(NPC, -38.29, 0, 204.28, 2, 0)
+ MovementLoopAddLocation(NPC, -41.36, 0, 202.01, 2, 0)
+ MovementLoopAddLocation(NPC, -45.9, 0, 201.75, 2, 0)
+ MovementLoopAddLocation(NPC, -65.02, 0, 201, 2, 0)
+ MovementLoopAddLocation(NPC, -67.8, 0, 199.83, 2, 0)
+ MovementLoopAddLocation(NPC, -68.86, 0, 197.64, 2, 0)
+ MovementLoopAddLocation(NPC, -67.13, 0, 200.47, 2, 0)
+ MovementLoopAddLocation(NPC, -41.54, 0, 200.81, 2, 0)
+ MovementLoopAddLocation(NPC, -37.91, 0, 204.23, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath3.lua b/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath3.lua
new file mode 100644
index 000000000..4b0a4c281
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/acorruptorPath3.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/acorruptorPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseSkeleton2.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -75.43, 0.1, 193.04, 2, 0)
+ MovementLoopAddLocation(NPC, -82.76, 0.47, 193, 2, 0)
+ MovementLoopAddLocation(NPC, -106.29, 0.03, 192.47, 2, 0)
+ MovementLoopAddLocation(NPC, -110.22, 0.02, 191.45, 2, 0)
+ MovementLoopAddLocation(NPC, -113.14, 0.01, 188.72, 2, 0)
+ MovementLoopAddLocation(NPC, -113.97, 1, 186.39, 2, 0)
+ MovementLoopAddLocation(NPC, -114.16, 0.48, 163.91, 2, 0)
+ MovementLoopAddLocation(NPC, -114.04, 0, 182.98, 2, 0)
+ MovementLoopAddLocation(NPC, -114, 1, 185.88, 2, 0)
+ MovementLoopAddLocation(NPC, -113.77, 0.01, 188.22, 2, 0)
+ MovementLoopAddLocation(NPC, -110.41, 0.02, 191.29, 2, 0)
+ MovementLoopAddLocation(NPC, -100.42, 0.52, 192.63, 2, 0)
+ MovementLoopAddLocation(NPC, -82.67, 0.47, 192.94, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adeceasedcrusader.lua b/server/SpawnScripts/TheThievesWay_Classic/adeceasedcrusader.lua
new file mode 100755
index 000000000..0ab3b394f
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adeceasedcrusader.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adeceasedcrusader.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratonga.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratonga.lua
new file mode 100755
index 000000000..0cd16ce71
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratonga.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratonga.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 04:12:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ IdleSneaky(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaFIGHTER.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaFIGHTER.lua
new file mode 100755
index 000000000..d647a7378
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaFIGHTER.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaFIGHTER.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPRIEST.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPRIEST.lua
new file mode 100755
index 000000000..2f314565b
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPRIEST.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPRIEST.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath1.lua
new file mode 100755
index 000000000..5a227ce59
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath1.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 04:12:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -182.56, 0, 203.83, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.56, 0, 203.83, 2, 0)
+ MovementLoopAddLocation(NPC, -182.73, 0.2, 208.53, 2, 0)
+ MovementLoopAddLocation(NPC, -180.7, 0, 213.35, 2, 0)
+ MovementLoopAddLocation(NPC, -176.72, 0, 216.35, 2, 0)
+ MovementLoopAddLocation(NPC, -173.58, 0, 217.19, 2, 0)
+ MovementLoopAddLocation(NPC, -171.36, 0, 217.15, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -171.36, 0, 217.15, 2, 0)
+ MovementLoopAddLocation(NPC, -174.03, 0, 217.04, 2, 0)
+ MovementLoopAddLocation(NPC, -177.77, 0, 215.88, 2, 0)
+ MovementLoopAddLocation(NPC, -180.27, 0, 213.44, 2, 0)
+ MovementLoopAddLocation(NPC, -181.36, 0.25, 209.84, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -181.36, 0.25, 209.84, 2, 0)
+ MovementLoopAddLocation(NPC, -180.65, 0, 212.52, 2, 0)
+ MovementLoopAddLocation(NPC, -178.36, 0, 215.05, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -178.36, 0, 215.05, 2, 0)
+ MovementLoopAddLocation(NPC, -174.43, 0, 216.72, 2, 0)
+ MovementLoopAddLocation(NPC, -172.66, 0, 216.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -172.66, 0, 216.63, 2, 0)
+ MovementLoopAddLocation(NPC, -175.89, 0, 215.99, 2, 0)
+ MovementLoopAddLocation(NPC, -180.61, 0, 213.79, 2, 0)
+ MovementLoopAddLocation(NPC, -181.99, 0.24, 209.14, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath2.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath2.lua
new file mode 100755
index 000000000..926991fab
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath2.lua
@@ -0,0 +1,59 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 09:12:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -182.73, 0, 158.29, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.73, 0, 158.29, 2, 0)
+ MovementLoopAddLocation(NPC, -182.56, 0, 167.8, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.56, 0, 167.8, 2, 0)
+ MovementLoopAddLocation(NPC, -182.22, 0, 146.22, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.22, 0, 146.22, 2, 0)
+ MovementLoopAddLocation(NPC, -181.9, 0.24, 160.91, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -181.9, 0.24, 160.91, 2, 0)
+ MovementLoopAddLocation(NPC, -182.89, 0.29, 152.36, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.89, 0.29, 152.36, 2, 0)
+ MovementLoopAddLocation(NPC, -182.96, 0, 165.75, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.96, 0, 165.75, 2, 0)
+ MovementLoopAddLocation(NPC, -185.57, 0.38, 156.66, 2, 0)
+ MovementLoopAddLocation(NPC, -184.82, 0.1, 157.24, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -184.82, 0.1, 157.24, 2, 0)
+ MovementLoopAddLocation(NPC, -182.96, 0, 157.36, 2, 0)
+ MovementLoopAddLocation(NPC, -182.5, 0, 150.66, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.5, 0, 150.66, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath3.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath3.lua
new file mode 100755
index 000000000..748d041f9
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath3.lua
@@ -0,0 +1,86 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 09:12:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -180.42, 0.05, 93.15, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -180.42, 0.05, 93.15, 2, 0)
+ MovementLoopAddLocation(NPC, -182.39, 0.05, 97.52, 2, 0)
+ MovementLoopAddLocation(NPC, -182.47, 0.36, 100.37, 2, 0)
+ MovementLoopAddLocation(NPC, -182.57, 0, 114.95, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.57, 0, 114.95, 2, 0)
+ MovementLoopAddLocation(NPC, -182.71, 0.27, 102.21, 2, 0)
+ MovementLoopAddLocation(NPC, -181.73, 0.05, 96.71, 2, 0)
+ MovementLoopAddLocation(NPC, -178.82, 0.05, 92.41, 2, 0)
+ MovementLoopAddLocation(NPC, -175.04, 0.24, 90.89, 2, 0)
+ MovementLoopAddLocation(NPC, -168.58, 0.05, 90.51, 2, 0)
+ MovementLoopAddLocation(NPC, -159.12, 0.05, 90.2, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -159.12, 0.05, 90.2, 2, 0)
+ MovementLoopAddLocation(NPC, -170.33, 0.05, 90.49, 2, 0)
+ MovementLoopAddLocation(NPC, -175.1, 0.24, 90.48, 2, 0)
+ MovementLoopAddLocation(NPC, -178.71, 0.05, 92.76, 2, 0)
+ MovementLoopAddLocation(NPC, -181.9, 0.05, 96.84, 2, 0)
+ MovementLoopAddLocation(NPC, -182.54, 0.31, 100.17, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.54, 0.31, 100.17, 2, 0)
+ MovementLoopAddLocation(NPC, -181.92, 0.05, 96.39, 2, 0)
+ MovementLoopAddLocation(NPC, -172.11, 0.05, 90.2, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -172.11, 0.05, 90.2, 2, 0)
+ MovementLoopAddLocation(NPC, -177.29, 0.05, 90.21, 2, 0)
+ MovementLoopAddLocation(NPC, -181.28, 0.05, 94.78, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -181.28, 0.05, 94.78, 2, 0)
+ MovementLoopAddLocation(NPC, -182.25, 0.3, 100.17, 2, 0)
+ MovementLoopAddLocation(NPC, -182.46, 0, 105.58, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.46, 0, 105.58, 2, 0)
+ MovementLoopAddLocation(NPC, -182.69, 0.41, 100.33, 2, 0)
+ MovementLoopAddLocation(NPC, -184.52, 0.32, 96.01, 2, 0)
+ MovementLoopAddLocation(NPC, -183.52, 0.08, 97.21, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -183.52, 0.08, 97.21, 2, 0)
+ MovementLoopAddLocation(NPC, -179.28, 0.05, 92.14, 2, 0)
+ MovementLoopAddLocation(NPC, -173.87, 0.06, 91.12, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -173.87, 0.06, 91.12, 2, 0)
+ MovementLoopAddLocation(NPC, -173.95, 0.41, 86.96, 2, 0)
+ MovementLoopAddLocation(NPC, -173.85, 0.15, 88.12, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -173.85, 0.15, 88.12, 2, 0)
+ MovementLoopAddLocation(NPC, -173.97, 0.05, 89.32, 2, 0)
+ MovementLoopAddLocation(NPC, -178.35, 0.05, 91.43, 2, 0)
+ MovementLoopAddLocation(NPC, -181.99, 0.04, 98.02, 2, 0)
+ MovementLoopAddLocation(NPC, -182.52, 0, 105.38, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.52, 0, 105.38, 2, 0)
+ MovementLoopAddLocation(NPC, -182.22, 0.04, 98.01, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath4.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath4.lua
new file mode 100755
index 000000000..d81af9c7a
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath4.lua
@@ -0,0 +1,84 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 10:12:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -177.27, 1.26, 3.05, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -177.27, 1.26, 3.05, 2, 0)
+ MovementLoopAddLocation(NPC, -179.84, 1.84, 7.51, 2, 0)
+ MovementLoopAddLocation(NPC, -179.79, 1.22, 17.7, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -179.79, 1.22, 17.7, 2, 0)
+ MovementLoopAddLocation(NPC, -179.95, 1.78, 11.41, 2, 0)
+ MovementLoopAddLocation(NPC, -179.93, 1.84, 8.19, 2, 0)
+ MovementLoopAddLocation(NPC, -177.85, 1.26, 3.38, 2, 0)
+ MovementLoopAddLocation(NPC, -172.42, 1.58, 0.45, 2, 0)
+ MovementLoopAddLocation(NPC, -164.56, 1.34, -0.05, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -164.56, 1.34, -0.05, 2, 0)
+ MovementLoopAddLocation(NPC, -167.88, 1.34, -0.15, 2, 0)
+ MovementLoopAddLocation(NPC, -170, 1.63, 3.13, 2, 0)
+ MovementLoopAddLocation(NPC, -169.79, 1.42, 2.27, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -169.79, 1.42, 2.27, 2, 0)
+ MovementLoopAddLocation(NPC, -169.25, 1.34, 0.89, 2, 0)
+ MovementLoopAddLocation(NPC, -171.89, 1.58, 0.03, 2, 0)
+ MovementLoopAddLocation(NPC, -175.71, 1.26, 1.46, 2, 0)
+ MovementLoopAddLocation(NPC, -179.08, 1.26, 5.37, 2, 0)
+ MovementLoopAddLocation(NPC, -180.1, 1.71, 10.48, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -180.1, 1.71, 10.48, 2, 0)
+ MovementLoopAddLocation(NPC, -179.87, 1.26, 5.32, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -179.87, 1.26, 5.32, 2, 0)
+ MovementLoopAddLocation(NPC, -172.95, 1.52, 0.93, 2, 0)
+ MovementLoopAddLocation(NPC, -169.55, 1.75, -3.46, 2, 0)
+ MovementLoopAddLocation(NPC, -170.27, 1.34, -2.1, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -170.27, 1.34, -2.1, 2, 0)
+ MovementLoopAddLocation(NPC, -170.79, 1.53, -1.11, 2, 0)
+ MovementLoopAddLocation(NPC, -168.54, 1.34, -0.15, 2, 0)
+ MovementLoopAddLocation(NPC, -164.76, 1.34, -0.01, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -164.76, 1.34, -0.01, 2, 0)
+ MovementLoopAddLocation(NPC, -171.21, 1.58, 0.18, 2, 0)
+ MovementLoopAddLocation(NPC, -174.94, 1.26, 1.33, 2, 0)
+ MovementLoopAddLocation(NPC, -178.65, 1.26, 5.03, 2, 0)
+ MovementLoopAddLocation(NPC, -180.14, 1.64, 8.87, 2, 0)
+ MovementLoopAddLocation(NPC, -179.92, 1.76, 11.48, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -179.92, 1.76, 11.48, 2, 0)
+ MovementLoopAddLocation(NPC, -180.22, 1.6, 9.41, 2, 0)
+ MovementLoopAddLocation(NPC, -182.65, 1.8, 8.99, 2, 0)
+ MovementLoopAddLocation(NPC, -182.1, 1.69, 9.29, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -182.1, 1.69, 9.29, 2, 0)
+ MovementLoopAddLocation(NPC, -180.53, 1.84, 8.2, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath5.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath5.lua
new file mode 100755
index 000000000..4aec456f3
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath5.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath5.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 10:12:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -177.42, 1.22, 58.23, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -177.42, 1.22, 58.23, 2, 0)
+ MovementLoopAddLocation(NPC, -179.46, 1.22, 54.32, 2, 0)
+ MovementLoopAddLocation(NPC, -179.94, 1.34, 50.47, 2, 0)
+ MovementLoopAddLocation(NPC, -180.08, 1.34, 46.74, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -180.08, 1.34, 46.74, 2, 0)
+ MovementLoopAddLocation(NPC, -180.22, 1.34, 51.5, 2, 0)
+ MovementLoopAddLocation(NPC, -178.44, 1.22, 57.61, 2, 0)
+ MovementLoopAddLocation(NPC, -172.79, 1.78, 60.97, 2, 0)
+ MovementLoopAddLocation(NPC, -166.2, 1.78, 61.18, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -166.2, 1.78, 61.18, 2, 0)
+ MovementLoopAddLocation(NPC, -171, 1.55, 61.31, 2, 0)
+ MovementLoopAddLocation(NPC, -176.15, 1.22, 59.93, 2, 0)
+ MovementLoopAddLocation(NPC, -179.6, 1.22, 55.01, 2, 0)
+ MovementLoopAddLocation(NPC, -183.47, 1.71, 50.56, 2, 0)
+ MovementLoopAddLocation(NPC, -183.06, 1.57, 50.9, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -183.06, 1.57, 50.9, 2, 0)
+ MovementLoopAddLocation(NPC, -181.63, 1.47, 51.74, 2, 0)
+ MovementLoopAddLocation(NPC, -179.88, 1.34, 49.92, 2, 0)
+ MovementLoopAddLocation(NPC, -179.79, 1.34, 47.3, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -179.79, 1.34, 47.3, 2, 0)
+ MovementLoopAddLocation(NPC, -180.05, 1.58, 52.73, 2, 0)
+ MovementLoopAddLocation(NPC, -178.42, 1.22, 57.97, 2, 0)
+ MovementLoopAddLocation(NPC, -172.08, 1.78, 60.98, 2, 0)
+ MovementLoopAddLocation(NPC, -168.4, 1.71, 64.72, 2, 0)
+ MovementLoopAddLocation(NPC, -168.55, 1.63, 64.47, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -168.55, 1.63, 64.47, 2, 0)
+ MovementLoopAddLocation(NPC, -168.99, 1.29, 62.96, 2, 0)
+ MovementLoopAddLocation(NPC, -171.79, 1.78, 61.36, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath6.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath6.lua
new file mode 100755
index 000000000..1ce33a8f6
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath6.lua
@@ -0,0 +1,70 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath6.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.06 04:12:21
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -78.63, 0, -0.03, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -78.63, 0, -0.03, 2, 0)
+ MovementLoopAddLocation(NPC, -81.33, 0, -0.02, 2, 0)
+ MovementLoopAddLocation(NPC, -83.55, 1.01, -0.01, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -83.55, 1.01, -0.01, 2, 0)
+ MovementLoopAddLocation(NPC, -81.05, 0, 0.04, 2, 0)
+ MovementLoopAddLocation(NPC, -45.81, 0, 0.15, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -45.81, 0, 0.15, 2, 0)
+ MovementLoopAddLocation(NPC, -71.99, 0, -0.24, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -71.99, 0, -0.24, 2, 0)
+ MovementLoopAddLocation(NPC, -68.1, 0.16, -0.06, 2, 0)
+ MovementLoopAddLocation(NPC, -65.95, 0.26, -2.78, 2, 0)
+ MovementLoopAddLocation(NPC, -65.66, 0.09, -1.88, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -65.66, 0.09, -1.88, 2, 0)
+ MovementLoopAddLocation(NPC, -65.62, 0, -0.57, 2, 0)
+ MovementLoopAddLocation(NPC, -63.09, 0, -0.05, 2, 0)
+ MovementLoopAddLocation(NPC, -56.6, 0.3, -0.14, 2, 0)
+ MovementLoopAddLocation(NPC, -54.98, 0.26, 2.79, 2, 0)
+ MovementLoopAddLocation(NPC, -55.37, 0.16, 2.23, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -55.37, 0.16, 2.23, 2, 0)
+ MovementLoopAddLocation(NPC, -56.68, 0.29, 0.38, 2, 0)
+ MovementLoopAddLocation(NPC, -73.26, 0, -0.16, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -73.26, 0, -0.16, 2, 0)
+ MovementLoopAddLocation(NPC, -48.35, 0, 0.16, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -48.35, 0, 0.16, 2, 0)
+ MovementLoopAddLocation(NPC, -59.18, 0.26, -0.37, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -59.18, 0.26, -0.37, 2, 0)
+ MovementLoopAddLocation(NPC, -69.63, 0, -0.14, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath7.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath7.lua
new file mode 100755
index 000000000..396ad3311
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath7.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath7.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.07 09:12:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 20.22, 1.34, 74.07, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 20.22, 1.34, 74.07, 2, 0)
+ MovementLoopAddLocation(NPC, 20.18, 1.81, 77.16, 2, 0)
+ MovementLoopAddLocation(NPC, 20.1, 1.57, 82.94, 2, 0)
+ MovementLoopAddLocation(NPC, 19.95, 1.59, 102.63, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.95, 1.59, 102.63, 2, 0)
+ MovementLoopAddLocation(NPC, 20.14, 1.34, 71.48, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 20.14, 1.34, 71.48, 2, 0)
+ MovementLoopAddLocation(NPC, 20.09, 1.34, 91.81, 2, 0)
+ MovementLoopAddLocation(NPC, 16.65, 1.77, 91.29, 2, 0)
+ MovementLoopAddLocation(NPC, 17.52, 1.53, 91.54, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 17.52, 1.53, 91.54, 2, 0)
+ MovementLoopAddLocation(NPC, 19.35, 1.34, 91.22, 2, 0)
+ MovementLoopAddLocation(NPC, 20.08, 1.34, 89.48, 2, 0)
+ MovementLoopAddLocation(NPC, 20.19, 1.34, 86.2, 2, 0)
+ MovementLoopAddLocation(NPC, 23.46, 1.83, 85.54, 2, 0)
+ MovementLoopAddLocation(NPC, 23.02, 1.68, 85.4, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 23.02, 1.68, 85.4, 2, 0)
+ MovementLoopAddLocation(NPC, 21.12, 1.35, 85.1, 2, 0)
+ MovementLoopAddLocation(NPC, 20.2, 1.34, 87.27, 2, 0)
+ MovementLoopAddLocation(NPC, 20.02, 1.74, 101.46, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 20.02, 1.74, 101.46, 2, 0)
+ MovementLoopAddLocation(NPC, 20.21, 1.6, 76.04, 2, 0)
+ MovementLoopAddLocation(NPC, 16.49, 1.83, 74.46, 2, 0)
+ MovementLoopAddLocation(NPC, 17.55, 1.52, 74.39, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 17.55, 1.52, 74.39, 2, 0)
+ MovementLoopAddLocation(NPC, 19.97, 1.34, 73.65, 2, 0)
+ MovementLoopAddLocation(NPC, 20.09, 1.34, 69.49, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 20.09, 1.34, 69.49, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath8.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath8.lua
new file mode 100755
index 000000000..48b92ea44
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath8.lua
@@ -0,0 +1,82 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath8.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.07 10:12:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 19.93, 1.34, 30.03, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.93, 1.34, 30.03, 2, 0)
+ MovementLoopAddLocation(NPC, 20, 1.34, 56, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 20, 1.34, 56, 2, 0)
+ MovementLoopAddLocation(NPC, 20.17, 1.34, 29.6, 2, 0)
+ MovementLoopAddLocation(NPC, 18, 1.34, 23.01, 2, 0)
+ MovementLoopAddLocation(NPC, 11.96, 1.86, 19.84, 2, 0)
+ MovementLoopAddLocation(NPC, 7.84, 1.34, 19.76, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 7.84, 1.34, 19.76, 2, 0)
+ MovementLoopAddLocation(NPC, 12.59, 1.81, 19.84, 2, 0)
+ MovementLoopAddLocation(NPC, 18.39, 1.34, 23.97, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 18.39, 1.34, 23.97, 2, 0)
+ MovementLoopAddLocation(NPC, 15.44, 1.34, 20.61, 2, 0)
+ MovementLoopAddLocation(NPC, 11.82, 1.9, 19.41, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 11.82, 1.9, 19.41, 2, 0)
+ MovementLoopAddLocation(NPC, 15.05, 1.34, 20.43, 2, 0)
+ MovementLoopAddLocation(NPC, 19, 1.34, 24.49, 2, 0)
+ MovementLoopAddLocation(NPC, 20.28, 1.34, 33.24, 2, 0)
+ MovementLoopAddLocation(NPC, 19.82, 1.34, 51.57, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 16.73, 1.75, 51.79, 2, 0)
+ MovementLoopAddLocation(NPC, 17.36, 1.56, 52.04, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 17.36, 1.56, 52.04, 2, 0)
+ MovementLoopAddLocation(NPC, 19.4, 1.34, 52.15, 2, 0)
+ MovementLoopAddLocation(NPC, 20.25, 1.34, 50.57, 2, 0)
+ MovementLoopAddLocation(NPC, 19.91, 1.34, 34.62, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.91, 1.34, 34.62, 2, 0)
+ MovementLoopAddLocation(NPC, 21.79, 1.42, 37.67, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 21.79, 1.42, 37.67, 2, 0)
+ MovementLoopAddLocation(NPC, 21.02, 1.34, 36.86, 2, 0)
+ MovementLoopAddLocation(NPC, 20.28, 1.34, 27.29, 2, 0)
+ MovementLoopAddLocation(NPC, 17.97, 1.34, 23.39, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 17.97, 1.34, 23.39, 2, 0)
+ MovementLoopAddLocation(NPC, 19.25, 1.34, 26.71, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 19.25, 1.34, 26.71, 2, 0)
+ MovementLoopAddLocation(NPC, 18.62, 1.34, 23.39, 2, 0)
+ MovementLoopAddLocation(NPC, 15.98, 1.34, 20.82, 2, 0)
+ MovementLoopAddLocation(NPC, 7.13, 1.34, 19.67, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, 7.13, 1.34, 19.67, 2, 0)
+ MovementLoopAddLocation(NPC, 13.31, 1.64, 19.66, 2, 0)
+ MovementLoopAddLocation(NPC, 18.2, 1.34, 22.37, 2, 0)
+ MovementLoopAddLocation(NPC, 19.17, 1.34, 24.75, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath9.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath9.lua
new file mode 100755
index 000000000..b16d7da5f
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath9.lua
@@ -0,0 +1,78 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaPath9.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.07 10:12:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -26.02, 1.34, 22.89, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -26.02, 1.34, 22.89, 2, 0)
+ MovementLoopAddLocation(NPC, -23.12, 1.34, 20.3, 2, 0)
+ MovementLoopAddLocation(NPC, -18.26, 1.94, 19.71, 2, 0)
+ MovementLoopAddLocation(NPC, -10.57, 1.34, 19.83, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -10.57, 1.34, 19.83, 2, 0)
+ MovementLoopAddLocation(NPC, -8.41, 1.34, 14.14, 2, 0)
+ MovementLoopAddLocation(NPC, -8.69, 1.34, 14.8, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -8.69, 1.34, 14.8, 2, 0)
+ MovementLoopAddLocation(NPC, -9.01, 1.34, 18.04, 2, 0)
+ MovementLoopAddLocation(NPC, -13.47, 1.34, 19.33, 2, 0)
+ MovementLoopAddLocation(NPC, -17.64, 1.85, 19.66, 2, 0)
+ MovementLoopAddLocation(NPC, -21.69, 1.34, 19.86, 2, 0)
+ MovementLoopAddLocation(NPC, -25.67, 1.34, 22.48, 2, 0)
+ MovementLoopAddLocation(NPC, -27.56, 1.34, 25.45, 2, 0)
+ MovementLoopAddLocation(NPC, -27.6, 1.34, 37.28, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -27.6, 1.34, 37.28, 2, 0)
+ MovementLoopAddLocation(NPC, -27.48, 1.34, 30.7, 2, 0)
+ MovementLoopAddLocation(NPC, -28.48, 1.35, 28.98, 2, 0)
+ MovementLoopAddLocation(NPC, -30.83, 1.83, 29.18, 2, 0)
+ MovementLoopAddLocation(NPC, -30.09, 1.58, 29.06, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -30.09, 1.58, 29.06, 2, 0)
+ MovementLoopAddLocation(NPC, -28.33, 1.34, 28.41, 2, 0)
+ MovementLoopAddLocation(NPC, -26.61, 1.34, 24.11, 2, 0)
+ MovementLoopAddLocation(NPC, -23.33, 1.34, 21.07, 2, 0)
+ MovementLoopAddLocation(NPC, -14.96, 1.34, 19.3, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -14.96, 1.34, 19.3, 2, 0)
+ MovementLoopAddLocation(NPC, -17.01, 1.73, 19.7, 2, 0)
+ MovementLoopAddLocation(NPC, -21.57, 1.34, 20.55, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -21.57, 1.34, 20.55, 2, 0)
+ MovementLoopAddLocation(NPC, -21.25, 1.34, 20, 2, 0)
+ MovementLoopAddLocation(NPC, -14.81, 1.34, 19.21, 2, 0)
+ MovementLoopAddLocation(NPC, -8.46, 1.34, 18.9, 2, MakeRandomInt(8,15))
+ MovementLoopAddLocation(NPC, -8.46, 1.34, 18.9, 2, 0)
+ MovementLoopAddLocation(NPC, -14.51, 1.34, 19.73, 2, 0)
+ MovementLoopAddLocation(NPC, -21.71, 1.34, 19.82, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaRoam.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaRoam.lua
new file mode 100755
index 000000000..c4e7d23de
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaRoam.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.04 09:12:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile ("SpawnScripts/Generic/MonsterCallouts/BaseRatonga1.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+ class(NPC)
+ RandomMovement(NPC, Spawn, -4, 4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function class(NPC,Spawn)
+ local class = MakeRandomInt(1,3)
+ if class == 1 then
+ SpawnSet(NPC, "class", 1 )
+ SetSpellList(NPC, 291)
+ elseif class == 2 then
+ SpawnSet(NPC, "class", 11)
+ SetSpellList(NPC, 297)
+ elseif class == 3 then
+ SpawnSet(NPC, "class", 31)
+ SetSpellList(NPC, 294)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaSCOUT.lua b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaSCOUT.lua
new file mode 100755
index 000000000..013afc0be
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adiseasedratongaSCOUT.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adiseasedratongaSCOUT.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ratonga(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalier.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalier.lua
new file mode 100755
index 000000000..edc3901d8
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalier.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedcavalier.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath1.lua
new file mode 100644
index 000000000..f1abb5f9d
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath1.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -28.81, 0, 214.05, 2, 0)
+ MovementLoopAddLocation(NPC, -30.6, 0, 198.2, 2, 0)
+ MovementLoopAddLocation(NPC, -33.31, 0, 193.28, 2, 0)
+ MovementLoopAddLocation(NPC, -42.36, 0, 186.31, 2, 0)
+ MovementLoopAddLocation(NPC, -62.84, 0, 185.26, 2, 0)
+ MovementLoopAddLocation(NPC, -68.79, 0, 187.39, 2, 0)
+ MovementLoopAddLocation(NPC, -70.73, 0, 190.33, 2, 0)
+ MovementLoopAddLocation(NPC, -68.56, 0, 188.49, 2, 0)
+ MovementLoopAddLocation(NPC, -64.17, 0, 186.99, 2, 0)
+ MovementLoopAddLocation(NPC, -38.26, 0, 187.09, 2, 0)
+ MovementLoopAddLocation(NPC, -28.01, 0, 196.59, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath2.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath2.lua
new file mode 100644
index 000000000..c10a659af
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath2.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -38.66, 0, 214.49, 2, 0)
+ MovementLoopAddLocation(NPC, -38.29, 0, 204.28, 2, 0)
+ MovementLoopAddLocation(NPC, -41.36, 0, 202.01, 2, 0)
+ MovementLoopAddLocation(NPC, -45.9, 0, 201.75, 2, 0)
+ MovementLoopAddLocation(NPC, -65.02, 0, 201, 2, 0)
+ MovementLoopAddLocation(NPC, -67.8, 0, 199.83, 2, 0)
+ MovementLoopAddLocation(NPC, -68.86, 0, 197.64, 2, 0)
+ MovementLoopAddLocation(NPC, -67.13, 0, 200.47, 2, 0)
+ MovementLoopAddLocation(NPC, -41.54, 0, 200.81, 2, 0)
+ MovementLoopAddLocation(NPC, -37.91, 0, 204.23, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath3.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath3.lua
new file mode 100644
index 000000000..adfc2685a
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath3.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedcavalierPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+ SetSpawnAnimation(NPC, 13016)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -75.43, 0.1, 193.04, 2, 0)
+ MovementLoopAddLocation(NPC, -82.76, 0.47, 193, 2, 0)
+ MovementLoopAddLocation(NPC, -106.29, 0.03, 192.47, 2, 0)
+ MovementLoopAddLocation(NPC, -110.22, 0.02, 191.45, 2, 0)
+ MovementLoopAddLocation(NPC, -113.14, 0.01, 188.72, 2, 0)
+ MovementLoopAddLocation(NPC, -113.97, 1, 186.39, 2, 0)
+ MovementLoopAddLocation(NPC, -114.16, 0.48, 163.91, 2, 0)
+ MovementLoopAddLocation(NPC, -114.04, 0, 182.98, 2, 0)
+ MovementLoopAddLocation(NPC, -114, 1, 185.88, 2, 0)
+ MovementLoopAddLocation(NPC, -113.77, 0.01, 188.22, 2, 0)
+ MovementLoopAddLocation(NPC, -110.41, 0.02, 191.29, 2, 0)
+ MovementLoopAddLocation(NPC, -100.42, 0.52, 192.63, 2, 0)
+ MovementLoopAddLocation(NPC, -82.67, 0.47, 192.94, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedprotector.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotector.lua
new file mode 100755
index 000000000..188f3ad34
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotector.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:03
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath1.lua
new file mode 100644
index 000000000..b292ad80b
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath1.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -28.81, 0, 214.05, 2, 0)
+ MovementLoopAddLocation(NPC, -30.6, 0, 198.2, 2, 0)
+ MovementLoopAddLocation(NPC, -33.31, 0, 193.28, 2, 0)
+ MovementLoopAddLocation(NPC, -42.36, 0, 186.31, 2, 0)
+ MovementLoopAddLocation(NPC, -62.84, 0, 185.26, 2, 0)
+ MovementLoopAddLocation(NPC, -68.79, 0, 187.39, 2, 0)
+ MovementLoopAddLocation(NPC, -70.73, 0, 190.33, 2, 0)
+ MovementLoopAddLocation(NPC, -68.56, 0, 188.49, 2, 0)
+ MovementLoopAddLocation(NPC, -64.17, 0, 186.99, 2, 0)
+ MovementLoopAddLocation(NPC, -38.26, 0, 187.09, 2, 0)
+ MovementLoopAddLocation(NPC, -28.01, 0, 196.59, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath2.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath2.lua
new file mode 100644
index 000000000..a9663a505
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath2.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -38.66, 0, 214.49, 2, 0)
+ MovementLoopAddLocation(NPC, -38.29, 0, 204.28, 2, 0)
+ MovementLoopAddLocation(NPC, -41.36, 0, 202.01, 2, 0)
+ MovementLoopAddLocation(NPC, -45.9, 0, 201.75, 2, 0)
+ MovementLoopAddLocation(NPC, -65.02, 0, 201, 2, 0)
+ MovementLoopAddLocation(NPC, -67.8, 0, 199.83, 2, 0)
+ MovementLoopAddLocation(NPC, -68.86, 0, 197.64, 2, 0)
+ MovementLoopAddLocation(NPC, -67.13, 0, 200.47, 2, 0)
+ MovementLoopAddLocation(NPC, -41.54, 0, 200.81, 2, 0)
+ MovementLoopAddLocation(NPC, -37.91, 0, 204.23, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath3.lua b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath3.lua
new file mode 100644
index 000000000..c4829248a
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath3.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/adrownedprotectorPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -75.43, 0.1, 193.04, 2, 0)
+ MovementLoopAddLocation(NPC, -82.76, 0.47, 193, 2, 0)
+ MovementLoopAddLocation(NPC, -106.29, 0.03, 192.47, 2, 0)
+ MovementLoopAddLocation(NPC, -110.22, 0.02, 191.45, 2, 0)
+ MovementLoopAddLocation(NPC, -113.14, 0.01, 188.72, 2, 0)
+ MovementLoopAddLocation(NPC, -113.97, 1, 186.39, 2, 0)
+ MovementLoopAddLocation(NPC, -114.16, 0.48, 163.91, 2, 0)
+ MovementLoopAddLocation(NPC, -114.04, 0, 182.98, 2, 0)
+ MovementLoopAddLocation(NPC, -114, 1, 185.88, 2, 0)
+ MovementLoopAddLocation(NPC, -113.77, 0.01, 188.22, 2, 0)
+ MovementLoopAddLocation(NPC, -110.41, 0.02, 191.29, 2, 0)
+ MovementLoopAddLocation(NPC, -100.42, 0.52, 192.63, 2, 0)
+ MovementLoopAddLocation(NPC, -82.67, 0.47, 192.94, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/ajuvenilemucus.lua b/server/SpawnScripts/TheThievesWay_Classic/ajuvenilemucus.lua
new file mode 100755
index 000000000..d4e997e61
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/ajuvenilemucus.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/ajuvenilemucus.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -3, 3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/amenderShiftBossLocal858.lua b/server/SpawnScripts/TheThievesWay_Classic/amenderShiftBossLocal858.lua
new file mode 100755
index 000000000..45bfda121
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/amenderShiftBossLocal858.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/amenderShiftBossLocal858.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.06 05:12:10
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua")
+
+function spawn(NPC)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(7 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(15 + dmgMod))
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/anetherotchanter.lua b/server/SpawnScripts/TheThievesWay_Classic/anetherotchanter.lua
new file mode 100755
index 000000000..03b2bb890
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/anetherotchanter.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/anetherotchanter.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC, Spawn)
+ IdleAlert(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,2)
+ if race == 1 then
+ ratonga(NPC)
+ else
+ erudite(NPC)
+ SetEquipment(NPC, 6, 472 , 255, 255, 255, 255, 255, 255) --Gloves
+ SetEquipment(NPC, 8, 470 , 255, 255, 255, 255, 255, 255) --Boots
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/anetherotchanterPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/anetherotchanterPath1.lua
new file mode 100755
index 000000000..f7ce0296d
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/anetherotchanterPath1.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/anetherotchanterPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.10 06:12:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC, Spawn)
+ AddTimer(NPC, 6000, "waypoints")
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,6)
+ if race == 1 or race == 2 then
+ human(NPC, Spawn)
+ elseif race == 3 or race == 4 then
+ ratonga(NPC, Spawn)
+ elseif race == 5 then
+ kerra(NPC, Spawn)
+ elseif race == 6 then
+ darkelf(NPC, Spawn)
+ end
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -92.38, 1, 54.64, 2, 0)
+ MovementLoopAddLocation(NPC, -94.78, 1, 57.62, 2, 0)
+ MovementLoopAddLocation(NPC, -95.18, 1, 60.19, 2, 0)
+ MovementLoopAddLocation(NPC, -94.82, 1, 108.2, 2, 0)
+ MovementLoopAddLocation(NPC, -93.11, 1, 110.93, 2, 0)
+ MovementLoopAddLocation(NPC, -91.34, 1, 111.92, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -86.58, 1, 112.2, 2, 0)
+ MovementLoopAddLocation(NPC, -92.51, 1, 111.53, 2, 0)
+ MovementLoopAddLocation(NPC, -93.92, 1, 109.4, 2, 0)
+ MovementLoopAddLocation(NPC, -94.57, 1, 58.04, 2, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/anetherotchanterRoam.lua b/server/SpawnScripts/TheThievesWay_Classic/anetherotchanterRoam.lua
new file mode 100755
index 000000000..329b5dcd6
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/anetherotchanterRoam.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/anetherotchanterRoam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.11 04:12:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ race(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5, -5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function race(NPC, Spawn)
+ local race = MakeRandomInt(1,2)
+ if race == 1 then
+ ratonga(NPC)
+ else
+ erudite(NPC)
+ SetEquipment(NPC, 6, 472 , 255, 255, 255, 255, 255, 255) --Gloves
+ SetEquipment(NPC, 8, 470 , 255, 255, 255, 255, 255, 255) --Boots
+ end
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aravenouscube.lua b/server/SpawnScripts/TheThievesWay_Classic/aravenouscube.lua
new file mode 100755
index 000000000..568211010
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aravenouscube.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aravenouscube.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5,-5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/arefuseroach.lua b/server/SpawnScripts/TheThievesWay_Classic/arefuseroach.lua
new file mode 100755
index 000000000..b35cb13a1
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/arefuseroach.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/arefuseroach.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asewagerat.lua b/server/SpawnScripts/TheThievesWay_Classic/asewagerat.lua
new file mode 100755
index 000000000..ce3b691b1
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asewagerat.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asewagerat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asewerrat.lua b/server/SpawnScripts/TheThievesWay_Classic/asewerrat.lua
new file mode 100755
index 000000000..5445bdcc8
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asewerrat.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asewerrat.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 3, -3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asewerslime.lua b/server/SpawnScripts/TheThievesWay_Classic/asewerslime.lua
new file mode 100755
index 000000000..4abb00c3e
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asewerslime.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asewerslime.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 5,-5, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchling.lua b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchling.lua
new file mode 100755
index 000000000..be478d303
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchling.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchling.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -3, 3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath1.lua b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath1.lua
new file mode 100755
index 000000000..e85046360
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath1.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath1.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.08 04:12:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -40.67, 0.71, 47.92, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -40.67, 0.71, 47.92, 2, 0)
+ MovementLoopAddLocation(NPC, -32.66, -0.3, 47.77, 2, 0)
+ MovementLoopAddLocation(NPC, -32.44, 0.07, 51.54, 2, 0)
+ MovementLoopAddLocation(NPC, -32.29, 0.72, 77.62, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -32.29, 0.72, 77.62, 2, 0)
+ MovementLoopAddLocation(NPC, -32.09, -0.43, 67.14, 2, 0)
+ MovementLoopAddLocation(NPC, -12.43, 0.62, 66.81, 2, 0)
+ MovementLoopAddLocation(NPC, -12.36, 0.71, 62.86, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -12.36, 0.71, 62.86, 2, 0)
+ MovementLoopAddLocation(NPC, -13.61, -0.01, 75.17, 2, 0)
+ MovementLoopAddLocation(NPC, -26.34, 0.71, 75.59, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -26.34, 0.71, 75.59, 2, 0)
+ MovementLoopAddLocation(NPC, -23.72, 0.71, 75.72, 2, 0)
+ MovementLoopAddLocation(NPC, -22.6, -0.08, 68.46, 2, 0)
+ MovementLoopAddLocation(NPC, -22.25, -0.17, 49.39, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -22.25, -0.17, 49.39, 2, 0)
+ MovementLoopAddLocation(NPC, -21.6, -0.66, 56.13, 2, 0)
+ MovementLoopAddLocation(NPC, -26.75, -0.1, 56.62, 2, 0)
+ MovementLoopAddLocation(NPC, -34.92, -0.31, 56.7, 2, 0)
+ MovementLoopAddLocation(NPC, -41.69, 0.71, 56.44, 2, 0)
+end
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath2.lua b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath2.lua
new file mode 100755
index 000000000..c9a3a251c
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath2.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath2.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.08 04:12:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -42.08, 0.71, 75.62, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -42.08, 0.71, 75.62, 2, 0)
+ MovementLoopAddLocation(NPC, -32.78, -0.08, 75.27, 2, 0)
+ MovementLoopAddLocation(NPC, -32.07, -0.49, 66.73, 2, 0)
+ MovementLoopAddLocation(NPC, -23.58, 0.06, 66.57, 2, 0)
+ MovementLoopAddLocation(NPC, -22.67, 0.05, 62.41, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -22.67, 0.05, 62.41, 2, 0)
+ MovementLoopAddLocation(NPC, -22.24, 0.06, 66.51, 2, 0)
+ MovementLoopAddLocation(NPC, -22.32, 0.71, 75.83, 2, 0)
+ MovementLoopAddLocation(NPC, -26.54, 0.71, 75.71, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -26.54, 0.71, 75.71, 2, 0)
+ MovementLoopAddLocation(NPC, -22.98, 0.71, 75.28, 2, 0)
+ MovementLoopAddLocation(NPC, -22.34, 0.06, 67.89, 2, 0)
+ MovementLoopAddLocation(NPC, -31.36, -0.52, 66.46, 2, 0)
+ MovementLoopAddLocation(NPC, -31.86, -0.66, 61.9, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -31.86, -0.66, 61.9, 2, 0)
+ MovementLoopAddLocation(NPC, -31.23, -0.57, 66.08, 2, 0)
+ MovementLoopAddLocation(NPC, -41.7, 0.71, 66.8, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath3.lua b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath3.lua
new file mode 100755
index 000000000..6f035af0a
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath3.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath3.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.08 04:12:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -12.89, 0.23, 75.97, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -12.89, 0.23, 75.97, 2, 0)
+ MovementLoopAddLocation(NPC, -13.4, 0.71, 62.65, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -13.4, 0.71, 62.65, 2, 0)
+ MovementLoopAddLocation(NPC, -13.24, 0.11, 75.1, 2, 0)
+ MovementLoopAddLocation(NPC, -19.31, 0.71, 75.53, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -19.31, 0.71, 75.53, 2, 0)
+ MovementLoopAddLocation(NPC, -14.14, -0.02, 74.3, 2, 0)
+ MovementLoopAddLocation(NPC, -13.87, 0.49, 67.42, 2, 0)
+ MovementLoopAddLocation(NPC, -21.71, 0.06, 66.97, 2, 0)
+ MovementLoopAddLocation(NPC, -22.15, -0.66, 57.62, 2, 0)
+ MovementLoopAddLocation(NPC, -26.28, -0.1, 57.53, 2, 0)
+ MovementLoopAddLocation(NPC, -31.73, -0.66, 56.88, 2, 0)
+ MovementLoopAddLocation(NPC, -32.24, -0.66, 61.43, 2, 0)
+ MovementLoopAddLocation(NPC, -32.18, -0.66, 64.7, 2, 0)
+ MovementLoopAddLocation(NPC, -34.38, -0.4, 65.75, 2, 0)
+ MovementLoopAddLocation(NPC, -41.12, 0.71, 66.16, 2, 0)
+ MovementLoopAddLocation(NPC, -41.89, 0.71, 61.89, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -41.89, 0.71, 61.89, 2, 0)
+ MovementLoopAddLocation(NPC, -41.31, 0.71, 65.31, 2, 0)
+ MovementLoopAddLocation(NPC, -32.65, -0.54, 66.29, 2, 0)
+ MovementLoopAddLocation(NPC, -23.47, 0.06, 66.14, 2, 0)
+ MovementLoopAddLocation(NPC, -14.02, 0.46, 66.36, 2, 0)
+ MovementLoopAddLocation(NPC, -13.38, 0.69, 63.72, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -13.38, 0.69, 63.72, 2, 0)
+ MovementLoopAddLocation(NPC, -13.72, 0.51, 66.44, 2, 0)
+ MovementLoopAddLocation(NPC, -22.12, 0.06, 66.87, 2, 0)
+ MovementLoopAddLocation(NPC, -21.88, 0.71, 75.72, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath4.lua b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath4.lua
new file mode 100755
index 000000000..24d5811de
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath4.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/asludgewalkerhatchlingPath4.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.08 04:12:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ waypoints(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -13.49, 0.71, 47.31, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -13.49, 0.71, 47.31, 2, 0)
+ MovementLoopAddLocation(NPC, -22.93, -0.17, 48.38, 2, 0)
+ MovementLoopAddLocation(NPC, -22.46, -0.66, 56.47, 2, 0)
+ MovementLoopAddLocation(NPC, -22.5, 0.02, 61.37, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -22.5, 0.02, 61.37, 2, 0)
+ MovementLoopAddLocation(NPC, -22.93, -0.66, 57.34, 2, 0)
+ MovementLoopAddLocation(NPC, -27.31, -0.1, 56.78, 2, 0)
+ MovementLoopAddLocation(NPC, -31.16, -0.61, 56.99, 2, 0)
+ MovementLoopAddLocation(NPC, -32.17, -0.66, 61.6, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -32.17, -0.66, 61.6, 2, 0)
+ MovementLoopAddLocation(NPC, -32.31, 0.07, 52.15, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -32.31, 0.07, 52.15, 2, 0)
+ MovementLoopAddLocation(NPC, -32.21, -0.66, 56.25, 2, 0)
+ MovementLoopAddLocation(NPC, -40.83, 0.71, 57.1, 2, 0)
+ MovementLoopAddLocation(NPC, -41.46, 0.71, 61.02, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -41.46, 0.71, 61.02, 2, 0)
+ MovementLoopAddLocation(NPC, -41.38, 0.71, 52.89, 2, MakeRandomInt(3,6))
+ MovementLoopAddLocation(NPC, -41.38, 0.71, 52.89, 2, 0)
+ MovementLoopAddLocation(NPC, -41.61, 0.71, 65.67, 2, 0)
+ MovementLoopAddLocation(NPC, -32.86, -0.56, 66.15, 2, 0)
+ MovementLoopAddLocation(NPC, -23.29, 0.06, 66.06, 2, 0)
+ MovementLoopAddLocation(NPC, -22.82, 0.05, 62.35, 2, 0)
+ MovementLoopAddLocation(NPC, -23.26, -0.66, 56.75, 2, 0)
+ MovementLoopAddLocation(NPC, -17.43, 0.46, 57.16, 2, 0)
+ MovementLoopAddLocation(NPC, -13.74, -0.02, 57.01, 2, 0)
+end
+
diff --git a/server/SpawnScripts/TheThievesWay_Classic/atrashhopper.lua b/server/SpawnScripts/TheThievesWay_Classic/atrashhopper.lua
new file mode 100644
index 000000000..21ef9d64d
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/atrashhopper.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/atrashhopper.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.24 06:12:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -3, 3, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aunionmemberLocal858.lua b/server/SpawnScripts/TheThievesWay_Classic/aunionmemberLocal858.lua
new file mode 100755
index 000000000..3dc4d5af0
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aunionmemberLocal858.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aunionmemberLocal858.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ gnome(NPC,Spawn)
+ IdleTinker(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858.lua b/server/SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858.lua
new file mode 100755
index 000000000..a3770f99c
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.02 04:12:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ gnome(NPC, Spawn)
+ IdleTinker(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858Roam.lua b/server/SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858Roam.lua
new file mode 100755
index 000000000..c2d693aa0
--- /dev/null
+++ b/server/SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858Roam.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : SpawnScripts/TheThievesWay_Classic/aunionmenderLocal858Roam.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.07 04:12:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+dofile("SpawnScripts/Generic/MonsterCallouts/Pipefitters.lua")
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ gnome(NPC, Spawn)
+ RandomMovement(NPC, Spawn, -4, 4, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ElowysLaceleaf.lua b/server/SpawnScripts/ThunderingSteppes/ElowysLaceleaf.lua
index c8ffbc800..b63858a77 100755
--- a/server/SpawnScripts/ThunderingSteppes/ElowysLaceleaf.lua
+++ b/server/SpawnScripts/ThunderingSteppes/ElowysLaceleaf.lua
@@ -7,7 +7,7 @@
--]]
function spawn(NPC)
- SetPlayerProximityFunction(NPC, 10, "InRange")
+ SetPlayerProximityFunction(NPC, 15, "InRange")
end
function hailed(NPC, Spawn)
@@ -16,8 +16,10 @@ end
function InRange(NPC, Spawn)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "", "Say! Are you a collector, too? I'm having the worst luck!", "", 0, 0, Spawn)
+ PlayFlavor(NPC, "", "Say! Are you a collector, too? I'm having the worst luck!", "flustered", 0, 0, Spawn)
end
+
+
function respawn(NPC)
diff --git a/server/SpawnScripts/ThunderingSteppes/MintyFrostbeard.lua b/server/SpawnScripts/ThunderingSteppes/MintyFrostbeard.lua
new file mode 100755
index 000000000..77f9059e4
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/MintyFrostbeard.lua
@@ -0,0 +1,73 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/MintyFrostbeard.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 12:04:20
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/PlayerHistory"
+local TheseBootsWereMadeFor = 5805 -- These Boots Were Made For QUEST ID
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetQuestStep(Spawn, TheseBootsWereMadeFor) == 14 then
+Dialog1(NPC, Spawn)
+elseif GetQuestStep(Spawn, TheseBootsWereMadeFor) == 15 then
+ local time = GetPlayerHistory(Spawn, HISTORY.ANTONICA_BOOTS_HERITAGE_QUEST_WAIT) + 4500
+ if os.time() < time then
+ PlayFlavor(NPC, "voiceover/english/minty_frostbeard/steppes/quest/quest_minty_frostbeard_notready_d303af9a.mp3", "Ah, the boots aren't ready yet. They'll be ready tomorrow.", "", 2149540092, 2730738076, Spawn)
+ elseif os.time() > time then
+ Dialog4(NPC, Spawn)
+ end
+end
+end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What? And who might you be?")
+ Dialog.AddVoiceover("voiceover/english/minty_frostbeard/steppes/minty_frostbeard001.mp3", 194470125, 2532852862)
+ Dialog.AddOption("My name is " .. GetName(Spawn) .. ". Hwal sent me to fetch his new pair of boots.", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Did you bring the materials I need? I can't very well make a pair of boots without the right leather and steel, can I?")
+ Dialog.AddVoiceover("voiceover/english/minty_frostbeard/steppes/minty_frostbeard002.mp3", 3152977320, 1334538504)
+ Dialog.AddOption("Yes, I brought the leather and steel you specified.", "Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 14)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Well then, that's wonderful! Why don't you come back tomorrow at about this time, and I'll have the boots ready.")
+ Dialog.AddVoiceover("voiceover/english/minty_frostbeard/steppes/minty_frostbeard003.mp3", 4260781582, 3373743779)
+ Dialog.AddOption("Very well. Thanks Minty.")
+ Dialog.Start()
+end
+
+
+function Dialog4(NPC, Spawn)
+ SetStepComplete(Spawn, TheseBootsWereMadeFor, 15)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Thanks for waiting, dear! Here's the boots for Hwal. Give him my regards!")
+ Dialog.AddVoiceover("voiceover/english/minty_frostbeard/steppes/minty_frostbeard004.mp3", 674353442, 1806474731)
+ Dialog.AddOption("Thanks Minty!")
+ Dialog.Start()
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/OttStompgutt.lua b/server/SpawnScripts/ThunderingSteppes/OttStompgutt.lua
index 1995a381b..985736c6f 100755
--- a/server/SpawnScripts/ThunderingSteppes/OttStompgutt.lua
+++ b/server/SpawnScripts/ThunderingSteppes/OttStompgutt.lua
@@ -5,9 +5,13 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-
+function spawn(NPC, Spawn)
+ dmgMod = GetStr(NPC)/10
+ SetInfoStructUInt(NPC, "override_primary_weapon", 1)
+ SetInfoStructUInt(NPC, "primary_weapon_damage_low", math.floor(95 + dmgMod))
+ SetInfoStructUInt(NPC, "primary_weapon_damage_high", math.floor(155 + dmgMod))
end
function aggro(NPC, Spawn)
diff --git a/server/SpawnScripts/ThunderingSteppes/aBloodtoothforestrunner.lua b/server/SpawnScripts/ThunderingSteppes/aBloodtoothforestrunner.lua
new file mode 100644
index 000000000..f333bbee9
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aBloodtoothforestrunner.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aBloodtoothforestrunner.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeadRivereidolon.lua b/server/SpawnScripts/ThunderingSteppes/aDeadRivereidolon.lua
new file mode 100644
index 000000000..892b96e43
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeadRivereidolon.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeadRivereidolon.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeadRiverknight.lua b/server/SpawnScripts/ThunderingSteppes/aDeadRiverknight.lua
new file mode 100644
index 000000000..cd5b8b3f2
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeadRiverknight.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeadRiverknight.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeadRivermanes.lua b/server/SpawnScripts/ThunderingSteppes/aDeadRivermanes.lua
new file mode 100644
index 000000000..84dfb32d4
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeadRivermanes.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeadRivermanes.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:14
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeadRiverswordsman.lua b/server/SpawnScripts/ThunderingSteppes/aDeadRiverswordsman.lua
new file mode 100644
index 000000000..de8cc8a17
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeadRiverswordsman.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeadRiverswordsman.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeathboneberserker.lua b/server/SpawnScripts/ThunderingSteppes/aDeathboneberserker.lua
new file mode 100644
index 000000000..ac7187ece
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeathboneberserker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeathboneberserker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeathboneknight.lua b/server/SpawnScripts/ThunderingSteppes/aDeathboneknight.lua
new file mode 100644
index 000000000..f96c1e856
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeathboneknight.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeathboneknight.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:15
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aDeathbonetheurgist.lua b/server/SpawnScripts/ThunderingSteppes/aDeathbonetheurgist.lua
new file mode 100644
index 000000000..ac4c602eb
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aDeathbonetheurgist.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aDeathbonetheurgist.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aFirerockgiant.lua b/server/SpawnScripts/ThunderingSteppes/aFirerockgiant.lua
new file mode 100644
index 000000000..b350b3de9
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aFirerockgiant.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aFirerockgiant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aFirerockgoliath.lua b/server/SpawnScripts/ThunderingSteppes/aFirerockgoliath.lua
new file mode 100644
index 000000000..daef43ce0
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aFirerockgoliath.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aFirerockgoliath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aFirerockguardian.lua b/server/SpawnScripts/ThunderingSteppes/aFirerockguardian.lua
new file mode 100644
index 000000000..2d82c4667
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aFirerockguardian.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aFirerockguardian.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:34
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aFirerockscout.lua b/server/SpawnScripts/ThunderingSteppes/aFirerockscout.lua
new file mode 100644
index 000000000..0020a5d08
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aFirerockscout.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aFirerockscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aRallosianghost.lua b/server/SpawnScripts/ThunderingSteppes/aRallosianghost.lua
new file mode 100644
index 000000000..bc6192937
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aRallosianghost.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aRallosianghost.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothchanter.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothchanter.lua
new file mode 100644
index 000000000..23c4406ee
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothchanter.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothchanter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothdiviner.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothdiviner.lua
new file mode 100644
index 000000000..e027e4fe2
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothdiviner.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothdiviner.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothfisher.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothfisher.lua
new file mode 100644
index 000000000..4df6fa2e6
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothfisher.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothfisher.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothforager.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothforager.lua
new file mode 100644
index 000000000..f9c5069cf
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothforager.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothforager.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothharvester.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothharvester.lua
new file mode 100644
index 000000000..713540a05
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothharvester.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothharvester.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:16
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothhunter.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothhunter.lua
new file mode 100644
index 000000000..2ca2fbf6d
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothhunter.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothhunter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothlookout.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothlookout.lua
new file mode 100644
index 000000000..e942d35b4
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothlookout.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothlookout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothlooter.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothlooter.lua
new file mode 100644
index 000000000..892fbadd1
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothlooter.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothlooter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseClass(NPC, Spawn)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 3) -- Guardian
+ --Set spell list here
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 4) -- Berserker
+ --Set spell list here
+ end
+end
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothscout.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothscout.lua
new file mode 100644
index 000000000..abf5c713e
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothscout.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:12
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothsoothsayer.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothsoothsayer.lua
new file mode 100644
index 000000000..824266434
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothsoothsayer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothsoothsayer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:49
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothspotter.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothspotter.lua
new file mode 100644
index 000000000..5c265609d
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothspotter.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothspotter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothtowerguard.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothtowerguard.lua
new file mode 100644
index 000000000..63ac96471
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothtowerguard.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothtowerguard.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothtracker.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothtracker.lua
new file mode 100644
index 000000000..4d44d6800
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothtracker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothtracker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSabertoothwarrior.lua b/server/SpawnScripts/ThunderingSteppes/aSabertoothwarrior.lua
new file mode 100644
index 000000000..9f9e6be64
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSabertoothwarrior.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSabertoothwarrior.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSkindancerdefiler.lua b/server/SpawnScripts/ThunderingSteppes/aSkindancerdefiler.lua
new file mode 100644
index 000000000..f3b6ce388
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSkindancerdefiler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSkindancerdefiler.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSkindancerknight.lua b/server/SpawnScripts/ThunderingSteppes/aSkindancerknight.lua
new file mode 100644
index 000000000..f3feb9e9a
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSkindancerknight.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSkindancerknight.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSkindancerlegionnaire.lua b/server/SpawnScripts/ThunderingSteppes/aSkindancerlegionnaire.lua
new file mode 100644
index 000000000..fafd206ab
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSkindancerlegionnaire.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSkindancerlegionnaire.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aSkindancersentry.lua b/server/SpawnScripts/ThunderingSteppes/aSkindancersentry.lua
new file mode 100644
index 000000000..05321adcc
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aSkindancersentry.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aSkindancersentry.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/abeachclamper.lua b/server/SpawnScripts/ThunderingSteppes/abeachclamper.lua
new file mode 100644
index 000000000..339325cf1
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/abeachclamper.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/abeachclamper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/acarriongorger.lua b/server/SpawnScripts/ThunderingSteppes/acarriongorger.lua
new file mode 100644
index 000000000..62d36374a
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/acarriongorger.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/acarriongorger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:04
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/acorpsefeeder.lua b/server/SpawnScripts/ThunderingSteppes/acorpsefeeder.lua
new file mode 100644
index 000000000..3f5ecd477
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/acorpsefeeder.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/acorpsefeeder.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/acragwrither.lua b/server/SpawnScripts/ThunderingSteppes/acragwrither.lua
new file mode 100644
index 000000000..c5204dd34
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/acragwrither.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/acragwrither.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:56
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/acraterfish.lua b/server/SpawnScripts/ThunderingSteppes/acraterfish.lua
new file mode 100644
index 000000000..6026b4094
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/acraterfish.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/acraterfish.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/acreepingdead.lua b/server/SpawnScripts/ThunderingSteppes/acreepingdead.lua
new file mode 100644
index 000000000..f5bfb5694
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/acreepingdead.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/acreepingdead.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adecrepitwraith.lua b/server/SpawnScripts/ThunderingSteppes/adecrepitwraith.lua
new file mode 100644
index 000000000..f84e438e7
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adecrepitwraith.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adecrepitwraith.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adrownedcaptain.lua b/server/SpawnScripts/ThunderingSteppes/adrownedcaptain.lua
new file mode 100644
index 000000000..d5dddf2ad
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adrownedcaptain.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adrownedcaptain.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adrownedcommander.lua b/server/SpawnScripts/ThunderingSteppes/adrownedcommander.lua
new file mode 100644
index 000000000..4130e2918
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adrownedcommander.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adrownedcommander.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adrownedfootsoldier.lua b/server/SpawnScripts/ThunderingSteppes/adrownedfootsoldier.lua
new file mode 100644
index 000000000..b98813ac6
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adrownedfootsoldier.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adrownedfootsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:54
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 8, -8, 2, 8, 15)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adrownedlieutenant.lua b/server/SpawnScripts/ThunderingSteppes/adrownedlieutenant.lua
new file mode 100644
index 000000000..6b74a4fce
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adrownedlieutenant.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adrownedlieutenant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adrownedtrooper.lua b/server/SpawnScripts/ThunderingSteppes/adrownedtrooper.lua
new file mode 100644
index 000000000..ed509aefb
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adrownedtrooper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adrownedtrooper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:38
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/adrownedveteran.lua b/server/SpawnScripts/ThunderingSteppes/adrownedveteran.lua
new file mode 100644
index 000000000..82a5951b3
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/adrownedveteran.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/adrownedveteran.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:59
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/afallengiant.lua b/server/SpawnScripts/ThunderingSteppes/afallengiant.lua
new file mode 100644
index 000000000..862acd834
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afallengiant.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afallengiant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/afallengoliath.lua b/server/SpawnScripts/ThunderingSteppes/afallengoliath.lua
new file mode 100644
index 000000000..2b1f16aa2
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afallengoliath.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afallengoliath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 03:03:35
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseClass(NPC, Spawn)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 3) -- Guardian
+ --Set spell list here
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 4) -- Berserker
+ --Set spell list here
+ end
+end
diff --git a/server/SpawnScripts/ThunderingSteppes/afanaticalranger.lua b/server/SpawnScripts/ThunderingSteppes/afanaticalranger.lua
new file mode 100644
index 000000000..d6af5421a
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afanaticalranger.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afanaticalranger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:19
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/afeyrockheap.lua b/server/SpawnScripts/ThunderingSteppes/afeyrockheap.lua
new file mode 100644
index 000000000..0c50d74a5
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afeyrockheap.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afeyrockheap.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:37
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/afiercewoodlandbear.lua b/server/SpawnScripts/ThunderingSteppes/afiercewoodlandbear.lua
new file mode 100644
index 000000000..cba9923df
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afiercewoodlandbear.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afiercewoodlandbear.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:57
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/afledglingantelope.lua b/server/SpawnScripts/ThunderingSteppes/afledglingantelope.lua
new file mode 100644
index 000000000..77b5afff4
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afledglingantelope.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afledglingantelope.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/afleshscavenger.lua b/server/SpawnScripts/ThunderingSteppes/afleshscavenger.lua
new file mode 100644
index 000000000..701cb1633
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/afleshscavenger.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/afleshscavenger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aghostlyfarmer.lua b/server/SpawnScripts/ThunderingSteppes/aghostlyfarmer.lua
new file mode 100644
index 000000000..640410d48
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aghostlyfarmer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aghostlyfarmer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/agleamgoblin.lua b/server/SpawnScripts/ThunderingSteppes/agleamgoblin.lua
new file mode 100644
index 000000000..3af9d88f6
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/agleamgoblin.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/agleamgoblin.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aglimmergoblin.lua b/server/SpawnScripts/ThunderingSteppes/aglimmergoblin.lua
new file mode 100644
index 000000000..313793325
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aglimmergoblin.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aglimmergoblin.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/agraniterumbler.lua b/server/SpawnScripts/ThunderingSteppes/agraniterumbler.lua
new file mode 100644
index 000000000..e9600c622
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/agraniterumbler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/agraniterumbler.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/agrasslandbeetle.lua b/server/SpawnScripts/ThunderingSteppes/agrasslandbeetle.lua
new file mode 100644
index 000000000..53cf4fd93
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/agrasslandbeetle.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/agrasslandbeetle.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahighlandbloodpaw.lua b/server/SpawnScripts/ThunderingSteppes/ahighlandbloodpaw.lua
new file mode 100644
index 000000000..cf378b149
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahighlandbloodpaw.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahighlandbloodpaw.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:58
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahighlandhuntress.lua b/server/SpawnScripts/ThunderingSteppes/ahighlandhuntress.lua
new file mode 100644
index 000000000..5c693102e
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahighlandhuntress.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahighlandhuntress.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahighlandlioncub.lua b/server/SpawnScripts/ThunderingSteppes/ahighlandlioncub.lua
new file mode 100644
index 000000000..1d5f054a1
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahighlandlioncub.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahighlandlioncub.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahighlandmatriarch.lua b/server/SpawnScripts/ThunderingSteppes/ahighlandmatriarch.lua
new file mode 100644
index 000000000..3d5366c2d
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahighlandmatriarch.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahighlandmatriarch.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahighlandpatriarch.lua b/server/SpawnScripts/ThunderingSteppes/ahighlandpatriarch.lua
new file mode 100644
index 000000000..5a5c79728
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahighlandpatriarch.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahighlandpatriarch.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:02
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahighlandstalker.lua b/server/SpawnScripts/ThunderingSteppes/ahighlandstalker.lua
new file mode 100644
index 000000000..825e9fb70
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahighlandstalker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahighlandstalker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ahoveringdeathclaw.lua b/server/SpawnScripts/ThunderingSteppes/ahoveringdeathclaw.lua
new file mode 100644
index 000000000..f0cdc94ad
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ahoveringdeathclaw.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ahoveringdeathclaw.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ajuvenilehawk.lua b/server/SpawnScripts/ThunderingSteppes/ajuvenilehawk.lua
new file mode 100644
index 000000000..b625a1add
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ajuvenilehawk.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ajuvenilehawk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/alargeshorecrab.lua b/server/SpawnScripts/ThunderingSteppes/alargeshorecrab.lua
new file mode 100644
index 000000000..1a6302cc2
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/alargeshorecrab.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/alargeshorecrab.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/alegbiter.lua b/server/SpawnScripts/ThunderingSteppes/alegbiter.lua
new file mode 100644
index 000000000..a1b576e92
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/alegbiter.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/alegbiter.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/alowlandforestcrawler.lua b/server/SpawnScripts/ThunderingSteppes/alowlandforestcrawler.lua
new file mode 100644
index 000000000..0565f9bfb
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/alowlandforestcrawler.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/alowlandforestcrawler.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:22
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/amarineslug.lua b/server/SpawnScripts/ThunderingSteppes/amarineslug.lua
new file mode 100644
index 000000000..41dbdab3e
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/amarineslug.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/amarineslug.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:41
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/amatureantelope.lua b/server/SpawnScripts/ThunderingSteppes/amatureantelope.lua
new file mode 100644
index 000000000..9e930f0f7
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/amatureantelope.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/amatureantelope.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/amaturehawk.lua b/server/SpawnScripts/ThunderingSteppes/amaturehawk.lua
new file mode 100644
index 000000000..dfb051591
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/amaturehawk.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/amaturehawk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/amightygriffin.lua b/server/SpawnScripts/ThunderingSteppes/amightygriffin.lua
new file mode 100644
index 000000000..80f8630b9
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/amightygriffin.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/amightygriffin.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/apackleader.lua b/server/SpawnScripts/ThunderingSteppes/apackleader.lua
new file mode 100644
index 000000000..2995f0074
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/apackleader.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/apackleader.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/apirate.lua b/server/SpawnScripts/ThunderingSteppes/apirate.lua
new file mode 100644
index 000000000..a61ea14ef
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/apirate.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/apirate.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseClass(NPC)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChooseClass(NPC, Spawn)
+ SetClass = MakeRandomInt(1,2)
+ if SetClass == 1 then
+ SpawnSet(NPC, "class", 3) -- Guardian
+ --Set spell list here
+ elseif SetClass == 2 then
+ SpawnSet(NPC, "class", 4) -- Berserker
+ --Set spell list here
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aplainslurker.lua b/server/SpawnScripts/ThunderingSteppes/aplainslurker.lua
new file mode 100644
index 000000000..08ea6b681
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aplainslurker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aplainslurker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:55
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aplainsserpent.lua b/server/SpawnScripts/ThunderingSteppes/aplainsserpent.lua
new file mode 100644
index 000000000..a27f71c8c
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aplainsserpent.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aplainsserpent.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:17
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/apuerilehawk.lua b/server/SpawnScripts/ThunderingSteppes/apuerilehawk.lua
new file mode 100644
index 000000000..a2f476f60
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/apuerilehawk.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/apuerilehawk.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:36
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/areefstalker.lua b/server/SpawnScripts/ThunderingSteppes/areefstalker.lua
new file mode 100644
index 000000000..7411cb7c9
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/areefstalker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/areefstalker.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:31
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/arevenantcommander.lua b/server/SpawnScripts/ThunderingSteppes/arevenantcommander.lua
new file mode 100644
index 000000000..90b79ce19
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/arevenantcommander.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/arevenantcommander.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:52
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/arevenantscout.lua b/server/SpawnScripts/ThunderingSteppes/arevenantscout.lua
new file mode 100644
index 000000000..f98be4698
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/arevenantscout.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/arevenantscout.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/arevenantsoldier.lua b/server/SpawnScripts/ThunderingSteppes/arevenantsoldier.lua
new file mode 100644
index 000000000..f47a4c16d
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/arevenantsoldier.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/arevenantsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:29
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aroamingdead.lua b/server/SpawnScripts/ThunderingSteppes/aroamingdead.lua
new file mode 100644
index 000000000..90b347e3c
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aroamingdead.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aroamingdead.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:48
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/arockwrither.lua b/server/SpawnScripts/ThunderingSteppes/arockwrither.lua
new file mode 100644
index 000000000..6a4aedd74
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/arockwrither.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/arockwrither.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:05
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aroekillikdigger.lua b/server/SpawnScripts/ThunderingSteppes/aroekillikdigger.lua
new file mode 100644
index 000000000..76a588e45
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aroekillikdigger.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aroekillikdigger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:26
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aroekillikexcavator.lua b/server/SpawnScripts/ThunderingSteppes/aroekillikexcavator.lua
new file mode 100644
index 000000000..6a8b50f05
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aroekillikexcavator.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aroekillikexcavator.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/aroekillikminer.lua b/server/SpawnScripts/ThunderingSteppes/aroekillikminer.lua
new file mode 100644
index 000000000..51f2f0c3d
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/aroekillikminer.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/aroekillikminer.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/arubblewrither.lua b/server/SpawnScripts/ThunderingSteppes/arubblewrither.lua
new file mode 100644
index 000000000..adef4c544
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/arubblewrither.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/arubblewrither.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:24
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/asavagewealdwolf.lua b/server/SpawnScripts/ThunderingSteppes/asavagewealdwolf.lua
new file mode 100644
index 000000000..eaa98c18d
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/asavagewealdwolf.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/asavagewealdwolf.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ashadowedriftwatcher.lua b/server/SpawnScripts/ThunderingSteppes/ashadowedriftwatcher.lua
new file mode 100644
index 000000000..d2e295126
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ashadowedriftwatcher.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ashadowedriftwatcher.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:20
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ashadowedservitor.lua b/server/SpawnScripts/ThunderingSteppes/ashadowedservitor.lua
new file mode 100644
index 000000000..b98b6e716
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ashadowedservitor.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ashadowedservitor.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ashallowsfish.lua b/server/SpawnScripts/ThunderingSteppes/ashallowsfish.lua
new file mode 100644
index 000000000..007855301
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ashallowsfish.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ashallowsfish.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:13
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/ashorecrab.lua b/server/SpawnScripts/ThunderingSteppes/ashorecrab.lua
new file mode 100644
index 000000000..b4f765aeb
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/ashorecrab.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/ashorecrab.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:30
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/asilversnapper.lua b/server/SpawnScripts/ThunderingSteppes/asilversnapper.lua
new file mode 100644
index 000000000..fc0d863a1
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/asilversnapper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/asilversnapper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:08
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletalcaptain.lua b/server/SpawnScripts/ThunderingSteppes/askeletalcaptain.lua
new file mode 100644
index 000000000..e1a5cdc80
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletalcaptain.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletalcaptain.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:28
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletalcommander.lua b/server/SpawnScripts/ThunderingSteppes/askeletalcommander.lua
new file mode 100644
index 000000000..c21b657d8
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletalcommander.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletalcommander.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:44
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletalfootsoldier.lua b/server/SpawnScripts/ThunderingSteppes/askeletalfootsoldier.lua
new file mode 100644
index 000000000..79e0c5f3e
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletalfootsoldier.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletalfootsoldier.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:00
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletallieutenant.lua b/server/SpawnScripts/ThunderingSteppes/askeletallieutenant.lua
new file mode 100644
index 000000000..37e597075
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletallieutenant.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletallieutenant.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:50
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletalprotector.lua b/server/SpawnScripts/ThunderingSteppes/askeletalprotector.lua
new file mode 100644
index 000000000..8c7db9df8
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletalprotector.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletalprotector.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:09
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletaltrooper.lua b/server/SpawnScripts/ThunderingSteppes/askeletaltrooper.lua
new file mode 100644
index 000000000..dc5ce8482
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletaltrooper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletaltrooper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:25
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/askeletalveteran.lua b/server/SpawnScripts/ThunderingSteppes/askeletalveteran.lua
new file mode 100644
index 000000000..b09951cb6
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/askeletalveteran.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/askeletalveteran.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/ThunderingSteppes/asmallsilversnapper.lua b/server/SpawnScripts/ThunderingSteppes/asmallsilversnapper.lua
new file mode 100644
index 000000000..f2501ca55
--- /dev/null
+++ b/server/SpawnScripts/ThunderingSteppes/asmallsilversnapper.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/ThunderingSteppes/asmallsilversnapper.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.22 04:03:18
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TimorousDeep/PrimaryConzukZumHa.lua b/server/SpawnScripts/TimorousDeep/PrimaryConzukZumHa.lua
index 3e3fe7a41..461161ed5 100755
--- a/server/SpawnScripts/TimorousDeep/PrimaryConzukZumHa.lua
+++ b/server/SpawnScripts/TimorousDeep/PrimaryConzukZumHa.lua
@@ -6,17 +6,31 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-local QUEST_3 = 107
-local QUEST_4 = 112
+local QUEST_3 = 5796
+local QUEST_4 = 5798
local QUEST_5 = 113
local QUEST_6 = 114
function spawn(NPC)
- ProvidesQuest(NPC, QUEST_4)
- ProvidesQuest(NPC, QUEST_5)
- ProvidesQuest(NPC, QUEST_6)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
+function InRange(NPC , Spawn)
+ if CanReceiveQuest(Spawn, QUEST_4) then
+ ProvidesQuest(NPC, QUEST_4)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+ elseif HasCompletedQuest(Spawn, QUEST_4) then
+ ProvidesQuest(NPC, QUEST_5)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+ elseif HasCompletedQuest(Spawn, QUEST_5) then
+ ProvidesQuest(NPC, QUEST_6)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+end
+ end
+
function respawn(NPC)
spawn(NPC)
end
diff --git a/server/SpawnScripts/TimorousDeep/TykorGiLok.lua b/server/SpawnScripts/TimorousDeep/TykorGiLok.lua
index cac370070..7f0027ea5 100755
--- a/server/SpawnScripts/TimorousDeep/TykorGiLok.lua
+++ b/server/SpawnScripts/TimorousDeep/TykorGiLok.lua
@@ -6,16 +6,31 @@
Script Notes : Auto-Generated Conversation from PacketParser Data
--]]
-QUEST_1 = 105
-QUEST_2 = 106
-QUEST_3 = 107
+QUEST_1 = 5795 -- Poaching the Poachers QUEST ID
+QUEST_2 = 5796 -- Curious Ore QUEST ID
+QUEST_3 = 5797 -- Report to the Primary QUEST ID
function spawn(NPC)
- ProvidesQuest(NPC, QUEST_1)
- ProvidesQuest(NPC, QUEST_2)
- ProvidesQuest(NPC, QUEST_3)
+ SetPlayerProximityFunction(NPC, 10, "InRange")
end
+function InRange(NPC , Spawn)
+ if CanReceiveQuest(Spawn, QUEST_1) then
+ ProvidesQuest(NPC, QUEST_1)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+ elseif HasCompletedQuest(Spawn, QUEST_1) then
+ ProvidesQuest(NPC, QUEST_2)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+ elseif HasCompletedQuest(Spawn, QUEST_2) then
+ ProvidesQuest(NPC, QUEST_3)
+ SetInfoFlag(NPC)
+SetVisualFlag(NPC)
+end
+ end
+
+
function respawn(NPC)
spawn(NPC)
end
@@ -65,7 +80,6 @@ function dlg_0_1(NPC, Spawn)
end
function OfferQuest1(NPC, Spawn)
- OfferQuest(NPC, Spawn)
OfferQuest(NPC, Spawn, QUEST_1)
end
diff --git a/server/SpawnScripts/TimorousDeep/aHaoaeranpoacher.lua b/server/SpawnScripts/TimorousDeep/aHaoaeranpoacher.lua
index 985066a4f..2065570ca 100755
--- a/server/SpawnScripts/TimorousDeep/aHaoaeranpoacher.lua
+++ b/server/SpawnScripts/TimorousDeep/aHaoaeranpoacher.lua
@@ -1,11 +1,18 @@
--[[
- Script Name :
- Script Purpose :
- Script Author :
- Script Date :
- Script Notes :
+ Script Name : SpawnScripts/TimorousDeep/aHaoaeranpoacher.lua
+ Script Purpose : a Haoaeran poacher spawn script
+ Script Author : premierio015
+ Script Date : 03.04.2023
+ Script Notes :
--]]
+local crablist = { 35182, 34566, 34575, 34752, 34873, 35006, 35182, 35355, 35470, 35506, 35527, 35535, 35544, 35550, 35551, 35554, 35555, 35581, 35635, 35698, 35768, 35818, 35848, 35867, 35889, 35918, 35943, 35948, 35951, 35960, 35971, 35981 }; -- array with crabs location ID's
+function prespawn(NPC)
+for k, v in ipairs(crablist) do
+AddSpawnProximity(NPC, v, 1, 5, "InRange")
+ end
+end
+
function spawn(NPC)
choice = math.random(1, 4)
if choice == 1 then
@@ -17,50 +24,46 @@ function spawn(NPC)
elseif choice == 4 then
counter_clockwise2(NPC)
end
-
- AddTimer(NPC, 10000, "InitialWait")
end
function respawn(NPC)
spawn(NPC)
end
-function InitialWait(NPC)
- AddTimer(NPC, 1000, "CheckForCrabs")
+
+function InRange(NPC)
+local crab = GetSpawn(NPC, 2630018)
+if crab ~= nil then
+Attack(NPC, crab)
end
+ end
-function CheckForCrabs(NPC)
- Crab = GetSpawn(NPC, 2630015)
- if GetDistance(NPC, Crab) <= 5 and IsAlive(Crab) then
- KillSpawn(Crab, NPC, 1)
- else
- Crab2 = GetSpawn(NPC, 2630016)
- if GetDistance(NPC, Crab2) <= 5 and IsAlive(Crab2) then
- KillSpawn(Crab2, NPC, 1)
- end
- end
- AddTimer(NPC, 10000, "SetUpCheck")
-end
-function SetUpCheck(NPC)
- AddTimer(NPC, 1000, "CheckForCrabs")
-end
-function aggro(NPC, Spawn)
- chance = math.random(1, 100)
- if chance <= 30 then
+
+
+function killed(NPC, Spawn)
+ chance = MakeRandomInt(1, 100)
+ if chance <= 50 then
PlayFlavor(NPC, "voiceover/english/rok_combat_vo/a_spiroc/ft/_exp04/aviak/spiroc_victory_9f0466af.mp3", "Score one for the spiroc!", "", 2170775157, 841438160)
end
end
-function killed(NPC, Spawn)
- chance = math.random(1, 100)
- if chance <= 30 then
+function aggro(NPC, Spawn)
+ chance = MakeRandomInt(1, 100)
+ if chance <= 50 then
+ option = MakeRandomInt(1, 2)
+ if option == 1 then
PlayFlavor(NPC, "voiceover/english/rok_combat_vo/a_spiroc/ft/_exp04/aviak/spiroc_aggro_64bf7f6f.mp3", "I'm taking this one down!", "", 1322142455, 2874795880)
+ else
+ PlayFlavor(NPC, "voiceover/english/rok_combat_vo/a_spiroc/ft/_exp04/aviak/spiroc_aggro_ef272489.mp3", "Hostile at twelve o'clock!", "", 1038256671, 3948487543)
+ end
end
end
+
+
function clockwise1(NPC)
x = GetX(NPC)
y = GetY(NPC)
diff --git a/server/SpawnScripts/TimorousDeep/curiousore.lua b/server/SpawnScripts/TimorousDeep/curiousore.lua
index 33b051c92..61d0bfe5a 100755
--- a/server/SpawnScripts/TimorousDeep/curiousore.lua
+++ b/server/SpawnScripts/TimorousDeep/curiousore.lua
@@ -6,8 +6,17 @@
Script Notes :
--]]
+function prespawn(NPC)
+local random_model = MakeRandomInt(1, 2)
+if random_model == 1 then
+SpawnSet(NPC, "model_type", 3956)
+elseif random_model == 2 then
+SpawnSet(NPC, "model_type", 3957)
+end
+ end
+
function spawn(NPC)
- SetRequiredQuest(NPC, 106, 1)
+ SetRequiredQuest(NPC, 5796, 1)
end
function hailed(NPC, Spawn)
diff --git a/server/SpawnScripts/TroubledHaunt/EnterWarning.lua b/server/SpawnScripts/TroubledHaunt/EnterWarning.lua
new file mode 100755
index 000000000..dede08916
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/EnterWarning.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/EnterWarning.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.27 01:11:03
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+SetTempVariable(NPC, "Enter", "true")
+end
+
+function InRange(NPC,Spawn,Zone)
+if GetTempVariable(NPC,"Enter")=="true" then
+ SetTempVariable(NPC, "Enter", "false")
+ local con = CreateConversation()
+ AddConversationOption(con, "I must purge the anger from these tormented souls.","Close")
+ StartDialogConversation(con, 1, NPC, Spawn, "The cold air of this home seeps under your skin. A chill travels up your spine as you witness listless souls parading about in apparent anguish. Perhaps conquering their anger will calm them.")
+ PlayFlavor(Spawn,"","","shiver",0,0)
+end
+end
+
+function Close(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+end
+
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/aChair.lua b/server/SpawnScripts/TroubledHaunt/aChair.lua
new file mode 100755
index 000000000..69e71d7c2
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/aChair.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/aChair.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 12:11:26
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+zone = GetZone(NPC)
+if GetSpawnLocationID(NPC)==133780830 or GetSpawnLocationID(NPC)==133780829 then
+AddTimer(NPC,1000,"ChairMove1")
+end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function ChairMove1(NPC)
+ local zone = GetZone(NPC)
+if IsAlive(GetSpawnByLocationID(zone,133780858))==true then
+
+ SpawnSet(NPC,"pitch",MakeRandomInt(40,70))
+ SpawnSet(NPC,"roll",MakeRandomInt(130,170))
+ Head = GetHeading(NPC)
+ SpawnSet(NPC,"Heading",(Head+3))
+ AddTimer(NPC,500,"ChairMove1")
+ else
+ if GetSpawnLocationID(NPC)==133780830 then
+ SpawnByLocationID(zone,133780841)
+ Despawn(NPC)
+ PlaySound(NPC,"sounds/ui/place_item.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif GetSpawnLocationID(NPC)==133780829 then
+ SpawnByLocationID(zone,133780842)
+ Despawn(NPC)
+ PlaySound(NPC,"sounds/ui/place_item.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+ end
+end
diff --git a/server/SpawnScripts/TroubledHaunt/aDesk.lua b/server/SpawnScripts/TroubledHaunt/aDesk.lua
new file mode 100755
index 000000000..12a42cc14
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/aDesk.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/aDesk.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 12:11:56
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+local zone = GetZone(NPC)
+if GetSpawnLocationID(NPC)==133780834 then
+AddTimer(NPC,1500,"Spin")
+end
+end
+
+
+
+function Spin(NPC)
+local zone = GetZone(NPC)
+if IsAlive(GetSpawnByLocationID(zone,133780857))==true then
+ Head = GetHeading(NPC)
+ SetHeading(NPC,(Head+5))
+ AddTimer(NPC,100,"Spin")
+
+else
+ SpawnByLocationID(zone,133780854)
+ Despawn(GetSpawnByLocationID(zone,133780834))
+ PlaySound(NPC,"sounds/ui/place_item.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/aHauntedTome.lua b/server/SpawnScripts/TroubledHaunt/aHauntedTome.lua
new file mode 100755
index 000000000..5ac37ac89
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/aHauntedTome.lua
@@ -0,0 +1,108 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/aHauntedTome.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 04:11:53
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+waypoints(NPC)
+end
+
+function waypoints(NPC)
+if GetSpawnLocationID(NPC) == 133780856 then
+ MovementLoopAddLocation(NPC, -6.46, 3.5, -6.29, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -2.45, 3.5, -7.08, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.39, 3.5, -8.98, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 4.71, 3.5, -8.72, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 7.48, 3.5, -8.35, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 5.67, 3.5, -2.53, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 2.97, 3.5, -2.96, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.42, 3.5, -4.26, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.82, 3.5, -6.05, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.57, 4.7, -1.58, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.93, 4.7, 0.11, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.23, 4.7, -1.56, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -0.84, 4.7, -7.96, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.52, 4.7, -9.13, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 6.84, 4.7, -7.87, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 7.3, 4.7, -1.78, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.07, 3.5, -2.17, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.03, 3.5, -6, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.42, 3.5, -7.32, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.03, 3.5, -6, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.07, 3.5, -2.17, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 7.3, 4.7, -1.78, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 6.84, 4.7, -7.87, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.52, 4.7, -9.13, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -0.84, 4.7, -7.96, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.23, 4.7, -1.56, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.93, 4.7, 0.11, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.57, 4.7, -1.58, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.82, 3.5, -6.05, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.42, 3.5, -4.26, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 2.97, 3.5, -2.96, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 5.67, 3.5, -2.53, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 7.48, 3.5, -8.35, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 4.71, 3.5, -8.72, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.39, 3.5, -8.98, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -2.45, 3.5, -7.08, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -6.46, 3.5, -6.29, 2, 2,"GhostCheck")
+ elseif GetSpawnLocationID(NPC) == 133780855 then
+ MovementLoopAddLocation(NPC, -1.94, 3.5, 7.35, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -5.67, 3.5, 7.94, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -8.91, 3.5, 8.16, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -10.02, 3.5, 5.91, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.2, 3.5, 9.15, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.64, 3.5, 7.89, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -0.99, 3.5, 4.7, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -2.18, 3.5, 4.57, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.63, 3.5, 8.56, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -5.17, 3.5, 9.31, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.24, 3.5, 7.15, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -9.82, 3.5, 5.18, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -10.53, 3.5, 6.84, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -6.94, 3.5, 7.23, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.68, 3.5, 4.66, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.89, 3.5, 8.29, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -3.09, 3.5, 6.53, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.7, 3.5, 8.13, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -10.39, 3.5, 6.2, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.7, 3.5, 8.13, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -3.09, 3.5, 6.53, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.89, 3.5, 8.29, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, 0.68, 3.5, 4.66, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -6.94, 3.5, 7.23, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -10.53, 3.5, 6.84, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -9.82, 3.5, 5.18, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -7.24, 3.5, 7.15, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -5.17, 3.5, 9.31, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.63, 3.5, 8.56, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -2.18, 3.5, 4.57, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -0.99, 3.5, 4.7, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.64, 3.5, 7.89, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -4.2, 3.5, 9.15, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -10.02, 3.5, 5.91, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -8.91, 3.5, 8.16, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -5.67, 3.5, 7.94, 2, 2,"GhostCheck")
+ MovementLoopAddLocation(NPC, -1.94, 3.5, 7.35, 2, 2,"GhostCheck")
+ end
+end
+
+function GhostCheck(NPC,Spawn)
+ zone = GetZone(NPC)
+if IsAlive(GetSpawnByLocationID(zone,133780859))==true then
+else
+Despawn(NPC)
+PlaySound(NPC,"sounds/ui/place_item.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/aRelievedspirit.lua b/server/SpawnScripts/TroubledHaunt/aRelievedspirit.lua
new file mode 100755
index 000000000..e9497d05c
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/aRelievedspirit.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/aRelievedspirit.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.23 06:09:46
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/aStatue.lua b/server/SpawnScripts/TroubledHaunt/aStatue.lua
new file mode 100755
index 000000000..106606812
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/aStatue.lua
@@ -0,0 +1,96 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/aStatue.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.28 06:11:33
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,2000,"visage01")
+end
+
+function hailed(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+local EndSpeech = true
+
+function visage01(NPC, Spawn)
+ EndSpeech = false
+ EmoteLoop(NPC)
+end
+
+function EmoteLoop(NPC)
+ math.randomseed(os.time())
+ local choice = math.random(1,12)
+
+ if choice == 1 then
+ PlayAnimation(NPC, 13042)
+ AddTimer(NPC, 5200, "Idle")
+ elseif choice == 2 then
+ PlayAnimation(NPC, 13043)
+ AddTimer(NPC, 4400, "Idle")
+ elseif choice == 3 then
+ PlayAnimation(NPC, 13044)
+ AddTimer(NPC, 6950, "Idle")
+ elseif choice == 4 then
+ PlayAnimation(NPC, 13045)
+ AddTimer(NPC, 5300, "Idle")
+ elseif choice == 5 then
+ PlayAnimation(NPC, 13046)
+ AddTimer(NPC, 3900, "Idle")
+ elseif choice == 6 then
+ PlayAnimation(NPC, 13047)
+ AddTimer(NPC, 4900, "Idle")
+ elseif choice == 7 then
+ PlayAnimation(NPC, 13048)
+ AddTimer(NPC, 4500, "Idle")
+ elseif choice == 8 then
+ PlayAnimation(NPC, 13049)
+ AddTimer(NPC, 3700, "Idle")
+ elseif choice == 9 then
+ PlayAnimation(NPC, 13050)
+ AddTimer(NPC, 3200, "Idle")
+ elseif choice == 10 then
+ PlayAnimation(NPC, 13051)
+ AddTimer(NPC, 4700, "Idle")
+ elseif choice == 11 then
+ PlayAnimation(NPC, 13052)
+ AddTimer(NPC, 3500, "Idle")
+ else
+ PlayAnimation(NPC, 13053)
+ AddTimer(NPC, 3200, "Idle")
+ end
+end
+
+
+function Idle(NPC)
+ PlayAnimation(NPC, 13042)
+ EmoteCheck(NPC)
+end
+
+function EndLoop(NPC)
+ EndSpeech = true
+end
+
+function EmoteCheck(NPC)
+ zone = GetZone(NPC)
+ Spirit1 = GetSpawnByLocationID(zone,133780857)
+ Spirit2 = GetSpawnByLocationID(zone,133780858)
+ Spirit3 = GetSpawnByLocationID(zone,133780859)
+
+ if EndSpeech == false and IsAlive(Spirit1)==true and IsAlive(Spirit2)==true and IsAlive(Spirit3)==true then
+ EmoteLoop(NPC)
+ else
+ PlayAnimation(NPC, 13042)
+ end
+end
+
diff --git a/server/SpawnScripts/TroubledHaunt/anAngryspirit.lua b/server/SpawnScripts/TroubledHaunt/anAngryspirit.lua
new file mode 100755
index 000000000..58765fa15
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/anAngryspirit.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/anAngryspirit.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 12:11:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ waypoints(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, 2.91, 0.67, -8.28, 2, 6)
+ MovementLoopAddLocation(NPC, 4.88, 0.67, -6.94, 2, 0)
+ MovementLoopAddLocation(NPC, 6.86, 0.67, -6.09, 2, 0)
+ MovementLoopAddLocation(NPC, 9.26, 0.67, -1.98, 2, 6)
+ MovementLoopAddLocation(NPC, 7.73, 0.67, -4.55, 2, 0)
+ MovementLoopAddLocation(NPC, 7.57, 0.67, -6.93, 2, 6)
+end
+
+
+function aggro(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ghost_human_base_1/ft/ghost/ghost_human_base_1_1_aggro_gf_821554e3.mp3", "Must you aggravate me so!", "", 735262000, 1417243472, Spawn, 0)
+end
+
+function death(NPC,Spawn)
+ PerformCameraShake(Spawn, 0.20000000298023224)
+ PlayFlavor(NPC, "voiceover/english/optional3/ghost_erudite_base_2/ft/ghost/ghost_erudite_base_2_1_death_gf_1bcf352c.mp3", "Death never truly comes for the undead.", "", 3894477950, 3388069625, Spawn, 0)
+ zone = GetZone(NPC)
+ if not IsAlive(GetSpawnByLocationID(zone,133780857)) and not IsAlive(GetSpawnByLocationID(zone,133780858)) and not IsAlive(GetSpawnByLocationID(zone,133780859)) then
+ SpawnByLocationID(zone,133780861)
+ SpawnByLocationID(zone,133780862)
+ SpawnByLocationID(zone,133780863)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/anEnragedspirit.lua b/server/SpawnScripts/TroubledHaunt/anEnragedspirit.lua
new file mode 100755
index 000000000..b665d4c54
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/anEnragedspirit.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/anEnragedspirit.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 12:11:51
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ waypoints(NPC)
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -6.76, 0.67, -6.09, 2, 6)
+ MovementLoopAddLocation(NPC, -7.17, 0.67, -6.71, 2, 0)
+ MovementLoopAddLocation(NPC, -7.56, 0.67, -6.45, 2, 0)
+ MovementLoopAddLocation(NPC, -6.88, 0.67, -5.62, 2, 0)
+ MovementLoopAddLocation(NPC, -6.2, 0.67, -5.71, 2, 0)
+ MovementLoopAddLocation(NPC, -1.07, 0.67, -6.83, 2, 6)
+ MovementLoopAddLocation(NPC, -0.4, 0.67, -6.93, 2, 0)
+ MovementLoopAddLocation(NPC, -0.88, 0.67, -7.42, 2, 0)
+ MovementLoopAddLocation(NPC, -2.08, 0.67, -7.29, 2, 0)
+end
+
+function death(NPC,Spawn)
+ PerformCameraShake(Spawn, 0.20000000298023224)
+ PlayFlavor(NPC, "voiceover/english/optional3/halfling_corrupted/ft/halfling/halfling_corrupted_1_death_gm_4c12cb24.mp3", "Free me!", "", 3881759262, 3266522906, Spawn, 8)
+ zone = GetZone(NPC)
+ if not IsAlive(GetSpawnByLocationID(zone,133780857)) and not IsAlive(GetSpawnByLocationID(zone,133780858)) then
+ SpawnByLocationID(zone,133780861)
+ SpawnByLocationID(zone,133780862)
+ SpawnByLocationID(zone,133780863)
+ end
+end
+
+function aggro(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/ghost_halfling_base_1/ft/ghost/ghost_halfling_base_1_1_aggro_gm_a507a247.mp3", "You'll pay for disturbing me!", "", 4260790933, 1525385880, Spawn, 0)
+
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/anEnragedspirit2.lua b/server/SpawnScripts/TroubledHaunt/anEnragedspirit2.lua
new file mode 100755
index 000000000..7298fc0ed
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/anEnragedspirit2.lua
@@ -0,0 +1,81 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/anEnragedspirit2.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.27 04:11:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+-- SetPlayerProximityFunction(NPC, 7, "InRange", "LeaveRange")
+end
+
+function hailed(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Might there be a release from this ... existence?")
+ Dialog.AddVoiceover("voiceover/english/ghost_halfling_base_1/ft/ghost/ghost_halfling_base_1_1_death_gm_e09a504d.mp3", 2158192373, 320090825)
+ PlayFlavor(NPC, "", "", "beg", 0,0, Spawn, 0)
+ Dialog.AddOption("I can't promise freedom, but I give you respect and reverence in your passing.","Thank")
+ Dialog.Start()
+end
+
+function InRange(NPC,Spawn)
+ AddTimer(NPC,1000,"hailed",1,Spawn)
+end
+
+function Thank(NPC,Spawn)
+ AddTimer(NPC,2500,"Spirit1",1,Spawn)
+ AddTimer(NPC,6000,"Spirit2",1,Spawn)
+ AddTimer(NPC,8000,"Absorb",1,Spawn)
+ PlayFlavor(NPC, "voiceover/english/ghost_halfling_base_1/ft/ghost/ghost_halfling_base_1_1_halfhealth_gm_2816c2df.mp3", "This doesn't compare to never tasting fine food or ale again!", "thanks", 2582503316, 2897386632, Spawn, 0)
+end
+
+function Spirit1(NPC,Spwan)
+ zone= GetZone(NPC)
+ Ring = GetSpawnByLocationID(zone,133780860)
+ ApplySpellVisual(Ring, 571)
+ SpawnSet(NPC,"model_type",273)
+ SpawnSet(NPC,"visual_state",0)
+end
+
+function Spirit2(NPC,Spawn)
+ if GetDistance(NPC,Spawn)>1 then
+ zone = GetZone(NPC)
+ x = GetX(Spawn)
+ y = GetY(Spawn)
+ z = GetZ(Spawn)
+ ApplySpellVisual(NPC,58)
+ SpiritNPC = GetSpawnByLocationID(zone,133780861)
+ MoveToLocation(SpiritNPC,x,y,z,4,"Spirit2")
+ SpiritA = GetSpawnByLocationID(zone,133780862)
+ SpiritB = GetSpawnByLocationID(zone,133780863)
+ MoveToLocation(SpiritA,x,y,z,4,"Spirit2")
+ MoveToLocation(SpiritB,x,y,z,4,"Spirit2")
+ MoveToLocation(NPC,x,y,z,4,"Spirit2")
+ else
+ Absorb(NPC,Spawn)
+ end
+end
+
+function Absorb(NPC,Spawn)
+ x = GetX(Spawn)
+ y = GetY(Spawn)
+ z = GetZ(Spawn)
+ MoveToLocation(SpiritNPC,x,y,z,4,"Spirit2")
+ SpiritA = GetSpawnByLocationID(zone,133780862)
+ SpiritB = GetSpawnByLocationID(zone,133780863)
+ SpiritNPC = GetSpawnByLocationID(zone,133780861)
+ Despawn(SpiritNPC)
+ Despawn(SpiritA)
+ Despawn(SpiritB)
+ ApplySpellVisual(Spawn,57)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/TroubledHaunt/anUnfruitfulspirit.lua b/server/SpawnScripts/TroubledHaunt/anUnfruitfulspirit.lua
new file mode 100755
index 000000000..0a8b7484f
--- /dev/null
+++ b/server/SpawnScripts/TroubledHaunt/anUnfruitfulspirit.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : SpawnScripts/TroubledHaunt/anUnfruitfulspirit.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.23 12:11:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+ waypoints(NPC)
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function waypoints(NPC)
+ MovementLoopAddLocation(NPC, -9.91, -0.33, 4.52, 2, 0)
+ MovementLoopAddLocation(NPC, -10.8, -0.33, 2.46, 2, 0)
+ MovementLoopAddLocation(NPC, -10.47, -0.33, 0.1, 2, 0)
+ MovementLoopAddLocation(NPC, -9.45, -0.33, -2.77, 2, 6)
+ MovementLoopAddLocation(NPC, -9.19, -0.33, -2.38, 2, 0)
+ MovementLoopAddLocation(NPC, -10.26, -0.33, -0.79, 2, 0)
+ MovementLoopAddLocation(NPC, -10.63, -0.33, 1.67, 2, 0)
+ MovementLoopAddLocation(NPC, -10.38, -0.33, 2.82, 2, 0)
+ MovementLoopAddLocation(NPC, -8.85, -0.33, 6.9, 2, 6)
+ MovementLoopAddLocation(NPC, -8.57, -0.33, 7.73, 2, 0)
+ MovementLoopAddLocation(NPC, -9.85, -0.33, 7.33, 2, 0)
+end
+
+
+function aggro(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/optional3/ghost_highelf_base_1/ft/ghost/ghost_highelf_base_1_1_aggro_gm_e15a7031.mp3", "They continue to press. Take them out!", "", 3477800043, 2281180631, Spawn, 0)
+end
+
+function death(NPC,Spawn)
+ PerformCameraShake(Spawn, 0.20000000298023224)
+ PlayFlavor(NPC, "voiceover/english/optional3/ghost_highelf_base_1/ft/ghost/ghost_highelf_base_1_1_death_gm_3523af72.mp3", "Perhaps now their soul will rest.", "", 2124266274, 395618904, Spawn, 0)
+ zone = GetZone(NPC)
+ if not IsAlive(GetSpawnByLocationID(zone,133780857)) and not IsAlive(GetSpawnByLocationID(zone,133780858)) and not IsAlive(GetSpawnByLocationID(zone,133780859)) then
+ SpawnByLocationID(zone,133780861)
+ SpawnByLocationID(zone,133780862)
+ SpawnByLocationID(zone,133780863)
+ end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WailingCaves/aShinReepawn.lua b/server/SpawnScripts/WailingCaves/aShinReepawn.lua
new file mode 100755
index 000000000..dcdd8a27a
--- /dev/null
+++ b/server/SpawnScripts/WailingCaves/aShinReepawn.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : SpawnScripts/WailingCaves/aShinReepawn.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.10 12:12:34
+ Script Purpose :
+ :
+--]]
+
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC)
+ NPCModule(NPC, Spawn)
+ movement(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function movement(NPC, Spawn)
+ if GetSpawnLocationID(NPC) == 403734 then
+ MovementLoopAddLocation(NPC, -43.08, -3.75, -37.87, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -35.10, -4.56, -35.38, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -41.61, -3.65, -22.29, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -54.29, -3.74, -28.69, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -54.26, -3.84, -37.78, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -47.56, -3.76, -38.09, 2, math.random(16, 24))
+end
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/WailingCaves/aguardianstatue.lua b/server/SpawnScripts/WailingCaves/aguardianstatue.lua
index 6eafe1662..6e8133570 100755
--- a/server/SpawnScripts/WailingCaves/aguardianstatue.lua
+++ b/server/SpawnScripts/WailingCaves/aguardianstatue.lua
@@ -9,7 +9,6 @@
function spawn(NPC)
- SetInvulnerable(NPC)
SetLuaBrain(NPC)
SetBrainTick(NPC, 500)
Think(NPC)
@@ -19,7 +18,7 @@ end
function Think(NPC)
local mostHated = GetMostHated(NPC)
if mostHated ~= nil then
---[[ Say(NPC, "Has most hated") --]]
+Say(NPC, "Has most hated")
aggro(NPC, mostHated)
end
end
@@ -27,7 +26,7 @@ end
function aggro(NPC, Spawn)
- if GetDistance(NPC, Spawn, 1) <= 3 then
+ if GetDistance(NPC, Spawn) <= 3 then
if GetTempVariable(NPC, "CASTING") ~= "True" then
SetTempVariable(NPC, "CASTING", "True")
CastSpell(Spawn, 230170, 1, NPC)
diff --git a/server/SpawnScripts/WailingCaves/aluridcrawler.lua b/server/SpawnScripts/WailingCaves/aluridcrawler.lua
new file mode 100755
index 000000000..bc9ae9426
--- /dev/null
+++ b/server/SpawnScripts/WailingCaves/aluridcrawler.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : SpawnScripts/WailingCaves/aluridcrawler.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.10 11:12:27
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ movement(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function movement(NPC, Spawn)
+ if GetSpawnLocationID(NPC) == 403397 then
+ MovementLoopAddLocation(NPC, -23.46, -5.12, -28.84, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -25.06, -3.08, -29.98, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -30.18, -4.96, -29.89, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -37.15, -4.15, -36.34, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -50.97, -3.78, -44.65, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -37.15, -4.15, -36.34, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -48.42, -3.79, -19.38, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -29.88, -4.97, -15.27, 2, math.random(16, 24))
+ elseif GetSpawnLocationID(NPC) == 403352 then
+ MovementLoopAddLocation(NPC, -50.27, -3.80, -44.49, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -52.07, -3.73, -27.92, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -44.53, -3.58, -26.17, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -46.60, -3.55, -24.19, 2, math.random(16, 24))
+ elseif GetSpawnLocationID(NPC) == 403424 then
+ MovementLoopAddLocation(NPC, -16.85, -6.07, -48.57, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -4.73, -7.47, -62.86, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -13.22, -7.11, -51.78, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -34.24, -5.00, -56.96, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -29.02, -5.00, -46.55, 2, math.random(16, 24))
+ elseif GetSpawnLocationID(NPC) == 403432 then
+ MovementLoopAddLocation(NPC, -24.61, -5.15, -59.63, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -25.19, -5.22, -64.05, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -7.82, -7.33, -57.32, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -21.45, -5.12, -61.96, 2, math.random(16, 24))
+ MovementLoopAddLocation(NPC, -28.87, -5.24, -68.30, 2, math.random(16, 24))
+end
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/WailingCaves/aspectralshriller.lua b/server/SpawnScripts/WailingCaves/aspectralshriller.lua
new file mode 100755
index 000000000..bc93d02e9
--- /dev/null
+++ b/server/SpawnScripts/WailingCaves/aspectralshriller.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : SpawnScripts/WailingCaves/aspectralshriller.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.10 05:12:06
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC)
+ NPCModule(NPC, Spawn)
+ movement(NPC, Spawn)
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function movement(NPC, Spawn)
+ if GetSpawnLocationID(NPC) == 403450 then
+ MovementLoopAddLocation(NPC, -47.55, -3.12, -19.57, 3)
+ MovementLoopAddLocation(NPC, -35.70, -3.73, -17.20, 3)
+ MovementLoopAddLocation(NPC, -27.70, -4.99, -16.75, 3)
+ MovementLoopAddLocation(NPC, -32.95, -4.90, -39.65, 3)
+ MovementLoopAddLocation(NPC, -51.64, -3.87, -34.11, 3)
+ elseif GetSpawnLocationID(NPC) == 11971 then
+ MovementLoopAddLocation(NPC, -47.55, -3.12, -19.57, 2.9)
+ MovementLoopAddLocation(NPC, -35.70, -3.73, -17.20, 2.9)
+ MovementLoopAddLocation(NPC, -27.70, -4.99, -16.75, 2.9)
+ MovementLoopAddLocation(NPC, -32.95, -4.90, -39.65, 2.9)
+ MovementLoopAddLocation(NPC, -51.64, -3.87, -34.11, 2.9)
+elseif GetSpawnLocationID(NPC) == 403448 then
+ MovementLoopAddLocation(NPC, -47.55, -3.12, -19.57, 2.8)
+ MovementLoopAddLocation(NPC, -35.70, -3.73, -17.20, 2.8)
+ MovementLoopAddLocation(NPC, -27.70, -4.99, -16.75, 2.8)
+ MovementLoopAddLocation(NPC, -32.95, -4.90, -39.65, 2.8)
+ MovementLoopAddLocation(NPC, -51.64, -3.87, -34.11, 2.8)
+end
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/abelligerentpatron.lua b/server/SpawnScripts/WayfarersRest/abelligerentpatron.lua
new file mode 100755
index 000000000..629695352
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/abelligerentpatron.lua
@@ -0,0 +1,75 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/abelligerentpatron.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:45
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsInCombat(NPC) and IsAlive(NPC)then
+if IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 1)
+ SpawnSet(NPC, "show_level", 1)
+ SpawnSet(NPC,"mood_state",11852)
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","threaten",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","taunt",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","neener",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","frustrated",0,0)
+ end
+ AddTimer(NPC,4000,"EmoteLoop")
+elseif not IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 0)
+ SpawnSet(NPC, "show_level", 0)
+ AddTimer(NPC,7000,"EmoteLoop")
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"name","a recovered patron")
+ choice = MakeRandomInt(1,6)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","confused",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","doh",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","wince",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","whome",0,0)
+ elseif choice ==6 then
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if IsAlive(Darkelf) and not HasLanguage(Spawn,8) then
+ PlayFlavor(NPC, "voiceover/english/halfling_crazed/ft/halfling/halfling_crazed_1_garbled_gm_823f1021.mp3", "Lilleee mabee tarrah roo sakdooo", "", 374813993, 4058118752, Spawn, 8)
+ else
+ PlayFlavor(NPC, "voiceover/english/halfling_crazed/ft/halfling/halfling_crazed_1_aggro_gm_37efc560.mp3", "This place will be your tomb!", "", 4006552847, 41198957, Spawn, 8)
+end
+end
+
+
diff --git a/server/SpawnScripts/WayfarersRest/adistraughtbartender.lua b/server/SpawnScripts/WayfarersRest/adistraughtbartender.lua
new file mode 100755
index 000000000..5cc53fddd
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/adistraughtbartender.lua
@@ -0,0 +1,127 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/adistraughtbartender.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:10
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+require "SpawnScripts/Generic/DialogModule"
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if IsAlive(Darkelf) then
+Dialog1(NPC, Spawn)
+else
+Dialog2(NPC, Spawn)
+end
+end
+
+
+
+function Dialog1(NPC, Spawn)
+FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I don't know what happened! Suddenly all my regulars started tearing up the place!")
+ PlayFlavor(NPC, "", "", "confused", 0, 0, Spawn)
+ Dialog.AddOption("I'm here to see what there is to be done.","BeDone")
+ Dialog.AddOption("Perhaps a round of drinks will calm their nerves?","Round")
+ Dialog.AddOption("This is my kind of party!","Boot")
+ Dialog.AddOption("Well, good luck with all this.")
+ Dialog.Start()
+end
+
+
+function BeDone(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Something has got them all riled up. It happened so suddenly, perhaps its the ale or some sort of magic!")
+ PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
+ Dialog.AddOption("Anything else I should know?","SomethingElse")
+ Dialog.AddOption("Perhaps a round of drinks will calm their nerves?","Round")
+ Dialog.AddOption("This is my kind of party!","Boot")
+ Dialog.AddOption("I'll see what I can do.")
+ Dialog.Start()
+end
+
+function SomethingElse(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Now that you mention it... I've heard someone cackling, but it sure isn't coming from someone I can see!")
+ PlayFlavor(NPC, "", "", "shrug", 0, 0, Spawn)
+ Dialog.AddOption("Perhaps a round of drinks will calm their nerves?","Round")
+ Dialog.AddOption("This is my kind of party!","Boot")
+ Dialog.AddOption("I'll see what I can do.")
+ Dialog.Start()
+end
+
+function Round(NPC,Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I already tried that! They just threw the mugs at eachother. Please, you must do something!")
+ PlayFlavor(NPC, "", "", "heckno", 0, 0, Spawn)
+ Dialog.AddOption("I'm here to see what there is to be done.","BeDone")
+ Dialog.AddOption("This is my kind of party!","Boot")
+ Dialog.AddOption("Alright.")
+ Dialog.Start()
+end
+
+function Boot(NPC,Spawn)
+ SendPopUpMessage(Spawn,"You have been kicked out!",255,0,0)
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Get out! NOW! I have no time for you!")
+ PlayFlavor(NPC, "", "", "shakefist", 0, 0, Spawn)
+ Dialog.AddOption("Noo! I want to join the fun!")
+ Dialog.Start()
+ AddTimer(NPC,4000,"Kick",1,Spawn)
+end
+
+function Kick(NPC,Spawn)
+ SQ = GetZone("SouthQeynos")
+ Zone(SQ,Spawn,590.25, -17.22, 245.18, 10)
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","Thank you for all your help! Now I just have to clean up this mess...","thanks",0,0)
+end
+
+
+
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsAlive(Darkelf) then
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"name","a relieved bartender")
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","shame",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","agree",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","thanks",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","glare",0,0)
+ end
+
+end
+ AddTimer(NPC,7000,"EmoteLoop")
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/afrightenedbarmaid.lua b/server/SpawnScripts/WayfarersRest/afrightenedbarmaid.lua
new file mode 100755
index 000000000..f9636a06b
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/afrightenedbarmaid.lua
@@ -0,0 +1,73 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/afrightenedbarmaid.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:39
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsAlive(Darkelf) then
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"name","a relieved barmaid")
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","shame",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","agree",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","thanks",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","scold",0,0)
+ end
+end
+ AddTimer(NPC,7000,"EmoteLoop")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if IsAlive(Darkelf) then
+Dialog1(NPC, Spawn)
+else
+Dialog2(NPC, Spawn)
+end
+end
+
+function Dialog1(NPC,Spawn)
+ FaceTarget(NPC,Spawn)
+ choice = MakeRandomInt(1,6)
+ if choice ==1 then
+ PlayFlavor(NPC,"","Please! Don't hurt me!","squeal",0,0,Spawn)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","I don't know what happened! Everyone just started acting all crazy!","wince",0,0,Spawn)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","I hear strange laughing coming from the near supplies... and it's not from one of this lot!","listen",0,0,Spawn)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","Not in the face! Please!","cringe",0,0,Spawn)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","Save me from this madness!","beg",0,0,Spawn)
+ elseif choice ==6 then
+ PlayFlavor(NPC,"","I heard something from behind the crates a moment ago...","listen",0,0,Spawn)
+ end
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(NPC,"","Thank the gods you came along! I thought I was destined for the grave.","thanks",0,0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/anangrypatron.lua b/server/SpawnScripts/WayfarersRest/anangrypatron.lua
new file mode 100755
index 000000000..8cfabc9a3
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/anangrypatron.lua
@@ -0,0 +1,83 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/anangrypatron.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:47
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsInCombat(NPC) and IsAlive(NPC)then
+if IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 1)
+ SpawnSet(NPC, "show_level", 1)
+ SpawnSet(NPC,"mood_state",11852)
+ SpawnSet(NPC,"name","an angry patron")
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","scream",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","kick",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","tantrum_short",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","frustrated",0,0)
+ end
+ AddTimer(NPC,4000,"EmoteLoop")
+elseif not IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 0)
+ SpawnSet(NPC, "show_level", 0)
+ AddTimer(NPC,7000,"EmoteLoop")
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"name","a recovered patron")
+ choice = MakeRandomInt(1,6)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","confused",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","doh",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","wince",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","whome",0,0)
+ elseif choice ==6 then
+ PlayFlavor(NPC,"","","doubletake",0,0)
+ end
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if IsAlive(Darkelf) then
+ choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_aggro_gm_a203c9ec.mp3", "Prepare to face your doom, meddler.", "", 1496819882, 365167432, Spawn, 0)
+ elseif choice ==2 then
+ PlayFlavor(NPC, "voiceover/english/optional5/human_base_2/ft/human/human_base_2_2_aggro_gm_e61d307f.mp3", "Look alive! We have visitors!", "", 1273763229, 637796964, Spawn, 0)
+
+ end
+end
+end
+
+function victory(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/human_base_1/ft/human/human_base_1_1_halfhealth_gm_1babf022.mp3", "Is that all you have?", "", 170267964, 1158805306, Spawn, 0)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/anargumentativepatron.lua b/server/SpawnScripts/WayfarersRest/anargumentativepatron.lua
new file mode 100755
index 000000000..2c08f34a5
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/anargumentativepatron.lua
@@ -0,0 +1,78 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/anargumentativepatron.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:40
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsInCombat(NPC) and IsAlive(NPC)then
+if IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 1)
+ SpawnSet(NPC, "show_level", 1)
+ SpawnSet(NPC,"mood_state",11852)
+ SpawnSet(NPC,"name","an argumentative patron")
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","threaten",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","taunt",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","grumble",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","swear",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","frustrated",0,0)
+ end
+ AddTimer(NPC,4000,"EmoteLoop")
+elseif not IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 0)
+ SpawnSet(NPC, "show_level", 0)
+ AddTimer(NPC,7000,"EmoteLoop")
+ SpawnSet(NPC,"mood_state",0)
+ SpawnSet(NPC,"name","a recovered patron")
+ choice = MakeRandomInt(1,6)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","confused",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","doh",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","wince",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","whome",0,0)
+ elseif choice ==6 then
+ PlayFlavor(NPC,"","","beg",0,0)
+ end
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if IsAlive(Darkelf) and not HasLanguage(Spawn,3) then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/barbarian/barbarian_eco_good_1_garbled_gm_1cfda4cd.mp3", "I wonder, do I owe you any coin? I sure hope not!", "", 2853459229, 77062894, Spawn,3)
+ else
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_aggro_gm_23b35126.mp3", "Where do ya think you're goin'?", "", 706272128, 909565004, Spawn, 3)
+end
+end
+
+function victory(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/dwarf_base_1/ft/dwarf/dwarf_base_1_1_victory_gm_4a1ceaef.mp3", "Hah! I'm not done yet! Get back up!", "", 458619926, 239663782, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/aninsidiousinstigator.lua b/server/SpawnScripts/WayfarersRest/aninsidiousinstigator.lua
new file mode 100755
index 000000000..5cb688ba1
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/aninsidiousinstigator.lua
@@ -0,0 +1,285 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/aninsidiousinstigator.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:01
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC)
+ AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+ SpawnSet(NPC,"model_type",78)
+ SpawnSet(NPC,"soga_model_type",4979)
+ SetTempVariable(NPC,"HailTimer",nil)
+ SetTempVariable(NPC,"Hail",nil)
+ SpawnSet(NPC,"name","a suspicious patron")
+end
+
+function hailed(NPC, Spawn)
+if GetTempVariable(NPC,"HailTimer")==nil then
+Dialog1(NPC, Spawn)
+end
+end
+
+
+function Dialog1(NPC, Spawn)
+ SetTempVariable(NPC,"Hail",1)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ Dialog.AddOption("Oh, sorry to bother you.")
+ Dialog.AddOption("What are you doing back here?", "Dialog2")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What! What do you want?")
+ Dialog.AddVoiceover("voiceover/english/darkelf_eco_evil_1/ft/service/innkeeper/darkelf_innkeeper_service_evil_1_hail_gm_c58b0e.mp3", 1358705787, 1083758044)
+ PlayFlavor(NPC,"","","glare",0,0,Spawn)
+ Dialog.AddOption("Alright.")
+ Dialog.AddOption("These patrons are out of their minds! Explain yourself!", "Dialog3")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("...")
+ Dialog.AddOption("Fine! I'm going.")
+ if GetTempVariable(NPC,"Aura")==nil then
+ Dialog.AddOption("[Attempt to sense magic in the area]", "Dialog3_1")
+ elseif GetTempVariable(NPC,"Aura")=="1"then
+ Dialog.AddOption("[Attempt to pierce the enchantment]", "Dialog4")
+ end
+ Dialog.Start()
+end
+
+function Dialog3_1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ PlayFlavor(Spawn,"","","stare",0,0,NPC)
+ PlayFlavor(NPC,"","","whome",0,0,Spawn)
+ AddTimer(NPC,2200,"Accuse",1,Spawn)
+ SetTempVariable(NPC,"Aura",1)
+ Dialog3(NPC, Spawn)
+ end
+
+function Accuse(NPC,Spawn)
+ SendMessage(Spawn,"Magic clings to the elf cloaking his appearance.","white")
+ SendPopUpMessage(Spawn,"Magic clings to the elf cloaking his appearance.",0,100,175)
+ PlayFlavor(NPC,"","","aura_mage",0,0)
+ PerformCameraShake(Spawn, 0.30000001192092896)
+end
+
+function Dialog4(NPC, Spawn)
+ PlayFlavor(Spawn,"","","point",0,0,NPC)
+ SpawnSet(NPC,"name","an insidious instigator")
+ SetTempVariable(NPC,"HailTimer",1)
+ PlayFlavor(NPC,"","","cackle",0,0,Spawn)
+ SpawnSet(NPC,"mood_state",11852)
+ AddTimer(NPC,1500,"Shimmer",1,Spawn)
+ AddTimer(NPC,4000,"Poof",1,Spawn)
+ AddTimer(NPC,6700,"AttackTimer",1,Spawn)
+ AddTimer(NPC,7500,"Poof2",1,Spawn)
+end
+
+function Shimmer(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_teleport_sparkle",0,0)
+
+end
+
+function Poof(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_teleport_appear",0,0)
+end
+
+function Poof2(NPC,Spawn)
+ PlayFlavor(NPC,"","","result_dispell1_out",0,0)
+end
+
+function AttackTimer(NPC,Spawn)
+ CloseConversation(NPC,Spawn)
+ SpawnSet(NPC,"model_type",115)
+ SpawnSet(NPC,"soga_model_type",4966)
+ SpawnSet(NPC,"attackable",1)
+ SpawnSet(NPC,"show_level",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"",0,"")
+ AddPrimaryEntityCommand(Spawn,NPC,"attack",10000,"attack")
+ SendUpdateDefaultCommand(NPC,10000,"attack")
+ AddTimer(NPC,1200,"Attacking",1,Spawn)
+end
+
+function Attacking(NPC,Spawn)
+ Attack(NPC,Spawn)
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsInCombat(NPC) and IsAlive(NPC) and GetTempVariable(NPC,"Hail")==nil then
+if IsAlive(Darkelf) then
+ SpawnSet(NPC,"mood_state",11852)
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","smirk",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","cackle",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","chuckle",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","scheme",0,0)
+ end
+ AddTimer(NPC,7000,"EmoteLoop")
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+
+local HealthCallout = false --REDUCES Half-Health Spam
+local CalloutTimer = false --REDUCES Callout Spam
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+function Garbled(NPC,Player)
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_garbled_gm_8dd636c1.mp3", "Pashtita Nu orlek va tualic zefdat", "", 983323899, 3112871522, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_garbled_gm_810a3ce3.mp3", "Ardlelah kovactic ozermav klebitaz", "", 1130393437, 2011449714, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_garbled_gm_fab027b8.mp3", "Hach bahr neh jadh osh agh", "", 1055587810, 93253246, Spawn, 2)
+ end
+end
+
+ function aggro(NPC,Player)
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+if GetTempVariable(NPC, "CalloutTimer")== "false" and math.random(0,100) <=100 and IsPlayer(Player) then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_beacbb30.mp3", "I hope you put your affairs in order.", "", 799093996, 16617637, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_fe18133.mp3", "Look what strolled into the spider's web!", "", 4178015902, 2202039151, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_aggro_gm_10fd87eb.mp3", "There is no escape for you now!", "", 2989643101, 2260454555, Spawn, 2)
+ end
+end
+end
+end
+
+
+function death(NPC,Player)
+ if GetQuestStep(Player,5771)==2 then
+ SetStepComplete(Player,5771,2)
+ end
+ if GetTempVariable(NPC, "CalloutTimer")== "false" and IsPlayer(Player) then
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,2)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_8d7bb2b9.mp3", "Hold them and I'll return with help!", "", 2338278515, 1160150777, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_death_gm_25576197.mp3", "I will have vengeance!", "", 360053692, 4149753869, Spawn, 2)
+ end
+ end
+end
+end
+
+
+
+function FifteenCall(NPC,Player)
+ if IsAlive(NPC) and IsInCombat(NPC)==true and IsPlayer(Player)and GetTempVariable(NPC, "CalloutTimer")== "false" then
+ if math.random(0,100)<=33 then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ if not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_a38dc90c.mp3", "Close in until they can't breathe!", "", 1646052354, 1989688436, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_cm_4e66222a.mp3", "You cannot deny the power of hate!", "", 2308305258, 1715309735, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_316a6c63.mp3", "I crave your suffering!", "", 3367682978, 4121942691, Spawn, 2)
+ elseif choice == 4 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_mm_4832fde6.mp3", "Now, prepare to be eviscerated!", "", 1640233154, 431623172, Spawn, 2)
+ elseif choice == 5 then
+ if GetClass(Spawn)<=21 and GetClass(Spawn)>=30 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maomage_gm_7c1c0586.mp3", "Your pathetic parlor tricks won't save you now, magician!", "", 2940784449, 2243650132, Spawn, 2)
+ elseif GetClass(Spawn)<=1 and GetClass(Spawn)>=10 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_maofighter_gm_c01f2ef8.mp3", "Let's see how good of a fighter you really are!", "", 976101228, 853372931, Spawn, 2)
+ else
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_cm_4e66222a.mp3", "You cannot deny the power of hate!", "", 2308305258, 1715309735, Spawn, 2)
+ end
+ elseif choice == 6 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_battle_gm_700b6151.mp3", "A feeble attempt from a worthless opponent.", "", 943969253, 2337029939, Spawn, 2)
+ end
+ end
+ end
+ if IsAlive(NPC)then
+ AddTimer(NPC,math.random(15000,30000),"FifteenCall",1,Player)
+ end
+end
+end
+
+
+function healthchanged(NPC, Player)
+ if GetTempVariable(NPC, "CalloutTimer") == "false" and IsPlayer(Player) and IsAlive(NPC)==true then
+ if GetTempVariable(NPC, "HealthCallout") == "false" then
+ if GetHP(NPC) < GetMaxHP(NPC) * 0.55 and GetHP(NPC) > GetMaxHP(NPC) * 0.45 then
+ SetTempVariable(NPC, "HealthCallout", "true")
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer")
+ AddTimer(NPC,12500,"HealthReset")
+ if not HasLanguage(Spawn,2 )then
+ Garbled(NPC,Player)
+ else
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_9e244d19.mp3", "How dare you!", "", 3305445355, 1846155898, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_halfhealth_gm_577ab333.mp3", "You'll pay for that one, peon!", "", 1420508530, 39058961, Spawn, 2)
+ end
+ end
+ end
+end
+end
+end
+
+
+function victory(NPC,Player)
+ if IsPlayer(Player)and not HasLanguage(Player,20 )then
+ Garbled(NPC,Player)
+ elseif IsPlayer(Player) and HasLanguage(Player,20 )then
+ local choice = MakeRandomInt(1,3)
+ if choice == 1 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f4fc7cf8.mp3", "Did you really think you had a chance?", "", 607143583, 3133144305, Spawn, 2)
+ elseif choice == 2 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_f5088778.mp3", "Get up! Death isn't good enough for you!", "", 3381713633, 2145918189, Spawn, 2)
+ elseif choice == 3 then
+ PlayFlavor(NPC, "voiceover/english/darkelf_base_1/ft/darkelf/darkelf_base_1_1_victory_gm_dff26fa.mp3", "It is a shame we must end it this way ... I could have used you.", "", 1363661737, 942201815, Spawn, 2)
+ end
+ end
+end
+
+
diff --git a/server/SpawnScripts/WayfarersRest/anunrulypatron.lua b/server/SpawnScripts/WayfarersRest/anunrulypatron.lua
new file mode 100755
index 000000000..f55bebf95
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/anunrulypatron.lua
@@ -0,0 +1,76 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/anunrulypatron.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.14 05:11:11
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,MakeRandomInt(2000,5000),"EmoteLoop")
+end
+
+function EmoteLoop(NPC)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if not IsInCombat(NPC) and IsAlive(NPC)then
+if IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 1)
+ SpawnSet(NPC, "show_level", 1)
+ SpawnSet(NPC,"mood_state",11852)
+ SpawnSet(NPC,"name","an unrly patron")
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","kick",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","attack",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","howl",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","shakefist",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","cackle",0,0)
+ end
+ AddTimer(NPC,4000,"EmoteLoop")
+elseif not IsAlive(Darkelf) then
+ SpawnSet(NPC, "attackable", 0)
+ SpawnSet(NPC, "show_level", 0)
+ AddTimer(NPC,7000,"EmoteLoop")
+ SpawnSet(NPC,"name","a recovered patron")
+ SpawnSet(NPC,"mood_state",0)
+ choice = MakeRandomInt(1,5)
+ if choice ==1 then
+ PlayFlavor(NPC,"","","confused",0,0)
+ elseif choice ==2 then
+ PlayFlavor(NPC,"","","doh",0,0)
+ elseif choice ==3 then
+ PlayFlavor(NPC,"","","sigh",0,0)
+ elseif choice ==4 then
+ PlayFlavor(NPC,"","","wince",0,0)
+ elseif choice ==5 then
+ PlayFlavor(NPC,"","","whome",0,0)
+ end
+end
+end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function aggro(NPC,Spawn)
+local zone = GetZone(NPC)
+local Darkelf = GetSpawnByLocationID(zone, 133780688)
+if IsAlive(Darkelf) and not HasLanguage(Spawn,1) then
+ PlayFlavor(NPC, "voiceover/english/barbarian_eco_good_1/ft/barbarian/barbarian_eco_good_1_garbled_gf_f8c9923f.mp3", "Try not to screw up my fist with your face.", "", 653161975, 3035939203, Spawn,1)
+ else
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_aggro_gf_d2336620.mp3", "Your overconfidence will be your undoing!", "",2263836674, 942538899, Spawn, 1)
+end
+end
+
+function victory(NPC,Spawn)
+ PlayFlavor(NPC, "voiceover/english/barbarian_base_1/ft/barbarian/barbarian_base_1_1_victory_gf_f87005b5.mp3", "Now you will have peace!", "", 2974774059, 665726799, Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/asuspiciousbarrel.lua b/server/SpawnScripts/WayfarersRest/asuspiciousbarrel.lua
new file mode 100755
index 000000000..2ca796eed
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/asuspiciousbarrel.lua
@@ -0,0 +1,88 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/asuspiciousbarrel.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.23 02:09:10
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+SetPlayerProximityFunction(NPC, 4, "InRange", "LeaveRange")
+ SetTempVariable(NPC,"Proxy",nil)
+end
+
+function InRange(NPC, Spawn)
+if GetTempVariable(NPC,"Proxy") == nil then
+Shimmer(NPC,Spawn)
+end
+end
+
+
+function Shimmer(NPC,Spawn)
+ SendMessage(Spawn,"The stacked barrels and crate blur as you approach.","white")
+ SendPopUpMessage(Spawn,"The stacked barrels and crate blur as you approach.",100,100,175)
+ SetTempVariable(NPC,"Proxy",1)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786871))
+ local Barrel = (GetSpawnByLocationID(zone,133786873))
+ PlayFlavor(NPC,"","","result_distort_hit",0,0)
+ PlayFlavor(Crate,"","","result_distort_hit",0,0)
+ PlayFlavor(Barrel,"","","result_distort_hit",0,0)
+ SpawnSet(NPC,"show_command_icon",1)
+ SpawnSet(NPC,"display_hand_icon",1)
+ SpawnSet(Crate,"show_command_icon",1)
+ SpawnSet(Crate,"display_hand_icon",1)
+ SpawnSet(Barrel,"show_command_icon",1)
+ SpawnSet(Barrel,"display_hand_icon",1)
+ AddPrimaryEntityCommand(Spawn,NPC,"Inspect",10000,"Inspect")
+ AddPrimaryEntityCommand(Spawn,Crate,"Inspect",10000,"Inspect")
+ AddPrimaryEntityCommand(Spawn,Barrel,"Inspect",10000,"Inspect")
+ SendUpdateDefaultCommand(NPC,10000,"Inspect")
+ SendUpdateDefaultCommand(Crate,10000,"Inspect")
+ SendUpdateDefaultCommand(Barrel,10000,"Inspect")
+end
+
+function casted_on(NPC, Spawn, Message)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786871))
+ local Barrel = (GetSpawnByLocationID(zone,133786873))
+ if Message == "Inspect" then
+ if Crate ~= nil then
+ PlayFlavor(Crate,"","","result_dispell1_out",0,0)
+ AddTimer(Crate,1500,"Despawning")
+ end
+ if Barrel ~= nil then
+ PlayFlavor(Barrel,"","","result_dispell1_out",0,0)
+ AddTimer(Barrel,1500,"Despawning")
+ end
+ if NPC ~= nil then
+ PlayFlavor(NPC,"","","result_dispell1_out",0,0)
+ AddTimer(NPC,1500,"Despawning")
+ end
+end
+end
+
+
+function Despawning(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786871))
+ local Barrel = (GetSpawnByLocationID(zone,133786873))
+ local Wall = (GetSpawnByLocationID(zone,133786875))
+ if Crate ~= nil then
+ Despawn(Crate)
+ end
+ if Barrel ~= nil then
+ Despawn(Barrel)
+ end
+ if NPC ~= nil then
+ Despawn(NPC)
+ if Wall ~= nil then
+ Despawn(Wall)
+ end
+ end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/asuspiciousbarrelFALSE.lua b/server/SpawnScripts/WayfarersRest/asuspiciousbarrelFALSE.lua
new file mode 100755
index 000000000..546be0268
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/asuspiciousbarrelFALSE.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/asuspiciousbarrelFALSE.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.23 02:09:56
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, Message)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786871))
+ local Barrel = (GetSpawnByLocationID(zone,133786872))
+ if Message == "Inspect" then
+ if Crate ~= nil then
+ PlayFlavor(Crate,"","","result_dispell1_out",0,0)
+ AddTimer(Crate,1500,"Despawning")
+ end
+ if Barrel ~= nil then
+ PlayFlavor(Barrel,"","","result_dispell1_out",0,0)
+ AddTimer(Barrel,1500,"Despawning")
+ end
+ if NPC ~= nil then
+ PlayFlavor(NPC,"","","result_dispell1_out",0,0)
+ AddTimer(NPC,1500,"Despawning")
+ end
+end
+end
+
+
+function Despawning(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786871))
+ local Barrel = (GetSpawnByLocationID(zone,133786872))
+ local Wall = (GetSpawnByLocationID(zone,133786875))
+ if Crate ~= nil then
+ Despawn(Crate)
+ end
+ if Barrel ~= nil then
+ Despawn(Barrel)
+ end
+ if NPC ~= nil then
+ Despawn(NPC)
+ if Wall ~= nil then
+ Despawn(Wall)
+ end
+ end
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WayfarersRest/asuspiciouscrate.lua b/server/SpawnScripts/WayfarersRest/asuspiciouscrate.lua
new file mode 100755
index 000000000..578ec6f7a
--- /dev/null
+++ b/server/SpawnScripts/WayfarersRest/asuspiciouscrate.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : SpawnScripts/WayfarersRest/asuspiciouscrate.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.23 03:09:19
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function casted_on(NPC, Spawn, Message)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786873))
+ local Barrel = (GetSpawnByLocationID(zone,133786872))
+ if Message == "Inspect" then
+ if Crate ~= nil then
+ PlayFlavor(Crate,"","","result_dispell1_out",0,0)
+ AddTimer(Crate,1500,"Despawning")
+ end
+ if Barrel ~= nil then
+ PlayFlavor(Barrel,"","","result_dispell1_out",0,0)
+ AddTimer(Barrel,1500,"Despawning")
+ end
+ if NPC ~= nil then
+ PlayFlavor(NPC,"","","result_dispell1_out",0,0)
+ AddTimer(NPC,1500,"Despawning")
+ end
+end
+end
+
+
+function Despawning(NPC,Spawn)
+ local zone = GetZone(NPC)
+ local Crate = (GetSpawnByLocationID(zone,133786873))
+ local Barrel = (GetSpawnByLocationID(zone,133786872))
+ local Wall = (GetSpawnByLocationID(zone,133786875))
+ if Crate ~= nil then
+ Despawn(Crate)
+ end
+ if Barrel ~= nil then
+ Despawn(Barrel)
+ end
+ if NPC ~= nil then
+ Despawn(NPC)
+ if Wall ~= nil then
+ Despawn(Wall)
+ end
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WestFreeport/GrumZoomly.lua b/server/SpawnScripts/WestFreeport/GrumZoomly.lua
new file mode 100755
index 000000000..3f4a2d892
--- /dev/null
+++ b/server/SpawnScripts/WestFreeport/GrumZoomly.lua
@@ -0,0 +1,117 @@
+--[[
+ Script Name : SpawnScripts/WestFreeport/GrumZoomly.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.05 05:10:43
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/DialogModule"
+local Fighter = 5898
+local Scout = 5910
+
+function spawn(NPC)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function hailed(NPC, Spawn)
+ Dialog1(NPC, Spawn)
+ end
+
+
+--
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I don't want any trouble here in my bar, understand? People really hate it when I get angry.")
+ Dialog.AddVoiceover("voiceover/english/grum_zoomly/fprt_west/grumzoomly000.mp3", 894167480, 1838777111)
+ if HasQuest(Spawn,Fighter) and GetQuestStep(Spawn,Fighter)>=3 and GetQuestStep(Spawn,Fighter)<=5 and GetQuestStepProgress(Spawn,Fighter,5)==0 then
+ Dialog.AddOption("Lucan is disappointed that you've been serving the Guttersnipes.","Dialog2")
+ end
+ if HasQuest(Spawn,Scout) and GetQuestStep(Spawn,Scout)>=3 and GetQuestStep(Spawn,Scout)<=4 and GetQuestStepProgress(Spawn,Scout,3)==0 then
+ Dialog.AddOption("Hey, want to dance?! [Show off your moves]","Dialog4")
+ end
+ Dialog.AddOption("Got it.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What Lucan doesn't know won't hurt him.")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/grum_zoomly/fprt_west/grumzoomly001.mp3", 144241661, 2143125475)
+ Dialog.AddOption("You're right, but it'll hurt you. How about a punch to the gut!","Dialog2a")
+ Dialog.Start()
+end
+
+function Dialog2a(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "pugilist_attack02", 0, 0, NPC)
+ AddTimer(NPC,800,"Dialog2b",1,Spawn)
+end
+
+
+function Dialog2b(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(NPC, "", "", "ouch", 0, 0, Spawn)
+ ApplySpellVisual(NPC,249)
+ AddTimer(NPC,800,"Dialog3",1,Spawn)
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Ughhh! Stop it!!! I take it this is his idea of a warning? Fine, I'll stop serving them.")
+ PlayFlavor(NPC, "", "", "gutcramp", 0, 0, Spawn)
+ SetStepComplete(Spawn,Fighter,5)
+ Dialog.AddVoiceover("voiceover/english/grum_zoomly/fprt_west/grumzoomly002.mp3", 3096589689, 3928464974)
+ Dialog.AddOption("I'm glad we could come to an understanding.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "dance", 0, 0)
+ AddTimer(NPC,1800,"Dialog4a",1,Spawn)
+end
+
+function Dialog4a(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("What in the heck are you doing, you idiot!? Get out of here before I bash your head in!")
+ PlayFlavor(NPC, "", "", "boggle", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/grum_zoomly/fprt_west/grumzoomly003.mp3", 466250040, 3587098228)
+ Dialog.AddOption("I am an entertainer! I am always available to hire!","Dialog5")
+ Dialog.Start()
+end
+
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Entertain? You're a moron! And soon you'll be a dead moron, I'll make sure of it!")
+ PlayFlavor(NPC, "", "", "stare", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/grum_zoomly/fprt_west/grumzoomly004.mp3", 415190010, 1464682173)
+ Dialog.AddOption("Think of all the extra coin you'll get if your patrons stick around! I'd only need a small bit and the rest is yours.","Dialog6")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(Spawn, NPC)
+ PlayFlavor(Spawn, "", "", "flirt", 0, 0, NPC)
+ AddTimer(NPC,1800,"Dialog6a",1,Spawn)
+end
+
+function Dialog6a(NPC, Spawn)
+ SetStepComplete(Spawn,Scout,3)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("You fool! You're going to kill yourself! Heck, I'll hire you just to see how long it takes! You'll have to wait till I'm done counting today's take. Stop by after I close, and we'll discuss payment.")
+ PlayFlavor(NPC, "", "", "scold", 0, 0, Spawn)
+ Dialog.AddVoiceover("voiceover/english/grum_zoomly/fprt_west/grumzoomly005.mp3", 4032144186, 3733276565)
+ Dialog.AddOption("Thank you, but my act must hit the road!")
+ Dialog.Start()
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WillowWood/Baynor.lua b/server/SpawnScripts/WillowWood/Baynor.lua
index d1a480c74..a64017eb9 100755
--- a/server/SpawnScripts/WillowWood/Baynor.lua
+++ b/server/SpawnScripts/WillowWood/Baynor.lua
@@ -13,6 +13,7 @@ local Delivery = 5482
function spawn(NPC)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
ProvidesQuest(NPC, Delivery)
+ SetInfoStructString(NPC, "action_state", "metalworking_idle")
end
function InRange(NPC, Spawn) --Quest Callout
diff --git a/server/SpawnScripts/WillowWood/BrigetCrestmyst.lua b/server/SpawnScripts/WillowWood/BrigetCrestmyst.lua
index 2935cdeda..19cf00b42 100755
--- a/server/SpawnScripts/WillowWood/BrigetCrestmyst.lua
+++ b/server/SpawnScripts/WillowWood/BrigetCrestmyst.lua
@@ -9,6 +9,7 @@
dofile("SpawnScripts/Generic/GenericWeaponsmithVoiceOvers.lua")
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "woodworking_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/WillowWood/DavynThornbranch.lua b/server/SpawnScripts/WillowWood/DavynThornbranch.lua
index 8684239b1..4d28a4239 100755
--- a/server/SpawnScripts/WillowWood/DavynThornbranch.lua
+++ b/server/SpawnScripts/WillowWood/DavynThornbranch.lua
@@ -16,6 +16,7 @@ function spawn(NPC)
ProvidesQuest(NPC, WOOD_ELF_QUEST_3)
ProvidesQuest(NPC, WOOD_ELF_QUEST_5)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/WillowWood/Deephathom.lua b/server/SpawnScripts/WillowWood/Deephathom.lua
index 46544ac50..cc7cff91e 100755
--- a/server/SpawnScripts/WillowWood/Deephathom.lua
+++ b/server/SpawnScripts/WillowWood/Deephathom.lua
@@ -1,8 +1,8 @@
--[[
Script Name : SpawnScripts/WillowWood/Deephathom.lua
Script Purpose : Deephathom
- Script Author : Scatman
- Script Date : 2009.09.15
+ Script Author : Dorbin
+ Script Date : 2022.05.15
Script Notes :
--]]
require "SpawnScripts/Generic/DialogModule"
@@ -71,10 +71,12 @@ function Dialog2a(NPC, Spawn)
Dialog.AddOption("Crafter","Dialog2b")
if GetRace(Spawn)==5 then
Dialog.AddOption("Part-Adventurer, Part-Crafter","Dialog2b")
+ Dialog.AddOption("I've never really settled on one thing. ","Dialog2b")
elseif GetRace(Spawn)==15 then
- Dialog.AddOption("Well, I can tell you I'm NOT part tree.","Dialog2b")
+ Dialog.AddOption("Well, I can tell you I'm NOT part tree... but let's Harvester?","Dialog2b")
+ Dialog.AddOption("Collector! All the shinies and their insects, rocks, and feathers are my passion!","Dialog2b")
elseif GetRace(Spawn)==16 then
- Dialog.AddOption("If you put down sprite...","Dialog2b")
+ Dialog.AddOption("If you put down sprite I'll...","Dialog2b")
end
Dialog.Start()
end
diff --git a/server/SpawnScripts/WillowWood/Faydark.lua b/server/SpawnScripts/WillowWood/Faydark.lua
new file mode 100755
index 000000000..cee17c530
--- /dev/null
+++ b/server/SpawnScripts/WillowWood/Faydark.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : SpawnScripts/WillowWood/Faydark.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.21 03:09:33
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Nuzzle' then
+ FaceTarget(NPC,Spawn)
+ local choice = MakeRandomInt(1,6)
+ if choice == 1 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_01.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 2 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_02.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 3 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_03.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 4 then
+ PlaySound(NPC,"sounds/widgets/alarms_clues_traps/alarm_cat_meow1_04.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 5 then
+ PlaySound(NPC,"sounds/critters/cat/cat_happy001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ elseif choice == 6 then
+ PlaySound(NPC,"sounds/critters/cat/cat_happy001.wav",GetX(NPC), GetY(NPC), GetZ(NPC))
+ end
+ end
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/WillowWood/GarSmolten.lua b/server/SpawnScripts/WillowWood/GarSmolten.lua
index acfbe3ef0..a1038abea 100755
--- a/server/SpawnScripts/WillowWood/GarSmolten.lua
+++ b/server/SpawnScripts/WillowWood/GarSmolten.lua
@@ -8,6 +8,10 @@
local HALF_ELF_MENTOR_QUEST_1 = 218
+function Spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
+end
+
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
diff --git a/server/SpawnScripts/WillowWood/HunterLatharForestdeep.lua b/server/SpawnScripts/WillowWood/HunterLatharForestdeep.lua
index 3426fd40e..25cb0bc76 100755
--- a/server/SpawnScripts/WillowWood/HunterLatharForestdeep.lua
+++ b/server/SpawnScripts/WillowWood/HunterLatharForestdeep.lua
@@ -8,6 +8,7 @@
function spawn(NPC)
SetPlayerProximityFunction(NPC, 10, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "crouch_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/WillowWood/HunterVannil.lua b/server/SpawnScripts/WillowWood/HunterVannil.lua
index 73c86bb65..be54ea2b8 100755
--- a/server/SpawnScripts/WillowWood/HunterVannil.lua
+++ b/server/SpawnScripts/WillowWood/HunterVannil.lua
@@ -88,7 +88,7 @@ function AddersSlain(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
+ PlayFlavor(NPC, "", "", "smile", 0, 0, Spawn)
AddConversationOption(conversation, "You're welcome.")
StartConversation(conversation, NPC, Spawn, "You killed the rock adders! On behalf of our village, I thank you for carrying out this dangerous quest.")
end
\ No newline at end of file
diff --git a/server/SpawnScripts/WillowWood/KualdinSwoonsong.lua b/server/SpawnScripts/WillowWood/KualdinSwoonsong.lua
index 6d26ee262..4bf7943ab 100755
--- a/server/SpawnScripts/WillowWood/KualdinSwoonsong.lua
+++ b/server/SpawnScripts/WillowWood/KualdinSwoonsong.lua
@@ -13,39 +13,61 @@ local Delivery = 5471
function spawn(NPC)
SetPlayerProximityFunction(NPC, 8, "InRange", "LeaveRange")
ProvidesQuest(NPC, Delivery)
+ SetTempVariable(NPC, "CalloutTimer", "false")
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ SetTempVariable(NPC, "CalloutTimer2", "false")
end
function InRange(NPC, Spawn) --Quest Callout
if GetFactionAmount(Spawn,11)<0 then
FactionChecking(NPC, Spawn, faction)
else
-if not HasCompletedQuest (Spawn, Delivery) and not HasQuest (Spawn, Delivery) then
- if math.random(1, 100) <= 80 then
- choice = math.random(1,3)
- FaceTarget(NPC, Spawn)
- if choice ==1 then
- PlayFlavor(NPC, "voiceover/english/kualdin_swoonsong/qey_village05/100_kualdin_swoonsong_callout_47db249c.mp3", "Gather around people ... gather around. I'll be warming up my voice in a few minutes.", "orate", 1269733907, 434806140, Spawn)
- elseif choice ==2 then
- PlayFlavor(NPC, "voiceover/english/kualdin_swoonsong/qey_village05/100_kualdin_swoonsong_multhail2_1c41a7b8.mp3", "Hail, fair adventurer. If you can spare some time, my devotees are gathering to hear the latest masterpiece by yours truely.", "royalwave", 2123310145, 515687997, Spawn)
- elseif choice ==3 then
- PlayFlavor(NPC, "voiceover/english/kualdin_swoonsong/qey_village05/100_kualdin_swoonsong_multhail1_7f060d18.mp3", "Hail fair, adventurer. Please be on your way. I've no time for chatting with commoners. I must warm up my voice. My fans await me...", "smirk", 2685665398, 3421389957, Spawn)
- end
+if CanReceiveQuest (Spawn, Delivery) then
+ if GetTempVariable(NPC, "CalloutTimer")== "false"then
+ SetTempVariable(NPC, "CalloutTimer", "true")
+ AddTimer(NPC,10000,"ResetTimer",1,Spawn)
+ FaceTarget(NPC, Spawn)
+ if GetTempVariable(NPC, "CalloutTimer1")== "false"then
+ PlayFlavor(NPC, "voiceover/english/kualdin_swoonsong/qey_village05/100_kualdin_swoonsong_callout_47db249c.mp3", "Gather around people ... gather around. I'll be warming up my voice in a few minutes.", "orate", 1269733907, 434806140, Spawn)
+ SetTempVariable(NPC, "CalloutTimer1", "true")
+
+ elseif GetTempVariable(NPC, "CalloutTimer2")== "false"then
+ PlayFlavor(NPC, "voiceover/english/kualdin_swoonsong/qey_village05/100_kualdin_swoonsong_multhail2_1c41a7b8.mp3", "Hail, fair adventurer. If you can spare some time, my devotees are gathering to hear the latest masterpiece by yours truely.", "royalwave", 2123310145, 515687997, Spawn)
+ SetTempVariable(NPC, "CalloutTimer2", "true")
+
+ else
+ SetTempVariable(NPC, "CalloutTimer1", "false")
+ SetTempVariable(NPC, "CalloutTimer2", "false")
+ PlayFlavor(NPC, "voiceover/english/kualdin_swoonsong/qey_village05/100_kualdin_swoonsong_multhail1_7f060d18.mp3", "Hail fair, adventurer. Please be on your way. I've no time for chatting with commoners. I must warm up my voice. My fans await me...", "smirk", 2685665398, 3421389957, Spawn)
+ end
end
+
else
- if math.random(1, 100) <= 50 then
- choice = math.random(1,2)
- if choice ==1 then
+ if MakeRandomInt(1, 100) <= 50 then
+ choice = MakeRandomInt(1,2)
FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "", "", "royalwave", 0, 0, Spawn)
- else
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
- end
+ if choice ==1 then
+ PlayFlavor(NPC, "", "", "royalwave", 0, 0, Spawn)
+ else
+ PlayFlavor(NPC, "", "", "smirk", 0, 0, Spawn)
+ end
end
end
end
end
+
+function ResetTimer(NPC) -- 7 SECOND PAUSE BETWEEN VOs
+ SetTempVariable(NPC, "CalloutTimer", "false")
+end
+
+
+
+
+
+
+
+
function respawn(NPC)
spawn(NPC)
end
@@ -108,10 +130,10 @@ end
function Delivered(NPC, Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
- Dialog.AddDialog("Wonderful! I'll add Buipia to my concert plans. I'll fit her in somewhere between my second and fifth solo. Thanks for your help. Take this coin for your time. You MUST save it and buy a concert ticket!")
+ Dialog.AddDialog("Wonderful! I'll add Bupipa to my concert plans. I'll fit her in somewhere between my second and fifth solo. Thanks for your help. Take this coin for your time. You MUST save it and buy a concert ticket!")
Dialog.AddVoiceover("voiceover/english/kualdin_swoonsong/qey_village05/kualdinswoonsong003.mp3", 2468409303, 338695465)
PlayFlavor(NPC, "", "", "thanks", 0, 0, Spawn)
- Dialog.AddOption("I'll concider it. Glad I could help.", "Reward")
+ Dialog.AddOption("I'll consider it. Glad I could help.", "Reward")
Dialog.Start()
end
diff --git a/server/SpawnScripts/WillowWood/LiaSerene.lua b/server/SpawnScripts/WillowWood/LiaSerene.lua
index 9ac33673c..2de0ebd02 100755
--- a/server/SpawnScripts/WillowWood/LiaSerene.lua
+++ b/server/SpawnScripts/WillowWood/LiaSerene.lua
@@ -9,6 +9,7 @@
local HALF_ELF_MENTOR_QUEST_1 = 218
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/WillowWood/MiloFaren.lua b/server/SpawnScripts/WillowWood/MiloFaren.lua
index 206fa51e0..8534459d7 100755
--- a/server/SpawnScripts/WillowWood/MiloFaren.lua
+++ b/server/SpawnScripts/WillowWood/MiloFaren.lua
@@ -9,6 +9,7 @@
local HALFELF_MENTOR_QUEST_2 = 219
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "tapfoot")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/WillowWood/OseofCrestryder.lua b/server/SpawnScripts/WillowWood/OseofCrestryder.lua
index c7fa23216..6e9fe854b 100755
--- a/server/SpawnScripts/WillowWood/OseofCrestryder.lua
+++ b/server/SpawnScripts/WillowWood/OseofCrestryder.lua
@@ -18,10 +18,9 @@ function respawn(NPC)
spawn(NPC)
end
-function hailed(NPC, Spawn)
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
- if HasQuest(Spawn,5760) and GetQuestStep(Spawn,5760) == 8 then
+ if HasQuest(Spawn,5761) and GetQuestStep(Spawn,5761) == 8 then
Dialog1(NPC,Spawn)
elseif GetTradeskillLevel(Spawn)<=3 then
GenericHail(NPC, Spawn)
@@ -29,32 +28,37 @@ function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
- -- artisan essentials volume 2
- if not HasItem(Spawn, 31373, 1) then
- AddConversationOption(conversation, "Yes, please teach me.", "dlg_14_1")
- end
- AddConversationOption(conversation, "No, not at the moment.")
- StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
+ if GetTradeskillLevel(Spawn) <2 then
+ conversation = CreateConversation()
+ --not HasItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1) then
+ AddConversationOption(conversation, "Yes, please teach me.", "dlg_39_1")
+ AddConversationOption(conversation, "No, not at the moment.")
+ StartConversation(conversation, NPC, Spawn, "You show interest in the crafting trade, good. We can always use talented artisans. I can help you get started, would you be interested?")
else
- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
+ Say(NPC,"Good day! If you are looking for more crafting training, seek out the trainers in Qeynos Harbor. They can help you beyond the basics I provide.","Spawn")
+-- Say(NPC, "I have nothing else to teach you for the moment. Please return to me when you have earned enough experience to choose your profession.", Spawn)
end
end
end
-
-
-function dlg_14_1(NPC, Spawn)
+function dlg_39_1(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation()
-
- -- artisan essentials volume 2
- SummonItem(Spawn, 31373, 1)
- if GetTradeskillLevel(Spawn) < 2 then
- SetTradeskillLevel(Spawn, 2)
- end
-
- AddConversationOption(conversation, "I will start on that now.")
+if GetTradeskillLevel(Spawn) <2 then
+ Quest = GetQuest(Spawn,5749)
+ SummonItem(Spawn,1030001,1)
+ SetTradeskillLevel(Spawn,2)
+ SetTradeskillClass(Spawn,1)
+ SendMessage(Spawn, "You are now an Artisan!")
+ SendPopUpMessage(Spawn, "You are now an Artisan!", 200, 200, 200)
+ end
+--[[ Revamped
+ -- artisan essentials volume 2
+ SummonItem(Spawn, ARTISAN_ESSENTIALS_VOLUME_2, 1)
+]]--
+ AddConversationOption(conversation, "I will start on that now.")
StartConversation(conversation, NPC, Spawn, "There, you now have knowledge required to begin crafting. Speak to the Tradeskill Tutor for more detailed guidance on learning to craft, if you are interested in more information. Return to me when you are ready to select a crafting specialty.")
+
end
@@ -89,7 +93,7 @@ function CanDo2(NPC,Spawn)
FaceTarget(NPC, Spawn)
Dialog.New(NPC, Spawn)
PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
- Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other players. A very handy connection, indeed!")
+ Dialog.AddDialog("Our society also has our very own Broker, who you can talk to in order to buy and sell items from other adventurers. A very handy connection, indeed!")
Dialog.AddOption("Thank you for all the information!")
if GetTradeskillLevel(Spawn)<2 then
Dialog.AddOption("I'm rather new at crafting. Can you help me?", "HelpMe")
diff --git a/server/SpawnScripts/WillowWood/Rainwander.lua b/server/SpawnScripts/WillowWood/Rainwander.lua
index 562eb6fe1..ba5a5731c 100755
--- a/server/SpawnScripts/WillowWood/Rainwander.lua
+++ b/server/SpawnScripts/WillowWood/Rainwander.lua
@@ -9,6 +9,7 @@
dofile("SpawnScripts/Generic/GenericAlchemistVoiceOvers.lua")
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "alchemy_idle")
end
function respawn(NPC)
diff --git a/server/SpawnScripts/WillowWood/SaliniaBrooklily.lua b/server/SpawnScripts/WillowWood/SaliniaBrooklily.lua
index bdb0cc965..bf1add17f 100755
--- a/server/SpawnScripts/WillowWood/SaliniaBrooklily.lua
+++ b/server/SpawnScripts/WillowWood/SaliniaBrooklily.lua
@@ -6,12 +6,14 @@
:
--]]
dofile("SpawnScripts/Generic/UnknownLanguage.lua")
+require "SpawnScripts/Generic/DialogModule"
local Rats = 5478
function spawn(NPC)
-ProvidesQuest(NPC,Rats)
-SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ ProvidesQuest(NPC,Rats)
+ SetPlayerProximityFunction(NPC, 6, "InRange", "LeaveRange")
+ SetInfoStructString(NPC, "action_state", "ponder")
end
function respawn(NPC)
@@ -25,7 +27,7 @@ if math.random(1, 100) <= 75 then
end
elseif not HasCompletedQuest (Spawn, Rats) and not HasQuest (Spawn, Rats) then
if math.random(1, 100) <= 60 then
- PlayFlavor(NPC, "", "The balance of nature is delecate, but all these newcomers...", "ponder", 0, 0, Spawn, 16)
+ PlayFlavor(NPC, "", "The balance of nature is delicate, but all these newcomers...", "ponder", 0, 0, Spawn, 16)
elseif HasCompletedQuest (Spawn, Rats) and math.random(1, 100) <= 30 then
FaceTarget(NPC,Spawn)
PlayFlavor(NPC, "voiceover/english/salinia_brooklily/qey_village05/100_salinia_brooklily_callout_b524f5d0.mp3", "Hello friend! Please, take your time and browse at your leisure.", "hello", 996096760, 49604074, Spawn, 16)
@@ -35,40 +37,47 @@ end
function hailed(NPC, Spawn)
- if not HasLanguage(Spawn, 16) then
- Garbled(NPC,Spawn)
+ if not HasLanguage(Spawn, 16) then
+ Garbled(NPC,Spawn)
else
- FaceTarget(NPC, Spawn)
- PlayFlavor(NPC, "voiceover/english/salinia_brooklily/qey_village05/saliniabrooklily_x000.mp3", "","hello", 1124223156, 142078310, Spawn)
- conversation = CreateConversation()
- if not HasQuest(Spawn, Rats) and not HasCompletedQuest(Spawn,Rats) then
- AddConversationOption(conversation, "I am interested in the power of nature.", "WhatRats")
- end
- if GetQuestStep(Spawn, Rats)==2 then
- conversation = CreateConversation()
- AddConversationOption(conversation, "I've reduced the number of scavengers like you asked.", "DoneRats")
- end
- AddConversationOption(conversation, "Just browsing. Thank you.")
- StartConversation(conversation, NPC, Spawn, "Welcome to my little scribe shop, adventurer. Are you interested in the wondrous magic of nature per chance? I may have something here that would be of use to you.")
+ Dialog1(NPC, Spawn)
end
end
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Welcome to my little scribe shop, adventurer. Are you interested in the wondrous magic of nature per chance? I may have something here that would be of use to you.")
+ Dialog.AddVoiceover("voiceover/english/salinia_brooklily/qey_village05/saliniabrooklily_x000.mp3", 1124223156, 142078310)
+ PlayFlavor(NPC, "", "","hello", 0, 0, Spawn)
+ if not HasQuest(Spawn, Rats) and not HasCompletedQuest(Spawn,Rats) then
+ Dialog.AddOption("I am interested in the power of nature.", "WhatRats")
+ elseif GetQuestStep(Spawn, Rats)==2 then
+ Dialog.AddOption("I've reduced the number of scavengers like you asked.", "DoneRats")
+ end
+ Dialog.AddOption("Just browsing. Thank you.")
+ Dialog.Start()
+end
+
+
function WhatRats(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- AddConversationOption(conversation, "What problems do you mean?", "WhatMean")
- AddConversationOption(conversation, "Well, people have to go somewhere. I don't have time for this.")
- StartConversation(conversation, NPC, Spawn, "The amazing thing about nature is its ability to balance life with no assistance. Unfortunately, the influx of people to this city is disrupting this balance.")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The amazing thing about nature is its ability to balance life with no assistance. Unfortunately, the influx of people to this city is disrupting this balance.")
PlayFlavor(NPC, "", "", "ponder", 0,0 , Spawn)
+ Dialog.AddOption("What problems do you mean?", "WhatMean")
+ Dialog.AddOption("Well, people have to go somewhere. I don't have time for this.")
+ Dialog.Start()
end
function WhatMean(NPC, Spawn)
FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- AddConversationOption(conversation, "I suppose I could help you with this.", "Helpping")
- AddConversationOption(conversation, "Well, people have to go somewhere. I don't have time for this.")
- StartConversation(conversation, NPC, Spawn, "Take those scavenger rats in the Peat Bog; those vermin overpower the other creatures that live there. Normally, hawks or cats would prey on the rats, but they shy away from the ever-growing city. I know it may take time, but would you slay some rats and help restore the balance of nature?")
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Take those scavenger rats in the Peat Bog; those vermin overpower the other creatures that live there. Normally, hawks or cats would prey on the rats, but they shy away from the ever-growing city. I know it may take time, but would you slay some rats and help restore the balance of nature?")
PlayFlavor(NPC, "", "", "nod", 0,0 , Spawn)
+ Dialog.AddOption("I suppose I could help you with this.", "Helpping")
+ Dialog.AddOption("Rats? You'll need to find someone else. I don't do rats.")
+ Dialog.Start()
end
function Helpping(NPC, Spawn)
@@ -78,13 +87,12 @@ end
function DoneRats(NPC, Spawn)
- FaceTarget(NPC, Spawn)
- conversation = CreateConversation()
- AddConversationOption(conversation, "I'm glad I could help.", "QuestDone")
- StartConversation(conversation, NPC, Spawn, "Your actions, even though small, carry great weight in helping restore the balance of nature in our beloved city. Thank you for your help.")
- PlayFlavor(NPC, "", "", "agree", 0,0 , Spawn)
-end
-
-function QuestDone(NPC, Spawn)
SetStepComplete(Spawn, Rats, 2)
- end
\ No newline at end of file
+
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Your actions, even though small, carry great weight in helping restore the balance of nature in our beloved city. Thank you for your help.")
+ PlayFlavor(NPC, "", "", "agree", 0,0 , Spawn)
+ Dialog.AddOption("I'm glad I could help.")
+ Dialog.Start()
+end
diff --git a/server/SpawnScripts/WillowWood/ThayareFaystrider.lua b/server/SpawnScripts/WillowWood/ThayareFaystrider.lua
index 76c77e4a5..7147477c1 100755
--- a/server/SpawnScripts/WillowWood/ThayareFaystrider.lua
+++ b/server/SpawnScripts/WillowWood/ThayareFaystrider.lua
@@ -1,30 +1,214 @@
--[[
Script Name : SpawnScripts/WillowWood/ThayareFaystrider.lua
Script Purpose : Thayare Faystrider
- Script Author : Scatman
+ Script Author : Scatman\\Dorbin
Script Date : 2009.09.15
Script Notes :
--]]
+require "SpawnScripts/Generic/DialogModule"
function spawn(NPC)
+ SetInfoStructString(NPC, "action_state", "sit_idle")
end
function respawn(NPC)
spawn(NPC)
end
+
function hailed(NPC, Spawn)
- conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional5/thayare/qey_village05/thayare000.mp3", "", "", 1834305487, 313746184, Spawn)
- AddConversationOption(conversation, "The cataclysms have passed. ", "dlg_8_1")
- AddConversationOption(conversation, "I cannot speak now. Farewell.")
- StartConversation(conversation, NPC, Spawn, "So kind, yet so naive to the horrors of the past, tragedies to be repeated, no doubt. ")
+ Dialog1(NPC, Spawn)
end
+
+function Dialog1(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("So kind, yet so naive to the horrors of the past, tragedies to be repeated, no doubt. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare000.mp3", 1834305487, 313746184)
+ Dialog.AddOption("The cataclysms have passed. ", "Dialog2")
+ Dialog.AddOption("I cannot speak now. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog2(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I do not speak of trembling plains and torrential seas, I speak of the bane of elfkind, the eternal struggle between light and dark ... between above and below.")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare001.mp3", 436536244, 3083124811)
+ Dialog.AddOption("You speak of the dark elves? ", "Dialog3")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog3(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Yes, the elves of below ... the Teir'Dal. Their hatred for the elves of the sun is a plague upon all of Norrath. Many have died in defense of elfkind, and I believe the bloodshed is far from over. It is an eternal war that burdens my heart.")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare002.mp3", 1265623853, 760817521)
+ Dialog.AddOption("Then do not fight anymore. ", "Dialog4")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog4(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I wish it were that easy, but I am Feir'Dal, a wood elf, and I am sworn to defend the Laws of Tunare and her children till my final breath passes my lips. That is a day I look forward to with great rejoice.")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare_faystrider/qey_village05/thayare003.mp3", 2415361913, 3209390874)
+ Dialog.AddOption("Why would you rejoice on your deathbed? ","Dialog6")
+ Dialog.AddOption("Who is Tunare? ", "Dialog5")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog5(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Tunare is the Mother of All, the goddess of the forest realms, the one who gave life to all who dwell within, including elfkind. She is growth and preservation. We elves of the sun are her soldiers and wards. We live to serve her laws and we die to preserve her children, flora and fauna.")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare_faystrider/qey_village05/thayare004.mp3", 2739778178, 2862887180)
+ Dialog.AddOption("You would die for this goddess?", "Dialog6")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog6(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("In my days, I have seen a multitude of my fellow treefolke give their lives in defense of Tunare's laws. Many were my family. I am haunted with the visions of battles of yore. I recall my beloved sister slipping from life while I wept with her in my embrace. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare005.mp3", 1279667287, 2445439332)
+ Dialog.AddOption("When did she die? ", "Dialog7")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+
+function Dialog7(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("She drifted from this realm more than four-hundred-years ago in the Age of Turmoil. It was the great War of the Fay, the war of the elves. The elf empire of below and their allies challenged the combined nations of elfkind. Armies of Teir'Dal, orc, troll, and others crept towards the Faydark hoping to extinguish the elves of sun.")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare006.mp3", 3098906679, 78236071)
+ Dialog.AddOption("You fought in this war? ", "Dialog8")
+ Dialog.AddOption("What is the Faydark? ","Dialog9")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog8(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog( "The Faydark was one of the last of the great forests of Norrath. It rested upon a continent far, far from here, taking up most of the land with its billowing evergreen canopy. Its grandeur was unmatched. It's within this sprawling majesty that we Feir'Dal built our great city in the last of the towering Elddar trees, the tree city called Kelethin. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare007.mp3",567824333, 4242442867)
+ Dialog.AddOption( "You fought for this forest?", "Dialog9")
+ Dialog.AddOption( "I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog9(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("I was but an adolescent, barely able to string a bow, yet I fought. My sister was in her prime, and she was a highly-skilled scout, an elite soldier of the Scouts of Tunare. But even her skill could not prepare her or the tree city of Kelethin for the onslaught from the northern coasts and the orc hordes from Crushbone. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare008.mp3", 2595470053, 1587010551)
+ Dialog.AddOption("How did it begin?", "Dialog10")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog10(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("It happened quickly. The forest empire of my people was greatly protected. No branch was without a lookout, the tall masts and far reaching ballistae of the Koada'Dal wavejumpers patrolled the coasts, but still, we couldn't prepare for the arrival. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare009.mp3", 3015822992, 4001180835)
+ Dialog.AddOption("Where did they come from?", "Dialog11")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog11(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("From the depths of the burning wastelands of Crushbone, came the orc hordes. As we directed our efforts at repelling this force, an armada of war galleys of Neriak breached the coastal mists. Some say they arrived via a titanic teleport arch built by the dark elves deep in the uncharted seas of the Ocean of Tears. Yet, still, they struck from an unexpected front...")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare010.mp3", 894446080, 3870182222)
+ Dialog.AddOption("Where else did they come from?", "Dialog12")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog12(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Near the heart of the Faydark, the most dangerous of the evil hordes arrived in a portal opened between the underworld and our forest, a portal bound by the ancient teleport spires. Wave after wave of Teir'Dal dragoon marched from this portal, a juggernaut marching towards the Koada'Dal city in the clouded mountains, Felwithe. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare011.mp3", 3635576474, 803732524)
+ Dialog.AddOption("What about Kelethin?", "Dialog13")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+
+function Dialog13(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("The tree city was no target of the dragoons, the orcs of Crushbone kept us under siege, setting much of the Faydark on fire! Within the raging inferno, the dragoons marched to seize Felwithe. It is there that the legendary King Tearis'Thex fell to the dark blade. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare012.mp3", 3204674791, 3928586592)
+ Dialog.AddOption("Then you lost the war?", "Dialog14")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog14(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Defeat seemed certain, but as we fought futile battles on many fronts, the horns of war were heard along the borders of the Faydark! The brigades of the dwarven empire Kaladim marched in from the western mountains, and from the east came the gnomes of Ak'Anon with their ticking and puffing clockwork army. The elves of the sun would triumph this day. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare013.mp3", 3275962358, 3603060383)
+ Dialog.AddOption("What happened to the evil horde?", "Dialog15")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog15(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Greatly outnumbered, the dark hordes were repelled. They retreated to the shadowed realms from whence they came. Some unfortunate ones fled to the Loping Plains seeking a haven in the moors of Mistmoore, never to be heard from again. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare_faystrider/qey_village05/thayare014.mp3", 2960216728, 621843039)
+ Dialog.AddOption("So the war was not long?", "Dialog16")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog16(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Don't let my short tale confuse you. This war raged for more than a few seasons. Blood stained the forest floor, green turned to ash. It was in the final defense of Kelethin that my sister sustained a mortal blow, dying within my arms, her last breath gracing my tear-soaked face. ")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare015.mp3", 4021587135, 1996842290)
+ Dialog.AddOption("How did you end up here?", "Dialog17")
+ Dialog.AddOption("I shall remember your words. Farewell.")
+ Dialog.Start()
+end
+
+function Dialog17(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+ Dialog.New(NPC, Spawn)
+ Dialog.AddDialog("Kelethin and Felwithe were restored under the guidance of the princess Queen, Lenya Thex, but the scars remained, both upon the land and within my memory. I departed the Faydark in search of a new life that would bury my visions of the war, but as I learned, war is eternal and it is far reaching. Since my days in the Faydark, I have traversed much more bloodshed. It is inescapable, yet I live on to defend the Laws of Tunare and to honor those that have fallen, such as my beloved sister Geeda.")
+ Dialog.AddVoiceover("voiceover/english/optional5/thayare/qey_village05/thayare016.mp3", 1874720017, 996176396)
+ Dialog.AddOption("I wish you peace. Thank you.")
+ Dialog.Start()
+end
+
+
+
+
+
+
+
+
+
+
+
+--[[
function dlg_8_1(NPC, Spawn)
conversation = CreateConversation()
- PlayFlavor(NPC, "voiceover/english/optional5/thayare/qey_village05/thayare001.mp3", "", "", 436536244, 3083124811, Spawn)
+ Dialog.AddDialog("voiceover/english/optional5/thayare/qey_village05/thayare001.mp3", "", "", 436536244, 3083124811, Spawn)
AddConversationOption(conversation, "You speak of the dark elves?", "dlg_8_2")
AddConversationOption(conversation, "I shall remember your words. Farewell.")
StartConversation(conversation, NPC, Spawn, "I do not speak of trembling plains and torrential seas, I speak of the bane of elfkind, the eternal struggle between light and dark ... between above and below.")
@@ -164,4 +348,6 @@ function dlg_8_16(NPC, Spawn)
PlayFlavor(NPC, "voiceover/english/optional5/thayare/qey_village05/thayare016.mp3", "", "", 1874720017, 996176396, Spawn)
AddConversationOption(conversation, "I wish you peace. Thank you.")
StartConversation(conversation, NPC, Spawn, "Kelethin and Felwithe were restored under the guidance of the princess Queen, Lenya Thex, but the scars remained, both upon the land and within my memory. I departed the Faydark in search of a new life that would bury my visions of the war, but as I learned, war is eternal and it is far reaching. Since my days in the Faydark, I have traversed much more bloodshed. It is inescapable, yet I live on to defend the Laws of Tunare and to honor those that have fallen, such as my beloved sister Geeda. ")
-end
\ No newline at end of file
+end
+
+]]--
\ No newline at end of file
diff --git a/server/SpawnScripts/WillowWood/zonetoqeyelddar.lua b/server/SpawnScripts/WillowWood/zonetoqeyelddar.lua
index 712dc5692..3a7d76fc3 100755
--- a/server/SpawnScripts/WillowWood/zonetoqeyelddar.lua
+++ b/server/SpawnScripts/WillowWood/zonetoqeyelddar.lua
@@ -6,19 +6,32 @@
:
--]]
-function spawn(NPC)
- SetRequiredQuest(NPC,5718,14,0,1,1)
- SetRequiredQuest(NPC,5719,14,0,1,1)
- SetRequiredQuest(NPC,5720,14,0,1,1)
- SetRequiredQuest(NPC,5721,14,0,1,1)
- SetRequiredQuest(NPC,5722,14,0,1,1)
- SetRequiredQuest(NPC,5723,14,0,1,1)
-end
-
-function hailed(NPC, Spawn)
- FaceTarget(NPC, Spawn)
-end
-
-function respawn(NPC)
- spawn(NPC)
-end
\ No newline at end of file
+function casted_on(NPC, Spawn,SpellName)
+local invul = IsInvulnerable(Spawn)
+ if SpellName == 'Enter The Elddar Grove' then
+ if not HasCompletedQuest(Spawn,5718) and
+ not HasCompletedQuest(Spawn,5719) and
+ not HasCompletedQuest(Spawn,5720) and
+ not HasCompletedQuest(Spawn,5721) and
+ not HasCompletedQuest(Spawn,5722) and
+ not HasCompletedQuest(Spawn,5723)
+ and GetFactionAmount(Spawn,11)<50000 and
+ invul == false then
+
+ if HasQuest(Spawn,5761) and GetQuestStep(Spawn,5761)==10 then
+ SetStepComplete(Spawn,5761,10)
+ end
+
+ PlaySound(Spawn,"sounds/ui/ui_warning.wav", GetX(NPC), GetY(NPC), GetZ(NPC))
+ SendPopUpMessage(Spawn,"Only citizens may enter the city of Qeynos.",255,50,50)
+ SendMessage(Spawn,"Only citizens may enter the city of Qeynos.","red")
+
+ else
+ if invul == true and GetFactionAmount(Spawn,11) < 30000 then
+ SendMessage(Spawn,"Your GM invulnerability allows you to bypass citizenship.","white")
+ end
+ ZoneRef = GetZone("ElddarGrove")
+ Zone(ZoneRef,Spawn,809.22, -21.51, -562.41, 154.8)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/Zek/ZanFilis.lua b/server/SpawnScripts/Zek/ZanFilis.lua
new file mode 100755
index 000000000..7bf3d7703
--- /dev/null
+++ b/server/SpawnScripts/Zek/ZanFilis.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : SpawnScripts/Zek/ZanFilis.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 06:04:44
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC, Spawn)
+ FaceTarget(NPC, Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/antonica/aWindstalkercitizen.lua b/server/SpawnScripts/antonica/aWindstalkercitizen.lua
index 6a91a6b19..72896b77d 100755
--- a/server/SpawnScripts/antonica/aWindstalkercitizen.lua
+++ b/server/SpawnScripts/antonica/aWindstalkercitizen.lua
@@ -5,30 +5,15 @@
Script Purpose :
:
--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/Windstalkers.lua")
+require "SpawnScripts/Generic/NPCModule"
local LichaDancingQueen = 5342
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 16
- local level2 = 17
- local difficulty1 = 6
- local hp1 = 975
- local power1 = 310
- local difficulty2 = 6
- local hp2 = 1105
- local power2 = 360
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-SetTempVariable(NPC, "QUEST_HAILED", "false")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ ChooseRace(NPC)
+ SetTempVariable(NPC, "QUEST_HAILED", "false")
end
function hailed(NPC, Spawn)
@@ -45,6 +30,28 @@ function hailed(NPC, Spawn)
elseif choice == 2 then
PlayFlavor(NPC, "", "I know, I know. You already told me.", "", 0, 0, Spawn)
end
+else
+ if GetClass(Spawn) >= 15 and GetClass(Spawn) <= 17 or GetClass(Spawn)==39 then
+ local choice = MakeRandomInt(1, 2)
+ if choice == 1 then
+ SendMessage(Spawn,"The Windstalker Citizen eyes you approvingly.","white")
+ elseif choice == 2 then
+ SendMessage(Spawn,"The Windstalker Citizen gives you a friendly nod of acknowledgement.","white")
+ PlayFlavor(NPC, "", "", "nod", 0, 0, Spawn)
+ end
+ else
+ local choice = MakeRandomInt(1, 3)
+ if choice == 1 then
+ SendMessage(Spawn,"The Windstalker Citizen eyes closely in a disapproving manner.","white")
+ PlayFlavor(NPC, "", "", "glare", 0, 0, Spawn)
+ elseif choice == 2 then
+ SendMessage(Spawn,"The Windstalker Citizen does not want to engage with you.","white")
+ PlayFlavor(NPC, "", "", "sniff", 0, 0, Spawn)
+ elseif choice == 3 then
+ SendMessage(Spawn,"The Windstalker Citizen stares sniffs the air around you.","white")
+ PlayFlavor(NPC, "", "", "peer", 0, 0, Spawn)
+ end
+ end
end
end
@@ -94,10 +101,15 @@ SetTempVariable(NPC, "QUEST_HAILED", "false")
end
end
-
-
-
-
function respawn(NPC)
spawn(NPC)
-end
\ No newline at end of file
+end
+
+function ChooseRace(NPC)
+ SetRace = MakeRandomInt(1,2)
+ if SetRace == 1 then
+ human(NPC)
+ elseif SetRace == 2 then
+ halfelf(NPC)
+ end
+end
diff --git a/server/SpawnScripts/classic_caves/aDustpawGuard.lua b/server/SpawnScripts/classic_caves/aDustpawGuard.lua
new file mode 100755
index 000000000..5c473c2da
--- /dev/null
+++ b/server/SpawnScripts/classic_caves/aDustpawGuard.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : SpawnScripts/classic_caves/aDustpawGuard.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.11 01:09:04
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
+
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+
+end
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/classic_caves/aDustpawPatrol.lua b/server/SpawnScripts/classic_caves/aDustpawPatrol.lua
index c08bfbbf6..90671c050 100755
--- a/server/SpawnScripts/classic_caves/aDustpawPatrol.lua
+++ b/server/SpawnScripts/classic_caves/aDustpawPatrol.lua
@@ -5,10 +5,12 @@
Script Purpose :
:
--]]
-
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGnoll1.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/classic_caves/analabastergolemPatrol.lua b/server/SpawnScripts/classic_caves/analabastergolemPatrol.lua
index df17c4849..911b61356 100755
--- a/server/SpawnScripts/classic_caves/analabastergolemPatrol.lua
+++ b/server/SpawnScripts/classic_caves/analabastergolemPatrol.lua
@@ -6,27 +6,11 @@
:
--]]
dofile("SpawnScripts/Generic/MonsterCallouts/BaseGolem1.lua")
+dofile("SpawnScripts/Generic/CatalogueQuestUpdates.lua")
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 7
- local level2 = 8
- local difficulty1 = 6
- local hp1 = 200
- local power1 = 90
- local difficulty2 = 6
- local hp2 = 240
- local power2 = 100
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
waypoints(NPC)
end
diff --git a/server/SpawnScripts/classic_caves/apaleadder.lua b/server/SpawnScripts/classic_caves/apaleadder.lua
index 7b18c8bc8..e54dad6d1 100755
--- a/server/SpawnScripts/classic_caves/apaleadder.lua
+++ b/server/SpawnScripts/classic_caves/apaleadder.lua
@@ -5,70 +5,16 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
-AddTimer(NPC,math.random(2500,6000), "ChooseMovement")
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ AddTimer(NPC, 6000, "ChooseMovement")
end
function ChooseMovement(NPC)
-if GetSpawnLocationID(NPC)== 133776947 or GetSpawnLocationID(NPC)== 133776948 or GetSpawnLocationID(NPC)== 133776949 then
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
+ if GetSpawnLocationID(NPC)== 133776947 or GetSpawnLocationID(NPC)== 133776948 or GetSpawnLocationID(NPC)== 133776949 then
+ RandomMovement(NPC, Spawn, 7, -7, 2, 20, 45)
+ end
end
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(20,45))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 7, Y, Z, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(20,45))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(20,45))
-end
diff --git a/server/SpawnScripts/classic_caves/ashalebatRoam.lua b/server/SpawnScripts/classic_caves/ashalebatRoam.lua
index 1a1edf1b4..997dc90be 100755
--- a/server/SpawnScripts/classic_caves/ashalebatRoam.lua
+++ b/server/SpawnScripts/classic_caves/ashalebatRoam.lua
@@ -5,70 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y+2, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y-2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y-2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y-4, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y-4, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y-4, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y+2, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovementFlight(NPC, Spawn, 4, -4, 4, -4, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/classic_caves/asiltbat.lua b/server/SpawnScripts/classic_caves/asiltbat.lua
index c46288803..a85846817 100755
--- a/server/SpawnScripts/classic_caves/asiltbat.lua
+++ b/server/SpawnScripts/classic_caves/asiltbat.lua
@@ -5,90 +5,11 @@
Script Purpose :
:
--]]
+require "SpawnScripts/Generic/NPCModule"
-function spawn(NPC)
- local Level = GetLevel(NPC)
- local level1 = 4
- local level2 = 5
- local difficulty1 = 6
- local hp1 = 110
- local power1 = 55
- local difficulty2 = 6
- local hp2 = 130
- local power2 = 65
- if Level == level1 then
- SpawnSet(NPC, "difficulty", difficulty1)
- SpawnSet(NPC, "hp", hp1)
- SpawnSet(NPC, "power", power1)
- elseif Level == level2
- then
- SpawnSet(NPC, "difficulty", difficulty2)
- SpawnSet(NPC, "hp", hp2)
- SpawnSet(NPC, "power", power2)
- end
-
- ChooseMovement(NPC)
-end
-
-function ChooseMovement(NPC)
- local route = math.random(1,4)
- if route == 1 then
- RouteOne(NPC, Spawn)
- elseif route == 2 then
- RouteTwo(NPC, Spawn)
- elseif route == 3 then
- RouteThree(NPC, Spawn)
- elseif route == 4 then
- RouteFour(NPC, Spawn)
- end
-end
-
-function RouteOne(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteTwo(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 1, math.random(10,20))
-end
-
-function RouteThree(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X + 4, Y, Z - 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
-end
-
-function RouteFour(NPC, Spawn)
- local X = GetX(NPC)
- local Y = GetY(NPC)
- local Z = GetZ(NPC)
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(2,10))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X - 4, Y, Z + 4, 2, math.random(10,20))
- MovementLoopAddLocation(NPC, X, Y, Z, 2, math.random(10,20))
+function spawn(NPC, Spawn)
+ NPCModule(NPC, Spawn)
+ RandomMovement(NPC, Spawn, 4, -4, 2, 8, 15)
end
function respawn(NPC, Spawn)
diff --git a/server/SpawnScripts/qey_epic11_l10_arbor/Fire.lua b/server/SpawnScripts/qey_epic11_l10_arbor/Fire.lua
new file mode 100755
index 000000000..57966ca7f
--- /dev/null
+++ b/server/SpawnScripts/qey_epic11_l10_arbor/Fire.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : SpawnScripts/qey_epic11_l10_arbor/Fire.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.22 04:11:18
+ Script Purpose :
+ :
+--]]
+function spawn(NPC)
+ SetPlayerProximityFunction(NPC, 2, "InRange", "LeaveRange")
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+
+function InRange(NPC,Spawn,Zone)
+ if GetDistance(NPC,Spawn)<2 then
+ SpawnSet(Spawn,"visual_state",492)
+ TakeFireDamage(Spawn)
+ SendMessage(Spawn, "You are burning!", "red")
+ AddTimer(NPC,3000,"InRange",1,Spawn)
+ end
+end
+
+
+function LeaveRange(NPC,Spawn)
+ SpawnSet(Spawn,"visual_state",0)
+end
+
+function TakeFireDamage(Spawn)
+local invul = IsInvulnerable(Spawn)
+if invul == true then
+return 0
+end
+
+local hp = GetHP(Spawn)
+local damage = GetMaxHP(Spawn)*0.05
+local damageToTake = damage * 1
+-- if we don't have enough HP make them die to pain and suffering not self
+if hp <= damageToTake then
+KillSpawn(Spawn, null, 1)
+else
+DamageSpawn(Spawn, Spawn, 192, 3, damageToTake, damageToTake, "Fire!", 0, 0, 1, 1)
+end
+end
+
+
+
+function Tick(Zone, Spawn, RegionType)
+
+TakeFireDamage(Spawn)
+
+-- returning 1 would stop the Tick process until Spawn leaves/re-enters region
+return 0
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/qey_epic11_l10_arbor/RainSystemCloud.lua b/server/SpawnScripts/qey_epic11_l10_arbor/RainSystemCloud.lua
new file mode 100755
index 000000000..113c1b626
--- /dev/null
+++ b/server/SpawnScripts/qey_epic11_l10_arbor/RainSystemCloud.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : SpawnScripts/qey_epic11_l10_arbor/RainSystemCloud.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.22 02:11:10
+ Script Purpose :
+ :
+--]]
+
+function spawn(NPC)
+AddTimer(NPC,12000,"DespawnSystem2")
+AddTimer(NPC,10500,"DespawnSystem1")
+end
+
+
+
+function respawn(NPC)
+ spawn(NPC)
+end
+
+function DespawnSystem1(NPC,Spawn)
+ zone = GetZone(NPC)
+ Despawn(GetSpawnByLocationID(zone, 133780813))--RAIN
+ Despawn(GetSpawnByLocationID(zone, 133780814))
+ Despawn(GetSpawnByLocationID(zone, 133780815))
+end
+
+function DespawnSystem2(NPC,Spawn)
+ SpawnSet((GetSpawn(NPC,2180002)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180003)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180004)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180005)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180006)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180007)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180010)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180011)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180015)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180017)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180020)),"visual_state",6867)
+ SpawnSet((GetSpawn(NPC,2180023)),"visual_state",6867)
+ zone = GetZone(NPC)
+ Despawn(GetSpawnByLocationID(zone, 133780816))--BUBBLES
+ Despawn(GetSpawnByLocationID(zone, 133780817))
+ Despawn(GetSpawnByLocationID(zone, 133780818))
+
+ Despawn(GetSpawnByLocationID(zone, 133780811)) --CLOUD
+ end
\ No newline at end of file
diff --git a/server/SpawnScripts/qey_epic11_l10_arbor/aFireElemental.lua b/server/SpawnScripts/qey_epic11_l10_arbor/aFireElemental.lua
new file mode 100755
index 000000000..12e998433
--- /dev/null
+++ b/server/SpawnScripts/qey_epic11_l10_arbor/aFireElemental.lua
@@ -0,0 +1,88 @@
+--[[
+ Script Name : SpawnScripts/qey_epic11_l10_arbor/aFireElemental.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 11:11:07
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/MonsterCallouts/BaseFireElemental1.lua")
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+AddTimer(NPC,7500,"Visual2")
+AddTimer(NPC,6500,"Visual1a")
+AddTimer(NPC,4000,"Visual1")
+end
+
+function Visual1(NPC,Spawn)
+ ApplySpellVisual(NPC,165)
+ SpawnSet((GetSpawn(NPC,2180002)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180003)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180004)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180005)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180006)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180007)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180010)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180011)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180015)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180017)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180020)),"visual_state",3120)
+ SpawnSet((GetSpawn(NPC,2180023)),"visual_state",3120)
+ zone = GetZone(NPC)
+ SpawnByLocationID(zone, 133780819)
+ SpawnByLocationID(zone, 133780809)
+ SpawnByLocationID(zone, 133780810)
+ SpawnByLocationID(zone, 133780812)
+end
+
+function Visual1a(NPC,Spawn)
+ SpawnSet(NPC,"size",35)
+end
+
+function Visual2(NPC,Spawn)
+ SpawnSet(NPC,"model_type",171)
+ SpawnSet(NPC,"faction",1)
+ SpawnSet(NPC,"name","an Enraged Fire Elemental")
+ SpawnSet(NPC,"targetable",1)
+ SpawnSet(NPC,"show_level",1)
+ SpawnSet(NPC,"attackable",1)
+end
+
+function death(NPC,Spawn)
+ PerformCameraShake(Spawn, 0.399999988079071)
+ SendMessage(Spawn, "The elemental's death triggered the abode's protective enchantment.","white")
+ PlaySound(Spawn,"sounds/spells/lightning_burst/thunder_01.wav",(GetX(Spawn)),(GetY(Spawn)),(GetZ(Spawn)))
+ SpawnSet((GetSpawn(NPC,2180002)),"visual_state",1861)
+ SpawnSet((GetSpawn(NPC,2180003)),"visual_state",0)
+ SpawnSet((GetSpawn(NPC,2180004)),"visual_state",1861)
+ SpawnSet((GetSpawn(NPC,2180005)),"visual_state",0)
+ SpawnSet((GetSpawn(NPC,2180006)),"visual_state",1861)
+ SpawnSet((GetSpawn(NPC,2180007)),"visual_state",1861)
+ SpawnSet((GetSpawn(NPC,2180010)),"visual_state",0)
+ SpawnSet((GetSpawn(NPC,2180011)),"visual_state",0)
+ SpawnSet((GetSpawn(NPC,2180015)),"visual_state",0)
+ SpawnSet((GetSpawn(NPC,2180017)),"visual_state",1861)
+ SpawnSet((GetSpawn(NPC,2180020)),"visual_state",0)
+ SpawnSet((GetSpawn(NPC,2180023)),"visual_state",0)
+ zone = GetZone(NPC)
+ Despawn(GetSpawnByLocationID(zone, 133780812))
+ Despawn(GetSpawnByLocationID(zone, 133780810))
+ Despawn(GetSpawnByLocationID(zone, 133780809))
+ Despawn(GetSpawnByLocationID(zone, 133780819))
+ SpawnByLocationID(zone, 133780816)--BUBBLES
+ SpawnByLocationID(zone, 133780817)
+ SpawnByLocationID(zone, 133780818)
+ SpawnByLocationID(zone, 133780813)--RAIN
+ SpawnByLocationID(zone, 133780814)
+ SpawnByLocationID(zone, 133780815)
+ SpawnByLocationID(zone, 133780811) --CLOUD
+ if HasQuest(Spawn, 5775)then
+ SetStepComplete(Spawn,5775,1)
+ end
+
+ end
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/qey_epic11_l10_arbor/aJournal.lua b/server/SpawnScripts/qey_epic11_l10_arbor/aJournal.lua
new file mode 100755
index 000000000..92dac563c
--- /dev/null
+++ b/server/SpawnScripts/qey_epic11_l10_arbor/aJournal.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : SpawnScripts/qey_epic11_l10_arbor/aJournal.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.22 03:11:53
+ Script Purpose :
+ :
+--]]
+
+function casted_on(NPC, Spawn, SpellName)
+ if SpellName == 'Read' then
+ local con = CreateConversation()
+ AddConversationOption(con, "Read the open entry", "Entry")
+ AddConversationOption(con, "Leave the journal alone.","Exit")
+ StartDialogConversation(con, 1, NPC, Spawn, "This appears to be a journal, possibly from this home's owner. They apprently haven't been back in while by the signs of the dust on the open page.")
+end
+end
+
+function Entry(NPC, Spawn)
+ local con = CreateConversation()
+ AddConversationOption(con, "Leave the journal.","Exit")
+ StartDialogConversation(con, 1, NPC, Spawn, "...Josslyn thinks she's so smart! I've told her I had enchantments in place in case one of my summonings gets away. Yes yes, I know I shouldn't practice at home- but all the study chambers have been booked for ages! I've only ever had issues with it one time, ONE TIME, but it went up the chimney and I haven't seen or heard of it since! Even so, the enchantments should do the trick. I MUST prove to Magister Niskel I'm capable of handling these or I'll never hear the end of it... [The entry continues incessantly] ")
+end
+
+function Exit(NPC, Spawn)
+ CloseConversation(NPC,Spawn)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/qey_epic11_l10_arbor/asmolderinggoo.lua b/server/SpawnScripts/qey_epic11_l10_arbor/asmolderinggoo.lua
new file mode 100755
index 000000000..a7e63e4f8
--- /dev/null
+++ b/server/SpawnScripts/qey_epic11_l10_arbor/asmolderinggoo.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : SpawnScripts/qey_epic11_l10_arbor/asmolderinggoo.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 11:11:32
+ Script Purpose :
+ :
+--]]
+require "SpawnScripts/Generic/CombatModule"
+
+function spawn(NPC, Spawn)
+ combatModule(NPC, Spawn)
+
+
+end
+
+function death(NPC,Spawn)
+ ApplySpellVisual(NPC,165)
+ x = GetX(NPC)
+ y = GetY(NPC)
+ z = GetZ(NPC)
+ h = GetHeading(NPC)
+
+ local zone = GetZone(NPC)
+ local new_spawn = SpawnMob(zone, 2180024, true, x, y, y, h)
+ if new_spawn ~= nil then
+ AddSpawnAccess(new_spawn, Spawn)
+ end
+ PerformCameraShake(Spawn, 0.699999988079071)
+ SendMessage(Spawn, "The smoldering goo exploded!","red")
+ SendPopUpMessage(Spawn, "The smoldering ooze exploded!",250,0,0)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/qeynos_combined02/BreenoMesspieTest.lua b/server/SpawnScripts/qeynos_combined02/BreenoMesspieTest.lua
index 5f8fe3a97..660392509 100755
--- a/server/SpawnScripts/qeynos_combined02/BreenoMesspieTest.lua
+++ b/server/SpawnScripts/qeynos_combined02/BreenoMesspieTest.lua
@@ -75,7 +75,7 @@ function aggro(NPC, Spawn)
if GetTempVariable(NPC, "CASTING") ~= "True" then
SetTempVariable(NPC, "CASTING", "True")
SpawnSet(NPC, "visual_state", 0)
- CastSpell(Spawn, 993, 1, NPC)
+ CastSpell(Spawn, 993, 1 , NPC)
AddTimer(NPC, timebetweenShots, "FinishedCasting") -- PLAY WITH TIME HERE
end
end
diff --git a/server/SpawnScripts/thunderdome/AntoniaBayle.lua b/server/SpawnScripts/thunderdome/AntoniaBayle.lua
new file mode 100755
index 000000000..5a1aa0f4e
--- /dev/null
+++ b/server/SpawnScripts/thunderdome/AntoniaBayle.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : SpawnScripts/thunderdome/AntoniaBayle.lua
+ Script Author : Dorbin
+ Script Date : 2023.05.25 12:05:36
+ Script Purpose :
+ :
+--]]
+dofile("SpawnScripts/Generic/ClassSkillCheckNew.lua")
+
+function spawn(NPC)
+
+end
+
+function hailed(NPC,Spawn)
+ changeSkills(NPC, Spawn)
+ FaceTarget(NPC,Spawn)
+ PlayFlavor(NPC,"","Done","nod",0,0,Spawn)
+end
+
+function respawn(NPC)
+ spawn(NPC)
+end
\ No newline at end of file
diff --git a/server/SpawnScripts/thunderdome/TalkTestScriptMe.lua b/server/SpawnScripts/thunderdome/TalkTestScriptMe.lua
index e72f8f94e..e36ee3cea 100755
--- a/server/SpawnScripts/thunderdome/TalkTestScriptMe.lua
+++ b/server/SpawnScripts/thunderdome/TalkTestScriptMe.lua
@@ -16,25 +16,13 @@ function respawn(NPC)
end
-function hailed(NPC,Spawn)
---AddSkill(Spawn, "Slashing", 1)
- FaceTarget(NPC, Spawn)
- Dialog.New(NPC, Spawn)
- Dialog.AddDialog("As you examine the coin, a magical voice fills your mind.")
- Dialog.AddVoiceover("voiceover/english/overlord_lucan_d_lere/fprt_west/lucan_isle_speech.mp3", 2912329438, 4090300715)
- Dialog.AddOption("Put coin away.")
- Dialog.Start()
-
-end
-
---[[
function hailed(NPC, Spawn)
FaceTarget(NPC, Spawn)
conversation = CreateConversation() -- I think this could technically be whatever we want, but CreateConversation() needs to be called without variables. We could call this stringcheese if we wanted.
AddConversationOption(conversation, "Flex.", "flex") -- First option, adds a clickable option in response to what we send out in StartConversation. Second var refers to the function that contains the rest of the conversation.
AddConversationOption(conversation, "Keep talking.", "keeptalking") -- second option
AddConversationOption(conversation, "Terminate.") -- third option
- StartConversation(conversation, NPC, Spawn, "If Dorbin sees this, he'll know Nev finally got around to looking at this NPC!")
+ StartConversation(conversation, NPC, Spawn, "Script me, please!")
end
-- OPTION 1 is a simple emote
@@ -52,10 +40,14 @@ function keeptalking(NPC, Spawn)
StartConversation(conversation, NPC, Spawn, "Want to continue our conversation?") -- If we want the player to cick a button, this option must be present.
end
+--[[
Tips on PlayFlavor
- PlayFlavor(NPC, "voiceover/english/gubbo_chaley/enchanted/gubbo_chaley/gubbo_chaley006.mp3","If you see Fritz, would you tell him I'm looking for him?","nod", 4082962413, 3474255449, Spawn,8)
-
+ PlayFlavor(NPC, "voiceover/english/gubbo_chaley/enchanted/gubbo_chaley/gubbo_chaley006.mp3","If you see Fritz, would you tell him I'm looking for him?","nod", 4082962413, 3474255449, Spawn,8)
+
+
+Translates into the NPC with the voiceover saying "If you see Fritz, would you tell him I'm looking for him?" in Stout Language (8) while nodding. Enitre action is only visible to the Spawn/Player.
+
--Each variable translated below--
PlayFlavor(Source, "VoiceoverMP3", "TextAboveNPC'sHead", "Emote", MP3key1, MP3key2, Target, LanguageNPCuses)
@@ -63,5 +55,8 @@ end
--No talking example--
PlayFlavor(NPC,"","","shakefist",0,0,Spawn)
+
+ Visible to everyone around:
+ PlayFlavor(NPC,"","","shakefist",0,0)
]]--
diff --git a/server/Spells/Blank.lua b/server/Spells/Blank.lua
new file mode 100755
index 000000000..c3eeea6d9
--- /dev/null
+++ b/server/Spells/Blank.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Blank.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.18 02:06:04
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
diff --git a/server/Spells/CatalogueCreature.lua b/server/Spells/CatalogueCreature.lua
index e17505b62..7554ddc61 100755
--- a/server/Spells/CatalogueCreature.lua
+++ b/server/Spells/CatalogueCreature.lua
@@ -9,5 +9,6 @@
function cast(Caster, Target)
Name = GetName(Target)
- SendMessage(Caster, "Currently targeting " .. Name .. "...", "white")
-end
\ No newline at end of file
+ PlayFlavor(Caster,"","","peer",0,0)
+ SendMessage(Caster, "Currently attempting to catalogue " .. Name .. "...", "white")
+end
diff --git a/server/Spells/Cleric/CureTrauma.lua b/server/Spells/Cleric/CureTrauma.lua
new file mode 100755
index 000000000..ed92f0303
--- /dev/null
+++ b/server/Spells/Cleric/CureTrauma.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Cleric/CureTrauma.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.01 06:12:40
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ CureByType(1, 1, "", (GetLevel(Caster) * 1.08) + 1)
+end
diff --git a/server/Spells/Commoner/AglaemantisColdTouch.lua b/server/Spells/Commoner/AglaemantisColdTouch.lua
new file mode 100755
index 000000000..71eaa7987
--- /dev/null
+++ b/server/Spells/Commoner/AglaemantisColdTouch.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/AglaemantisColdTouch.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.21 10:02:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddProc(Caster, 1, 100)
+
+end
+
+function proc(Caster, Target, Type)
+ local STR = GetStr(Caster)
+ local DMGBonus = STR/10
+ local ProcDMG = math.floor(DMGBonus)
+ ProcDamage(Caster, Target, "Chilling Touch", 4, ProcDMG)
+
+end
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
+
diff --git a/server/Spells/Commoner/AnguisDragonHide.lua b/server/Spells/Commoner/AnguisDragonHide.lua
new file mode 100644
index 000000000..7f720e5c1
--- /dev/null
+++ b/server/Spells/Commoner/AnguisDragonHide.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Commoner/AnguisDragonHide.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 05:03:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddImmunitySpell(4, Caster)
+ --AddSpellBonus(Caster, 205, 10000)
+ AddSpellBonus(Caster, 201, 10000)
+ AddSpellBonus(Caster, 641, 100)
+
+end
+
diff --git a/server/Spells/Commoner/Apprehended.lua b/server/Spells/Commoner/Apprehended.lua
new file mode 100755
index 000000000..322b4139c
--- /dev/null
+++ b/server/Spells/Commoner/Apprehended.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/Apprehended.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.25 03:09:00
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
+function cast(Caster, Target)
+ AddControlEffect(Caster, 1)
+ SetInfoStructString(Target, "action_state", "result_enthralling_fetters_ghostly")
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Caster, 1)
+ SetInfoStructString(Target, "action_state", "0")
+end
diff --git a/server/Spells/Commoner/ArcaneEnlightenment.lua b/server/Spells/Commoner/ArcaneEnlightenment.lua
index 5227a1c28..53e9be886 100755
--- a/server/Spells/Commoner/ArcaneEnlightenment.lua
+++ b/server/Spells/Commoner/ArcaneEnlightenment.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Commoner/ArcaneEnlightenment.lua
- Script Author : neatz09
- Script Date : 2020.03.30 08:03:47
+ Script Author : LordPazuzu
+ Script Date : 2-26-2023
Script Purpose :
:
--]]
@@ -14,19 +14,19 @@
-- Grants 8 triggers of the spell.
function cast(Caster, Target, Power, Triggers)
- AddSpellBonus(Target, 620, Power)
-AddProc(Caster, 15, 50)
-SetSpellTriggerCount(Triggers, 1)
+ MaxPow = GetMaxPower(Caster)
+ PowHeal = math.floor(MaxPow * 0.2)
+ SpellHeal("Power", PowHeal, PowHeal, Caster)
+
+ AddProc(Caster, 15, 50)
+ SetSpellTriggerCount(Triggers, 1)
end
function proc(Caster, Target, Type, Power, Triggers)
- Say(Caster, "this casts a test spell")
-
-CastSpell(Caster, 22, 1)
-RemoveTriggerFromSpell()
-end
+ CastSpell(Caster, 2550391, 1)
+ RemoveTriggerFromSpell()
+end
function remove(Caster, Target)
-RemoveSpellBonus(Target)
RemoveProc(Target)
end
\ No newline at end of file
diff --git a/server/Spells/Commoner/Blackbark.lua b/server/Spells/Commoner/Blackbark.lua
new file mode 100755
index 000000000..d32a8c042
--- /dev/null
+++ b/server/Spells/Commoner/Blackbark.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/Blackbark.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.04 04:02:33
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
diff --git a/server/Spells/Commoner/BlessedStrike.lua b/server/Spells/Commoner/BlessedStrike.lua
new file mode 100755
index 000000000..14af330db
--- /dev/null
+++ b/server/Spells/Commoner/BlessedStrike.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/BlessedStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.18 05:03:01
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
diff --git a/server/Spells/Commoner/BlightoftheMorning.lua b/server/Spells/Commoner/BlightoftheMorning.lua
new file mode 100755
index 000000000..ff37801be
--- /dev/null
+++ b/server/Spells/Commoner/BlightoftheMorning.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/BlightoftheMorning.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 11:10:34
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ SetSpellTriggerCount(100, 1)
+ AddProc(Caster, 3, 8)
+
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ Spell = GetSpell(2550441)
+ DmgBonus = math.floor(GetInt(Caster)/10)
+ MinDmg = MinVal + DmgBonus
+ MaxDmg = MaxVal + DmgBonus
+
+ if Type == 3 then
+ SetSpellDataIndex(Spell, 0, DmgType)
+ SetSpellDataIndex(Spell, 1, MinDmg)
+ SetSpellDataIndex(Spell, 2, MaxDmg)
+ CastCustomSpell(Spell, Caster, Target)
+ RemoveTriggerFromSpell(1)
+ end
+
+end
+
+
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
diff --git a/server/Spells/Commoner/Blind.lua b/server/Spells/Commoner/Blind.lua
new file mode 100755
index 000000000..fc368cbfc
--- /dev/null
+++ b/server/Spells/Commoner/Blind.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Commoner/Blind.lua
+ Script Author : terrible
+ Script Date : 2023.09.06 11:09:25
+ Script Purpose :
+ :
+--]]
+
+--[[
+ Applies Blind:
+ 1. Daze target
+ 2. Blur target
+ 3. Reduce movement of target
+]]
+
+function cast(Caster, Target, Timer, Snare)
+ if not IsEpic(Target) then
+ --Dazes the target
+ AddControlEffect(Target, 3)
+ BlurVision(Target, 1.0)
+ SetSpeedMultiplier(Target, Snare)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+ BlurVision(Target, 0)
+ SetSpeedMultiplier(Target, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Commoner/BrawlerClass.lua b/server/Spells/Commoner/BrawlerClass.lua
new file mode 100755
index 000000000..e2a953086
--- /dev/null
+++ b/server/Spells/Commoner/BrawlerClass.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Commoner/BrawlerClass.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.16 03:09:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 0, 3) --Strength
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 2, 5) --Agility
+ AddSpellBonus(Caster, 651, 5) --Block
+ --AddSpellBonus(Caster, 670, 5) --Block
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Commoner/Cripple.lua b/server/Spells/Commoner/Cripple.lua
index 4ecdb96c5..8bc34a218 100755
--- a/server/Spells/Commoner/Cripple.lua
+++ b/server/Spells/Commoner/Cripple.lua
@@ -6,8 +6,9 @@
:
--]]
-function cast(Caster, Target, SlowMod)
- SetSpeedMultiplier(Target, SlowMod)
+function cast(Caster, Target, Snare)
+ local Slow = 1.0 - Snare
+ SetSpeedMultiplier(Target, Slow)
AddProc(Target, 1, 5)
AddProc(Target, 15, 5)
end
diff --git a/server/Spells/Commoner/CrusaderClass.lua b/server/Spells/Commoner/CrusaderClass.lua
new file mode 100755
index 000000000..b68078e36
--- /dev/null
+++ b/server/Spells/Commoner/CrusaderClass.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/CrusaderClass.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.16 04:09:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 3, 2) --Wisdom
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Commoner/DivineJudgment.lua b/server/Spells/Commoner/DivineJudgment.lua
index df1403e3c..657e255fa 100755
--- a/server/Spells/Commoner/DivineJudgment.lua
+++ b/server/Spells/Commoner/DivineJudgment.lua
@@ -8,4 +8,8 @@
function cast(Caster, Target, DmgType, MinVal, MaxVal)
SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
-end
\ No newline at end of file
+end
+
+function remove(Caster, Target)
+
+end
diff --git a/server/Spells/Commoner/Enlightenment.lua b/server/Spells/Commoner/Enlightenment.lua
index 75c2b2cbf..04f7aad06 100755
--- a/server/Spells/Commoner/Enlightenment.lua
+++ b/server/Spells/Commoner/Enlightenment.lua
@@ -1,19 +1,22 @@
--[[
Script Name : Spells/Commoner/Enlightenment.lua
- Script Author : neatz09
- Script Date : 2020.03.30 08:03:05
+ Script Author : LordPazuzu
+ Script Date : 2-26-2023
Script Purpose :
:
--]]
-- Increases power of caster by 40.0%
-function cast(Caster, Target, BonusAmt)
- AddSpellBonus(Target, 620, BonusAmt)
+function cast(Caster, Target)
+ MaxPow = GetMaxPower(Caster)
+ PowHeal = math.floor(MaxPow * 0.4)
+ SpellHeal("Power", PowHeal, PowHeal, Caster)
end
-
function remove(Caster, Target)
- RemoveSpellBonus(Target)
-
+
end
+
+
+
diff --git a/server/Spells/Commoner/Evade.lua b/server/Spells/Commoner/Evade.lua
new file mode 100755
index 000000000..45ca6cdb2
--- /dev/null
+++ b/server/Spells/Commoner/Evade.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/Evade.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.04 03:01:48
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Hate)
+ AddHate(Caster, Target, Hate, 1)
+end
+
diff --git a/server/Spells/Commoner/ExplosiveWarts.lua b/server/Spells/Commoner/ExplosiveWarts.lua
new file mode 100755
index 000000000..f977bcb79
--- /dev/null
+++ b/server/Spells/Commoner/ExplosiveWarts.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Commoner/ExplosiveWarts.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.11 01:09:21
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, MinDmg, MaxDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 6
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalMin = MinDmg + LvlBonus
+ TotalMax = MaxDmg + LvlBonus
+
+ SpellDamage(Target, 8, TotalMin, TotalMax)
+
+
+end
+
diff --git a/server/Spells/Commoner/FierceBite.lua b/server/Spells/Commoner/FierceBite.lua
new file mode 100755
index 000000000..3be8b7611
--- /dev/null
+++ b/server/Spells/Commoner/FierceBite.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/FierceBite.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.11 08:09:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ MaxDmg = MaxVal + LvlBonus
+ MinDmg = MinVal + LvlBonus
+
+ SpellDamage(Target, 0, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Commoner/FieryBreath.lua b/server/Spells/Commoner/FieryBreath.lua
new file mode 100644
index 000000000..af63780e8
--- /dev/null
+++ b/server/Spells/Commoner/FieryBreath.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/FieryBreath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.26 08:02:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Commoner/FighterArchetype.lua b/server/Spells/Commoner/FighterArchetype.lua
new file mode 100755
index 000000000..10a7744ca
--- /dev/null
+++ b/server/Spells/Commoner/FighterArchetype.lua
@@ -0,0 +1,107 @@
+--[[
+ Script Name : Spells/Commoner/FighterArchetype.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.26 09:05:15
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ class = GetClass(Caster)
+ if class == 1 then
+ fighter()
+ elseif class == 2 then
+ warrior()
+ elseif class == 3 then
+ guardian()
+ elseif class == 4 then
+ berserker()
+ elseif class == 5 then
+ brawler()
+ elseif class == 6 then
+ monk()
+ elseif class == 7 then
+ bruiser()
+ elseif class == 8 then
+ crusader()
+ elseif class == 9 then
+ shadowknight()
+ elseif class == 10 then
+ paladin()
+ end
+end
+
+function fighter(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 2, 2) --Agility
+end
+
+function warrior(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 2, 3) --Agility
+end
+
+function crusader(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 3, 2) --Wisdom
+end
+
+function brawler(Caster, Target)
+ AddSpellBonus(Caster, 0, 3) --Strength
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 2, 5) --Agility
+ block()
+end
+
+function guardian(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 2, 2) --Agility
+end
+
+function berserker(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 2, 3) --Agility
+end
+
+function bruiser(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 2, 2) --Agility
+ block()
+end
+
+function monk(Caster, Target)
+ AddSpellBonus(Caster, 0, 2) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 2, 5) --Agility
+ block()
+end
+
+function paladin(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 2, 3) --Agility
+ AddSpellBonus(Caster, 3, 2) --Wisdom
+end
+
+function shadowknight(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 2, 3) --Agility
+ AddSpellBonus(Caster, 4, 2) --Intelligence
+end
+
+function block(Caster, Target)
+ AddSpellBonus(Caster, 651, 5) --Block
+ --AddSpellBonus(Caster, 670, 5) --Block
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
+
+
diff --git a/server/Spells/Commoner/FlameSurge.lua b/server/Spells/Commoner/FlameSurge.lua
new file mode 100755
index 000000000..e7c2963b3
--- /dev/null
+++ b/server/Spells/Commoner/FlameSurge.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Commoner/FlameSurge.lua
+ Script Author : neatz09
+ Script Date : 2022.11.19 03:11:41
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Inflicts 38 - 46 heat damage on target instantly and every second
+
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ SpellDamage(Target, DoTType, MinVal)
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ SpellDamage(Target, DoTType, MinVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Commoner/Knockdown.lua b/server/Spells/Commoner/Knockdown.lua
index e53e67f0f..bce255b2e 100755
--- a/server/Spells/Commoner/Knockdown.lua
+++ b/server/Spells/Commoner/Knockdown.lua
@@ -6,14 +6,18 @@
:
--]]
+
-- Apply Knockdown
-- Throws target back
-- Stuns target
-- Blurs vision of target
-- Except Epic
+
+
function cast(Caster, Target, Timer)
if not IsEpic(Target) then
- Knockback(Caster, Target, Timer)
+ --Knockback(Caster, Target, Timer)
+ PlayAnimation(Target, 72)
AddControlEffect(Target, 4)
BlurVision(Target, 1.0)
AddSpellTimer(Timer, "RemoveStunBlur")
diff --git a/server/Spells/Commoner/LadonDragonHide.lua b/server/Spells/Commoner/LadonDragonHide.lua
new file mode 100644
index 000000000..f0f8de8d8
--- /dev/null
+++ b/server/Spells/Commoner/LadonDragonHide.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/LadonDragonHide.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.28 10:02:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddImmunitySpell(4, Caster)
+ AddSpellBonus(Caster, 205, 10000)
+ AddSpellBonus(Caster, 201, 10000)
+ AddSpellBonus(Caster, 641, 100)
+
+end
diff --git a/server/Spells/Commoner/LadonFieryBreath.lua b/server/Spells/Commoner/LadonFieryBreath.lua
new file mode 100644
index 000000000..dafebca0a
--- /dev/null
+++ b/server/Spells/Commoner/LadonFieryBreath.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/LadonFieryBreath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.26 08:02:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ SpellDamage(Target, 3, 100, 125)
+end
+
+function tick(Caster, Target)
+ SpellDamage(Target, 3, 30, 50)
+end
+
+function remove(Caster, Target)
+
+end
diff --git a/server/Spells/Commoner/MageArchetype.lua b/server/Spells/Commoner/MageArchetype.lua
new file mode 100755
index 000000000..8719182b2
--- /dev/null
+++ b/server/Spells/Commoner/MageArchetype.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/MageArchetype.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.27 02:05:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 3, 3) --Agility
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 4, 5) --Intelligence
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Commoner/MaleficFury.lua b/server/Spells/Commoner/MaleficFury.lua
index 7e07c6a96..5b0d61b21 100755
--- a/server/Spells/Commoner/MaleficFury.lua
+++ b/server/Spells/Commoner/MaleficFury.lua
@@ -2,21 +2,29 @@
Script Name : Spells/Commoner/MaleficFury.lua
Script Author : neatz09
Script Date : 2020.05.29 07:05:32
- Script Purpose :
+ Script Purpose : handles the subspell for item wicked wand of malice.
:
--]]
--- Info from spell_display_effects (remove from script when done)
-- On a hostile spell cast this spell will cast Malefic Fury on target of spell.
-- Inflicts 229 mental damage on target
-- Increases Threat to target by 1,660
-- Cannot be modified except by direct means
function cast(Caster, Target)
-AddProc(Caster, 5, 100)
+ AddProc(Caster, 5, 100)
+ AddSpellBonus(Caster, 664, 10)
+ Say(Caster, "spell bonus 664 temporarily")
end
function proc(Caster, Target, DmgType, Dmg, Hate)
-SpellDamage(Target, DmgType, Dmg, nil, 2, 1)
-AddHate(Caster, Target, Hate, 1)
+ if Type == 5 then
+ SpellDamage(Target, DmgType, Dmg, nil, 2, 1)
+ AddHate(Caster, Target, Hate, 1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+ RemoveSpellBonus(Target)
end
\ No newline at end of file
diff --git a/server/Spells/Commoner/MarcusWarklarHide.lua b/server/Spells/Commoner/MarcusWarklarHide.lua
new file mode 100644
index 000000000..299e55104
--- /dev/null
+++ b/server/Spells/Commoner/MarcusWarklarHide.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/MarcusWarklarHide.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.29 10:02:05
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddImmunitySpell(4, Caster)
+ AddSpellBonus(Caster, 641, 100)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Commoner/MarkofNobility.lua b/server/Spells/Commoner/MarkofNobility.lua
index f45a60133..0e9e0a30e 100755
--- a/server/Spells/Commoner/MarkofNobility.lua
+++ b/server/Spells/Commoner/MarkofNobility.lua
@@ -8,10 +8,10 @@
-- Heals Target for X
-function cast(Caster, Target, Healz)
-SpellHeal("Heal", Healz)
+function cast(Caster, Target, TotalHeal)
+SpellHeal("Heal", TotalHeal)
end
-function tick(Caster, Target, Healz)
-SpellHeal("Heal", Healz)
+function tick(Caster, Target, TotalHeal)
+SpellHeal("Heal", TotalHeal)
end
diff --git a/server/Spells/Commoner/Migraine.lua b/server/Spells/Commoner/Migraine.lua
new file mode 100755
index 000000000..3d0fb568c
--- /dev/null
+++ b/server/Spells/Commoner/Migraine.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/Migraine.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.04 07:12:12
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
diff --git a/server/Spells/Commoner/NobleWrath.lua b/server/Spells/Commoner/NobleWrath.lua
index 636df4e87..f6e8c289f 100755
--- a/server/Spells/Commoner/NobleWrath.lua
+++ b/server/Spells/Commoner/NobleWrath.lua
@@ -13,5 +13,20 @@
--]]
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
\ No newline at end of file
diff --git a/server/Spells/Commoner/Poison.lua b/server/Spells/Commoner/Poison.lua
new file mode 100755
index 000000000..c3ace90e3
--- /dev/null
+++ b/server/Spells/Commoner/Poison.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Commoner/Poison.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.11 12:10:27
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MinDmg)
+ SpellDamage(Target, DmgType, MaxDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MaxDmg, MaxDmg)
+
+end
+
+
+function remove(Caster, Target)
+
+end
+
+
+
+
diff --git a/server/Spells/Commoner/PotCureArcane.lua b/server/Spells/Commoner/PotCureArcane.lua
new file mode 100755
index 000000000..70c342021
--- /dev/null
+++ b/server/Spells/Commoner/PotCureArcane.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/PotCureArcane.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 02:10:29
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Level)
+ CureByType(1, 2, "", Level)
+
+end
diff --git a/server/Spells/Commoner/PotCureElemental.lua b/server/Spells/Commoner/PotCureElemental.lua
new file mode 100755
index 000000000..de01abca6
--- /dev/null
+++ b/server/Spells/Commoner/PotCureElemental.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/PotCureElemental.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 01:10:28
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Level)
+ CureByType(1, 4, "", Level)
+
+end
diff --git a/server/Spells/Commoner/PotCureNox.lua b/server/Spells/Commoner/PotCureNox.lua
new file mode 100755
index 000000000..7cad20dbb
--- /dev/null
+++ b/server/Spells/Commoner/PotCureNox.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/PotCureNox.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 02:10:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Level)
+ CureByType(1, 3, "", Level)
+
+end
diff --git a/server/Spells/Commoner/PotCureTrauma.lua b/server/Spells/Commoner/PotCureTrauma.lua
new file mode 100755
index 000000000..a561763c1
--- /dev/null
+++ b/server/Spells/Commoner/PotCureTrauma.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/PotCureTrauma.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.10 01:10:30
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Level)
+ CureByType(1, 1, "", Level)
+
+end
diff --git a/server/Spells/Commoner/PreAlphaMeleeBuff.lua b/server/Spells/Commoner/PreAlphaMeleeBuff.lua
new file mode 100755
index 000000000..975295b7c
--- /dev/null
+++ b/server/Spells/Commoner/PreAlphaMeleeBuff.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Commoner/PreAlphaMeleeBuff.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.20 03:01:11
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddProc(Caster, 1, 100)
+
+
+end
+
+function proc(Caster, Target, Type)
+ local STR = GetStr(Caster)
+ local DMGBonus = STR/10
+ local ProcDMG = math.floor(DMGBonus)
+ ProcDamage(Caster, Target, "AlphaProc", 13, ProcDMG)
+
+end
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
diff --git a/server/Spells/Commoner/PriestArchetype.lua b/server/Spells/Commoner/PriestArchetype.lua
new file mode 100755
index 000000000..f767fb984
--- /dev/null
+++ b/server/Spells/Commoner/PriestArchetype.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/PriestArchetype.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.27 02:05:57
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ class = GetClass(Caster)
+ if class == 13 then
+ templar()
+ else
+ priest()
+ end
+end
+
+function priest(Caster, Target)
+ AddSpellBonus(Caster, 0, 2) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 3, 5) --Wisdom
+end
+
+
+function templar(Caster, Target)
+ AddSpellBonus(Caster, 0, 2) --Strength
+ AddSpellBonus(Caster, 4, 3) --Intelligence
+ AddSpellBonus(Caster, 3, 5) --Wisdom
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Commoner/PriestArcheype.lua b/server/Spells/Commoner/PriestArcheype.lua
new file mode 100755
index 000000000..718b658d9
--- /dev/null
+++ b/server/Spells/Commoner/PriestArcheype.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/PriestArcheype.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.27 02:05:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 0, 2) --Strength
+ AddSpellBonus(Caster, 1, 3) --Stamina
+ AddSpellBonus(Caster, 3, 5) --Wisdom
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Commoner/Quicksand.lua b/server/Spells/Commoner/Quicksand.lua
new file mode 100755
index 000000000..77fe2e207
--- /dev/null
+++ b/server/Spells/Commoner/Quicksand.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/Quicksand.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.27 03:03:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ -- Roots target
+ SetSpeedMultiplier(Target, 0.304)
+
+ -- 10% chance to dispel when target takes damage
+ AddProc(Target, 15, 5.0)
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 15 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1.0)
+end
diff --git a/server/Spells/Commoner/RemedyoftheGarden.lua b/server/Spells/Commoner/RemedyoftheGarden.lua
new file mode 100755
index 000000000..840e78a9a
--- /dev/null
+++ b/server/Spells/Commoner/RemedyoftheGarden.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/RemedyoftheGarden.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.03 05:10:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ SpellHeal("Heal", MinVal, MaxVal, Target)
+end
diff --git a/server/Spells/Commoner/Renux.lua b/server/Spells/Commoner/Renux.lua
new file mode 100755
index 000000000..9c21ce5b2
--- /dev/null
+++ b/server/Spells/Commoner/Renux.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/Renux.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.05 09:02:32
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 617, 75)
+ AddSpellBonus(Caster, 629, 125)
+
+end
+
diff --git a/server/Spells/Commoner/ScoutArchetype.lua b/server/Spells/Commoner/ScoutArchetype.lua
new file mode 100755
index 000000000..89799c8ba
--- /dev/null
+++ b/server/Spells/Commoner/ScoutArchetype.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/ScoutArchetype.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.05.27 02:05:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ class = GetClass(Caster)
+ if class == 35 then
+ bard()
+ elseif class == 36 then
+ bard()
+ elseif class == 37 then
+ bard()
+ else
+ scout()
+ end
+end
+
+function scout(Caster, Target)
+ AddSpellBonus(Caster, 0, 3) --Strength
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 2, 5) --Agility
+end
+
+function bard(Caster, Target)
+ AddSpellBonus(Caster, 0, 3) --Strength
+ AddSpellBonus(Caster, 4, 2) --Intelligence
+ AddSpellBonus(Caster, 2, 5) --Agility
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Commoner/Searfang.lua b/server/Spells/Commoner/Searfang.lua
new file mode 100755
index 000000000..8fcdb4059
--- /dev/null
+++ b/server/Spells/Commoner/Searfang.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/Searfang.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.05 09:02:33
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 617, 100)
+ AddSpellBonus(Caster, 629, 150)
+
+end
+
diff --git a/server/Spells/Commoner/Shroud.lua b/server/Spells/Commoner/Shroud.lua
new file mode 100755
index 000000000..eee459363
--- /dev/null
+++ b/server/Spells/Commoner/Shroud.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Commoner/Shroud.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.31 07:03:14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ Stealth(1)
+
+end
+
+function remove(Caster, Target)
+ RemoveStealth()
+
+end
diff --git a/server/Spells/Commoner/SlaverjawPowerDrain.lua b/server/Spells/Commoner/SlaverjawPowerDrain.lua
new file mode 100755
index 000000000..0ceed0900
--- /dev/null
+++ b/server/Spells/Commoner/SlaverjawPowerDrain.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Commoner/SlaverjawPowerDrain.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.27 08:09:52
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddProc(Caster, 1, 100.0)
+
+end
+
+function proc(Caster, Target)
+ if type == 1 then
+ ModifyPower(Target, -7)
+ end
+
+end
+
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
+
diff --git a/server/Spells/Commoner/Sprint.lua b/server/Spells/Commoner/Sprint.lua
index f5cb70d91..7a353ee90 100755
--- a/server/Spells/Commoner/Sprint.lua
+++ b/server/Spells/Commoner/Sprint.lua
@@ -21,7 +21,8 @@ function cast(Caster, Target, Speed, is_tick)
end
else
if is_tick == true then
- ModifyPower(Caster, -1 * (total_power * .1))
+ local total_power = GetMaxPower(Caster)
+ ModifyPower(Caster, (-1 *(total_power * .1)))
end
if GetTempVariable(Caster, "sprint_bonus_active") ~= "true" then
AddSpellBonus(Caster, 609, Speed)
@@ -33,6 +34,7 @@ function cast(Caster, Target, Speed, is_tick)
end
end
+
function SprinterHasMoved(Caster, is_tick)
if is_tick ~= true then
return true
diff --git a/server/Spells/Commoner/Stalk.lua b/server/Spells/Commoner/Stalk.lua
new file mode 100755
index 000000000..008aaf390
--- /dev/null
+++ b/server/Spells/Commoner/Stalk.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/Stalk.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.30 08:03:54
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target Hate)
+ AddHate(Caster, Target, Hate, 1)
+end
+
diff --git a/server/Spells/Commoner/Stealth.lua b/server/Spells/Commoner/Stealth.lua
new file mode 100755
index 000000000..513c826e3
--- /dev/null
+++ b/server/Spells/Commoner/Stealth.lua
@@ -0,0 +1,18 @@
+
+--[[
+ Script Name : Spells/Commoner/Stealth.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.30 08:03:26
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+
+ Stealth(1, Caster)
+end
+
+function remove(Caster, Target)
+ RemoveStealth()
+end
diff --git a/server/Spells/Commoner/StingingBarrage.lua b/server/Spells/Commoner/StingingBarrage.lua
new file mode 100755
index 000000000..f7a2800ab
--- /dev/null
+++ b/server/Spells/Commoner/StingingBarrage.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : Spells/Commoner/StingingBarrage.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.16 01:10:50
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, MinVal, MaxVal, MinDoT, MaxDoT)
+ Level = GetLevel(Caster)
+ SpellLevel = 8
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ MinDmg = MinVal + LvlBonus
+ MaxDmg = MaxVal + LvlBonus * 2
+
+ SpellDamage(Target, 2, MinDmg, MaxDmg)
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ end
+
+end
+
+
+function tick (Caster, Target, MinVal, MaxVal, MinDoT, MaxDoT)
+ Level = GetLevel(Caster)
+ SpellLevel = 8
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DoTMin = MinDoT + LvlBonus
+ DoTMax = MaxDot + LvlBonus * 2
+
+ SpellDamage(Target, 9, DoTMin, DoTMax)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2774)
+ else
+ SpawnSet(Target,"visual_state",2774)
+ end
+end
+
+
+function remove(Caster, Target)
+ SpawnSet(Target,"visual_state",35542)
+end
+
diff --git a/server/Spells/Commoner/Stunned.lua b/server/Spells/Commoner/Stunned.lua
new file mode 100755
index 000000000..3dbdb2e58
--- /dev/null
+++ b/server/Spells/Commoner/Stunned.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/Stunned.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.16 12:09:36
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
+function cast(Caster, Target)
+ AddControlEffect(Caster, 5)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Caster, 5)
+end
+
+
diff --git a/server/Spells/Commoner/SwindlersLuck.lua b/server/Spells/Commoner/SwindlersLuck.lua
index 88174f684..22b4b2e7b 100755
--- a/server/Spells/Commoner/SwindlersLuck.lua
+++ b/server/Spells/Commoner/SwindlersLuck.lua
@@ -10,10 +10,10 @@ function cast(Caster, Target, MinVal, MaxVal)
local Val1 = (GetLevel(Caster) * 1.08) * MinVal
local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
local SkillAmt = randomFloat(Val1, Val2)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
- AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
- AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
- AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
end
function randomFloat(Val1, Val2)
@@ -21,5 +21,5 @@ return Val1 + math.random() * (Val2 - Val1);
end
function remove(Caster, Target)
- RemoveSkillBonus(Target)
+ RemoveSkillBonus(Caster)
end
\ No newline at end of file
diff --git a/server/Spells/Commoner/Swipe.lua b/server/Spells/Commoner/Swipe.lua
new file mode 100755
index 000000000..00150cf87
--- /dev/null
+++ b/server/Spells/Commoner/Swipe.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/Swipe.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.31 02:03:14
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
diff --git a/server/Spells/Commoner/T1NamedBuffPackage.lua b/server/Spells/Commoner/T1NamedBuffPackage.lua
new file mode 100755
index 000000000..dea62fd49
--- /dev/null
+++ b/server/Spells/Commoner/T1NamedBuffPackage.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/T1NamedBuffPackage.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.06 04:02:49
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 629, 100)
+ AddSpellBonus(Caster, 617, 50)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+
+end
+
diff --git a/server/Spells/Commoner/TerraTHUD.lua b/server/Spells/Commoner/TerraTHUD.lua
new file mode 100644
index 000000000..fe2edb809
--- /dev/null
+++ b/server/Spells/Commoner/TerraTHUD.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/TerraTHUD.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.28 08:01:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ Knockback(Caster, Target, 5000, 30.0, 30.0)
+end
diff --git a/server/Spells/Commoner/The5YearFirework.lua b/server/Spells/Commoner/The5YearFirework.lua
new file mode 100755
index 000000000..bc0ab0121
--- /dev/null
+++ b/server/Spells/Commoner/The5YearFirework.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/The5YearFirework.lua
+ Script Author : Premierio015
+ Script Date : 2023.12.09 10:12:22
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Applies The 5-Year Firework when
+Activated. Lasts for 3.0 seconds.
+
+--]]
+
+function cast(Caster, Target)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Commoner/TheOverlordsWill.lua b/server/Spells/Commoner/TheOverlordsWill.lua
new file mode 100755
index 000000000..9d1c6744d
--- /dev/null
+++ b/server/Spells/Commoner/TheOverlordsWill.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/TheOverlordsWill.lua
+ Script Author : Dorbin
+ Script Date : 2023.09.26 03:09:36
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
+
+function cast(Caster, Target)
+ if GetQuestStep(Target,5890)>=1 then
+ SetStepComplete(Target,5890,1)
+local Alignment = GetAlignment(Target)
+if Alignment == 0 then
+ SetAlignment(Target,2)
+end
+ RemoveSpellBookEntry(Target, 2550019)
+local Freeport = GetFactionAmount(Target, 12)
+if Freeport >0 then
+ ChangeFaction(Target, 12, -100000)
+end
+end
+
+
+local hp = GetHP(Target)
+local damage = GetMaxHP(Target) *1.5
+local damageToTake = damage * 1
+-- if we don't have enough HP make them die to pain and suffering not self...
+if hp <= damageToTake then
+KillSpawn(Target, null, 1)
+else
+DamageSpawn(Target, Target, 192, 3, damageToTake, damageToTake, "the Overlord's Banishment!", 0, 0, 1, 1)
+end
+end
+
diff --git a/server/Spells/Commoner/Toughness.lua b/server/Spells/Commoner/Toughness.lua
new file mode 100755
index 000000000..ef2131c02
--- /dev/null
+++ b/server/Spells/Commoner/Toughness.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/Toughness.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.09 08:12:16
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 200, BonusAmt)
+
+end
+
diff --git a/server/Spells/Commoner/WarriorClass.lua b/server/Spells/Commoner/WarriorClass.lua
new file mode 100755
index 000000000..31948198e
--- /dev/null
+++ b/server/Spells/Commoner/WarriorClass.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/WarriorClass.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.16 04:09:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 0, 5) --Strength
+ AddSpellBonus(Caster, 1, 2) --Stamina
+ AddSpellBonus(Caster, 2, 3) --Agility
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Commoner/testblank.lua b/server/Spells/Commoner/testblank.lua
new file mode 100755
index 000000000..1bea9feb4
--- /dev/null
+++ b/server/Spells/Commoner/testblank.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Commoner/testblank.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.07 12:09:45
+ Script Purpose : Spell Stuff
+ :
+--]]
+
+function precast(Caster, Target)
+ --Set conditions for doing spell stuff
+end
+
+
+function cast(Caster, Target)
+ --Do spell stuff
+end
+
+
+function tick(Caster, Target)
+ --Do DoT stuff
+end
+
+
+function remove(Caster, Target)
+ --Undo spell stuff
+end
+
diff --git a/server/Spells/Diseased.lua b/server/Spells/Diseased.lua
index ab0c69ef3..5768761e9 100755
--- a/server/Spells/Diseased.lua
+++ b/server/Spells/Diseased.lua
@@ -14,5 +14,11 @@
--]]
function cast(Caster, Target)
- SpawnSet(Caster,"visual_state",11395)
+ SetInfoStructString(Caster, "action_state", "disease")
+-- SpawnSet(Caster,"visual_state",11395)
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal)
+ SetInfoStructString(Caster, "action_state", "0")
+ SpawnSet(Caster,"action_state",0)
end
\ No newline at end of file
diff --git a/server/Spells/ElementalAid.lua b/server/Spells/ElementalAid.lua
new file mode 100755
index 000000000..350e0672d
--- /dev/null
+++ b/server/Spells/ElementalAid.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/ElementalAid.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.01 09:12:09
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+
+--]]
+
diff --git a/server/Spells/EscapetoKugup.lua b/server/Spells/EscapetoKugup.lua
new file mode 100755
index 000000000..63d002104
--- /dev/null
+++ b/server/Spells/EscapetoKugup.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/EscapetoKugup.lua
+ Script Author : neatz09
+ Script Date : 2023.04.23 12:04:00
+ Script Purpose : handles the spell that item #46435 casts for froglok shit
+ :
+--]]
+
+function cast(Caster, Target)
+ Zone(GetZone(123), Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/FelineGrace.lua b/server/Spells/FelineGrace.lua
index 45fc3f4ce..36731f9df 100755
--- a/server/Spells/FelineGrace.lua
+++ b/server/Spells/FelineGrace.lua
@@ -9,10 +9,10 @@
-- Grants the skill Safefall.
function cast(Caster, Target)
- AddControlEffect(Target, 14)
+ AddControlEffect(Caster, 14)
end
function remove(Caster, Target)
- RemoveControlEffect(Target, 14)
+ RemoveControlEffect(Caster, 14)
end
diff --git a/server/Spells/Fighter/Brawler/BruisingStrike.lua b/server/Spells/Fighter/Brawler/BruisingStrike.lua
index 8270bd06f..ba66156bd 100755
--- a/server/Spells/Fighter/Brawler/BruisingStrike.lua
+++ b/server/Spells/Fighter/Brawler/BruisingStrike.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Brawler/BruisingStrike.lua
- Script Author : neatz09
- Script Date : 2020.11.05 05:11:47
+ Script Author : LordPazuzu
+ Script Date : 9/10/2023
Script Purpose :
:
--]]
@@ -9,7 +9,24 @@
-- Inflicts 52 - 88 melee damage on target
-- If facing target
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- Say(Caster, "Facing target and health cost not implemented.")
-end
\ No newline at end of file
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+ Say(Caster, "facing target not implemented.")
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DmgHigh
+ MinDmg = math.floor(DmgBonus) * 2 + DmgLow
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+
+end
diff --git a/server/Spells/Fighter/Brawler/FeignDeath.lua b/server/Spells/Fighter/Brawler/FeignDeath.lua
index cb60f61f2..2b91f122b 100755
--- a/server/Spells/Fighter/Brawler/FeignDeath.lua
+++ b/server/Spells/Fighter/Brawler/FeignDeath.lua
@@ -13,7 +13,7 @@ function cast(Caster, Target, Chance)
local roll = math.random(1, 100);
if roll <= Chance then
- ClearHate(Target, Caster)
+ ClearHate(NPC, Caster)
SendMessage(Caster, "Your feign death succeeded", "yellow")
else
SendMessage(Caster, "Your feign death attempt failed", "yellow")
diff --git a/server/Spells/Fighter/Brawler/FlyingKick.lua b/server/Spells/Fighter/Brawler/FlyingKick.lua
index 90e64386c..079d0c83a 100755
--- a/server/Spells/Fighter/Brawler/FlyingKick.lua
+++ b/server/Spells/Fighter/Brawler/FlyingKick.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Brawler/FlyingKick.lua
- Script Author : neatz09
- Script Date : 2020.11.05 05:11:45
+ Script Author : LordPazuzu
+ Script Date : 9/29/2023
Script Purpose :
:
--]]
@@ -9,5 +9,19 @@
-- Inflicts 30 - 50 crushing damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Brawler/FocusedStrike.lua b/server/Spells/Fighter/Brawler/FocusedStrike.lua
index d603265f6..ed1943746 100755
--- a/server/Spells/Fighter/Brawler/FocusedStrike.lua
+++ b/server/Spells/Fighter/Brawler/FocusedStrike.lua
@@ -1,13 +1,28 @@
--[[
Script Name : Spells/Fighter/Brawler/FocusedStrike.lua
- Script Author : neatz09
- Script Date : 2020.11.05 05:11:27
+ Script Author : LordPazuzu
+ Script Date : 9/6/2023
Script Purpose :
:
--]]
--- Inflicts 25 - 42 melee damage on target
+-- Inflicts melee damage on target at range.
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MinDmg = math.floor(DmgBonus) * 2 + DmgLow
+ MaxDmg = math.floor(DmgBonus) * 2 + DmgHigh
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Brawler/IndomitableWill.lua b/server/Spells/Fighter/Brawler/IndomitableWill.lua
new file mode 100755
index 000000000..398e60d2c
--- /dev/null
+++ b/server/Spells/Fighter/Brawler/IndomitableWill.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/IndomitableWill.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.03 04:09:43
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, BaseCure)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalCure = BaseCure + LvlBonus
+
+ CureByType(1,2,"", TotalCure)
+
+end
+
+
diff --git a/server/Spells/Fighter/Brawler/MartialFocus.lua b/server/Spells/Fighter/Brawler/MartialFocus.lua
index 94a902d9b..3d4a51ea0 100755
--- a/server/Spells/Fighter/Brawler/MartialFocus.lua
+++ b/server/Spells/Fighter/Brawler/MartialFocus.lua
@@ -1,16 +1,16 @@
--[[
Script Name : Spells/Fighter/Brawler/MartialFocus.lua
- Script Author : Dello
- Script Date : 2014.07.10 06:07:01
+ Script Author : LordPazuzu
+ Script Date : 9/2/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, MaxVal)
- AddSpellBonus(Target, 0, MaxVal)
- AddSpellBonus(Target, 2, MaxVal)
+function cast(Caster, Target, DefSkills)
+ AddSkillBonus(Caster, GetSkillIDByName("Parry"), DefSkills)
+ AddSkillBonus(Caster, GetSkillIDByName("Deflection"), DefSkills)
end
function remove(Caster, Target, MaxVal)
- RemoveSpellBonus(Target)
+ RemoveSkillBonus(Caster)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Brawler/PowerStrike.lua b/server/Spells/Fighter/Brawler/PowerStrike.lua
index f8235717a..6a5be1f72 100755
--- a/server/Spells/Fighter/Brawler/PowerStrike.lua
+++ b/server/Spells/Fighter/Brawler/PowerStrike.lua
@@ -1,21 +1,34 @@
--[[
Script Name : Spells/Fighter/Brawler/PowerStrike.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:09
+ Script Author : LordPazuzu
+ Script Date : 9/2/2023
Script Purpose :
:
--]]
-- Inflicts 28 - 46 melee damage on target
--- Decreases Defense of target by 1.3
+
-- If facing target
-function cast(Caster, Target)
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
Say(Caster, "facing target not implemented.")
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DmgHigh
+ MinDmg = math.floor(DmgBonus) * 2 + DmgLow
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ Interrupt(Caster, Target)
+
end
-function remove(Caster, Target)
- RemoveSpellBonus(Target)
-end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Brawler/RapidSwings.lua b/server/Spells/Fighter/Brawler/RapidSwings.lua
index 6719b7ce7..8010036d7 100755
--- a/server/Spells/Fighter/Brawler/RapidSwings.lua
+++ b/server/Spells/Fighter/Brawler/RapidSwings.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Brawler/RapidSwings.lua
- Script Author : neatz09
- Script Date : 2020.11.05 05:11:48
+ Script Author : LordPazuzu
+ Script Date : 9/29/2023
Script Purpose :
:
--]]
@@ -12,12 +12,25 @@
-- If facing target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- Say(Caster, "Facing Target not imple,emented")
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
if LastSpellAttackHit() then
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
end
diff --git a/server/Spells/Fighter/Brawler/ShoulderCharge.lua b/server/Spells/Fighter/Brawler/ShoulderCharge.lua
index db8f6f21e..00055969b 100755
--- a/server/Spells/Fighter/Brawler/ShoulderCharge.lua
+++ b/server/Spells/Fighter/Brawler/ShoulderCharge.lua
@@ -1,28 +1,35 @@
--[[
Script Name : Spells/Fighter/Brawler/ShoulderCharge.lua
- Script Author : Dello
- Script Date : 2014.07.10 06:07:13
+ Script Author : LordPazuzu
+ Script Date : 9/2/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
- end
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
- if not IsEpic(Target) then
- AddControlEffect(Target, 4)
- BlurVision(Target, 1.0)
- Knockback(Caster, Target, 1500)
- AddSpellTimer(1500, "RemoveKnockdown")
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DmgHigh
+ MinDmg = math.floor(DmgBonus) * 2 + DmgLow
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddControlEffect(Target, 4 )
end
-function RemoveKnockdown(Caster, Target)
+function remove(Caster, Target)
RemoveControlEffect(Target, 4)
- BlurVision(Target, 0.0)
+
end
+
diff --git a/server/Spells/Fighter/Brawler/StaggeringStance.lua b/server/Spells/Fighter/Brawler/StaggeringStance.lua
new file mode 100755
index 000000000..846644355
--- /dev/null
+++ b/server/Spells/Fighter/Brawler/StaggeringStance.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/StaggeringStance.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.29 05:09:28
+ Script Purpose :
+ :
+--]]
+--Note: Need to replace deflection with agility
+function cast(Caster, Target, Chance, Agi)
+ Level = GetLevel(Caster)
+ SpellLevel = 18
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ TotalAgi= LvlBonus * .5 + Agi
+
+ AddSpellBonus(Caster, 2, TotalAgi)
+ --AddProc(Target, 4, Chance)
+
+end
+
+function proc(Caster, Target, Type)
+ Say(Caster, "Avoidance buff not implemented.")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Caster)
+
+end
+
diff --git a/server/Spells/Fighter/Brawler/StanceBrawlersStance.lua b/server/Spells/Fighter/Brawler/StanceBrawlersStance.lua
index dbedf9ec1..0c666e34b 100755
--- a/server/Spells/Fighter/Brawler/StanceBrawlersStance.lua
+++ b/server/Spells/Fighter/Brawler/StanceBrawlersStance.lua
@@ -1,25 +1,33 @@
--[[
Script Name : Spells/Fighter/Brawler/StanceBrawlersStance.lua
- Script Author : neatz09
- Script Date : 2020.11.05 05:11:14
+ Script Author : LordPazuzu
+ Script Date : 9/10/2023
Script Purpose :
:
--]]
--- Decreases Slashing, Piercing and Crushing of caster by 4.8
--- Increases Defense and Deflection of caster by 4.3
--- Increases the caster's effectiveness of worn armor vs physical damage by 10%
-function cast(Caster, Target, OffSkillz, Def, Armor)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
- AddSkillBonus(Target, GetSkillIDByName("Deflection"), Def)
- AddSpellBonus(Target, 678, Armor)
+
+function cast(Caster, Target, Off, Def)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ MasteryBonus = LvlBonus * 0.1
+ DefBonus = Def + MasteryBonus
+
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), Off)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), Off)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), Off)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefBonus)
+ AddSkillBonus(Target, GetSkillIDByName("Deflection"), DefBonus)
+
end
function remove(Caster, Target)
RemoveSpellBonus(Target)
- RemoveSkillBonus(Target)
+
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Brawler/TauntingSlap.lua b/server/Spells/Fighter/Brawler/TauntingSlap.lua
index d89d6dab0..58a4c1f66 100755
--- a/server/Spells/Fighter/Brawler/TauntingSlap.lua
+++ b/server/Spells/Fighter/Brawler/TauntingSlap.lua
@@ -1,16 +1,26 @@
--[[
Script Name : Spells/Fighter/Brawler/TauntingSlap.lua
- Script Author : Dello
- Script Date : 2014.07.11 02:07:49
+ Script Author : LordPazuzu
+ Script Date : 9/29/2023
Script Purpose :
:
--]]
function cast(Caster, Target, MinVal, MaxVal)
- -- Increases Threat to target by 355 - 434
- if MaxVal ~= nil and MinVal < MaxVal then
- AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
- else
- AddHate(Caster, Target, MinVal, 1)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ HateBonus = LvlBonus * 4
+ MaxHate = MaxVal + HateBonus
+ MinHate = MinVal + HateBonus
+ AddHate(Caster, Target, math.random(MinHate,MaxHate),1)
+
+
end
diff --git a/server/Spells/Fighter/Brawler/ThrustKick.lua b/server/Spells/Fighter/Brawler/ThrustKick.lua
index 88fe304d4..445afb6c0 100755
--- a/server/Spells/Fighter/Brawler/ThrustKick.lua
+++ b/server/Spells/Fighter/Brawler/ThrustKick.lua
@@ -1,28 +1,29 @@
--[[
Script Name : Spells/Fighter/Brawler/ThrustKick.lua
- Script Author : Dello
- Script Date : 2014.07.10 06:07:34
+ Script Author : LordPazuzu
+ Script Date : 9/2/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
- end
-
- if not IsEpic(Target) then
- AddControlEffect(Target, 4)
- BlurVision(Target, 1.0)
- Knockback(Caster, Target, 1500)
- AddSpellTimer(1500, "RemoveKnockdown")
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+ Say(Caster, "facing target not implemented.")
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DmgHigh
+ MinDmg = math.floor(DmgBonus) * 2 + DmgLow
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
-function RemoveKnockdown(Caster, Target)
- RemoveControlEffect(Target, 4)
- BlurVision(Target, 0.0)
-end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Brawler/ThunderingFistsClassic.lua b/server/Spells/Fighter/Brawler/ThunderingFistsClassic.lua
new file mode 100755
index 000000000..8c61fdb4f
--- /dev/null
+++ b/server/Spells/Fighter/Brawler/ThunderingFistsClassic.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/ThunderingFistsClassic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.07 04:09:28
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+While active, this combat art grants the brawler a small chance to briefly stun their target with each melee hit.
+
+--]]
+
+
+function cast(Caster, Target, Chance)
+ AddProc(Caster, 3, Chance)
+end
+
+function proc(Caster, Target, Type)
+ if Type == 3 then
+ CastSpell(Target, 5510, GetSpellTier())
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
diff --git a/server/Spells/Fighter/Crusader/BlessedWeapon.lua b/server/Spells/Fighter/Crusader/BlessedWeapon.lua
index 499239c0f..b4849d6db 100755
--- a/server/Spells/Fighter/Crusader/BlessedWeapon.lua
+++ b/server/Spells/Fighter/Crusader/BlessedWeapon.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Crusader/BlessedWeapon.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:50
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
@@ -10,15 +10,34 @@
-- Inflicts 21 - 35 divine damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal, Chance)
- AddProc(Target, 3, Chance)
+ AddProc(Caster, 3, Chance)
end
function proc(Caster, Target, Type, DmgType, MinVal, MaxVal, Chance)
+
+ Spell = GetSpell(2550392, GetSpellTier())
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
if Type == 3 then
- ProcDamage(Caster, Target, "Blessed Strike", DmgType, MinVal, MaxVal)
- end
+ SetSpellDataIndex(Spell, 0, DmgType)
+ SetSpellDataIndex(Spell, 1, MinDmg)
+ SetSpellDataIndex(Spell, 2, MaxDmg)
+ CastCustomSpell(Spell, Caster, Target)
+ end
end
function remove(Caster, Target)
- RemoveProc(Target)
+ RemoveProc(Caster)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Crusader/Charge.lua b/server/Spells/Fighter/Crusader/Charge.lua
new file mode 100755
index 000000000..d447f7983
--- /dev/null
+++ b/server/Spells/Fighter/Crusader/Charge.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Charge.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.17 08:03:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if not IsEpic(Target) then
+ CastSpell(Target, 5001, GetSpellTier())
+ end
+
+
+end
diff --git a/server/Spells/Fighter/Crusader/CryofConviction.lua b/server/Spells/Fighter/Crusader/CryofConviction.lua
index 7bb12a6ef..86eb76175 100755
--- a/server/Spells/Fighter/Crusader/CryofConviction.lua
+++ b/server/Spells/Fighter/Crusader/CryofConviction.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Crusader/CryofConviction.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:37
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
@@ -9,5 +9,19 @@
-- Inflicts 34 - 57 divine damage on targets in Area of Effect
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Crusader/DemonstrationofFaith.lua b/server/Spells/Fighter/Crusader/DemonstrationofFaith.lua
new file mode 100755
index 000000000..406d415ce
--- /dev/null
+++ b/server/Spells/Fighter/Crusader/DemonstrationofFaith.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/DemonstrationofFaith.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.17 04:03:05
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Ward)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ WardBonus = LvlBonus + StatBonus
+ TotalWard = math.floor(WardBonus) * 2 + Ward
+
+ AddWard(TotalWard, 1)
+end
+
+function remove(Caster, Target)
+ RemoveWard(Ward)
+end
diff --git a/server/Spells/Fighter/Crusader/FaithfulSwing.lua b/server/Spells/Fighter/Crusader/FaithfulSwing.lua
new file mode 100755
index 000000000..9583180a0
--- /dev/null
+++ b/server/Spells/Fighter/Crusader/FaithfulSwing.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/FaithfulSwing.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.17 08:03:28
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, HealMin, HealMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+ MaxHealth = GetMaxHP(Caster)
+ MinHeal = math.floor(MaxHealth * HealMin)
+ MaxHeal = math.floor(MaxHealth * HealMax)
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellHeal("Heal", MinHeal, MaxHeal, Caster)
+
+end
+
diff --git a/server/Spells/Fighter/Crusader/Inflame.lua b/server/Spells/Fighter/Crusader/Inflame.lua
index 582e4c0d8..22b384d21 100755
--- a/server/Spells/Fighter/Crusader/Inflame.lua
+++ b/server/Spells/Fighter/Crusader/Inflame.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Crusader/Inflame.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:16
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
@@ -9,17 +9,27 @@
-- Increases Threat to target by 651 - 977 instantly and by 130 - 195 every 3 seconds thereafter
function cast(Caster, Target, MinVal, MaxVal, TickMin, TickMax)
- if MaxVal ~= nil and MinVal < MaxVal then
- AddHate(Caster, Target, math.random(MaxVal, MinVal), 1)
- else
- AddHate(Caster, Target, MinVal, 1)
+ Level = GetLevel(Caster)
+ SpellLevel = 18
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ MinHate = LvlBonus * 2 + MinVal
+ MaxHate = LvlBonus * 2 + MaxVal
+
+ AddHate(Caster, Target, math.random(MinHate, MaxHate), 1)
+
end
-function tick(Caster, Target)
- if TickMax ~= nil and TickMin < TickMax then
- AddHate(Caster, Target, math.random(TickMax, TickMin), 1)
- else
- AddHate(Caster, Target, TickMin, 1)
- end
+function tick(Caster, Target, TickMin, TickMax, LvlBonus)
+
+ MinTick = LvlBonus * 2 + TickMin
+ MaxTick = LvlBonus * 2 + TickMax
+
+ AddHate(Caster, Target, math.random(MinTick, MaxTick), 1)
+
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Crusader/PledgeofArmament.lua b/server/Spells/Fighter/Crusader/PledgeofArmament.lua
index 35b8a6eb4..a344ae2fb 100755
--- a/server/Spells/Fighter/Crusader/PledgeofArmament.lua
+++ b/server/Spells/Fighter/Crusader/PledgeofArmament.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Crusader/PledgeofArmament.lua
- Script Author : neatz09
- Script Date : 2020.02.24 08:02:11
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
@@ -10,8 +10,19 @@
-- Decreases Mitigation of caster vs physical damage by 162
function cast(Caster, Target, TgtMit, CastMit)
- AddSpellBonus(Target, 200, TgtMit)
- AddSpellBonus(Caster, 200, CastMit)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ TargetMit = TgtMit + LvlBonus
+ CasterMit = CastMit + LvlBonus
+
+ AddSpellBonus(Target, 200, TargetMit)
+ AddSpellBonus(Caster, 200, CasterMit)
end
diff --git a/server/Spells/Fighter/Crusader/PowerCleave.lua b/server/Spells/Fighter/Crusader/PowerCleave.lua
new file mode 100755
index 000000000..3a79542ce
--- /dev/null
+++ b/server/Spells/Fighter/Crusader/PowerCleave.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/PowerCleave.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.17 07:03:02
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ local wield_type = GetInfoStructUInt(Caster, "wield_type")
+ if wield_type ~= 4 then
+ SendMessage(Caster, "Must have a two-handed weapon equipped", "yellow")
+ return false, 70
+ end
+ return true
+end
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Parry)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), Parry)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Fighter/Crusader/RighteousAnger.lua b/server/Spells/Fighter/Crusader/RighteousAnger.lua
index dfb673549..a653cc38b 100755
--- a/server/Spells/Fighter/Crusader/RighteousAnger.lua
+++ b/server/Spells/Fighter/Crusader/RighteousAnger.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Crusader/RighteousAnger.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:37
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
@@ -10,6 +10,20 @@
-- Inflicts 25 - 41 divine damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
Interrupt(Caster, Target)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Crusader/RighteousBlow.lua b/server/Spells/Fighter/Crusader/RighteousBlow.lua
index 19961d67a..bc4ccd1df 100755
--- a/server/Spells/Fighter/Crusader/RighteousBlow.lua
+++ b/server/Spells/Fighter/Crusader/RighteousBlow.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Crusader/RighteousBlow.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:54
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
@@ -11,11 +11,33 @@
-- Inflicts 9 - 16 divine damage on target
function cast(Caster, Target, Dmg1, Dmg1Min, Dmg1Max, Dmg2, Dmg2Min, Dmg2Max)
- SpellDamage(Target, Dmg2, Dmg2Min, Dmg2Max)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StrBonus = GetStr(Caster) / 10
+ IntBonus = GetInt(Caster) / 10
+ Spell = GetSpell(2550392, GetSpellTier())
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus1 = LvlBonus + IntBonus
+ DmgBonus2 = LvlBonus + StrBonus
+ MaxDmg1 = math.floor(DmgBonus1) * 2 + Dmg1Max
+ MinDmg1 = math.floor(DmgBonus1) * 2 + Dmg1Min
+ MaxDmg2 = math.floor(DmgBonus2) * 2 + Dmg2Max
+ MinDmg2 = math.floor(DmgBonus2) * 2 + Dmg2Min
+
+ SpellDamage(Target, Dmg2, MinDmg2, MaxDmg2)
+
+ if LastSpellAttackHit() then
+ SetSpellDataIndex(Spell, 0, Dmg1)
+ SetSpellDataIndex(Spell, 1, MinDmg1)
+ SetSpellDataIndex(Spell, 2, MaxDmg1)
+ CastCustomSpell(Spell, Caster, Target)
+
+ end
end
-function remove(Caster, Target)
- if LastSpellAttackHit() then
- ProcDamage(Caster, Target, "Blessed Strike", Dmg1, Dmg1Min, Dmg1Max)
- end
-end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Crusader/Shadowknight/HarmTouch.lua b/server/Spells/Fighter/Crusader/Shadowknight/HarmTouch.lua
index bac895a34..9db3bd532 100755
--- a/server/Spells/Fighter/Crusader/Shadowknight/HarmTouch.lua
+++ b/server/Spells/Fighter/Crusader/Shadowknight/HarmTouch.lua
@@ -1,16 +1,25 @@
--[[
Script Name : Spells/Fighter/Crusader/Shadowknight/HarmTouch.lua
- Script Author : Jabantiz
- Script Date : 2014.01.11 08:01:06
+ Script Author : LordPazuzu
+ Script Date : 3/10/2024
Script Purpose :
:
--]]
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- -- Inflicts 846 - 1411 disease damage on target
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 20
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
diff --git a/server/Spells/Fighter/Crusader/Shadowknight/Soulrend.lua b/server/Spells/Fighter/Crusader/Shadowknight/Soulrend.lua
index a43fa0d38..f12ea7e86 100755
--- a/server/Spells/Fighter/Crusader/Shadowknight/Soulrend.lua
+++ b/server/Spells/Fighter/Crusader/Shadowknight/Soulrend.lua
@@ -1,34 +1,34 @@
---[[
- Script Name : Spells/Fighter/Crusader/Shadowknight/Soulrend.lua
- Script Author : Jabantiz
- Script Date : 2014.01.08 03:01:53
- Script Purpose :
- :
---]]
+ --[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Soulrend.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 03:01:53
+ Script Purpose :
+ :
+ --]]
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ function cast(Caster, Target, DmgType, MinVal, MaxVal)
- local damageInflicted = false;
- -- Inflicts 12 - 20 piercing damage on target
- if MaxVal ~= nil and MinVal < MaxVal then
- damageInflicted = SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- damageInflicted = SpellDamage(Target, DmgType, MinVal)
+ local damageInflicted = false;
+ -- Inflicts 12 - 20 piercing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ damageInflicted = SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ damageInflicted = SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown on termination. Lasts for 1.5 seconds.
+ -- Throws target back
+ -- Stuns target
+ -- Blurs vision of target
+ -- Does not affect Epic targets
+ if damageInflicted and not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(1500, "RemoveStunBlur")
+ end
end
- -- Applies Knockdown on termination. Lasts for 1.5 seconds.
- -- Throws target back
- -- Stuns target
- -- Blurs vision of target
- -- Does not affect Epic targets
- if damageInflicted and not IsEpic(Target) then
- AddControlEffect(Target, 4)
- BlurVision(Target, 1.0)
- AddSpellTimer(1500, "RemoveStunBlur")
- end
-end
-
-function RemoveStunBlur(Caster, Target)
- RemoveControlEffect(Target, 4)
- BlurVision(Target, 0)
-end
+ function RemoveStunBlur(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0)
+ end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Crusader/StanceKnightsStance.lua b/server/Spells/Fighter/Crusader/StanceKnightsStance.lua
index 1de7c9655..556ed1017 100755
--- a/server/Spells/Fighter/Crusader/StanceKnightsStance.lua
+++ b/server/Spells/Fighter/Crusader/StanceKnightsStance.lua
@@ -1,26 +1,37 @@
--[[
Script Name : Spells/Fighter/Crusader/StanceKnightsStance.lua
- Script Author : neatz09
- Script Date : 2020.11.05 04:11:47
+ Script Author : LordPazuzu
+ Script Date : 3/17/2023
Script Purpose :
:
--]]
--- Increases WIS of caster by 23.8
--- Decreases Slashing, Piercing and Crushing of caster by 4.8
--- Increases Defense of caster by 4.3
--- Increases the caster's effectiveness of worn armor vs physical damage by 10%
-
-function cast(Caster, Target, Wis, OffSkill, DefSkill, Armor)
- AddSpellBonus(Target, 3, Wis)
- AddSpellBonus(Target, 678, Armor)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkill)
- AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkill)
- AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkill)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkill)
+function cast(Caster, Target, Wis, OffSkill, DefSkill, ArmorBlock)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ Bonus = LvlBonus * 0.2
+ --WisBonus = Wis + Bonus
+ OffBonus = OffSkill + Bonus
+ DefBonus = DefSkill + Bonus
+
+ --AddSpellBonus(Caster, 3, WisBonus)
+ --AddSpellBonus(Caster, 678, ArmorBlock)
+ AddSpellBonus(Caster, 651, ArmorBlock)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), OffBonus)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), OffBonus)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), OffBonus)
+ AddSkillBonus(Caster, GetSkillIDByName("Defense"), DefBonus)
end
function remove(Caster, Target)
- RemoveSpellBonus(Target)
- RemoveSkillBonus(Target)
-end
\ No newline at end of file
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Fighter/Crusader/UnyieldingAdvance.lua b/server/Spells/Fighter/Crusader/UnyieldingAdvance.lua
new file mode 100755
index 000000000..38649ad9c
--- /dev/null
+++ b/server/Spells/Fighter/Crusader/UnyieldingAdvance.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/UnyieldingAdvance.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.17 04:03:19
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ local item = GetEquippedItemBySlot(Caster, 1)
+ if not item or GetItemType(item) ~= 4 then
+ SendMessage(Caster, "Must have shield equipped", "yellow")
+ return false, 70
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Hate)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ TotalHate = LvlBonus *2 + Hate
+ AddHate(Caster, Target, TotalHate, 1)
+
+ if not IsEpic(Target) then
+ CastSpell(Target, 5001, GetSpellTier())
+ end
+
+
+
+end
diff --git a/server/Spells/Fighter/DragonHide.lua b/server/Spells/Fighter/DragonHide.lua
new file mode 100644
index 000000000..a5e7c2afb
--- /dev/null
+++ b/server/Spells/Fighter/DragonHide.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/DragonHide.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.27 03:02:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddImmunitySpell(4, Caster)
+ AddSpellBonus(Caster, 205, 10000)
+ AddSpellBonus(Caster, 201, 10000)
+ AddSpellBonus(Caster, 641, 50)
+
+end
diff --git a/server/Spells/Fighter/GapingWound.lua b/server/Spells/Fighter/GapingWound.lua
new file mode 100755
index 000000000..769ec1361
--- /dev/null
+++ b/server/Spells/Fighter/GapingWound.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Fighter/GapingWound.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.30 02:08:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 5
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
+end
+
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 5
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
+end
+
+
diff --git a/server/Spells/Fighter/Kick.lua b/server/Spells/Fighter/Kick.lua
index a0cd08852..7bafd8caa 100755
--- a/server/Spells/Fighter/Kick.lua
+++ b/server/Spells/Fighter/Kick.lua
@@ -1,18 +1,25 @@
--[[
Script Name : Spells/Fighter/Kick.lua
- Script Author : neatz09
- Script Date : 2019.12.09 06:12:01
+ Script Author : LordPazuzu
+ Script Date : 12/9/2022
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Inflicts 7 - 12 crushing damage on target
-
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) + MaxVal
+ MinDmg = math.floor(DmgBonus) + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
diff --git a/server/Spells/Fighter/Taunt.lua b/server/Spells/Fighter/Taunt.lua
index 3592a0888..42662b52b 100755
--- a/server/Spells/Fighter/Taunt.lua
+++ b/server/Spells/Fighter/Taunt.lua
@@ -1,22 +1,27 @@
--[[
Script Name : Spells/Fighter/Taunt.lua
- Script Author : neatz09
- Script Date : 2020.11.03 02:11:15
+ Script Author : LordPazuzu
+ Script Date : 9/29/2023
Script Purpose :
:
--]]
--- Increases Threat to target by 135 - 166
---[[function cast(Caster, Target, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- AddHate(Caster, Target, math.random(MaxVal, MinVal), 1)
- else
- AddHate(Caster, Target, MinVal, 1)
- end
-end
---]]
+
function cast(Caster, Target, MinVal, MaxVal)
-AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HateBonus = LvlBonus * 2
+ MaxHate = MaxVal + HateBonus
+ MinHate = MinVal + HateBonus
+ AddHate(Caster, Target, math.random(MinHate,MaxHate),1)
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Toughness.lua b/server/Spells/Fighter/Toughness.lua
new file mode 100755
index 000000000..d9f74b953
--- /dev/null
+++ b/server/Spells/Fighter/Toughness.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Toughness.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.09 08:12:36
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Fighter/Warrior/Anger.lua b/server/Spells/Fighter/Warrior/Anger.lua
index c2d2f63e7..6417c0ead 100755
--- a/server/Spells/Fighter/Warrior/Anger.lua
+++ b/server/Spells/Fighter/Warrior/Anger.lua
@@ -1,21 +1,15 @@
--[[
Script Name : Spells/Fighter/Warrior/Anger.lua
- Script Author : Dello
- Script Date : 2014.07.11 03:07:45
+ Script Author : LordPazuzu
+ Script Date : 1/3/2022
Script Purpose :
:
--]]
function cast(Caster, Target, MinTaunt, MaxTaunt)
- -- Increases Threat to target by 51 - 62
- if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
- AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
- else
- AddHate(Caster, Target, MinTaunt)
- end
+
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+
+ Interrupt(Caster, Target)
- -- Interrupts target
- if target ~= nil then
- Interrupt(Caster, Target)
- end
end
diff --git a/server/Spells/Fighter/Warrior/Bash.lua b/server/Spells/Fighter/Warrior/Bash.lua
index d5ad913f6..91665a4ed 100755
--- a/server/Spells/Fighter/Warrior/Bash.lua
+++ b/server/Spells/Fighter/Warrior/Bash.lua
@@ -1,27 +1,40 @@
--[[
Script Name : Spells/Fighter/Warrior/Bash.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:28
+ Script Author : LordPazuzu
+ Script Date : 3/30/2023
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Applies Knockdown on termination. Lasts for 2.5 seconds.
--- Throws target back
--- Blurs vision of target
--- Stuns target
--- Does not affect Epic targets
--- Inflicts 14 - 23 crushing damage on target
-
-
-
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+function precast(Caster, Target)
+ local item = GetEquippedItemBySlot(Caster, 1)
+ if not item or GetItemType(item) ~= 4 then
+ SendMessage(Caster, "Must have shield equipped", "yellow")
+ return false, 70
end
- Say(Caster, "Knockdown not implemented")
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if not IsEpic(Target) then
+ CastSpell(Target, 5001, GetSpellTier())
+ end
+
end
diff --git a/server/Spells/Fighter/Warrior/BattleTactics.lua b/server/Spells/Fighter/Warrior/BattleTactics.lua
index cf26075ba..5d09ff797 100755
--- a/server/Spells/Fighter/Warrior/BattleTactics.lua
+++ b/server/Spells/Fighter/Warrior/BattleTactics.lua
@@ -9,7 +9,7 @@
-- Increases Max Health of group members (AE) by 73.3
function cast(Caster, Target, HP)
- AddSpellBonus(Target, 606, HP)
+ AddSpellBonus(Target, 500, HP)
end
function remove(Caster, Target)
diff --git a/server/Spells/Fighter/Warrior/Concussion.lua b/server/Spells/Fighter/Warrior/Concussion.lua
index 69cd61dd0..2948691f5 100755
--- a/server/Spells/Fighter/Warrior/Concussion.lua
+++ b/server/Spells/Fighter/Warrior/Concussion.lua
@@ -1,14 +1,28 @@
--[[
Script Name : Spells/Fighter/Warrior/Concussion.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:11
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
function cast(Caster, Target, DmgType, MinVal, MaxVal, PwrMin, PwrMax)
--- Inflicts 23 - 39 crushing damage on target
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
-- Decreases power of target by 23 - 38
SpellHeal("Power", PwrMin, PwrMax)
end
diff --git a/server/Spells/Fighter/Warrior/ForcedSwing.lua b/server/Spells/Fighter/Warrior/ForcedSwing.lua
index bf2da8e48..5a131606f 100755
--- a/server/Spells/Fighter/Warrior/ForcedSwing.lua
+++ b/server/Spells/Fighter/Warrior/ForcedSwing.lua
@@ -8,7 +8,21 @@
-- Inflicts 22 - 38 melee damage on target
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
diff --git a/server/Spells/Fighter/Warrior/Guardian/Bash.lua b/server/Spells/Fighter/Warrior/Guardian/Bash.lua
index 6efea9ab2..842321ab8 100755
--- a/server/Spells/Fighter/Warrior/Guardian/Bash.lua
+++ b/server/Spells/Fighter/Warrior/Guardian/Bash.lua
@@ -13,6 +13,6 @@ function cast(Caster, Target, DDType, MinDmg, MaxDmg)
SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
else
SpellDamage(Target, DDType, MinDmg)
- Knockback(Caster, Target, 4000)
+ CastSpell(Target, 5001, GetSpellTier())
end
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Warrior/HoldtheLine.lua b/server/Spells/Fighter/Warrior/HoldtheLine.lua
new file mode 100755
index 000000000..19f7f8cff
--- /dev/null
+++ b/server/Spells/Fighter/Warrior/HoldtheLine.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/HoldtheLine.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.03 02:01:18
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, SelfSnare, Hate)
+ local Slow = 1.0 - SelfSnare
+ SetSpeedMultiplier(Caster, Slow)
+ AddProc(Caster, 15, 50.0)
+end
+
+function proc(Caster, Target, Type, Hate)
+ if Type == 15 then
+ AddHate(Caster, Target, Hate, 1)
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Caster, 1)
+end
+
diff --git a/server/Spells/Fighter/Warrior/HunkerDown.lua b/server/Spells/Fighter/Warrior/HunkerDown.lua
index 6fe214366..9eb95a5d9 100755
--- a/server/Spells/Fighter/Warrior/HunkerDown.lua
+++ b/server/Spells/Fighter/Warrior/HunkerDown.lua
@@ -1,16 +1,56 @@
--[[
Script Name : Spells/Fighter/Warrior/HunkerDown.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:44
+ Script Author : LordPazuzu
+ Script Date : 1/1/2023
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target, HasteMod, SelfSnare, Mit, TargetSnare, SpellLevel)
+ Say(Caster, "Self snare not yet implemented.")
+
+
-- Decreases Haste of caster by 11.3
+ AddSpellBonus(Caster, 617, HasteMod)
+
-- Slows caster by 32.6%
+ -- local Slow = 1.0 - SelfSnare
+ -- SetSpeedMultiplier(Caster, Slow)
+
-- Increases Mitigation of caster vs physical damage by 133
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ MitBonus = LvlBonus + Mit
+ AddSpellBonus(Caster, 200, MitBonus)
+
-- On a melee hit this spell may cast Cripple on target of attack. Lasts for 10.0 seconds. Triggers about 5.0 times per minute.
-- Slows targets in Area of Effect by 29.3%
-- 5% chance to dispel when target receives hostile action
-- 5% chance to dispel when target takes damage
+
+ AddProc(Target, 3, 20.0)
+
+end
+
+function proc(Caster, Target, Type, TargetSnare, SpellLevel)
+ Spell = GetSpell(5431, GetSpellTier())
+
+ if Type == 3 then
+ SetSpellDataIndex(Spell, 0, TargetSnare)
+ CastCustomSpell(Spell, Caster, Target)
+ end
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetSpeedMultiplier(Caster, 1)
+
+end
diff --git a/server/Spells/Fighter/Warrior/Kneebreak.lua b/server/Spells/Fighter/Warrior/Kneebreak.lua
index 8ec1fb86b..82bdc09f2 100755
--- a/server/Spells/Fighter/Warrior/Kneebreak.lua
+++ b/server/Spells/Fighter/Warrior/Kneebreak.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Fighter/Warrior/Kneebreak.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:03
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
@@ -9,9 +9,21 @@
-- Inflicts 26 - 43 crushing damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
\ No newline at end of file
diff --git a/server/Spells/Fighter/Warrior/Mangle.lua b/server/Spells/Fighter/Warrior/Mangle.lua
index 1578475e7..3a5e184fd 100755
--- a/server/Spells/Fighter/Warrior/Mangle.lua
+++ b/server/Spells/Fighter/Warrior/Mangle.lua
@@ -1,14 +1,28 @@
--[[
Script Name : Spells/Fighter/Warrior/Mangle.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:17
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
--- Inflicts 21 - 35 slashing damage on target
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+function cast(Caster, Target, MinVal, MaxVal, SkillAmt, SpellLevel)
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, 0, MinDmg, MaxDmg)
+
-- Decreases Slashing, Crushing and Piercing of target by 1.5
if LastSpellAttackHit() then
AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
diff --git a/server/Spells/Fighter/Warrior/StandFirm.lua b/server/Spells/Fighter/Warrior/StandFirm.lua
new file mode 100755
index 000000000..3fce8e31b
--- /dev/null
+++ b/server/Spells/Fighter/Warrior/StandFirm.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/StandFirm.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.03 06:01:16
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Grants target a 12% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+*Increases Parry of caster by 2.4
+
+--]]
+
+
+function cast(Caster, Target, Chance, Parry)
+ AddSkillBonus(Caster, GetSkillIDByName("Parry"), Parry)
+ AddProc(Target, 4, Chance)
+
+end
+
+function proc(Caster, Target, Type)
+ Say(Caster, "Avoidance buff not implemented.")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Caster)
+
+end
+
diff --git a/server/Spells/Fighter/Warrior/TauntingBlow.lua b/server/Spells/Fighter/Warrior/TauntingBlow.lua
index 3358b2efe..f675fe2a3 100755
--- a/server/Spells/Fighter/Warrior/TauntingBlow.lua
+++ b/server/Spells/Fighter/Warrior/TauntingBlow.lua
@@ -1,21 +1,32 @@
--[[
Script Name : Spells/Fighter/Warrior/TauntingBlow.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:10
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, DmgType, DmgLow, DmgHigh, MinTauntVal, MaxTauntVal)
--- Inflicts 7 - 11 melee damage on target
-SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh, MinTauntVal, MaxTauntVal, SpellLevel)
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DmgHigh
+ MinDmg = math.floor(DmgBonus) * 2 + DmgLow
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
-- Increases Threat to target by 435 - 531
-if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
- hateAmount = math.random(MinTauntVal, MaxTauntVal)
- AddHate(Caster, Target, hateAmount)
- else
- AddHate(Caster, Target, MinTauntVal)
- end
+AddHate(Caster, Target, math.random(MinTauntVal, MaxTauntVal), 1)
+
end
diff --git a/server/Spells/Fighter/Warrior/TellurianForce.lua b/server/Spells/Fighter/Warrior/TellurianForce.lua
new file mode 100755
index 000000000..4cd702e45
--- /dev/null
+++ b/server/Spells/Fighter/Warrior/TellurianForce.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/TellurianForce.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.18 10:11:45
+ Script Purpose :
+ :
+--]]
+
+
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ Knockback(Caster, Target, 4000)
+ end
+end
+
diff --git a/server/Spells/Fighter/Warrior/Wound.lua b/server/Spells/Fighter/Warrior/Wound.lua
new file mode 100755
index 000000000..b3a53a15f
--- /dev/null
+++ b/server/Spells/Fighter/Warrior/Wound.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Wound.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.02 09:01:45
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotDmg, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DotDmg, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalDmg = math.floor(DmgBonus) * 2 + DotDmg
+
+
+ SpellDamage(Target, DmgType, TotalDmg, TotalDmg)
+
+end
+
diff --git a/server/Spells/Fighter/WaveringStrike.lua b/server/Spells/Fighter/WaveringStrike.lua
new file mode 100755
index 000000000..8abaf358e
--- /dev/null
+++ b/server/Spells/Fighter/WaveringStrike.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/WaveringStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.30 02:08:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 5
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
diff --git a/server/Spells/Fighter/Whirl.lua b/server/Spells/Fighter/Whirl.lua
index b0604bd6c..46f2258ca 100755
--- a/server/Spells/Fighter/Whirl.lua
+++ b/server/Spells/Fighter/Whirl.lua
@@ -1,18 +1,26 @@
--[[
Script Name : Spells/Fighter/Whirl.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:29
+ Script Author : LordPazuzu
+ Script Date : 12/9/2022
Script Purpose :
:
--]]
--- Inflicts 14 - 24 melee damage on targets in Area of Effect
-
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
diff --git a/server/Spells/Fighter/WildSwing.lua b/server/Spells/Fighter/WildSwing.lua
index f66d8f397..d7f4749c6 100755
--- a/server/Spells/Fighter/WildSwing.lua
+++ b/server/Spells/Fighter/WildSwing.lua
@@ -1,22 +1,26 @@
--[[
Script Name : Spells/Fighter/WildSwing.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:10
+ Script Author : LordPazuzu
+ Script Date : 12/9/2022
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Inflicts 5 - 8 melee damage on target
-
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
- --Say(Caster, "Facing Target Not Implemented.")
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
-
--- If facing target
diff --git a/server/Spells/Fighter/WildSwingFire.lua b/server/Spells/Fighter/WildSwingFire.lua
new file mode 100755
index 000000000..36bada0d3
--- /dev/null
+++ b/server/Spells/Fighter/WildSwingFire.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/WildSwingFire.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.02 09:03:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, 3, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Fighter/WildSwingNPC.lua b/server/Spells/Fighter/WildSwingNPC.lua
new file mode 100644
index 000000000..19b7297fe
--- /dev/null
+++ b/server/Spells/Fighter/WildSwingNPC.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/WildSwingNPC.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.18 08:02:26
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 40
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = StatBonus * 2 + LvlBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Generic/SingleTargetDD.lua b/server/Spells/Generic/SingleTargetDD.lua
old mode 100644
new mode 100755
diff --git a/server/Spells/Headbutt.lua b/server/Spells/Headbutt.lua
new file mode 100644
index 000000000..078bddded
--- /dev/null
+++ b/server/Spells/Headbutt.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Headbutt.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.12.28 06:12:18
+ Script Purpose :
+ :
+--]]
+
+function cast (NPC, Spawn)
+ local MinVal = 4
+ local MaxVal = 6
+ local MinPow = -10
+ local MaxPow = -12
+ damage(NPC,Spawn, MinVal, MaxVal, MinPow, MaxPow)
+end
+
+function tick (NPC, Spawn)
+ local MinVal = 3
+ local MaxVal = 3
+ local MinPow = -8
+ local MaxPow = -9
+ damage(NPC,Spawn, MinVal, MaxVal, MinPow, MaxPow)
+end
+
+function damage(NPC,Spawn, MinVal, MaxVal, MinPow, MaxPow)
+ DmgBonus = GetInt(caster)/10
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+ DrainMin = MinPow - math.floor(DmgBonus)
+ DrainMax = MaxPow - math.floor(DmgBonus)
+ SpellDamage(Target, 3, MinDmg, MaxDmg)
+ ModifyPower(Target, MakeRandomInt(DrainMin, DrainMax))
+end
+
+function remove (NPC, Spawn)
+
+end
diff --git a/server/Spells/Mage/ArcaneBindings.lua b/server/Spells/Mage/ArcaneBindings.lua
index 55fad2b6d..e2e2c67e2 100755
--- a/server/Spells/Mage/ArcaneBindings.lua
+++ b/server/Spells/Mage/ArcaneBindings.lua
@@ -27,19 +27,20 @@ end
function cast(Caster, Target)
-- Roots target
- SetSpeedMultiplier(Target, 0)
+ AddControlEffect(Target, 5)
+
-- 10% chance to dispel when target takes damage
- AddProc(Target, 2, 10.0)
+ AddProc(Target, 15, 10.0)
end
function proc(Caster, Target, Type)
- if Type == 2 then
+ if Type == 15 then
CancelSpell()
end
end
function remove(Caster, Target)
- SetSpeedMultiplier(Target, 1.0)
+ RemoveControlEffect(Target, 5)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/CureArcane.lua b/server/Spells/Mage/CureArcane.lua
new file mode 100755
index 000000000..1417db86c
--- /dev/null
+++ b/server/Spells/Mage/CureArcane.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/CureArcane.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.06 04:12:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ local level = ((GetLevel(Caster) * 1.08) + 1)
+ CureByType(1, 2, "", level)
+
+end
+
+
diff --git a/server/Spells/Mage/DispelArcane.lua b/server/Spells/Mage/DispelArcane.lua
new file mode 100755
index 000000000..8759d1107
--- /dev/null
+++ b/server/Spells/Mage/DispelArcane.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/DispelArcane.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.06 04:12:14
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Dispels X levels of arcane beneficial effects on target
+
+--]]
+
diff --git a/server/Spells/Mage/Enchanter/Blink.lua b/server/Spells/Mage/Enchanter/Blink.lua
index 27086d8c3..5340f8686 100755
--- a/server/Spells/Mage/Enchanter/Blink.lua
+++ b/server/Spells/Mage/Enchanter/Blink.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Mage/Enchanter/Blink.lua
- Script Author : neatz09
- Script Date : 2020.09.20 01:09:48
+ Script Author : LordPazuzu
+ Script Date : 11/29/2022
Script Purpose :
:
--]]
@@ -10,3 +10,14 @@
-- Applies Blink on termination.
-- Teleports target to a random location within 10 meters.
-- Decreases Threat to targets in Area of Effect by 554 - 677
+
+function cast(Caster, Target, HateLow, HateHigh)
+ Hate = math.random(HateHigh, HateLow)
+ AddHate(Caster, Target, Hate, 1)
+ CastSpell(Caster, 5502, GetSpellTier())
+
+end
+
+
+
+
diff --git a/server/Spells/Mage/Enchanter/CerebralLash.lua b/server/Spells/Mage/Enchanter/CerebralLash.lua
new file mode 100755
index 000000000..f397f0a91
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/CerebralLash.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/CerebralLash.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.04 07:12:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, DoTMin, DoTMax, DDType, DDMin, DDMax)
+ if DoTMax ~= nil and DoTMin < DoTMax then
+ SpellDamage(Target, DoTType, math.random(DoTMin, DoTMax))
+ else
+ SpellDamage(Target, DoTType, DoTMin)
+ end
+
+ AddTimer(23900, "migraine")
+end
+
+function migraine(Caster, Target, DoTType, DoTMin, DoTMax, DDType, DDMin, DDMax)
+ Spell = GetSpell(5505, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, DDType)
+ SetSpellDataIndex(Spell, 1, DDMin)
+ SetSpellDataIndex(Spell, 2, DDMax)
+ CastCustomSpell(Spell, Caster, Target)
+end
+
+function tick(Caster, Target, DoTType, DoTMin, DoTMax)
+ if DoTMax ~= nil and DoTMin < DoTMax then
+ SpellDamage(Target, DoTType, math.random(DoTMin, DoTMax))
+ else
+ SpellDamage(Target, DoTType, DoTMin)
+ end
+end
+
diff --git a/server/Spells/Mage/Enchanter/CerebralSpasm.lua b/server/Spells/Mage/Enchanter/CerebralSpasm.lua
new file mode 100755
index 000000000..4e4c18698
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/CerebralSpasm.lua
@@ -0,0 +1,73 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/CerebralSpasm.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.26 09:11:22
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Applies Migraine on termination.
+ *Inflicts 24 - 32 mental damage on target
+*Inflicts 8 - 10 mental damage on target instantly and every 6 seconds
+
+--]]
+
+
+function cast(Caster, Target, DoTType, DoTMin, DoTMax, DDType, DDMin, DDMax)
+ damage(Caster, Target, DoTType, DoTMin, DoTMax)
+ AddTimer(Caster, 23850, "migraine")
+end
+
+function tick(Caster, Target, DoTType, DoTMin, DoTMax)
+ damage(Caster, Target, DoTType, DoTMin, DoTMax)
+end
+
+function damage(Caster, Target, DoTType, DoTMin, DoTMax, DDType, DDMin, DDMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DoTMax
+ MinDmg = math.floor(DmgBonus) * 2 + DoTMin
+
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
+
+end
+
+function migraine(Caster, Target, DoTType, DoTMin, DoTMax, DDType, DDMin, DDMax)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 15
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ DDMaxDmg = math.floor(DmgBonus) * 2 + DDMax
+ DDMinDmg = math.floor(DmgBonus) * 2 + DDMin
+
+ Spell = GetSpell(5505, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, DDType)
+ SetSpellDataIndex(Spell, 1, DDMinDmg)
+ SetSpellDataIndex(Spell, 2, DDMaxDmg)
+ CastCustomSpell(Spell, Caster, Target)
+end
+
+
+
+function remove(Caster, Target)
+
+end
+
+
diff --git a/server/Spells/Mage/Enchanter/Charm.lua b/server/Spells/Mage/Enchanter/Charm.lua
new file mode 100755
index 000000000..9e850bfcf
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/Charm.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Charm.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.26 07:11:01
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Charms target
+*Increases Power Regen of target by 2.7
+*Increases Health Regen of target by 5.4
+*If outside an arena
+*Certain enemies cannot be charmed
+*Only affects targets level 24 and below
+*Does not affect Epic targets
+
+--]]
+
+function precast(Caster, Target)
+ if GetLevel(Target) > 24 then
+ return false
+ end
+
+ return true
+
+end
+
+function cast(Caster, Target, PRegen, HRegen)
+ Charm(Caster, Target)
+ AddSpellBonus(Target, 601, PRegen)
+ AddSpellBonus(Target, 600, HRegen)
+ class = GetClass(Target)
+
+
+end
+
+
+function remove(Caster, Target)
+ local pet = GetCharmedPet(Caster)
+ if pet ~= nil then
+ RemoveSpellBonus(pet)
+ DismissPet(pet)
+ end
+end
+
diff --git a/server/Spells/Mage/Enchanter/ConsumeEgo.lua b/server/Spells/Mage/Enchanter/ConsumeEgo.lua
index 55ec95d16..5550a0de5 100755
--- a/server/Spells/Mage/Enchanter/ConsumeEgo.lua
+++ b/server/Spells/Mage/Enchanter/ConsumeEgo.lua
@@ -8,9 +8,11 @@
-- Increases power of caster by 6 instantly and every 4 seconds
function cast(Caster, Target, Pwr)
- SpellHeal("Power", Pwr)
+ --SpellDamage(Target, 6, 14, 14)
+ SpellHeal("Power", Pwr, Pwr, Caster)
end
function tick(Caster, Target, Pwr)
- SpellHeal("Power", Pwr)
+ --SpellDamage(Target, 6, 14, 14)
+ SpellHeal("Power", Pwr, Pwr, Caster)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Enchanter/DauntingGaze.lua b/server/Spells/Mage/Enchanter/DauntingGaze.lua
index 25b18c476..e9a9921c2 100755
--- a/server/Spells/Mage/Enchanter/DauntingGaze.lua
+++ b/server/Spells/Mage/Enchanter/DauntingGaze.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Mage/Enchanter/DauntingGaze.lua
- Script Author : neatz09
- Script Date : 2020.11.03 11:11:26
+ Script Author : LordPazuzu
+ Script Date : 11/4/2023
Script Purpose :
:
--]]
@@ -11,13 +11,34 @@
-- If Target is not Epic
-- Resistibility increases against targets higher than level 29.
-function cast(Caster, Target, PwrMax, PwrMin)
- local Pwr = math.random(PwrMin, PwrMax)
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+ return true
+end
+
+function cast(Caster, Target, MaxVal, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalBonus = math.floor(LvlBonus + StatBonus)
+ DrainLow = MinVal - TotalBonus
+ DrainHigh = MaxVal - TotalBonus
+ TotalDrain = math.random(DrainLow, DrainHigh)
+
+
Say(Caster, "Resistability not implemented")
- if not IsEpic(Target) then
- AddControlEffect(Target, 4)
- end
- ModifyPower(Target, Pwr)
+ AddControlEffect(Target, 4)
+ ModifyPower(Target, TotalDrain)
end
function remove(Caster, Target)
diff --git a/server/Spells/Mage/Enchanter/EgoShock.lua b/server/Spells/Mage/Enchanter/EgoShock.lua
new file mode 100755
index 000000000..6fffdd085
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/EgoShock.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/EgoShock.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.27 05:11:18
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Inflicts 42 - 51 mental damage on target
+*Roots target
+*5% chance to dispel when target takes damage
+*5% chance to dispel when target receives hostile action
+*Epic targets gain an immunity to Root and Ability attacks will hit for their maximum damage. effects of 27.0 seconds and duration is reduced to 3.0 seconds.
+*Resistibility increases against targets higher than level 29.
+
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ -- Roots target
+ AddControlEffect(Target, 5)
+
+ -- 5% chance to dispel when target takes damage
+ AddProc(Target, 2, 5.0)
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 5)
+end
+
diff --git a/server/Spells/Mage/Enchanter/Fascinate.lua b/server/Spells/Mage/Enchanter/Fascinate.lua
new file mode 100755
index 000000000..f52759e63
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/Fascinate.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Fascinate.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.26 09:11:36
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Stuns target
+*Prevents AOE (except when direct)
+*Dispelled when target takes damage
+*Does not affect Epic targets
+*Resistibility increases against targets higher than level 29.
+
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ Say(Caster, "Resistability not implemented")
+
+ AddControlEffect(Target, 1)
+ AddProc(Target, 2, 100.0)
+
+end
+
+function proc(Caster, Target, Type)
+ if type == 2 then
+ CancelSpell()
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
+
+
diff --git a/server/Spells/Mage/Enchanter/Gloom.lua b/server/Spells/Mage/Enchanter/Gloom.lua
index e8638dde0..a77109317 100755
--- a/server/Spells/Mage/Enchanter/Gloom.lua
+++ b/server/Spells/Mage/Enchanter/Gloom.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Mage/Enchanter/Gloom.lua
- Script Author : neatz09
- Script Date : 2020.11.03 11:11:44
+ Script Author : LordPazuzu
+ Script Date : 11/5/2023
Script Purpose :
:
--]]
@@ -10,12 +10,32 @@
-- Decreases Mitigation of target vs arcane damage by 141
function cast(Caster, Target, DmgType, MinVal, MaxVal, Mit)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ damage(Caster,Target, DmgType, MinVal, MaxVal)
AddSpellBonus(Target, 203, Mit)
end
+
function tick(Caster, Target, DmgType, MinVal, MaxVal, Mit)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ damage(Caster, Target, DmgType, MinVal, MaxVal)
+end
+
+
+function damage(Caster,Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function remove(Caster, Target)
diff --git a/server/Spells/Mage/Enchanter/MindBlast.lua b/server/Spells/Mage/Enchanter/MindBlast.lua
index e50e641a6..6f590a8be 100755
--- a/server/Spells/Mage/Enchanter/MindBlast.lua
+++ b/server/Spells/Mage/Enchanter/MindBlast.lua
@@ -8,5 +8,19 @@
-- Inflicts 31 - 41 mental damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Enchanter/MindJolt.lua b/server/Spells/Mage/Enchanter/MindJolt.lua
new file mode 100644
index 000000000..b37e3dc9e
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/MindJolt.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/MindJolt.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.01.23 12:01:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
diff --git a/server/Spells/Mage/Enchanter/OverwhelmingSilence.lua b/server/Spells/Mage/Enchanter/OverwhelmingSilence.lua
new file mode 100755
index 000000000..993ec713e
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/OverwhelmingSilence.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/OverwhelmingSilence.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.29 09:11:30
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, PowerMax, PowerMin)
+ local Power = math.random(PowerMin, PowerMax)
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2)
+ end
+ ModifyPower(Target, Power)
+end
+
+function tick(Caster, Target, PowerMax, PowerMin)
+ local Power = math.random(PowerMin, PowerMax)
+ ModifyPower(Target, Power)
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+
+end
+
+
diff --git a/server/Spells/Mage/Enchanter/SignetofIntuition.lua b/server/Spells/Mage/Enchanter/SignetofIntuition.lua
new file mode 100755
index 000000000..98a3064ae
--- /dev/null
+++ b/server/Spells/Mage/Enchanter/SignetofIntuition.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/SignetofIntuition.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.27 06:11:54
+ Script Purpose :
+ :
+--]]
+
+
+
+
+function cast(Caster, Target, BonusAmt, MitType, MitAmt)
+ AddSpellBonus(Target, 2, BonusAmt)
+ AddSpellBonus(Target, 4, BonusAmt)
+ AddSpellBonus(Target, 208, MitAmt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+
+
+
diff --git a/server/Spells/Mage/GiftoftheMagi.lua b/server/Spells/Mage/GiftoftheMagi.lua
index 554e1cae1..35292b648 100755
--- a/server/Spells/Mage/GiftoftheMagi.lua
+++ b/server/Spells/Mage/GiftoftheMagi.lua
@@ -10,7 +10,7 @@
-- Increases Mitigation of group members (AE) vs arcane damage by 123
function cast(Caster, Target, Pwr, Mit)
- AddSpellBonus(Target, 619, Pwr)
+ AddSpellBonus(Target, 501, Pwr)
AddSpellBonus(Target, 203, Mit)
end
diff --git a/server/Spells/Mage/LightningBurst.lua b/server/Spells/Mage/LightningBurst.lua
index e4f07dea7..02eea3dba 100755
--- a/server/Spells/Mage/LightningBurst.lua
+++ b/server/Spells/Mage/LightningBurst.lua
@@ -1,18 +1,27 @@
--[[
Script Name : Spells/Mage/LightningBurst.lua
- Script Author : Ememjr
- Script Date : 2017.11.11 03:11:14
+ Script Author : LordPazuzu
+ Script Date : 12/6/2022
Script Purpose :
- :
+
--]]
--- Info from spell_display_effects (remove from script when done)
--- Inflicts 15 - 20 magic damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
diff --git a/server/Spells/Mage/MagisShieldingClassic.lua b/server/Spells/Mage/MagisShieldingClassic.lua
new file mode 100755
index 000000000..6b48b4add
--- /dev/null
+++ b/server/Spells/Mage/MagisShieldingClassic.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Mage/MagisShieldingClassic.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.16 05:12:39
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, BaseMitBonus)
+ level = GetLevel(Caster)
+ local hp = level * 2.5
+ local pw = level * 2.75
+ local HpMod = math.floor(hp)
+ local PwMod = math.floor(pw)
+ local MitBonus = level * 5
+ local MitMod = BaseMitBonus + MitBonus
+
+
+ AddSpellBonus(Target, 500, HpMod)
+ AddSpellBonus(Target, 501, PwMod)
+ AddSpellBonus(Target, 200, MitMod)
+
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+
+
+end
+
diff --git a/server/Spells/Mage/ObsidianWebbing.lua b/server/Spells/Mage/ObsidianWebbing.lua
new file mode 100755
index 000000000..ac6421ca2
--- /dev/null
+++ b/server/Spells/Mage/ObsidianWebbing.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Mage/ObsidianWebbing.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.20 12:11:18
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ local IntBonus = GetInt(Caster) / 10
+ local MinDmg = math.floor(MinVal + IntBonus)
+ local MaxDmg = math.floor(MaxVal + IntBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddControlEffect(Target, 5)
+ AddProc(Target, 2, 10.0)
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 5)
+
+end
+
+
diff --git a/server/Spells/Mage/Sorcerer/Accord.lua b/server/Spells/Mage/Sorcerer/Accord.lua
new file mode 100755
index 000000000..1b633a7cc
--- /dev/null
+++ b/server/Spells/Mage/Sorcerer/Accord.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Accord.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.27 10:11:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PowerProc, SpellLevel)
+ AddProc(Target, 15, 10)
+end
+
+function proc(Caster, Target, Type, PowerProc, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ PowMod = LvlBonus * 2 + StatBonus
+ PowBonus = PowerProc + math.floor(PowMod)
+
+Spell = GetSpell(5499, 1)
+ if Type == 15 then
+ SetSpellDataIndex(Spell, 0, PowBonus)
+
+ CastCustomSpell(Spell, Caster, Target)
+ end
+end
+
+
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/Blaze.lua b/server/Spells/Mage/Sorcerer/Blaze.lua
new file mode 100755
index 000000000..9651e74e6
--- /dev/null
+++ b/server/Spells/Mage/Sorcerer/Blaze.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Blaze.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.23 07:11:37
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, DotMin, DotMax, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal, DotMin, DotMax, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + DotMax
+ MinDmg = math.floor(DmgBonus) * 2 + DotMax
+
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
+end
+
diff --git a/server/Spells/Mage/Sorcerer/BurningRadiance.lua b/server/Spells/Mage/Sorcerer/BurningRadiance.lua
new file mode 100755
index 000000000..1308e6e02
--- /dev/null
+++ b/server/Spells/Mage/Sorcerer/BurningRadiance.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/BurningRadiance.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.23 09:11:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ AddProc(Target, 3, 19)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal, SpellLevel)
+
+ Spell = GetSpell(5436, GetSpellTier())
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ if Type == 3 then
+ SetSpellDataIndex(Spell, 0, DmgType)
+ SetSpellDataIndex(Spell, 1, MinDmg)
+ SetSpellDataIndex(Spell, 2, MaxDmg)
+ CastCustomSpell(Spell, Caster, Target)
+ end
+end
+
+
+
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/Conflagration.lua b/server/Spells/Mage/Sorcerer/Conflagration.lua
index 405334973..a14a8e3b4 100755
--- a/server/Spells/Mage/Sorcerer/Conflagration.lua
+++ b/server/Spells/Mage/Sorcerer/Conflagration.lua
@@ -8,6 +8,20 @@
-- Inflicts 65 - 121 heat damage on targets in Area of Effect
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/Freeze.lua b/server/Spells/Mage/Sorcerer/Freeze.lua
index 5ec3b6ada..ee36ab650 100755
--- a/server/Spells/Mage/Sorcerer/Freeze.lua
+++ b/server/Spells/Mage/Sorcerer/Freeze.lua
@@ -11,12 +11,26 @@
-- If Target is not Epic
-- Resistibility increases against targets higher than level 29.
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
Say(Caster, "Resistability not implemented.")
if not IsEpic() then
AddControlEffect(Target, 4)
- end
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ end
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function remove(Caster, Target)
diff --git a/server/Spells/Mage/Sorcerer/FreezingWhorl.lua b/server/Spells/Mage/Sorcerer/FreezingWhorl.lua
index 36e59b448..1eeab636a 100755
--- a/server/Spells/Mage/Sorcerer/FreezingWhorl.lua
+++ b/server/Spells/Mage/Sorcerer/FreezingWhorl.lua
@@ -9,13 +9,40 @@
-- Inflicts 5 - 10 cold damage on target instantly and every 4 seconds
-- Decreases Mitigation of target vs elemental damage by 133
-function cast(Caster, Target, DmgType, MinVal, MaxVal, Mit)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- AddSpellBonus(Target, 201, Mit)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Mit, SpellLevel)
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ --AddSpellBonus(Target, 201, Mit)
end
-function tick(Caster, Target, DmgType, MinVal, MaxVal, Mit)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+function tick(Caster, Target, DmgType, MinVal, MaxVal, Mit, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function remove(Caster, Target)
diff --git a/server/Spells/Mage/Sorcerer/FrozenManacles.lua b/server/Spells/Mage/Sorcerer/FrozenManacles.lua
new file mode 100755
index 000000000..f2f0c073a
--- /dev/null
+++ b/server/Spells/Mage/Sorcerer/FrozenManacles.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/FrozenManacles.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.28 10:11:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Snare)
+ Say(Caster, "Damage component not implemented. Values not yet available.")
+
+ -- Roots target
+ AddControlEffect(Target, 5)
+
+ -- 10% chance to dispel when target takes damage
+ AddProc(Target, 2, 10.0)
+end
+
+function proc(Caster, Target, Type, Snare)
+ if Type == 2 then
+ RemoveControlEffect(Target, 5)
+ Spell = GetSpell(5501, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, Snare)
+ CastCustomSpell(Spell, Target, Caster)
+ end
+ end
+
+function remove(Caster, Target, Snare)
+ RemoveControlEffect(Target, 5)
+ Spell = GetSpell(5501, GetSpellTier(1))
+ SetSpellDataIndex(Spell, 0, Snare)
+ CastCustomSpell(Spell, Target, Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/IceSpike.lua b/server/Spells/Mage/Sorcerer/IceSpike.lua
index 44d3f0fa8..5ab5071ed 100755
--- a/server/Spells/Mage/Sorcerer/IceSpike.lua
+++ b/server/Spells/Mage/Sorcerer/IceSpike.lua
@@ -8,6 +8,22 @@
-- Inflicts 45 - 84 cold damage on target
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, NotUsed)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/Incinerate.lua b/server/Spells/Mage/Sorcerer/Incinerate.lua
index 687321409..1715cb25c 100755
--- a/server/Spells/Mage/Sorcerer/Incinerate.lua
+++ b/server/Spells/Mage/Sorcerer/Incinerate.lua
@@ -9,9 +9,36 @@
-- Inflicts 10 - 18 heat damage on target instantly and every 3 seconds
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function tick(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/PainfulMeditation.lua b/server/Spells/Mage/Sorcerer/PainfulMeditation.lua
index 2177c8817..9f37a570d 100755
--- a/server/Spells/Mage/Sorcerer/PainfulMeditation.lua
+++ b/server/Spells/Mage/Sorcerer/PainfulMeditation.lua
@@ -8,6 +8,18 @@
-- Increases power of caster by 29
-function cast(Caster, Target, Amount)
- SpellHeal("Power", Amount)
+function cast(Caster, Target, Amount, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ PowBonus = LvlBonus + StatBonus
+ PowHealg = Amount + math.floor(PowBonus)
+
+ SpellHeal("Power", PowHeal)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Sorcerer/SummonShadows.lua b/server/Spells/Mage/Sorcerer/SummonShadows.lua
index 42d34de5d..28797dc71 100755
--- a/server/Spells/Mage/Sorcerer/SummonShadows.lua
+++ b/server/Spells/Mage/Sorcerer/SummonShadows.lua
@@ -17,6 +17,8 @@ end
function cast(Caster, Target)
Stealth(2)
+ Say(Caster, "Movement reduction not yet implemented.")
+
end
function remove(Caster, Target)
diff --git a/server/Spells/Mage/Sorcerer/TongueTwist.lua b/server/Spells/Mage/Sorcerer/TongueTwist.lua
index f84f813ec..555600cd9 100755
--- a/server/Spells/Mage/Sorcerer/TongueTwist.lua
+++ b/server/Spells/Mage/Sorcerer/TongueTwist.lua
@@ -1,24 +1,35 @@
--[[
Script Name : Spells/Mage/Sorcerer/TongueTwist.lua
- Script Author : neatz09
- Script Date : 2020.11.05 02:11:13
+ Script Author : LordPazuzu
+ Script Date : 12/17/2022
Script Purpose :
:
--]]
--- Interrupts target
--- Inflicts 4 - 6 magic damage on target
--- Stifles target
--- If Target is not Epic
--- Resistibility increases against targets higher than level 29.
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- Say(Caster, "Resistibility not implemented.")
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
Interrupt(Caster, Target)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- if not IsEpic() then
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if not IsEpic() then
AddControlEffect(Target, 2)
- end
+ end
end
function remove(Caster, Target)
diff --git a/server/Spells/Mage/Sorcerer/Wizard/SurgeofRo.lua b/server/Spells/Mage/Sorcerer/Wizard/SurgeofRo.lua
index 0b46b63f1..eec1d875b 100755
--- a/server/Spells/Mage/Sorcerer/Wizard/SurgeofRo.lua
+++ b/server/Spells/Mage/Sorcerer/Wizard/SurgeofRo.lua
@@ -9,3 +9,20 @@
-- Info from spell_display_effects (remove from script when done)
-- On a hostile spell cast this spell will cast Flame Surge on target of spell. Lasts for 3.0 seconds.
-- Inflicts 38 - 46 heat damage on target instantly and every second
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 5, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+Spell = GetSpell(5496, GetSpellTier())
+ if Type == 5 then
+ SetSpellDataIndex(Spell, 0, DmgType)
+ SetSpellDataIndex(Spell, 1, MinVal)
+ SetSpellDataIndex(Spell, 2, MaxVal)
+ CastCustomSpell(Spell, Caster, Target)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Mage/StaticPulse.lua b/server/Spells/Mage/StaticPulse.lua
index 9b03ca1b8..eee4e60b3 100755
--- a/server/Spells/Mage/StaticPulse.lua
+++ b/server/Spells/Mage/StaticPulse.lua
@@ -1,27 +1,48 @@
--[[
Script Name : Spells/Mage/StaticPulse.lua
- Script Author : neatz09
- Script Date : 2019.12.14 01:12:19
+ Script Author : LordPazuzu
+ Script Date : 12/6/2022
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Inflicts 2 - 3 magic damage on target instantly and every 4 seconds
-function cast(Caster, Target, DoTType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DoTType, MinVal)
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
- SpawnSet(Target,"visual_state",11737)
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
end
-function tick(Caster, Target, DoTType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DoTType, MinVal)
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+ SpawnSet(Target,"visual_state",626)
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DoTType, MinDmg, MaxDmg)
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal)
+ SetInfoStructString(Target, "visual_state", "0")
+ SpawnSet(Target,"visual_state",0)
end
diff --git a/server/Spells/Mage/StormofLightning.lua b/server/Spells/Mage/StormofLightning.lua
index 7e5466dae..7f6c479cf 100755
--- a/server/Spells/Mage/StormofLightning.lua
+++ b/server/Spells/Mage/StormofLightning.lua
@@ -1,18 +1,27 @@
--[[
Script Name : Spells/Mage/StormofLightning.lua
- Script Author : neatz09
- Script Date : 2019.12.14 01:12:05
+ Script Author : LordPazuzu
+ Script Date : 12/6/2022
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Inflicts 22 - 27 magic damage on target encounter
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
diff --git a/server/Spells/Mage/Summoner/BludgeoningEarth.lua b/server/Spells/Mage/Summoner/BludgeoningEarth.lua
new file mode 100755
index 000000000..4be33252a
--- /dev/null
+++ b/server/Spells/Mage/Summoner/BludgeoningEarth.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Mage/Summoner/BludgeoningEarth.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 04:03:20
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, DotMin, DotMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DotType, DotMin, DotMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDot = math.floor(DmgBonus) * 2 + DotMax
+ MinDot = math.floor(DmgBonus) * 2 + DotMin
+
+ SpellDamage(Target, DotType, MinDot, MaxDot)
+
+end
+
diff --git a/server/Spells/Mage/Summoner/DustBlast.lua b/server/Spells/Mage/Summoner/DustBlast.lua
index 2eeded32b..9f032974f 100755
--- a/server/Spells/Mage/Summoner/DustBlast.lua
+++ b/server/Spells/Mage/Summoner/DustBlast.lua
@@ -1,13 +1,27 @@
--[[
Script Name : Spells/Mage/Summoner/DustBlast.lua
- Script Author : neatz09
- Script Date : 2020.01.02 05:01:20
- Script Purpose :
+ Script Author : LordPazuzu
+ Script Date : 2-18-2023
+ Script Purpose : -
:
--]]
-- Inflicts 33 - 49 magic damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Summoner/EarthlyBrand.lua b/server/Spells/Mage/Summoner/EarthlyBrand.lua
new file mode 100755
index 000000000..cf0914bc8
--- /dev/null
+++ b/server/Spells/Mage/Summoner/EarthlyBrand.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Mage/Summoner/EarthlyBrand.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.21 04:11:12
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Increases Defense of group members' pets (AE) by 2.0
+*Increases Mitigation of group members (AE) vs all damage by 38
+
+--]]
+
+function cast(Caster, Target, DefMod, MitMod)
+ Pet=GetPet(Caster)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ DefBonus = DefMod + LvlBonus
+ MitBonus = MitMod + LvlBonus
+
+ AddSkillBonus(Pet, 609880714, DefBonus)
+ AddSpellBonus(Target, 200, MitBonus)
+ AddSpellBonus(Target, 201, MitBonus)
+ AddSpellBonus(Target, 202, MitBonus)
+ AddSpellBonus(Target, 203, MitBonus)
+
+end
+
+function remove(Caster, Target)
+ Pet=GetPet(Caster)
+ RemoveSkillBonus(Pet)
+ RemoveSpellBonus(Target)
+
+end
+
+
+
diff --git a/server/Spells/Mage/Summoner/EssenceShift.lua b/server/Spells/Mage/Summoner/EssenceShift.lua
index b860aad94..67bac3bf3 100755
--- a/server/Spells/Mage/Summoner/EssenceShift.lua
+++ b/server/Spells/Mage/Summoner/EssenceShift.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Mage/Summoner/EssenceShift.lua
- Script Author : neatz09
- Script Date : 2020.11.05 02:11:14
+ Script Author : LordPazuzu
+ Script Date : 2-19-2023
Script Purpose :
:
--]]
@@ -10,6 +10,22 @@
-- Increases power of caster by 29
function cast(Caster, Target, DmgType, MinVal, Pwr)
- SpellDamage(Target, DmgType, MinVal)
- SpellHeal("Power", Pwr, Pwr, Caster)
+ Pet=GetPet(Caster)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ PwBonus = LvlBonus + StatBonus
+ MaxPw = Pwr + math.floor(PwBonus)
+
+ if GetHP(Pet) > MinVal then
+ ModifyHP(Pet, MinVal)
+ SpellHeal("Power", MaxPw, MaxPw, Caster)
+ else
+ end
end
\ No newline at end of file
diff --git a/server/Spells/Mage/Summoner/Immobilize.lua b/server/Spells/Mage/Summoner/Immobilize.lua
new file mode 100755
index 000000000..aef6e6948
--- /dev/null
+++ b/server/Spells/Mage/Summoner/Immobilize.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Immobilize.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.27 03:03:03
+ Script Purpose :
+ :
+--]]
+
+
+
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ -- Roots target
+ SetSpeedMultiplier(Target, 0)
+
+ -- 10% chance to dispel when target takes damage
+ AddProc(Target, 15, 10.0)
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 15 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1.0)
+ CastSpell(Target, 2550393, GetSpellTier())
+end
+
+
diff --git a/server/Spells/Mage/Summoner/MinionsStanceAgitation.lua b/server/Spells/Mage/Summoner/MinionsStanceAgitation.lua
new file mode 100755
index 000000000..9e0e9253e
--- /dev/null
+++ b/server/Spells/Mage/Summoner/MinionsStanceAgitation.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Mage/Summoner/MinionsStanceAgitation.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.20 03:11:12
+ Script Purpose :
+ :
+--]]
+
+
+
+function cast(Caster, Target, IntMod, HstMod, DefMod, OffMod, Pet)
+ Pet = GetPet(Caster)
+ AddSpellBonus(Pet, 4, IntMod) --Intelligence
+ AddSpellBonus(Pet, 617, HstMod) -- Attack Speed
+ AddSkillBonus(Pet, 609880714, DefMod) -- Defense
+ AddSkillBonus(Pet, 540022425, DefMod) -- Parry
+ AddSkillBonus(Pet, 418532101, OffMod) -- Slashing
+ AddSkillBonus(Pet, 3421494576, OffMod) -- Crushing
+ AddSkillBonus(Pet, 3048574950, OffMod) -- Piercing
+
+end
+
+
+function remove(Caster, Target, Pet)
+ Pet = GetPet(Caster)
+ RemoveSpellBonus(Pet)
+ RemoveSkillBonus(Pet)
+
+end
+
+
+
diff --git a/server/Spells/Mage/Summoner/PeltingEarth.lua b/server/Spells/Mage/Summoner/PeltingEarth.lua
index 33802f702..5a0fe203a 100755
--- a/server/Spells/Mage/Summoner/PeltingEarth.lua
+++ b/server/Spells/Mage/Summoner/PeltingEarth.lua
@@ -1,17 +1,47 @@
--[[
Script Name : Spells/Mage/Summoner/PeltingEarth.lua
- Script Author : neatz09
- Script Date : 2020.11.04 01:11:46
- Script Purpose :
- :
+ Script Author : LordPazuzu
+ Script Date : 2-16-2023
+ Script Purpose : -
+- :
--]]
-- Inflicts 22 - 34 magic damage on target
-- Inflicts 5 - 8 magic damage on target every 4 seconds
function cast(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin, TickMax)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function tick(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin, TickMax)
- SpellDamage(Target, TickType, TickMin, TickMax)
-end
\ No newline at end of file
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TickMaxDmg = TickMax + math.floor(DmgBonus)
+ TickMinDmg = TickMin + math.floor(DmgBonus)
+
+
+ SpellDamage(Target, TickType, TickMinDmg, TickMaxDmg)
+end
diff --git a/server/Spells/Mage/Summoner/Seism.lua b/server/Spells/Mage/Summoner/Seism.lua
new file mode 100755
index 000000000..269f05e64
--- /dev/null
+++ b/server/Spells/Mage/Summoner/Seism.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Seism.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.24 04:03:07
+ Script Purpose :
+ :
+--]]
+
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Arcane)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ --AddSpellBonus(Target, 203, Arcane)
+ Say(Caster, "Resist debuff not implemented.")
+
+ if not IsEpic(Target) then
+ CastSpell(Target, 5001, GetSpellTier())
+ end
+
+end
+
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
+
+
+
diff --git a/server/Spells/Mage/Summoner/SootheServant.lua b/server/Spells/Mage/Summoner/SootheServant.lua
index d3dcaf843..877e4fcef 100755
--- a/server/Spells/Mage/Summoner/SootheServant.lua
+++ b/server/Spells/Mage/Summoner/SootheServant.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Mage/Summoner/SootheServant.lua
- Script Author : neatz09
- Script Date : 2019.10.16 10:10:05
+ Script Author : LordPazuzu
+ Script Date : 2-18-2023
Script Purpose :
:
--]]
@@ -10,5 +10,19 @@
-- Heals target for 85
function cast(Caster, Target, Min)
-SpellHeal(Heal, Min)
+ Pet = GetPet(Caster)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus * 2 + StatBonus
+ HealMin = Min + math.floor(HealBonus)
+
+SpellHeal("Heal", HealMin, HealMin, Pet)
end
diff --git a/server/Spells/NPC/Blackbark.lua b/server/Spells/NPC/Blackbark.lua
new file mode 100755
index 000000000..baab4c949
--- /dev/null
+++ b/server/Spells/NPC/Blackbark.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/NPC/Blackbark.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.04 04:02:31
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 629, 200)
+ AddSpellBonus(Caster, 617, 50)
+ AddSpellBonus(Caster, 702, 50)
+
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+
+end
+
+
+
diff --git a/server/Spells/NPC/LordRison.lua b/server/Spells/NPC/LordRison.lua
new file mode 100755
index 000000000..802f44895
--- /dev/null
+++ b/server/Spells/NPC/LordRison.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/NPC/LordRison.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.02.04 04:02:28
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Caster, 629, 100)
+ AddSpellBonus(Caster, 617, 50)
+ AddSpellBonus(Caster, 702, 50)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+
+end
+
+
diff --git a/server/Spells/Pet/ScarabsSnappingMandibles.lua b/server/Spells/Pet/ScarabsSnappingMandibles.lua
new file mode 100755
index 000000000..f36021375
--- /dev/null
+++ b/server/Spells/Pet/ScarabsSnappingMandibles.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Pet/ScarabsSnappingMandibles.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.18 09:11:59
+ Script Purpose :
+ :
+ --]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ DmgBonus = GetInt(Caster)/10
+ MinDmg = math.floor(MinVal + DmgBonus)
+ MaxDmg = math.floor(MaxVal + DmgBonus)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Pet/TellurianForce.lua b/server/Spells/Pet/TellurianForce.lua
new file mode 100755
index 000000000..927f0596e
--- /dev/null
+++ b/server/Spells/Pet/TellurianForce.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Pet/TellurianForce.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.19 02:11:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ local IntBonus = GetInt(Caster) / 10
+ local MinDmg = math.floor(MinVal + IntBonus)
+ local MaxDmg = math.floor(MaxVal + IntBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ AddControlEffect(Target, 4)
+
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
+
+
+
diff --git a/server/Spells/Pet/TelluricBash.lua b/server/Spells/Pet/TelluricBash.lua
new file mode 100755
index 000000000..18dc0a729
--- /dev/null
+++ b/server/Spells/Pet/TelluricBash.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Pet/TelluricBash.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.19 06:11:15
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ local StrBonus = math.floor(GetStr(Caster) / 10)
+ local MinDmg = math.floor(MinVal + StrBonus)
+ local MaxDmg = math.floor(MaxVal + StrBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if not IsEpic(Target) then
+ CastSpell(Target, 5001, GetSpellTier())
+ end
+
+end
diff --git a/server/Spells/Pet/TelluricStrike.lua b/server/Spells/Pet/TelluricStrike.lua
new file mode 100755
index 000000000..8d7cfa58c
--- /dev/null
+++ b/server/Spells/Pet/TelluricStrike.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Pet/TelluricStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.18 02:11:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, DmgType, DmgLow, DmgHigh, MinHate, MaxHate)
+ local IntBonus = GetInt(Caster) / 10
+ local MinDmg = math.floor(DmgLow + IntBonus)
+ local MaxDmg = math.floor(DmgHigh + IntBonus)
+ local MinHate = math.floor(MinVal + IntBonus)
+ local MaxHate = math.floor(MaxVal + IntBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ AddHate(Caster, Target, MakeRandomInt(MinHate, MaxHate), 1)
+
+end
+
diff --git a/server/Spells/PoisonBreath.lua b/server/Spells/PoisonBreath.lua
new file mode 100644
index 000000000..27a51c3b6
--- /dev/null
+++ b/server/Spells/PoisonBreath.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/PoisonBreath.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.12 05:03:07
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ SpellDamage(Target, 2, 300, 425)
+end
+
+function tick(Caster, Target)
+ SpellDamage(Target, 2, 90, 150)
+end
+
+function remove(Caster, Target)
+
+end
+
diff --git a/server/Spells/Predator/Hunt.lua b/server/Spells/Predator/Hunt.lua
new file mode 100755
index 000000000..a38bf432d
--- /dev/null
+++ b/server/Spells/Predator/Hunt.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Predator/Hunt.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.31 04:03:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+SetSeeInvis(Target,1)
+end
+
+
+function remove(Caster, Target)
+SetSeeInvis(Target, 0)
+end
diff --git a/server/Spells/Priest/Cleric/AdmonishingSmite.lua b/server/Spells/Priest/Cleric/AdmonishingSmite.lua
index e53ca5b06..2f7dad7d8 100755
--- a/server/Spells/Priest/Cleric/AdmonishingSmite.lua
+++ b/server/Spells/Priest/Cleric/AdmonishingSmite.lua
@@ -1,19 +1,43 @@
--[[
Script Name : Spells/Priest/Cleric/AdmonishingSmite.lua
- Script Author : neatz09
- Script Date : 2019.08.05 07:08:53
+ Script Author : LordPazuzu
+ Script Date : 12/1/2022
Script Purpose :
:
--]]
--- Inflicts 25 - 31 divine damage on target
+
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- Say(Caster, "Resistability and hostile dispell should be hardcoded.. not implemented.")
+ Level = GetLevel(Caster)
+ SpellLevel = 18
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
if not IsEpic() then
AddControlEffect(Target, 3)
- end
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ end
+
+ AddProc(Target, 15, 100)
+
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal)
+ if Type == 15 then
+ RemoveControlEffect(Target, 3)
+ CancelSpell()
+ end
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Cleric/ArchHealing.lua b/server/Spells/Priest/Cleric/ArchHealing.lua
index eacf83a0d..ec396a09a 100755
--- a/server/Spells/Priest/Cleric/ArchHealing.lua
+++ b/server/Spells/Priest/Cleric/ArchHealing.lua
@@ -8,6 +8,19 @@
-- Heals target for 182 - 223
-function cast(Caster, Target, MinVal, MaxVal)
-SpellHeal("Heal", MinVal, MaxVal)
+function cast(Caster, Target, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
diff --git a/server/Spells/Priest/Cleric/BestowalofVitae.lua b/server/Spells/Priest/Cleric/BestowalofVitae.lua
index b3025600f..92050d08c 100755
--- a/server/Spells/Priest/Cleric/BestowalofVitae.lua
+++ b/server/Spells/Priest/Cleric/BestowalofVitae.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Cleric/BestowalofVitae.lua
- Script Author : neatz09
- Script Date : 2020.10.27 12:10:59
+ Script Author : LordPazuzu
+ Script Date : 12/1/2022
Script Purpose :
:
--]]
@@ -10,15 +10,34 @@
-- Heals target for 34 - 42
-- Grants a total of 5 triggers of the spell.
-function cast(Caster, Target, HealMin, HealMax, Triggers)
+function cast(Caster, Target, MinVal, MaxVal, Triggers, SpellLevel)
AddProc(Target, 15, 100)
SetSpellTriggerCount(Triggers, 1)
end
-function proc(Caster, Target, Type, HealMin, HealMax, Triggers)
+function proc(Caster, Target, Type, MinVal, MaxVal, Triggers, SpellLevel)
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+
+
if Type == 15 then
- SpellHeal("Heal", HealMin, HealMax, Target, 0, 0, "Vitae")
+ Spell = GetSpell(5455, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, MinHeal)
+ SetSpellDataIndex(Spell, 1, MaxHeal)
+ CastCustomSpell(Spell, Caster, Target)
RemoveTriggerFromSpell()
end
end
diff --git a/server/Spells/Priest/Cleric/BestowalofVitality.lua b/server/Spells/Priest/Cleric/BestowalofVitality.lua
index 825332356..965af7c6c 100755
--- a/server/Spells/Priest/Cleric/BestowalofVitality.lua
+++ b/server/Spells/Priest/Cleric/BestowalofVitality.lua
@@ -1,20 +1,37 @@
--[[
Script Name : Spells/Priest/Cleric/BestowalofVitality.lua
- Script Author : neatz09
- Script Date : 2020.10.27 12:10:43
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, HealMin, HealMax, Triggers)
+function cast(Caster, Target, MinVal, MaxVal, Triggers)
AddProc(Target, 15, 100)
SetSpellTriggerCount(Triggers, 1)
end
-function proc(Caster, Target, Type, HealMin, HealMax, Triggers)
+function proc(Caster, Target, Type, MinVal, MaxVal, Triggers)
+ Level = GetLevel(Caster)
+ SpellLevel= 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
if Type == 15 then
- SpellHeal("Heal", HealMin, HealMax, Target, 0, 0, "Vitae")
+ Spell = GetSpell(5455, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, MinHeal)
+ SetSpellDataIndex(Spell, 1, MaxHeal)
+ CastCustomSpell(Spell, Caster, Target)
RemoveTriggerFromSpell()
end
end
diff --git a/server/Spells/Priest/Cleric/CombatHealing.lua b/server/Spells/Priest/Cleric/CombatHealing.lua
index 98c9a40c8..1aa896a4c 100755
--- a/server/Spells/Priest/Cleric/CombatHealing.lua
+++ b/server/Spells/Priest/Cleric/CombatHealing.lua
@@ -1,13 +1,30 @@
--[[
Script Name : Spells/Priest/Cleric/CombatHealing.lua
- Script Author : neatz09
- Script Date : 2020.01.02 04:01:08
+ Script Author : LordPazuzu
+ Script Date : 12/18/2022
Script Purpose :
:
--]]
-- Heals target for 91 - 111
+
function cast(Caster, Target, MinVal, MaxVal)
-SpellHeal("Heal", MinVal, MaxVal)
-end
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
+ Say(Caster, "Offensive buff not implemented.")
+
+end
\ No newline at end of file
diff --git a/server/Spells/Priest/Cleric/Daring.lua b/server/Spells/Priest/Cleric/Daring.lua
index 7bdd192a2..565edd100 100755
--- a/server/Spells/Priest/Cleric/Daring.lua
+++ b/server/Spells/Priest/Cleric/Daring.lua
@@ -11,8 +11,22 @@
-- Increases Mitigation of group members (AE) vs physical damage by 131
function cast(Caster, Target, Sta, Mit)
- AddSpellBonus(Target, 1, Sta)
- AddSpellBonus(Target, 200, Mit)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ StaBonus= LvlBonus * 0.5 + Sta
+ MitBonus = LvlBonus + StatBonus
+ TotalMit = Mit + math.floor(MitBonus)
+
+ AddSpellBonus(Target, 1, StaBonus)
+ AddSpellBonus(Target, 200, TotalMit)
end
diff --git a/server/Spells/Priest/Cleric/Distract.lua b/server/Spells/Priest/Cleric/Distract.lua
new file mode 100755
index 000000000..c2d1d1e4e
--- /dev/null
+++ b/server/Spells/Priest/Cleric/Distract.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Distract.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.01 09:12:33
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Hate, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus *2 + StatBonus
+ MinHeal = MinVal + math.floor(HealBonus)
+ MaxHeal = MaxVal + math.floor(HealBonus)
+
+ --SpellHeal("Heal", MinHeal, MaxHeal)
+ ModifyHP(Caster, math.random(MinVal, MaxVal))
+ AddHate(Caster, Target, Hate, 1)
+
+end
+
+
+
+
diff --git a/server/Spells/Priest/Cleric/GreaterSmite.lua b/server/Spells/Priest/Cleric/GreaterSmite.lua
new file mode 100755
index 000000000..ab5102ee2
--- /dev/null
+++ b/server/Spells/Priest/Cleric/GreaterSmite.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Cleric/GreaterSmite.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.30 01:11:56
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 25 - 31 divine damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Say(Caster, "Resistability and hostile dispell should be hardcoded.. not implemented.")
+ if not IsEpic() then
+ AddControlEffect(Target, 3)
+ end
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
\ No newline at end of file
diff --git a/server/Spells/Priest/Cleric/LadonCombatHealing.lua b/server/Spells/Priest/Cleric/LadonCombatHealing.lua
new file mode 100644
index 000000000..43f919581
--- /dev/null
+++ b/server/Spells/Priest/Cleric/LadonCombatHealing.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Cleric/LadonCombatHealing.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.02.26 08:02:12
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ local zone = GetZone(Caster)
+ local Ladon = GetSpawnByLocationID(zone, 300448)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus + MinVal) * 4
+ MaxHeal = math.floor(HealBonus + MaxVal) * 5
+
+ SpellHeal("Heal", MinHeal, MaxHeal, Ladon)
+
+
+
+end
diff --git a/server/Spells/Priest/Cleric/MarkofPawns.lua b/server/Spells/Priest/Cleric/MarkofPawns.lua
index 94115c9c0..47ff8282f 100755
--- a/server/Spells/Priest/Cleric/MarkofPawns.lua
+++ b/server/Spells/Priest/Cleric/MarkofPawns.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Cleric/MarkofPawns.lua
- Script Author : neatz09
- Script Date : 2020.11.10 10:11:52
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
@@ -15,14 +15,31 @@ function cast(Caster, Target, Mit, Healz, Chance)
AddProc(Target, 16, Chance)
end
-function proc(Caster, Target, Type, Mit, Healz, Chance)
+
+
+function proc(Caster, Target, Type, Mit, Heal, Chance)
+ Level = GetLevel(Caster)
+ SpellLevel = 18
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ TotalHeal = math.floor(HealBonus) * 2 + Heal
+
Spell = GetSpell(5449, GetSpellTier())
if Type == 16 then
- SetSpellDataIndex(Spell, 0, Healz)
+ SetSpellDataIndex(Spell, 0, TotalHeal)
CastCustomSpell(Spell, Caster, Target)
end
end
+
+
function remove(Caster, Target)
RemoveSpellBonus(Target)
RemoveProc(Target)
diff --git a/server/Spells/Priest/Cleric/PrayerofAmelioration.lua b/server/Spells/Priest/Cleric/PrayerofAmelioration.lua
index 21ddf2ff2..d969609f1 100755
--- a/server/Spells/Priest/Cleric/PrayerofAmelioration.lua
+++ b/server/Spells/Priest/Cleric/PrayerofAmelioration.lua
@@ -1,13 +1,27 @@
--[[
Script Name : Spells/Priest/Cleric/PrayerofAmelioration.lua
- Script Author : neatz09
- Script Date : 2020.01.02 04:01:40
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
-- Heals group members (AE) for 97 - 119
-function cast(Caster, Target, MinVal, MaxVal)
-SpellHeal("Heal", MinVal, MaxVal)
-end
+
+function cast(Caster, Target, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
\ No newline at end of file
diff --git a/server/Spells/Priest/Cleric/Radiance.lua b/server/Spells/Priest/Cleric/Radiance.lua
index 7d3a8ea67..5efeef798 100755
--- a/server/Spells/Priest/Cleric/Radiance.lua
+++ b/server/Spells/Priest/Cleric/Radiance.lua
@@ -1,25 +1,32 @@
--[[
Script Name : Spells/Priest/Cleric/Radiance.lua
- Script Author : neatz09
- Script Date : 2020.10.27 12:10:22
+ Script Author : LordPazuzu
+ Script Date : 12/2/2022
Script Purpose :
:
--]]
-- When any damage is received this spell will cast Vitae on target.
--- Heals target for 47 - 58
+-- Heals target based on level.
-- Grants a total of 5 triggers of the spell.
-function cast(Caster, Target, HealMin, HealMax, Triggers)
+function cast(Caster, Target)
+
AddProc(Target, 15, 100)
- SetSpellTriggerCount(Triggers, 1)
- Say(Caster, "This spell will need a formula")
+ SetSpellTriggerCount(5, 1)
end
-function proc(Caster, Target, Type, HealMin, HealMax, Triggers)
+function proc(Caster, Target, Type, HeaMin, HealMax, Triggers)
+ local level= GetLevel(Caster)
+ local HealMin = level * 3.825
+ local HealMax = HealMin * 1.23
+
if Type == 15 then
- SpellHeal("Heal", HealMin, HealMax, Target, 0, 0, "Vitae")
+ Spell = GetSpell(5455, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, HealMin)
+ SetSpellDataIndex(Spell, 1, HealMax)
+ CastCustomSpell(Spell, Caster, Target)
RemoveTriggerFromSpell()
end
end
diff --git a/server/Spells/Priest/Cleric/RadiantStrike.lua b/server/Spells/Priest/Cleric/RadiantStrike.lua
index f7d1e6e46..f35fd5cbf 100755
--- a/server/Spells/Priest/Cleric/RadiantStrike.lua
+++ b/server/Spells/Priest/Cleric/RadiantStrike.lua
@@ -11,7 +11,25 @@
-- Inflicts 37 - 45 divine damage on target
-- If target is undead
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
- Say(Caster, "Missing undead feature")
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if GetRaceBaseType(Target) == 333 then
+ SpellDamage(Target, Dmgtype, MinDmg, MaxDmg)
+ end
+
end
diff --git a/server/Spells/Priest/Cleric/Rebuke.lua b/server/Spells/Priest/Cleric/Rebuke.lua
index 269df7714..bc9f676da 100755
--- a/server/Spells/Priest/Cleric/Rebuke.lua
+++ b/server/Spells/Priest/Cleric/Rebuke.lua
@@ -7,8 +7,18 @@
--]]
-- Decreases Mitigation of target vs physical damage by 108
-function cast(Caster, Target, Mit)
- AddSpellBonus(Target, 200, Mit)
+function cast(Caster, Target, Mit, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ MitDebuff = LvlBonus + Mit
+
+ AddSpellBonus(Target, 200, math.floor (MitDebuff))
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Cleric/Redoubt.lua b/server/Spells/Priest/Cleric/Redoubt.lua
index fa7b5f743..716ae6d4a 100755
--- a/server/Spells/Priest/Cleric/Redoubt.lua
+++ b/server/Spells/Priest/Cleric/Redoubt.lua
@@ -11,7 +11,20 @@
-- Increases Piercing of target by 4.3
function cast(Caster, Target, HP, OffSkill, Pierce)
- AddSpellBonus(Target, 600, HP)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalBonus = LvlBonus *2 + StatBonus
+ HpBonus = HP + math.floor(TotalBonus)
+
+ AddSpellBonus(Target, 500, HpBonus)
AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkill)
AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkill)
AddSkillBonus(Target, GetSkillIDByName("Piercing"), Pierce)
diff --git a/server/Spells/Priest/Cleric/SoothingSermon.lua b/server/Spells/Priest/Cleric/SoothingSermon.lua
index 1298f2a92..d2431c74b 100755
--- a/server/Spells/Priest/Cleric/SoothingSermon.lua
+++ b/server/Spells/Priest/Cleric/SoothingSermon.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Cleric/SoothingSermon.lua
- Script Author : neatz09
- Script Date : 2020.11.10 10:11:56
+ Script Author : LordPazuzu
+ Script Date : 12/1/2022
Script Purpose :
:
--]]
@@ -9,19 +9,34 @@
-- When any damage is received this spell will cast Vitae on target, which can be triggered up to 9 times across all targets.
-- Heals target for 40 - 49
-function cast(Caster, Target, HealMin, HealMax, Triggers)
- AddProc(Target, 15, 100, nil, 1)
- SetSpellTriggerCount(Triggers, 1)
+function cast(Caster, Target, MinVal, MaxVal, Triggers)
+ AddProc(Target, 15, 100)
+ SetSpellTriggerCount(Triggers, 1)
end
-function Proc(Caster, Target, Type, HealMin, HealMax, Triggers)
- Spell = GetSpell(5455, GetSpellTier())
- if Type == 15 then
- SetSpellDataIndex(Spell, 0, HealMin)
- SetSpellDataIndex(Spell, 1, HealMax)
- CastCustomSpell(Spell, Caster, Target)
- RemoveTriggerFromSpell()
- end
+function proc(Caster, Target, Type, MinVal, MaxVal, Triggers)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+
+ if Type == 15 then
+ Spell = GetSpell(5455, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, MinHeal)
+ SetSpellDataIndex(Spell, 1, MaxHeal)
+ CastCustomSpell(Spell, Caster, Target)
+ RemoveTriggerFromSpell()
+ end
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Cleric/SymbolofTransal.lua b/server/Spells/Priest/Cleric/SymbolofTransal.lua
index 3995bad0d..297f995f1 100755
--- a/server/Spells/Priest/Cleric/SymbolofTransal.lua
+++ b/server/Spells/Priest/Cleric/SymbolofTransal.lua
@@ -10,9 +10,22 @@
-- Increases Max Health of group members (AE) by 30.4
-- Increases Mitigation of group members (AE) vs arcane damage by 156
-function cast(Caster, Target, HP, Mit)
- AddSpellBonus(Target, 606, HP)
- AddSpellBonus(Target, 203, Mit)
+function cast(Caster, Target, HP, Mit, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalBonus = LvlBonus * 2 + StatBonus
+ HpBuff = HP + math.floor(TotalBonus)
+ MitBuff = Mit + math.floor(TotalBonus)
+
+ AddSpellBonus(Target, 500, HpBuff)
+ AddSpellBonus(Target, 203, MitBuff)
end
diff --git a/server/Spells/Priest/Courage.lua b/server/Spells/Priest/Courage.lua
index a0c40b2c7..f062769e8 100755
--- a/server/Spells/Priest/Courage.lua
+++ b/server/Spells/Priest/Courage.lua
@@ -9,8 +9,24 @@
-- Increases STA of group members (AE) by 6.3
-- Increases Mitigation of group members (AE) vs physical damage by 61
function cast(Caster, Target, Sta, Mit)
- AddSpellBonus(Target, 1, Sta)
- AddSpellBonus(Target, 200, Mit)
+ Level = GetLevel(Caster)
+ SpellLevel = 5
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ StaBonus= LvlBonus * 0.1 + Sta
+ MitBonus = LvlBonus + StatBonus
+ TotalMit = Mit + math.floor(MitBonus)
+
+ AddSpellBonus(Target, 1, StaBonus)
+ AddSpellBonus(Target, 200, TotalMit)
+
+
end
diff --git a/server/Spells/Priest/CureNoxious.lua b/server/Spells/Priest/CureNoxious.lua
index b346b576e..16eb01443 100755
--- a/server/Spells/Priest/CureNoxious.lua
+++ b/server/Spells/Priest/CureNoxious.lua
@@ -6,8 +6,8 @@
:
--]]
--- Dispels 10 levels of noxious hostile effects on target
+
function cast(Caster, Target, Amt)
- CureByType(1, 3, "Cure", Amt)
+ CureByType(1, 3, "", (GetLevel(Caster) * 1.08) + 1)
end
\ No newline at end of file
diff --git a/server/Spells/Priest/Druid/Bloom.lua b/server/Spells/Priest/Druid/Bloom.lua
index 6e278c043..b230368bb 100755
--- a/server/Spells/Priest/Druid/Bloom.lua
+++ b/server/Spells/Priest/Druid/Bloom.lua
@@ -10,9 +10,37 @@
-- Heals target for 9 - 11 every second
function cast(Caster, Target, MinVal, MaxVal, TickMin, TickMax)
- SpellHeal("Heal", MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
function tick(Caster, Target, MinVal, MaxVal, TickMin, TickMax)
- SpellHeal("Heal", TickMin, TickMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinTick = math.floor(HealBonus) * 2 + TickMin
+ MaxTick = math.floor(HealBonus) * 2 + Tickmax
+
+ SpellHeal("Heal", MinTick, MaxTick)
end
\ No newline at end of file
diff --git a/server/Spells/Priest/Druid/Chill.lua b/server/Spells/Priest/Druid/Chill.lua
index 195dbec39..ad9099270 100755
--- a/server/Spells/Priest/Druid/Chill.lua
+++ b/server/Spells/Priest/Druid/Chill.lua
@@ -1,18 +1,46 @@
--[[
Script Name : Spells/Priest/Druid/Chill.lua
- Script Author : neatz09
- Script Date : 2020.01.02 05:01:28
+ Script Author : LordPazuzu
+ Script Date : 11/30/2022
Script Purpose :
:
--]]
function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, Dmgtype, MinVal, MaxVal)
- Say(Caster, "Elemental not implemented")
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ if GetRaceBaseType(Target) == 250 then
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ end
+
+
end
--- Info from spell_display_effects (remove from script when done)
--- Inflicts 55 - 68 cold damage on target
--- Inflicts 55 - 68 cold damage on target
--- If target is elemental
diff --git a/server/Spells/Priest/Druid/Effloresce.lua b/server/Spells/Priest/Druid/Effloresce.lua
index f004f886c..82df34ea1 100755
--- a/server/Spells/Priest/Druid/Effloresce.lua
+++ b/server/Spells/Priest/Druid/Effloresce.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Druid/Effloresce.lua
- Script Author : neatz09
- Script Date : 2020.01.02 07:01:39
+ Script Author : LordPazuzu
+ Script Date : 3/28/2023
Script Purpose :
:
--]]
@@ -10,9 +10,39 @@
-- Heals target for 13 - 16 every second
function cast(Caster, Target, MinVal, MaxVal, HoTMin, HoTMax)
-SpellHeal("Heal", MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel= 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
function tick(Caster, Target, MinVal, MaxVal, HoTMin, HoTMax)
-SpellHeal("Heal", HoTMin, HoTMax)
+ Level = GetLevel(Caster)
+ SpellLevel= 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHoT = math.floor(HealBonus) * 2 + HoTMin
+ MaxHoT = math.floor(HealBonus) * 2 + HoTMax
+
+ SpellHeal("Heal", MinHoT, MaxHoT)
end
+
+
diff --git a/server/Spells/Priest/Druid/MossyBalm.lua b/server/Spells/Priest/Druid/MossyBalm.lua
new file mode 100755
index 000000000..7304da647
--- /dev/null
+++ b/server/Spells/Priest/Druid/MossyBalm.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/MossyBalm.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.18 09:03:34
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, MinVal, MaxVal)
+ StatBonus = GetWis(Caster) / 10
+ MinHeal = MinVal + math.floor(StatBonus)
+ MaxHeal = MaxVal + math.floor(StatBonus)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+
+ CureByType(1, 1, "", (GetLevel(Caster) * 1.08) + 1)
+
+end
+
diff --git a/server/Spells/Priest/Druid/Nettleshield.lua b/server/Spells/Priest/Druid/Nettleshield.lua
index 12ece0b23..849956952 100755
--- a/server/Spells/Priest/Druid/Nettleshield.lua
+++ b/server/Spells/Priest/Druid/Nettleshield.lua
@@ -10,13 +10,31 @@
-- Inflicts 3 piercing damage on target
function cast(Caster, Target, DmgType, MinVal)
- AddProc(Target, 16, 100)
+ AddProc(Target, 4, 100)
end
function proc(Caster, Target, Type, DmgType, MinVal)
- if Type == 16 then
- ProcDamage(Caster, Target, "Nettleshield Thorns", DmgType, MinVal)
- end
+
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+
+ if Type == 4 then
+ Spell = GetSpell(5503,1)
+ SetSpellDataIndex(Spell, 0, DmgType)
+ SetSpellDataIndex(Spell, 1, MinDmg)
+ CastCustomSpell(Spell, Caster, Target)
+ end
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Druid/Regrowth.lua b/server/Spells/Priest/Druid/Regrowth.lua
index 5dd2d492f..4f15fd922 100755
--- a/server/Spells/Priest/Druid/Regrowth.lua
+++ b/server/Spells/Priest/Druid/Regrowth.lua
@@ -9,9 +9,37 @@
-- Heals target for 34 - 42 instantly and every 2 seconds
function cast(Caster, Target, MinVal, MaxVal)
- SpellHeal("Heal", MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
function tick(Caster, Target, MinVal, MaxVal)
- SpellHeal("Heal", MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + MinVal
+ MaxHeal = math.floor(HealBonus) * 2 + MaxVal
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
\ No newline at end of file
diff --git a/server/Spells/Priest/Druid/Snare.lua b/server/Spells/Priest/Druid/Snare.lua
index 6ad4d0c93..38da7d006 100755
--- a/server/Spells/Priest/Druid/Snare.lua
+++ b/server/Spells/Priest/Druid/Snare.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Druid/Snare.lua
- Script Author : neatz09
- Script Date : 2020.09.21 12:09:26
+ Script Author : LordPazuzu
+ Script Date : 3/14/2023
Script Purpose :
:
--]]
@@ -19,12 +19,12 @@ function precast(Caster, Target)
end
-function cast(Caster, Target, SlowAmt)
-local Slow = 100 - SlowAmt
- SetSpeedMultiplier(Target, Slow)
+function cast(Caster, Target, Snare)
+ Slow = 1.0 - Snare
+ SetSpellSnareValue(Target, Slow)
+ AddControlEffect(Target, 11)
end
-
function remove(Caster, Target)
-SetSpeedMultiplier(Target, 1)
-end
+ RemoveControlEffect(Target, 11)
+end
\ No newline at end of file
diff --git a/server/Spells/Priest/Druid/StingingSwarm.lua b/server/Spells/Priest/Druid/StingingSwarm.lua
index 0b5389621..fb3529168 100755
--- a/server/Spells/Priest/Druid/StingingSwarm.lua
+++ b/server/Spells/Priest/Druid/StingingSwarm.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Druid/StingingSwarm.lua
- Script Author : neatz09
- Script Date : 2020.01.02 06:01:52
+ Script Author : LordPazuzu
+ Script Date : 3/18/2023
Script Purpose :
:
--]]
@@ -11,12 +11,42 @@
-- Decreases Defense of target by 2.7
function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+ DebuffBonus = LvlBonus * 0.1
+ TotalDebuff = SkillAmt - DebuffBonus
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), TotalDebuff)
end
function tick(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Druid/Subterfuge.lua b/server/Spells/Priest/Druid/Subterfuge.lua
new file mode 100755
index 000000000..07ac37242
--- /dev/null
+++ b/server/Spells/Priest/Druid/Subterfuge.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Priest/Druid/Subterfuge.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.30 05:11:22
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Decreases Threat to targets in Area of Effect by 1,206
+*Roots targets in Area of Effect
+*Epic targets gain an immunity to Root and Ability attacks will hit for their maximum damage. effects of 27.0 seconds and duration is reduced to 3.0 seconds.
+
+--]]
+
+function cast(Caster, Target, Hate)
+ AddHate(Caster, Target, Hate, 1)
+ SetSpeedMultiplier(Target, 0)
+
+ if IsEpic then
+ AddTimer(Target, 3000, "endroot")
+
+ end
+
+end
+
+function endroot(Caster, Target)
+ --Casts RootImmunity on target.
+ Spell = GetSpell(5504, GetSpellTier())
+ CastCustomSpell(Spell, Caster, Target)
+
+ --Cancels Subterfuge
+ CancelSpell()
+end
+
+
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1.0)
+end
+
diff --git a/server/Spells/Priest/Druid/SylvanTouch.lua b/server/Spells/Priest/Druid/SylvanTouch.lua
index c59d8ef53..e9ccfcf8e 100755
--- a/server/Spells/Priest/Druid/SylvanTouch.lua
+++ b/server/Spells/Priest/Druid/SylvanTouch.lua
@@ -1,22 +1,24 @@
--[[
Script Name : Spells/Priest/Druid/SylvanTouch.lua
- Script Author : theFoof
- Script Date : 2013.12.16
+ Script Author : LordPazuzu
+ Script Date : 3/18/2023
Script Purpose :
:
--]]
-function cast(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
--- Heals target for 119 - 146
--- Heals target for 52 - 64 every 2 seconds
+function cast(Caster, Target)
+ Level = GetLevel(Caster)
+ StatBonus = GetWis(Caster) / 5
+ BaseHeal = Level * 9.5
+ TotalHeal = math.floor(BaseHeal + StatBonus)
+ SpellHeal("Heal", TotalHeal, TotalHeal)
- SpellHeal("Heal", HealLow, HealHigh)
end
-function tick(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
- SpellHeal("Heal", HoTLow, HoTHigh)
+function tick(Caster, Target)
+ Level = GetLevel(Caster)
+ StatBonus = GetWis(Caster) / 10
+ BaseTick = Level * 2.5
+ TotalTick = math.floor(BaseTick + StatBonus)
+ SpellHeal("Heal", TotalTick, TotalTick)
end
-
-function remove(Caster, Target)
-end
-
diff --git a/server/Spells/Priest/Druid/SylvanWind.lua b/server/Spells/Priest/Druid/SylvanWind.lua
index 9229a2a40..5c7c1a091 100755
--- a/server/Spells/Priest/Druid/SylvanWind.lua
+++ b/server/Spells/Priest/Druid/SylvanWind.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Priest/Druid/SylvanWind.lua
- Script Author : neatz09
- Script Date : 2020.11.05 03:11:57
+ Script Author : LordPazuzu
+ Script Date : 3/18/2023
Script Purpose :
:
--]]
@@ -10,9 +10,37 @@
-- Heals group members (AE) for 10 - 12 every second
function cast(Caster, Target, HealMin, HealMax, TickMin, TickMax)
- SpellHeal("Heal", HealMin, HealMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + HealMin
+ MaxHeal = math.floor(HealBonus) * 2 + HealMax
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
function tick(Caster, Target, HealMin, HealMax, TickMin, TickMax)
- SpellHeal("Heal", TickMin, TickMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinTick = math.floor(HealBonus) * 2 + TickMin
+ MaxTick = math.floor(HealBonus) * 2 + TickMax
+
+ SpellHeal("Heal", MinTick, MaxTick)
end
\ No newline at end of file
diff --git a/server/Spells/Priest/Druid/Verdure.lua b/server/Spells/Priest/Druid/Verdure.lua
index 32615415f..87fc65cc3 100755
--- a/server/Spells/Priest/Druid/Verdure.lua
+++ b/server/Spells/Priest/Druid/Verdure.lua
@@ -1,19 +1,34 @@
--[[
Script Name : Spells/Priest/Druid/Verdure.lua
- Script Author : neatz09
- Script Date : 2020.01.02 05:01:10
+ Script Author : LordPazuzu
+ Script Date : 3/20/2023
Script Purpose :
:
--]]
--- Increases Max Health of group members (AE) by 30.4
--- Increases Mitigation of group members (AE) vs elemental damage by 156
+
function cast(Caster, Target, HP, Mit)
- AddSpellBonus(Target, 606, HP)
- AddSpellBonus(Target, 201, Mit)
+ Level = GetLevel(Caster)
+ SpellLevel= 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalBonus = LvlBonus + StatBonus
+ TotalHP = TotalBonus + HP
+ TotalMit = TotalBonus + Mit
+
+
+ AddSpellBonus(Target, 500, TotalHP)
+ AddSpellBonus(Target, 200, TotalMit)
end
function remove(Caster, Target)
RemoveSpellBonus(Target)
-end
\ No newline at end of file
+end
+
diff --git a/server/Spells/Priest/Druid/Vigor.lua b/server/Spells/Priest/Druid/Vigor.lua
index 82e18f749..ef11c3186 100755
--- a/server/Spells/Priest/Druid/Vigor.lua
+++ b/server/Spells/Priest/Druid/Vigor.lua
@@ -1,17 +1,26 @@
--[[
Script Name : Spells/Priest/Druid/Vigor.lua
- Script Author : neatz09
- Script Date : 2020.01.02 05:01:25
+ Script Author : LordPazuzu
+ Script Date : 3/20/2023
Script Purpose :
:
--]]
--- Increases WIS of target by 17.8
--- Increases Max Power of target by 68.8
+function cast(Caster, Target, Power)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ PowerBonus = LvlBonus + StatBonus
+ TotalPower = Power + math.floor(PowerBonus)
-function cast(Caster, Target, Wis, Pwr)
- AddSpellBonus(Target, 3, Wis)
- AddSpellBonus(Target, 619, Pwr)
+ AddSpellBonus(Target, 501, TotalPower)
end
diff --git a/server/Spells/Priest/Druid/WildSpirit.lua b/server/Spells/Priest/Druid/WildSpirit.lua
index 1da5eb6be..edf91b06f 100755
--- a/server/Spells/Priest/Druid/WildSpirit.lua
+++ b/server/Spells/Priest/Druid/WildSpirit.lua
@@ -1,16 +1,30 @@
--[[
Script Name : Spells/Priest/Druid/WildSpirit.lua
- Script Author : neatz09
- Script Date : 2020.01.02 06:01:05
+ Script Author : LordPazuzu
+ Script Date : 3/20/2023
Script Purpose :
:
--]]
--- Increases AGI and WIS of group members (AE) by 13.1
+function cast(Caster, Target, Agi, Arcane)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
-function cast(Caster, Target, BonusAmt)
- AddSpellBonus(Target, 2, BonusAmt)
- AddSpellBonus(Target, 3, BonusAmt)
+ AgiBonus = LvlBonus * 0.1
+ ArcaneBonus = LvlBonus + StatBonus
+ TotalAgi = Agi + AgiBonus
+ TotalArcane = Arcane + ArcaneBonus
+
+
+ AddSpellBonus(Target, 2, TotalAgi)
+ AddSpellBonus(Target, 203, TotalArcane)
end
diff --git a/server/Spells/Priest/Druid/Willowskin.lua b/server/Spells/Priest/Druid/Willowskin.lua
index c067ec085..9daecc5bf 100755
--- a/server/Spells/Priest/Druid/Willowskin.lua
+++ b/server/Spells/Priest/Druid/Willowskin.lua
@@ -6,17 +6,31 @@
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Increases Combat Health Regen of group members (AE) by 11.9
--- Increases Mitigation of group members (AE) vs physical damage by 131
+function cast(Caster, Target, Stat, Mit)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ StaBonus= LvlBonus * 0.1 + Stat
+ MitBonus = LvlBonus + StatBonus
+ TotalMit = Mit + math.floor(MitBonus)
+
+ AddSpellBonus(Target, 1, StaBonus)
+ AddSpellBonus(Target, 2, StaBonus)
+ AddSpellBonus(Target, 3, StaBonus)
+ AddSpellBonus(Target, 200, TotalMit)
+
-function cast(Caster, Target, HP, Mit)
- AddSpellBonus(Target, 604, HP)
- AddSpellBonus(Target, 200, Mit)
end
function remove(Caster, Target)
RemoveSpellBonus(Target)
-end
+end
diff --git a/server/Spells/Priest/Druid/WindsofRenewal.lua b/server/Spells/Priest/Druid/WindsofRenewal.lua
index 4b2181185..91c6acf4a 100755
--- a/server/Spells/Priest/Druid/WindsofRenewal.lua
+++ b/server/Spells/Priest/Druid/WindsofRenewal.lua
@@ -8,10 +8,38 @@
-- Heals group members (AE) for 40 - 49 instantly and every 2 seconds
-function cast(Caster, Target, MinVal, MaxVal)
- SpellHeal("Heal", MinVal, MaxVal)
+function cast(Caster, Target, HealMin, HealMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + HealMin
+ MaxHeal = math.floor(HealBonus) * 2 + HealMax
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
-function tick(Caster, Target, MinVal, MaxVal)
- SpellHeal("Heal", MinVal, MaxVal)
+function tick(Caster, Target, HealMin, HealMax)
+ Level = GetLevel(Caster)
+ SpellLevel = 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = math.floor(HealBonus) * 2 + HealMin
+ MaxHeal = math.floor(HealBonus) * 2 + HealMax
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
\ No newline at end of file
diff --git a/server/Spells/Priest/MinorArchHealing.lua b/server/Spells/Priest/MinorArchHealing.lua
index 4322cbbab..eab3aad84 100755
--- a/server/Spells/Priest/MinorArchHealing.lua
+++ b/server/Spells/Priest/MinorArchHealing.lua
@@ -1,13 +1,30 @@
--[[
Script Name : Spells/Priest/MinorArchHealing.lua
- Script Author : neatz09
- Script Date : 2020.01.02 04:01:17
+ Script Author : LordPazuzu
+ Script Date : 12/6/2022
Script Purpose :
:
--]]
--- Heals target for 41 - 50
-function cast(Caster, Target, MinVal, MaxVal)
-SpellHeal("Heal", MinVal, MaxVal)
+
+function cast(Caster, Target, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = MinVal + math.floor(HealBonus)
+ MaxHeal = MaxVal + math.floor(HealBonus)
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
+
+function remove()
end
diff --git a/server/Spells/Priest/MinorHealing.lua b/server/Spells/Priest/MinorHealing.lua
index 946d24511..a6560eee6 100755
--- a/server/Spells/Priest/MinorHealing.lua
+++ b/server/Spells/Priest/MinorHealing.lua
@@ -1,19 +1,26 @@
-
-
--[[
Script Name : Spells/Priest/MinorHealing.lua
- Script Author : neatz09
- Script Date : 2020.01.02 04:01:24
+ Script Author : LordPazuzu
+ Script Date : 12/6/2022
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Heals target for 36 - 45
-function cast(Caster, Target, MinHeal, MaxHeal)
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel= 1
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = MinVal + math.floor(HealBonus)
+ MaxHeal = MaxVal + math.floor(HealBonus)
+
SpellHeal("Heal", MinHeal, MaxHeal)
end
-
-function remove()
-end
diff --git a/server/Spells/Priest/MinorHealingGrimgash.lua b/server/Spells/Priest/MinorHealingGrimgash.lua
new file mode 100755
index 000000000..6e6ca23ae
--- /dev/null
+++ b/server/Spells/Priest/MinorHealingGrimgash.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/MinorHealingGrimgash.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.02 10:03:59
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ local zone = GetZone(Caster)
+ local Grimgash = GetSpawnByLocationID(zone, 133776469)
+
+ SpellHeal("Heal", 50, 60, Grimgash)
+end
+
diff --git a/server/Spells/Priest/MinorHealingHighChief.lua b/server/Spells/Priest/MinorHealingHighChief.lua
new file mode 100755
index 000000000..132f8c6cf
--- /dev/null
+++ b/server/Spells/Priest/MinorHealingHighChief.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/MinorHealingHighChief.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.03 04:03:15
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ local zone = GetZone(Caster)
+ local ChooseTarget = math.random(1,2)
+
+ if ChooseTarget == 1 then
+ local HealTarget = GetSpawnByLocationID(zone, 133775603)
+ elseif
+ ChooseTarget == 2 then
+ local HealTarget = GetSpawnByLocationID(zone, 133775604)
+ end
+
+ SpellHeal("Heal", 45, 50, HealTarget)
+end
+
+
diff --git a/server/Spells/Priest/MinorHealingUlrich.lua b/server/Spells/Priest/MinorHealingUlrich.lua
new file mode 100755
index 000000000..f540fe53e
--- /dev/null
+++ b/server/Spells/Priest/MinorHealingUlrich.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/MinorHealingUlrich.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.30 07:10:15
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ local zone = GetZone(Caster)
+ local Ulrich = GetSpawnByLocationID(zone, 133787319)
+
+ SpellHeal("Heal", 65, 85, Ulrich)
+end
diff --git a/server/Spells/Priest/Shaman/Auspice.lua b/server/Spells/Priest/Shaman/Auspice.lua
index 8c7526cac..4fceb9502 100755
--- a/server/Spells/Priest/Shaman/Auspice.lua
+++ b/server/Spells/Priest/Shaman/Auspice.lua
@@ -1,16 +1,28 @@
--[[
Script Name : Spells/Priest/Shaman/Auspice.lua
- Script Author : neatz09
- Script Date : 2019.12.14 02:12:54
+ Script Author : LordPazuzu
+ Script Date : 3/14/2024
Script Purpose :
:
--]]
function cast(Caster, Target, Power, Health)
--- Increases Max Power of target by 57.4
- AddSpellBonus(Target, 619, Power)
--- Increases Max Health of target by 76.0
- AddSpellBonus(Target, 606, Health)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ Bonus = math.floor(StatBonus + LvlBonus)/2
+ TotalPower = Power + Bonus
+ TotalHP = Health + Bonus
+
+ AddSpellBonus(Target, 619, TotalPower)
+ AddSpellBonus(Target, 606, TotalHP)
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Shaman/BreathofSpirits.lua b/server/Spells/Priest/Shaman/BreathofSpirits.lua
index 101d4b147..20a7ea629 100755
--- a/server/Spells/Priest/Shaman/BreathofSpirits.lua
+++ b/server/Spells/Priest/Shaman/BreathofSpirits.lua
@@ -1,20 +1,28 @@
--[[
Script Name : Spells/Priest/Shaman/BreathofSpirits.lua
- Script Author : neatz09
- Script Date : 2019.12.14 02:12:59
+ Script Author : LordPazuzu
+ Script Date : 3/13/2024
Script Purpose :
:
--]]
--- Heals group members (AE) for 97 - 119
--- Increases Max Health of group members (AE) by 15.8
-function cast(Caster, Target, MinHeal, MaxHeal, HP)
-SpellHeal("Heal", MinHeal, MaxHeal)
-AddSpellBonus(Target, 606, HP)
+
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel= 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HealBonus = LvlBonus + StatBonus
+ MinHeal = MinVal + math.floor(HealBonus *2)
+ MaxHeal = MaxVal + math.floor(HealBonus *2)
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
-function remove(Caster, Target)
- RemoveSpellBonus(Target)
-end
-
diff --git a/server/Spells/Priest/Shaman/Contagion.lua b/server/Spells/Priest/Shaman/Contagion.lua
index e76d44d6b..5850e6942 100755
--- a/server/Spells/Priest/Shaman/Contagion.lua
+++ b/server/Spells/Priest/Shaman/Contagion.lua
@@ -9,13 +9,38 @@
-- Info from spell_display_effects (remove from script when done)
-- Inflicts 12 disease damage on target instantly and every 4 seconds
-function cast(Caster, Target, DoTType, MinVal)
- Say(Caster, "Race check bonuses not implemented.")
-SpellDamage(Target, DoTType, MinVal)
+function cast(Caster, Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MinDmg)
end
-function tick(Caster, Target, DoTType, MinVal)
-SpellDamage(Target, DoTType, MinVal)
+function tick(Caster, Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MinDmg)
end
diff --git a/server/Spells/Priest/Shaman/EidolicWard.lua b/server/Spells/Priest/Shaman/EidolicWard.lua
index 4e8646dd9..05b94c7b0 100755
--- a/server/Spells/Priest/Shaman/EidolicWard.lua
+++ b/server/Spells/Priest/Shaman/EidolicWard.lua
@@ -1,25 +1,31 @@
--[[
Script Name : Spells/Priest/Shaman/EidolicWard.lua
- Script Author : John Adams
- Script Date : 2013.08.11 07:08:20
+ Script Author : LordPazuzu
+ Script Date : 3/14/2024
Script Purpose :
:
--]]
-function cast(Caster, Target)
- -- code to cast the spell
- Say(Caster, "Whoops! Guess this is not implemented yet!")
+function cast(Caster, Target, BaseWard)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
--- Info from spell_display_effects (remove from script when done)
--- Wards target against 215 points of all damage
+ WardBonus = LvlBonus + StatBonus
+ TotalWard = BaseWard + math.floor(WardBonus * 2)
-end
-
-function tick(Caster, Target)
- -- code to process each call_frequency (tick) set in spell_tiers
+ AddWard(TotalWard)
end
function remove(Caster, Target)
- -- code to remove the spell
+ local heal = GetWardAmountLeft(Target)
+ SpellHeal("Heal", heal, heal)
+ RemoveWard(Caster)
end
diff --git a/server/Spells/Priest/Shaman/ExpungeElements.lua b/server/Spells/Priest/Shaman/ExpungeElements.lua
new file mode 100644
index 000000000..e53a196fb
--- /dev/null
+++ b/server/Spells/Priest/Shaman/ExpungeElements.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/ExpungeElements.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.16 05:03:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Ward)
+ CureByType(1, 3, "", (GetLevel(Caster) * 1.08) + 1)
+ AddWard(Target, Ward, 1)
+end
+
+function remove(Caster, Target)
+ RemoveWard(Target)
+end
diff --git a/server/Spells/Priest/Shaman/GreyWind.lua b/server/Spells/Priest/Shaman/GreyWind.lua
new file mode 100644
index 000000000..c0a249ddf
--- /dev/null
+++ b/server/Spells/Priest/Shaman/GreyWind.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Priest/Shaman/GreyWind.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.15 06:03:43
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Applies Grey Winds. Lasts for 10.0 seconds.
+ *Slows target by 33.4%
+ *5% chance to dispel when target receives hostile action
+ *5% chance to dispel when target takes damage
+*Inflicts 42 - 52 cold damage on target
+
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = math.floor(LvlBonus + StatBonus) * 2
+ MinDmg = MinVal + DmgBonus
+ MaxFmg = MaxVal + DmgBonus
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ CastSpell(Target, 180021, 1, Caster)
+end
+
+
+
+
+
+
+
diff --git a/server/Spells/Priest/Shaman/GreyWindSubspell.lua b/server/Spells/Priest/Shaman/GreyWindSubspell.lua
new file mode 100644
index 000000000..305319f88
--- /dev/null
+++ b/server/Spells/Priest/Shaman/GreyWindSubspell.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/GreyWindSubspell.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.16 02:03:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ SetSpellSnareValue(Target, 0.67)
+ AddControlEffect(Target, 11)
+ AddProc(Target, 15, 5)
+end
+
+function proc(Caster, Target, Type)
+ if Type == 15 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 11)
+end
+
diff --git a/server/Spells/Priest/Shaman/HealingRitual.lua b/server/Spells/Priest/Shaman/HealingRitual.lua
index fae5448c4..d244a71e4 100755
--- a/server/Spells/Priest/Shaman/HealingRitual.lua
+++ b/server/Spells/Priest/Shaman/HealingRitual.lua
@@ -6,14 +6,25 @@
:
--]]
--- Heals target for 182 - 223
--- Increases Max Health of target by 27.6
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel= 18
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
-function cast(Caster, Target, MinHeal, MaxHeal, HP)
-SpellHeal("Heal", MinHeal, MaxHeal)
- AddSpellBonus(Target, 606, HP)
+ HealBonus = math.floor(LvlBonus + StatBonus) * 2
+ MinHeal = MinVal + HealBonus
+ MaxHeal = MaxVal + HealBonus
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
end
function remove(Caster, Target)
RemoveSpellBonus(Target)
+
end
diff --git a/server/Spells/Priest/Shaman/MendingSpirit.lua b/server/Spells/Priest/Shaman/MendingSpirit.lua
new file mode 100644
index 000000000..38daa490e
--- /dev/null
+++ b/server/Spells/Priest/Shaman/MendingSpirit.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/MendingSpirit.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.14 08:03:32
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Ward)
+ CureByType(1, 1, "", (GetLevel(Caster) * 1.08) + 1)
+ AddWard(Target, Ward, 1)
+end
+
+function remove(Caster, Target)
+ RemoveWard(Target)
+end
diff --git a/server/Spells/Priest/Shaman/Phantasm.lua b/server/Spells/Priest/Shaman/Phantasm.lua
new file mode 100644
index 000000000..bbd930d88
--- /dev/null
+++ b/server/Spells/Priest/Shaman/Phantasm.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Phantasm.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.14 02:03:22
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Hate)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ HateMod = LvlBonus * 3
+ Detaunt = Hate - HateMod
+
+ AddHate(Caster, Target, Detaunt, 1)
+
+ if IsEpic == false then
+ AddControlEffect(Target, 6)
+ AddProc(Target, 15, 30.0)
+ end
+end
+
+function proc(Caster, Target, Type)
+ if Type == 15 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 6)
+end
+
diff --git a/server/Spells/Priest/Shaman/SpectralWard.lua b/server/Spells/Priest/Shaman/SpectralWard.lua
new file mode 100755
index 000000000..93100e389
--- /dev/null
+++ b/server/Spells/Priest/Shaman/SpectralWard.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Priest/Shaman/SpectralWard.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.02 09:03:17
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, BaseWard)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ WardBonus = LvlBonus + StatBonus
+ TotalWard = BaseWard + math.floor(WardBonus * 2)
+
+ AddWard(TotalWard)
+end
+
+
+function remove(Caster, Target)
+ local heal = GetWardAmountLeft(Target)
+ SpellHeal("Heal", heal, heal)
+ RemoveWard(Caster)
+end
+
+
diff --git a/server/Spells/Priest/Shaman/SpiritoftheBadger.lua b/server/Spells/Priest/Shaman/SpiritoftheBadger.lua
new file mode 100644
index 000000000..e15554186
--- /dev/null
+++ b/server/Spells/Priest/Shaman/SpiritoftheBadger.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Priest/Shaman/SpiritoftheBadger.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.16 08:03:38
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BaseMit, Str)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalMit = LvlBonus * 2 + BaseMit
+
+ AddSpellBonus(Target, 0, Str)
+ AddSpellBonus(Target, 200, TotalMit)
+end
+
+function proc(Caster, Target, Type, BaseMit)
+ --Nox Mit Proc
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ --RemoveProc(Target)
+end
diff --git a/server/Spells/Priest/Shaman/SpiritoftheBull.lua b/server/Spells/Priest/Shaman/SpiritoftheBull.lua
index ffe2e2e96..0732b534a 100755
--- a/server/Spells/Priest/Shaman/SpiritoftheBull.lua
+++ b/server/Spells/Priest/Shaman/SpiritoftheBull.lua
@@ -1,14 +1,26 @@
--[[
Script Name : Spells/Priest/Shaman/SpiritoftheBull.lua
- Script Author : neatz09
- Script Date : 2019.12.14 02:12:56
+ Script Author : LordPazuzu
+ Script Date : 3/16/2024
Script Purpose :
:
--]]
-- Increases STR and STA of group members (AE) by 13.1
-function cast(Caster, Target, BonusAmt)
+function cast(Caster, Target, Buff)
+ Level = GetLevel(Caster)
+ SpellLevel= 18
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ BonusAmt = (StatBonus + LvlBonus) * 0.2
+
AddSpellBonus(Target, 0, BonusAmt)
AddSpellBonus(Target, 1, BonusAmt)
end
diff --git a/server/Spells/Priest/Shaman/SpiritualSeal.lua b/server/Spells/Priest/Shaman/SpiritualSeal.lua
index dfdd95c5f..e44ed82c8 100755
--- a/server/Spells/Priest/Shaman/SpiritualSeal.lua
+++ b/server/Spells/Priest/Shaman/SpiritualSeal.lua
@@ -12,6 +12,7 @@
function cast(Caster, Target, HP, Mit)
AddSpellBonus(Target, 606, HP)
AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 209, Mit)
end
diff --git a/server/Spells/Priest/Shaman/TotemicAid.lua b/server/Spells/Priest/Shaman/TotemicAid.lua
index 60517aa1c..6a0dfbfcb 100755
--- a/server/Spells/Priest/Shaman/TotemicAid.lua
+++ b/server/Spells/Priest/Shaman/TotemicAid.lua
@@ -1,18 +1,28 @@
--[[
Script Name : Spells/Priest/Shaman/TotemicAid.lua
- Script Author : neatz09
- Script Date : 2019.12.14 02:12:50
+ Script Author : LordPazuzu
+ Script Date : 3/15/2024
Script Purpose :
:
--]]
--- Info from spell_display_effects (remove from script when done)
--- Heals target for 91 - 111
--- Increases Max Health of target by 11.3
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel= 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
-function cast(Caster, Target, MinHeal, MaxHeal, HP)
-SpellHeal("Heal", MinHeal, MaxHeal)
- AddSpellBonus(Target, 606, HP)
+ HealBonus = math.floor(LvlBonus + StatBonus) * 2
+ MinHeal = MinVal + HealBonus
+ MaxHeal = MaxVal + HealBonus
+
+ SpellHeal("Heal", MinHeal, MaxHeal)
+ CureByType(1, 3, "", (GetLevel(Caster) * 1.08) + 1)
end
function remove(Caster, Target)
diff --git a/server/Spells/Priest/Shaman/WardsofSpirit.lua b/server/Spells/Priest/Shaman/WardsofSpirit.lua
new file mode 100644
index 000000000..acb71b4b6
--- /dev/null
+++ b/server/Spells/Priest/Shaman/WardsofSpirit.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Shaman/WardsofSpirit.lua
+ Script Author : LordPazuzu
+ Script Date : 2024.03.14 04:03:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BaseWard)
+ Level = GetLevel(Caster)
+ SpellLevel= 14
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ WardBonus = LvlBonus + StatBonus
+ TotalWard = math.floor(WardBonus * 2) + BaseWard
+
+ AddWard(TotalWard, 1)
+end
+
+function remove(Caster, Target)
+ RemoveWard(Ward)
+end
diff --git a/server/Spells/Priest/Smite.lua b/server/Spells/Priest/Smite.lua
index 3fd144f8e..01c74ced0 100755
--- a/server/Spells/Priest/Smite.lua
+++ b/server/Spells/Priest/Smite.lua
@@ -1,14 +1,27 @@
--[[
Script Name : Spells/Priest/Smite.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:20
+ Script Author : LordPazuzu
+ Script Date : 12/6/2022
Script Purpose :
:
--]]
--- Inflicts 8 - 10 divine damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
-end
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 15
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Priest/Weakness.lua b/server/Spells/Priest/Weakness.lua
index 9ea26facc..d8664a8c1 100755
--- a/server/Spells/Priest/Weakness.lua
+++ b/server/Spells/Priest/Weakness.lua
@@ -1,15 +1,26 @@
--[[
Script Name : Spells/Priest/Weakness.lua
- Script Author : neatz09
- Script Date : 2020.01.02 03:01:18
+ Script Author : LordPazuzu
+ Script Date : 12/7/2022
Script Purpose :
:
--]]
--- Decreases STR of target by 9.6
-function cast(Caster, Target, Str)
- AddSpellBonus(Target, 0, Str)
+function cast(Caster, Target, BasePenalty, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+
+ end
+
+ LvlMod = LvlBonus * 0.1
+ StrMod = BasePenalty - LvlMod
+
+ AddSpellBonus(Target, 0, StrMod)
end
diff --git a/server/Spells/Procs/Blink.lua b/server/Spells/Procs/Blink.lua
new file mode 100755
index 000000000..164017e25
--- /dev/null
+++ b/server/Spells/Procs/Blink.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Procs/Blink.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.29 08:11:24
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ local X=GetX(Caster) + math.random(-10, 10)
+ local Y=GetY(Caster)
+ local Z= GetZ(Caster) + math.random(-10, 10)
+ SetPosition(Caster, X,Y,Z)
+
+end
diff --git a/server/Spells/Procs/Ensnare.lua b/server/Spells/Procs/Ensnare.lua
new file mode 100755
index 000000000..6b39a8828
--- /dev/null
+++ b/server/Spells/Procs/Ensnare.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Procs/Ensnare.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.28 10:11:00
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Snare)
+ local Slow = 100.0 - Snare
+ SetSpellSnareValue(Target, Slow)
+ AddControlEffect(Target, 11)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 11)
+end
+
diff --git a/server/Spells/Procs/Migraine.lua b/server/Spells/Procs/Migraine.lua
new file mode 100755
index 000000000..1e999a964
--- /dev/null
+++ b/server/Spells/Procs/Migraine.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Procs/Migraine.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.04 07:12:30
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, DDMinDmg, DDMaxDmg)
+ SpellDamage(Target, DmgType, DDMinDMg, DDMaxDmg)
+end
+
diff --git a/server/Spells/Procs/NettleshieldThorns.lua b/server/Spells/Procs/NettleshieldThorns.lua
new file mode 100755
index 000000000..b46bda843
--- /dev/null
+++ b/server/Spells/Procs/NettleshieldThorns.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Procs/NettleshieldThorns.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.19 04:12:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg)
+ SpellDamage(Target, DmgType, MinDmg, MinDmg)
+
+end
+
diff --git a/server/Spells/Procs/RootImmunity.Lua b/server/Spells/Procs/RootImmunity.Lua
new file mode 100755
index 000000000..f54151767
--- /dev/null
+++ b/server/Spells/Procs/RootImmunity.Lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Procs/RootImmunity.Lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.30 05:11:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddImmunitySpell(5, Target)
+end
+
+
+function remove(Caster, Target)
+ RemoveImmunitySpell(5, Target)
+end
+
+
diff --git a/server/Spells/Procs/RootImmunity.lua b/server/Spells/Procs/RootImmunity.lua
new file mode 100755
index 000000000..78396c109
--- /dev/null
+++ b/server/Spells/Procs/RootImmunity.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Procs/RootImmunity.Lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.30 05:11:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ AddImmunitySpell(5, Target)
+end
+
+
+function remove(Caster, Target)
+ RemoveImmunitySpell(5, Target)
+end
+
diff --git a/server/Spells/Procs/Stun.lua b/server/Spells/Procs/Stun.lua
new file mode 100755
index 000000000..cbd59b71c
--- /dev/null
+++ b/server/Spells/Procs/Stun.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Procs/Stun.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.10 04:09:24
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ AddControlEffect(Target,2)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
diff --git a/server/Spells/Procs/Vitae.lua b/server/Spells/Procs/Vitae.lua
new file mode 100755
index 000000000..4644d8006
--- /dev/null
+++ b/server/Spells/Procs/Vitae.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Procs/Vitae.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.12.01 05:12:28
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, HealMin, HealMax)
+ SpellHeal("Heal", HealMin, HealMax)
+ CancelSpell()
+end
diff --git a/server/Spells/Scout/Ambush.lua b/server/Spells/Scout/Ambush.lua
index ecc2525b4..41934f815 100755
--- a/server/Spells/Scout/Ambush.lua
+++ b/server/Spells/Scout/Ambush.lua
@@ -1,24 +1,12 @@
--[[
Script Name : Spells/Scout/Ambush.lua
- Script Author : neatz09
- Script Date : 2020.11.03 03:11:37
+ Script Author : LordPazuzu
+ Script Date : 12/8/2022
Script Purpose :
:
--]]
--- Inflicts 12 - 20 melee damage on target
--- You must be sneaking to use this ability.
---[[function precast(Caster,Target)
- -- You must be sneaking to use this ability.
- if not IsStealthed(Caster) then
- SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
- return false
- end
-end
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end--]]
function precast(Caster, Target)
-- You must be sneaking to use this ability.
@@ -30,11 +18,20 @@ function precast(Caster, Target)
return false
end
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- -- Inflicts 14 - 24 melee damage on target
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
diff --git a/server/Spells/Scout/Assail.lua b/server/Spells/Scout/Assail.lua
index e7ec562c2..6b8baf493 100755
--- a/server/Spells/Scout/Assail.lua
+++ b/server/Spells/Scout/Assail.lua
@@ -9,17 +9,6 @@
-- Inflicts 26 - 44 melee damage on target
-- You must be sneaking to use this ability.
---[[function precast(Caster, Target)
- -- You must be sneaking to use this ability.
- if not IsStealthed(Caster) then
- SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
- return false
- end
-end
-
-function cast(Caster, Target)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end --]]
function precast(Caster, Target)
-- You must be sneaking to use this ability.
diff --git a/server/Spells/Scout/Bard/AlinsKeeningLamentation.lua b/server/Spells/Scout/Bard/AlinsKeeningLamentation.lua
index 0f11a052d..cedacdccd 100755
--- a/server/Spells/Scout/Bard/AlinsKeeningLamentation.lua
+++ b/server/Spells/Scout/Bard/AlinsKeeningLamentation.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Bard/AlinsKeeningLamentation.lua
- Script Author : neatz09
- Script Date : 2020.11.06 06:11:26
+ Script Author : LordPazuzu
+ Script Date : 3/29/2024
Script Purpose :
:
--]]
@@ -9,5 +9,20 @@
-- Inflicts 46 - 76 mental damage on target encounter
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = math.floor(LvlBonus + StatBonus) *2
+ MinDmg = MinVal + DmgBonus
+ MaxDmg = MaxVal + DmgBonus
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
end
\ No newline at end of file
diff --git a/server/Spells/Scout/Bard/InsatiableArdor.lua b/server/Spells/Scout/Bard/InsatiableArdor.lua
index a92bc2ed6..1d817fda0 100755
--- a/server/Spells/Scout/Bard/InsatiableArdor.lua
+++ b/server/Spells/Scout/Bard/InsatiableArdor.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Bard/InsatiableArdor.lua
- Script Author : neatz09
- Script Date : 2020.11.06 06:11:20
+ Script Author : LordPazuzu
+ Script Date : 3/29/2024
Script Purpose :
:
--]]
@@ -9,7 +9,7 @@
-- Increases Defense of group members (AE) by 4.9
function cast(Caster, Target, SkillAmt)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), SkillAmt)
end
function remove(Caster, Target)
diff --git a/server/Spells/Scout/Bard/PerformersTalent.lua b/server/Spells/Scout/Bard/PerformersTalent.lua
index 1a8457a8b..5c12ffa1b 100755
--- a/server/Spells/Scout/Bard/PerformersTalent.lua
+++ b/server/Spells/Scout/Bard/PerformersTalent.lua
@@ -1,20 +1,30 @@
--[[
Script Name : Spells/Scout/Bard/PerformersTalent.lua
- Script Author : neatz09
- Script Date : 2020.11.06 05:11:35
+ Script Author : LordPazuzu
+ Script Date : 3/29/2024
Script Purpose :
:
--]]
--- Increases AGI of caster by 10.0
--- Increases INT of caster by 25.0
-function cast(Caster, Target, Bored, AsFuck)
- AddSpellBonus(Target, 2, Bored)
- AddSpellBonus(Target, 4, AsFuck)
+function cast(Caster, Target, Agi, Arcane)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetWis(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ AgiBonus = (StatBonus + LvlBonus) * 0.2
+ ArcaneBonus = (StatBonus + LvlBonus) * 2
+
+ AddSpellBonus(Target, 2, Agi + AgiBonus)
+ AddSpellBonus(Target, 203, Arcane + ArcaneBonus)
end
function remove(Caster, Target)
RemoveSpellBonus(Target)
- RemoveSpellBonus(Target)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/Bard/PiercingShriek.lua b/server/Spells/Scout/Bard/PiercingShriek.lua
index 877cbe38c..a34486d2a 100755
--- a/server/Spells/Scout/Bard/PiercingShriek.lua
+++ b/server/Spells/Scout/Bard/PiercingShriek.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Bard/PiercingShriek.lua
- Script Author : neatz09
- Script Date : 2020.11.06 05:11:51
+ Script Author : LordPazuzu
+ Script Date : 3/4/2023
Script Purpose :
:
--]]
@@ -9,5 +9,19 @@
-- Inflicts 49 - 82 mental damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/Bard/RousingTune.lua b/server/Spells/Scout/Bard/RousingTune.lua
index 7ce46a1c7..a2c037b78 100755
--- a/server/Spells/Scout/Bard/RousingTune.lua
+++ b/server/Spells/Scout/Bard/RousingTune.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Bard/RousingTune.lua
- Script Author : neatz09
- Script Date : 2020.11.06 05:11:43
+ Script Author : LordPazuzu
+ Script Date : 3/27/2024
Script Purpose :
:
--]]
@@ -9,8 +9,18 @@
-- Increases STR and AGI of group members (AE) by 8.1
function cast(Caster, Target, BonusAmt)
- AddSpellBonus(Target, 0, BonusAmt)
- AddSpellBonus(Target, 2, BonusAmt)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ AddSpellBonus(Target, 0, LvlBonus * 0.2 + BonusAmt)
+ AddSpellBonus(Target, 1, LvlBonus * 0.2 + BonusAmt)
+ AddSpellBonus(Target, 2, LvlBonus * 0.2 + BonusAmt)
end
function remove(Caster, Target)
diff --git a/server/Spells/Scout/Bard/SingingShot.lua b/server/Spells/Scout/Bard/SingingShot.lua
index 5eee69d36..f5d2f7e67 100755
--- a/server/Spells/Scout/Bard/SingingShot.lua
+++ b/server/Spells/Scout/Bard/SingingShot.lua
@@ -5,14 +5,6 @@
Script Purpose :
:
--]]
-
--- Inflicts 22 - 36 mental damage on target
--- Inflicts 22 - 36 mental damage on target
--- Stifles target
--- If Target is not Epic
--- If weapon equipped in Ranged
--- Resistibility increases against targets higher than level 29.
-
function precast(Caster, Target)
-- Requires bow
local item = GetEquippedItemBySlot(Caster, 16)
@@ -25,16 +17,20 @@ function precast(Caster, Target)
end
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- Say(Caster, "Resistibility not Implemented.")
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- if LastSpellAttackHit() then
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- end
- if LastSpellAttackHit() and not IsEpic() then
- AddControlEffect(Target, 2)
- end
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetAgi(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
-
-function remove(Caster, Target)
- RemoveControlEffect(Target, 2)
-end
\ No newline at end of file
diff --git a/server/Spells/Scout/Bard/SongstersLuck.lua b/server/Spells/Scout/Bard/SongstersLuck.lua
index c15f5c45e..85a9e32d9 100755
--- a/server/Spells/Scout/Bard/SongstersLuck.lua
+++ b/server/Spells/Scout/Bard/SongstersLuck.lua
@@ -1,18 +1,18 @@
--[[
Script Name : Spells/Scout/Bard/SongstersLuck.lua
- Script Author : neatz09
- Script Date : 2020.11.06 06:11:56
+ Script Author : LordPazuzu
+ Script Date : 3/29/2024
Script Purpose :
:
--]]
--- Increases Slashing, Crushing, Piercing and Ranged of group members (AE) by 4.6
-
function cast(Caster, Target, SkillAmt)
AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
end
function remove(Caster, Target)
diff --git a/server/Spells/Scout/Bard/SparklingBlade.lua b/server/Spells/Scout/Bard/SparklingBlade.lua
index 040d79a7d..79a59fd2d 100755
--- a/server/Spells/Scout/Bard/SparklingBlade.lua
+++ b/server/Spells/Scout/Bard/SparklingBlade.lua
@@ -1,17 +1,33 @@
--[[
Script Name : Spells/Scout/Bard/SparklingBlade.lua
- Script Author : neatz09
- Script Date : 2020.11.06 05:11:43
+ Script Author : LordPazuzu
+ Script Date : 3/18/2024
Script Purpose :
:
--]]
--- Inflicts 18 - 31 mental damage on target
--- Inflicts 18 - 31 mental damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Mit)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if LastSpellAttackHit(Target) then
+ AddSpellBonus(Target, 206, Mit)
+ end
+end
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- if LastSpellAttackHit() then
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- end
-end
\ No newline at end of file
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
diff --git a/server/Spells/Scout/Bard/WaltsSingingBlade.lua b/server/Spells/Scout/Bard/WaltsSingingBlade.lua
index 69b10d804..c724159f1 100755
--- a/server/Spells/Scout/Bard/WaltsSingingBlade.lua
+++ b/server/Spells/Scout/Bard/WaltsSingingBlade.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Bard/WaltsSingingBlade.lua
- Script Author : neatz09
- Script Date : 2020.11.06 05:11:54
+ Script Author : LordPazuzu
+ Script Date : 4/1/2024
Script Purpose :
:
--]]
@@ -10,6 +10,37 @@
-- Decreases power of target by 10 - 17
function cast(Caster, Target, DmgType, MinVal, MaxVal, MinPwr, MaxPwr)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- SpellHeal("Power", MaxPwr, MinPwr, Target)
-end
\ No newline at end of file
+ damage(Caster, Target, DmgType, MinVal, MaxVal, MinPwr, MaxPwr)
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, MinPwr, MaxPwr)
+ damage(Caster, Target, DmgType, MinVal, MaxVal, MinPwr, MaxPwr)
+end
+
+function remove(Caster, Target)
+
+end
+
+function damage(Caster, Target, DmgType, MinVal, MaxVal, MinPwr, MaxPwr)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StrBonus = GetStr(Caster) / 10
+ IntBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StrBonus
+ DrainBonus = LvlBonus + IntBonus
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDrain = MinPwr + DrainBonus
+ MaxDrain = MaxPwr + DrainBonus
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ SpellDamageExt(Target, 5, MinDrain, MaxDrain, 0, 0, 0, 1)
+end
+
diff --git a/server/Spells/Scout/CheapShot.lua b/server/Spells/Scout/CheapShot.lua
index 2cb440adc..74e71e697 100755
--- a/server/Spells/Scout/CheapShot.lua
+++ b/server/Spells/Scout/CheapShot.lua
@@ -17,10 +17,12 @@ function cast(Caster, Target)
-- Does not affect Heroic or Epic targets.
if not IsHeroic(Target) then
AddControlEffect(Target, 4)
+ SpawnSet(Target,"visual_state",1684)
end
end
function remove(Caster, Target)
-- Remove Mez Effect
RemoveControlEffect(Target, 4)
+ SpawnSet(Target,"visual_state",0)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/CircularStrike.lua b/server/Spells/Scout/CircularStrike.lua
new file mode 100755
index 000000000..ac1c145f8
--- /dev/null
+++ b/server/Spells/Scout/CircularStrike.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/CircularStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
+ Script Purpose :
+ :
+--]]
+
+-- Interrupts targets in Area of Effect
+-- Inflicts 38 - 64 melee damage on targets in Area of Effect
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 6
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ if LastSpellAttackHit() then
+ Interrupt(Caster, Target)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Scout/Ensnare.lua b/server/Spells/Scout/Ensnare.lua
index 6ebaf602a..665df391e 100755
--- a/server/Spells/Scout/Ensnare.lua
+++ b/server/Spells/Scout/Ensnare.lua
@@ -1,23 +1,17 @@
--[[
- Script Name : Spells/Scout/Predator/Ranger/Ensnare.lua
- Script Author : Jabantiz
- Script Date : 2014.03.10 06:03:27
+ Script Name : Spells/Scout/Ensnare.lua
+ Script Author : LordPazuzu
+ Script Date : 3/17/2024
Script Purpose :
:
--]]
-function cast(Caster, Target, Mit, Snare)
- -- Decreases Mitigation of target vs arcane damage by 197
- AddSpellBonus(Target, 203, Mit)
-
- -- Applies Snare. Lasts for 24.0 seconds.
- -- Slows target by 28.3%
- -- 5% chance to dispel when target receives hostile action
- -- 5% chance to dispel when target takes damage
- local Slow = 100.0 - Snare
- SetSpeedMultiplier(Target, Slow)
+function cast(Caster, Target, Snare)
+ Slow = 1.0 - Snare
+ SetSpellSnareValue(Target, Slow)
+ AddControlEffect(Target, 11)
end
function remove(Caster, Target)
- SetSpeedMultiplier(Target, 1)
+ RemoveControlEffect(Target, 11)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/Escape.lua b/server/Spells/Scout/Escape.lua
index 582e4fc41..1c77b887b 100755
--- a/server/Spells/Scout/Escape.lua
+++ b/server/Spells/Scout/Escape.lua
@@ -8,11 +8,10 @@
-- Teleports caster and caster's group within the zone
-
function precast(Caster, Target)
if(GetCanEvac(Caster) == 1)
then
- return true
+ return true
else
SendMessage(Caster, "You cannot use evacuate spells in this zone.", "red")
return false
diff --git a/server/Spells/Scout/Evade.lua b/server/Spells/Scout/Evade.lua
index a1d37b26a..933091287 100755
--- a/server/Spells/Scout/Evade.lua
+++ b/server/Spells/Scout/Evade.lua
@@ -9,9 +9,11 @@
-- Decreases Threat to target
function cast(Caster, Target, HateLow, HateHigh)
- Hate = math.random(HateHigh, HateLow)
- AddHate(Caster, Target, Hate, 1)
- Say(Caster, "Missing Reposte Immunity")
+
+ Hate = math.random(HateHigh, HateLow)
+ HateMod = math.floor(Hate)
+ AddHate(Caster, Target, HateMod, 1)
+
end
function remove(Caster, Target)
diff --git a/server/Spells/Scout/Predator/Assassin/JugularSlice.lua b/server/Spells/Scout/Predator/Assassin/JugularSlice.lua
index b338bb53a..edb6b28a6 100755
--- a/server/Spells/Scout/Predator/Assassin/JugularSlice.lua
+++ b/server/Spells/Scout/Predator/Assassin/JugularSlice.lua
@@ -6,22 +6,23 @@
:
--]]
-function precast(Caster, Target)
- -- You must be sneaking to use this ability.
- if IsStealthed(Caster) then
- return true
- end
- SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
- return false
-end
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- -- Inflicts 217 - 362 slashing damage on target
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, DmgType, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 20
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus * 2.5) + MaxVal
+ MinDmg = math.floor(DmgBonus * 2.5) + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
-- Stifles target
-- If Target is not Epic
diff --git a/server/Spells/Scout/Predator/BackShot.lua b/server/Spells/Scout/Predator/BackShot.lua
new file mode 100755
index 000000000..08ad99141
--- /dev/null
+++ b/server/Spells/Scout/Predator/BackShot.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : Spells/Scout/Predator/BackShot.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.30 04:03:29
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Inflicts 106 - 178 ranged damage on target
+*If weapon equipped in Ranged
+*Must be flanking or behind
+
+--]]
+function precast(Caster, Target)
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ SendMessage(Caster, "Must have ranged weapon equipped", "yellow")
+ return false, 68
+ end
+
+ if not IsFlanking(Caster, Target) and not IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+ return true
+end
+
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetAgi(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+
+ SpellDamage(Target, 2, MinDmg, MaxDmg)
+
+end
+
+
diff --git a/server/Spells/Scout/Predator/BladeFlurry.lua b/server/Spells/Scout/Predator/BladeFlurry.lua
index e9df509e3..750aaa831 100755
--- a/server/Spells/Scout/Predator/BladeFlurry.lua
+++ b/server/Spells/Scout/Predator/BladeFlurry.lua
@@ -1,32 +1,42 @@
--[[
Script Name : Spells/Scout/Predator/BladeFlurry.lua
- Script Author : neatz09
- Script Date : 2020.11.04 01:11:37
+ Script Author : LordPazuzu
+ Script Date : 3/31/2023
Script Purpose :
:
--]]
--- Decreases Defense of caster by 5.1
--- Increases Slashing, Piercing, Ranged and Crushing of caster by 6.9
-- On a melee hit this spell may cast Swipe on target of attack. Triggers about 2.0 times per minute.
-- Inflicts 35 - 58 melee damage on target
-function cast(Caster, Target, Def, OffSkillz, DmgType, MinVal, MaxVal, Chance)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
- AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Ranged"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillz)
- AddProc(Target, 3, Chance)
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 3, 5)
end
-function proc(Caster, Target, Type, Def, OffSkillz, DmgType, MinVal, MaxVal, Chance)
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
if Type == 3 then
- ProcDamage(Caster, Target, "Swipe", DmgType, MinVal, MaxVal)
+ Spell = GetSpell(2550396, GetSpellTier())
+ SetSpellDataIndex(Spell, 0, DmgType)
+ SetSpellDataIndex(Spell, 1, MinDmg)
+ SetSpellDataIndex(Spell, 2, MaxDmg)
+ CastCustomSpell(Spell, Caster, Target)
end
end
function remove(Caster, Target)
RemoveProc(Target)
- RemoveSkillBonus(Target)
-end
\ No newline at end of file
+ end
\ No newline at end of file
diff --git a/server/Spells/Scout/Predator/Bleed.lua b/server/Spells/Scout/Predator/Bleed.lua
index f9758e554..7473bbbae 100755
--- a/server/Spells/Scout/Predator/Bleed.lua
+++ b/server/Spells/Scout/Predator/Bleed.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Predator/Bleed.lua
- Script Author : neatz09
- Script Date : 2020.11.04 12:11:57
+ Script Author : LordPazuzu
+ Script Date : 3/29/2023
Script Purpose :
:
--]]
@@ -12,9 +12,39 @@
function cast(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin, TickMax)
Say(Caster, "Facing Target not implemented")
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function tick(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin, TickMax)
- SpellDamage(Target, TickType, TickMin, TickMax)
-end
\ No newline at end of file
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxTick = math.floor(DmgBonus) * 2 + TickMax
+ MinTick = math.floor(DmgBonus) * 2 + TickMin
+
+ SpellDamage(Target, TickType, MinTick, MaxTick)
+end
+
+
diff --git a/server/Spells/Scout/Predator/HuntersInstinct.lua b/server/Spells/Scout/Predator/HuntersInstinct.lua
index ff3494ea0..059b9aecc 100755
--- a/server/Spells/Scout/Predator/HuntersInstinct.lua
+++ b/server/Spells/Scout/Predator/HuntersInstinct.lua
@@ -10,8 +10,8 @@
-- Increases DPS of caster by 19.0
function cast(Caster, Target, Agi, Dps)
- AddSpellBonus(Target, 2, Agi)
- AddSpellBonus(Target, 629, Dps)
+ AddSpellBonus(Caster, 2, Agi)
+
end
function remove(Caster, Target)
diff --git a/server/Spells/Scout/Predator/Impale.lua b/server/Spells/Scout/Predator/Impale.lua
index 5001fee9c..7a57121b3 100755
--- a/server/Spells/Scout/Predator/Impale.lua
+++ b/server/Spells/Scout/Predator/Impale.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Predator/Impale.lua
- Script Author : neatz09
- Script Date : 2020.11.04 12:11:36
+ Script Author : LordPazuzu
+ Script Date : 3/29/2023
Script Purpose :
:
--]]
@@ -12,9 +12,39 @@
-- If facing target
function cast(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin, TickMax)
Say(Caster, "Facing Target not implemented")
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
function tick(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin, TickMax)
- SpellDamage(Target, TickType, TickMin, TickMax)
-end
\ No newline at end of file
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxTick = math.floor(DmgBonus) * 2 + TickMax
+ MinTick = math.floor(DmgBonus) * 2 + TickMin
+
+ SpellDamage(Target, TickType, MinTick, MaxTick)
+end
+
+
diff --git a/server/Spells/Scout/Predator/OpenShot.lua b/server/Spells/Scout/Predator/OpenShot.lua
index 1afdfbeb9..214d298be 100755
--- a/server/Spells/Scout/Predator/OpenShot.lua
+++ b/server/Spells/Scout/Predator/OpenShot.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Predator/OpenShot.lua
- Script Author : neatz09
- Script Date : 2020.11.04 12:11:29
+ Script Author : LordPazuzu
+ Script Date : 3/31/2023
Script Purpose :
:
--]]
@@ -20,9 +20,25 @@ function precast(Caster, Target)
return true
end
-function cast(Caster, Target, DmgMin, DmgMax)
- SpellDamage(Target, DmgMin, DmgMax)
+function cast(Caster, Target, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetAgi(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+
+
+ SpellDamage(Target, 2, MinDmg, MaxDmg)
if LastSpellAttackHit() then
- SpellDamage(Target, DmgMin, DmgMax)
+ SpellDamage(Target,2, MinDmg, MaxDmg)
end
end
diff --git a/server/Spells/Scout/Predator/Pierce.lua b/server/Spells/Scout/Predator/Pierce.lua
index 451a6de49..edc316dce 100755
--- a/server/Spells/Scout/Predator/Pierce.lua
+++ b/server/Spells/Scout/Predator/Pierce.lua
@@ -10,9 +10,23 @@
-- Inflicts 6 piercing damage on target every 4 seconds
function cast(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
-function tick(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin)
+--[[function tick(Caster, Target, DmgType, MinVal, MaxVal, TickType, TickMin)
SpellDamage(Target, TickType, TickMin, TickMax)
-end
\ No newline at end of file
+end--]]
\ No newline at end of file
diff --git a/server/Spells/Scout/Predator/Pounce.lua b/server/Spells/Scout/Predator/Pounce.lua
new file mode 100755
index 000000000..7fe61bbd2
--- /dev/null
+++ b/server/Spells/Scout/Predator/Pounce.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Scout/Predator/Pounce.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.31 04:03:26
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Inflicts 115 - 192 melee damage on targets in Area of Effect
+*You must be in stealth to use this!
+
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ end
+
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Scout/Predator/Ranger/CripplingArrow.lua b/server/Spells/Scout/Predator/Ranger/CripplingArrow.lua
index fc380b9aa..5af5e345b 100755
--- a/server/Spells/Scout/Predator/Ranger/CripplingArrow.lua
+++ b/server/Spells/Scout/Predator/Ranger/CripplingArrow.lua
@@ -19,11 +19,21 @@ end
function cast(Caster, Target, MinVal, MaxVal, SkillAmt)
-- Inflicts 175 - 293 ranged damage on target
- if MaxVal ~= nil and MinVal < MaxVal then
- SpellDamage(Target, 0, math.random(MinVal, MaxVal))
- else
- SpellDamage(Target, 0, MinVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 20
+ Mastery = SpellLevel + 10
+ StatBonus = GetAgi(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus * 2.5) + MaxVal
+ MinDmg = math.floor(DmgBonus * 2.5) + MaxVal
+
+ SpellDamage(Target, 0, MinDmg, MaxDmg)
-- Decreases Deflection and Parry of target by 10.8
AddSkillBonus(Target, GetSkillIDByName("Deflection"), SkillAmt)
diff --git a/server/Spells/Scout/Predator/Ranger/Ensnare.lua b/server/Spells/Scout/Predator/Ranger/Ensnare.lua
index f4e2792fa..44f616549 100755
--- a/server/Spells/Scout/Predator/Ranger/Ensnare.lua
+++ b/server/Spells/Scout/Predator/Ranger/Ensnare.lua
@@ -14,10 +14,11 @@ function cast(Caster, Target, Mit, Snare)
-- Slows target by 28.3%
-- 5% chance to dispel when target receives hostile action
-- 5% chance to dispel when target takes damage
- local Slow = 100.0 - Snare
- SetSpeedMultiplier(Target, Slow)
+ Slow = 1.0 - Snare
+ SetSpellSnareValue(Slow)
+ AddControlEffect(11)
end
function remove(Caster, Target)
- SetSpeedMultiplier(Target, 1)
+ RemoveControlEffect(11)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/Predator/Ranger/RearShot.lua b/server/Spells/Scout/Predator/Ranger/RearShot.lua
index 76f0edb9f..d4d597411 100755
--- a/server/Spells/Scout/Predator/Ranger/RearShot.lua
+++ b/server/Spells/Scout/Predator/Ranger/RearShot.lua
@@ -35,7 +35,7 @@ function cast(Caster, Target, Snare, MinVal, MaxVal)
-- Slows target by 27.4%
-- 5% chance to dispel when target receives hostile action
-- 5% chance to dispel when target takes damage
- local slow = 100.0 - snare
+ local slow = 100.0 - Snare
SetSpeedMultiplier(Target, slow)
AddSpellTimer(24000, "RemoveSnare")
end
diff --git a/server/Spells/Scout/Predator/ShadowBlade.lua b/server/Spells/Scout/Predator/ShadowBlade.lua
new file mode 100755
index 000000000..2dcd585bc
--- /dev/null
+++ b/server/Spells/Scout/Predator/ShadowBlade.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : Spells/Scout/Predator/ShadowBlade.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.27 04:03:47
+ Script Purpose :
+ :
+--]]
+
+--[[ Info from spell_display_effects (remove from script when done)
+
+*Inflicts 82 - 137 melee damage on target
+*You must be sneaking to use this ability.
+*Must be flanking or behind
+
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if not IsStealthed(Caster) then
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+ end
+
+if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+end
+
+return true
+
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Scout/Predator/ShroudedStrike.lua b/server/Spells/Scout/Predator/ShroudedStrike.lua
new file mode 100755
index 000000000..a956c5d8f
--- /dev/null
+++ b/server/Spells/Scout/Predator/ShroudedStrike.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Scout/Predator/ShroudedStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.31 07:03:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster,Target)
+ if not IsFlanking(Caster, Target) and not IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MaxVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ CastSpell(Caster, 2550398, 1)
+
+
+
+end
diff --git a/server/Spells/Scout/Predator/Stalk.lua b/server/Spells/Scout/Predator/Stalk.lua
index d51dc13ec..77bfcde64 100755
--- a/server/Spells/Scout/Predator/Stalk.lua
+++ b/server/Spells/Scout/Predator/Stalk.lua
@@ -11,9 +11,11 @@
-- Suspends caster's movement speed enhancements
function cast(Caster, Target, HateLow, HateHigh)
AddHate(Caster, Target, math.random(HateLow, HateHigh), 1)
- Stealth(1, Caster)
+
+ Stealth(1, Caster)
end
+
function remove(Caster, Target)
- RemoveStealth()
-end
\ No newline at end of file
+ RemoveStealth(Caster)
+end
diff --git a/server/Spells/Scout/Predator/SurvivalInstincts.lua b/server/Spells/Scout/Predator/SurvivalInstincts.lua
index c16d96023..63ca2ad02 100755
--- a/server/Spells/Scout/Predator/SurvivalInstincts.lua
+++ b/server/Spells/Scout/Predator/SurvivalInstincts.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Predator/SurvivalInstincts.lua
- Script Author : neatz09
- Script Date : 2020.11.04 12:11:49
+ Script Author : LordPazuzu
+ Script Date : 3/31/2023
Script Purpose :
:
--]]
@@ -11,16 +11,14 @@
-- Increases Parry of caster by 7.3
-- Increases Defense of caster by 9.7
-function cast(Caster, Target, Agi, OffSkillz, Par, Def)
- AddSpellBonus(Target, 2, Agi)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkillz)
- AddSkillBonus(Target, GetSkillIDByName("Parry"), Par)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
+function cast(Caster, Target,Parry, Defense, Haste)
+
+ AddSkillBonus(Caster, GetSkillIDByName("Parry"), Parry)
+ AddSkillBonus(Caster, GetSkillIDByName("Defense"), Defense)
+ AddSpellBonus(Caster, 617, Haste)
end
function remove(Caster, Target)
- RemoveSpellBonus(Target)
- RemoveSkillBonus(Target)
+ RemoveSkillBonus(Caster)
+ RemoveSpellBonus(Caster)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/QuickStrike.lua b/server/Spells/Scout/QuickStrike.lua
index 4f52c2a0f..b43b6b897 100755
--- a/server/Spells/Scout/QuickStrike.lua
+++ b/server/Spells/Scout/QuickStrike.lua
@@ -1,13 +1,26 @@
--[[
Script Name : Spells/Scout/QuickStrike.lua
- Script Author : neatz09
- Script Date : 2020.01.02 04:01:39
+ Script Author : LordPazuzu
+ Script Date : 12/8/2022
Script Purpose :
:
--]]
--- Inflicts 6 - 10 melee damage on target
-
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end
\ No newline at end of file
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Scout/Rogue/Backstab.lua b/server/Spells/Scout/Rogue/Backstab.lua
index 4b0ef64d7..927930f6e 100755
--- a/server/Spells/Scout/Rogue/Backstab.lua
+++ b/server/Spells/Scout/Rogue/Backstab.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Rogue/Backstab.lua
- Script Author : neatz09
- Script Date : 2020.11.10 11:11:16
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
@@ -10,16 +10,30 @@
-- Decreases AGI of target by 7.2
-- Must be flanking or behind
-function precast(Caster, Target)
- if not IsFlanking(Caster, Target) then
- SendMessage(Caster, "Must be flanking or behind", "yellow")
- return false
+function precast(Caster,Target)
+ if not IsFlanking(Caster, Target) and not IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
end
return true
end
function cast(Caster, Target, DmgType, MinVal, MaxVal, Agi)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
AddSpellBonus(Target, 2, Agi)
end
diff --git a/server/Spells/Scout/Rogue/Bludgeon.lua b/server/Spells/Scout/Rogue/Bludgeon.lua
index 308b04fa6..47895640f 100755
--- a/server/Spells/Scout/Rogue/Bludgeon.lua
+++ b/server/Spells/Scout/Rogue/Bludgeon.lua
@@ -1,19 +1,31 @@
--[[
Script Name : Spells/Scout/Rogue/Bludgeon.lua
- Script Author : neatz09
- Script Date : 2020.11.10 11:11:32
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
--- Inflicts 27 - 46 crushing damage on target
--- Decreases Haste of target by 10.3
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if not IsEpic(Target) then
+ CastSpell(Target, 5001, GetSpellTier())
+ end
+
-function cast(Caster, Target, DmgType, MinVal, MaxVal, Haste)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
- AddSpellBonus(Target, 617, Haste)
end
-
-function remove(Caster, Target)
- RemoveSpellBonus(Target)
-end
\ No newline at end of file
diff --git a/server/Spells/Scout/Rogue/CircularStrike.lua b/server/Spells/Scout/Rogue/CircularStrike.lua
index b80aef22c..16637d7c0 100755
--- a/server/Spells/Scout/Rogue/CircularStrike.lua
+++ b/server/Spells/Scout/Rogue/CircularStrike.lua
@@ -1,7 +1,7 @@
--[[
Script Name : Spells/Scout/Rogue/CircularStrike.lua
- Script Author : neatz09
- Script Date : 2019.10.06 09:10:09
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
@@ -10,7 +10,21 @@
-- Inflicts 38 - 64 melee damage on targets in Area of Effect
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 6
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
if LastSpellAttackHit() then
Interrupt(Caster, Target)
end
diff --git a/server/Spells/Scout/Rogue/DaringAdvance.lua b/server/Spells/Scout/Rogue/DaringAdvance.lua
index fc684c006..6f0ea4ccf 100755
--- a/server/Spells/Scout/Rogue/DaringAdvance.lua
+++ b/server/Spells/Scout/Rogue/DaringAdvance.lua
@@ -1,13 +1,13 @@
--[[
Script Name : Spells/Scout/Rogue/DaringAdvance.lua
- Script Author : Jabantiz
- Script Date : 2013.12.16 03:12:33
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
function cast(Caster, Target, DefAmt, SkillAmt, DmgType, DmgAmt)
- Say(Caster, "Fervor not Implemented")
+
-- Decreases Defense of caster by 3.9
AddSkillBonus(Target, GetSkillIDByName("Defense"), DefAmt)
@@ -23,11 +23,21 @@ function cast(Caster, Target, DefAmt, SkillAmt, DmgType, DmgAmt)
end
function proc(Caster, Target, Type, DefAmt, SkillAmt, DmgType, DmgAmt)
- -- On a melee hit this spell may cast Interrupt on target of attack. Triggers about 6.0 times per minute.
- -- Inflicts 19 melee damage on target
- -- Interrupts target
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus *2 + StatBonus
+ TotalDmg = DmgAmt + math.floor(DmgBonus)
+
if Type == 3 then
- ProcDamage(Caster, Target, "Interrupt", DmgType, DmgAmt)
+ ProcDamage(Caster, Target, "Interrupt", DmgType, TotalDmg)
Interrupt(Caster, Target)
end
end
diff --git a/server/Spells/Scout/Rogue/DistractingBlade.lua b/server/Spells/Scout/Rogue/DistractingBlade.lua
index 963b985a2..13e882ee7 100755
--- a/server/Spells/Scout/Rogue/DistractingBlade.lua
+++ b/server/Spells/Scout/Rogue/DistractingBlade.lua
@@ -1,24 +1,38 @@
--[[
Script Name : Spells/Scout/Rogue/DistractingBlade.lua
- Script Author : neatz09
- Script Date : 2020.11.10 11:11:34
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
--- Interrupts target
--- Inflicts 52 - 87 melee damage on target
--- Must be flanking or behind
-function precast(Caster, Target)
- if not IsFlanking(Target, Caster) then
- SendMessage(Caster, "Must be flanking or behind", "yellow")
- return false
+function precast(Caster,Target)
+ if not IsFlanking(Caster, Target) and not IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
end
return true
end
function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 19
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
Interrupt(Caster, Target)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end
\ No newline at end of file
+end
+
+
+
diff --git a/server/Spells/Scout/Rogue/FancyFootwork.lua b/server/Spells/Scout/Rogue/FancyFootwork.lua
index 6c23594f3..c27cbbc7d 100755
--- a/server/Spells/Scout/Rogue/FancyFootwork.lua
+++ b/server/Spells/Scout/Rogue/FancyFootwork.lua
@@ -1,25 +1,28 @@
--[[
Script Name : Spells/Scout/Rogue/FancyFootwork.lua
- Script Author : neatz09
- Script Date : 2020.11.10 11:11:26
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
--- Decreases Slashing, Piercing and Crushing of caster by 13.8
--- Increases Defense and Parry of caster by 4.9
--- Increases the caster's effectiveness of worn armor vs physical damage by 10%
-function cast(Caster, Target, OffSkills, DefSkills, Armor)
- AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkills)
- AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkills)
- AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkills)
- AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
- AddSkillBonus(Target, GetSkillIDByName("Parry"), DefSkills)
- AddSpellBonus(Target, 678, Armor)
+
+function cast(Caster, Target, Parry)
+ Level = GetLevel(Caster)
+ SpellLevel = 18
+ Mastery = SpellLevel + 4
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ ParryMod = LvlBonus + Parry
+
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), ParryMod)
end
function remove(Caster, Target)
RemoveSkillBonus(Target)
- RemoveSpellBonus(Target)
end
\ No newline at end of file
diff --git a/server/Spells/Scout/Rogue/Gouge.lua b/server/Spells/Scout/Rogue/Gouge.lua
new file mode 100755
index 000000000..715b14254
--- /dev/null
+++ b/server/Spells/Scout/Rogue/Gouge.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Gouge.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.04 12:01:52
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster,Target)
+ if IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be in front or flanking.", "yellow")
+ return false
+ end
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Parry)
+ Level = GetLevel(Caster)
+ SpellLevel = 15
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), Parry)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
+
+
diff --git a/server/Spells/Scout/Rogue/QuickFlurry.lua b/server/Spells/Scout/Rogue/QuickFlurry.lua
index 0a195e0f5..3ea3ea045 100755
--- a/server/Spells/Scout/Rogue/QuickFlurry.lua
+++ b/server/Spells/Scout/Rogue/QuickFlurry.lua
@@ -1,17 +1,32 @@
--[[
Script Name : Spells/Scout/Rogue/QuickFlurry.lua
- Script Author : neatz09
- Script Date : 2019.12.14 03:12:44
+ Script Author : LordPazuzu
+ Script Date : 1/3/2023
Script Purpose :
:
--]]
-- Inflicts 24 - 40 melee damage on target
function cast(Caster, Target, DmgType, MinVal, MaxVal)
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 12
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
-- Inflicts 24 - 40 melee damage on target
if LastSpellAttackHit() then
-SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
end
diff --git a/server/Spells/Scout/Rogue/SelfPreservation.lua b/server/Spells/Scout/Rogue/SelfPreservation.lua
new file mode 100755
index 000000000..89dc5e7a0
--- /dev/null
+++ b/server/Spells/Scout/Rogue/SelfPreservation.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Rogue/SelfPreservation.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.04 01:01:45
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Hate)
+ AddProc(Caster, 1, 30)
+end
+
+function proc(Caster, Target, Type, Hate)
+ Level = GetLevel(Caster)
+ SpellLevel = 17
+ Mastery = SpellLevel + 10
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ HateMod = LvlBonus *2 + Hate
+ Spell = GetSpell(2550383, GetSpellTier())
+
+ if Type == 1 then
+ SetSpellDataIndex(Spell, 0, HateMod)
+ CastCustomSpell(Spell, Caster, Target)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
+
diff --git a/server/Spells/Scout/Rogue/Sneak.lua b/server/Spells/Scout/Rogue/Sneak.lua
index 78531bb2e..e848211ea 100755
--- a/server/Spells/Scout/Rogue/Sneak.lua
+++ b/server/Spells/Scout/Rogue/Sneak.lua
@@ -12,10 +12,10 @@
function cast(Caster, Target)
Stealth(1)
- AddSpellBonus(Target, 633, 1)
+ --AddSpellBonus(Target, 633, 1)
end
function remove(Caster, Target)
RemoveStealth()
- RemoveSpellBonus(Target)
+ --RemoveSpellBonus(Target)
end
diff --git a/server/Spells/Scout/Rogue/StranglingShot.lua b/server/Spells/Scout/Rogue/StranglingShot.lua
new file mode 100755
index 000000000..7ef871194
--- /dev/null
+++ b/server/Spells/Scout/Rogue/StranglingShot.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Scout/Rogue/StranglingShot.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.01.04 01:01:55
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, MinVal, MaxVal, MinPow, MaxPow)
+ Level = GetLevel(Caster)
+ SpellLevel = 16
+ Mastery = SpellLevel + 10
+ StatBonus = GetAgi(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = math.floor(DmgBonus) * 2 + MaxVal
+ MinDmg = math.floor(DmgBonus) * 2 + MinVal
+
+ SpellDamage(Target, 2, MinDmg, MaxDmg)
+ SpellHeal(Target, "Power", MinPow, MaxPow)
+
+end
+
+
diff --git a/server/Spells/Scout/Rogue/StreetSmarts.lua b/server/Spells/Scout/Rogue/StreetSmarts.lua
index db29d6d6e..86564d4a6 100755
--- a/server/Spells/Scout/Rogue/StreetSmarts.lua
+++ b/server/Spells/Scout/Rogue/StreetSmarts.lua
@@ -10,8 +10,19 @@
-- Increases STR of caster by 15.0
function cast(Caster, Target, Agi, Str)
- AddSpellBonus(Target, 2, Agi)
- AddSpellBonus(Target, 0, Str)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 6
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ StatMod = LvlBonus * 0.5
+ AgiMod = Agi + StatMod
+ StrMod = Str + StatMod
+ AddSpellBonus(Caster, 2, AgiMod)
+ AddSpellBonus(Caster, 0, StrMod)
end
diff --git a/server/Spells/Scout/SneakAttack.lua b/server/Spells/Scout/SneakAttack.lua
index b11a030ec..099296fce 100755
--- a/server/Spells/Scout/SneakAttack.lua
+++ b/server/Spells/Scout/SneakAttack.lua
@@ -1,13 +1,11 @@
--[[
Script Name : Spells/Scout/SneakAttack.lua
- Script Author : neatz09
- Script Date : 2020.11.06 07:11:46
+ Script Author : LordPazuzu
+ Script Date : 12/8/2022
Script Purpose :
:
--]]
--- Inflicts 14 - 24 melee damage on target
--- Must be flanking or behind
function precast(Caster,Target)
if not IsFlanking(Caster, Target) and not IsBehind(Caster, Target) then
@@ -17,6 +15,20 @@ function precast(Caster,Target)
return true
end
-function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end
\ No newline at end of file
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SpellLevel)
+ Level = GetLevel(Caster)
+ Mastery = SpellLevel + 10
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Spells-Copy/AbilityAptitude.lua b/server/Spells/Spells-Copy/AbilityAptitude.lua
new file mode 100755
index 000000000..286aeddb9
--- /dev/null
+++ b/server/Spells/Spells-Copy/AbilityAptitude.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/AbilityAptitude.lua
+ Script Author : neatz09
+ Script Date : 2020.03.21 02:03:21
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Ability Mod of caster by 10.4
diff --git a/server/Spells/Spells-Copy/AbsoluteZero.lua b/server/Spells/Spells-Copy/AbsoluteZero.lua
new file mode 100755
index 000000000..e5eddce56
--- /dev/null
+++ b/server/Spells/Spells-Copy/AbsoluteZero.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/AbsoluteZero.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 01:10:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Improves the duration of Chilling Armor by 1 seconds
diff --git a/server/Spells/Spells-Copy/Accelerando.lua b/server/Spells/Spells-Copy/Accelerando.lua
new file mode 100755
index 000000000..60361082a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Accelerando.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Accelerando.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 02:10:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Ability Reuse Speed of caster by 0.5%
+-- Increases Ability Casting Speed of caster by 1.5%
diff --git a/server/Spells/Spells-Copy/Adaptable.lua b/server/Spells/Spells-Copy/Adaptable.lua
new file mode 100755
index 000000000..2fe5dc603
--- /dev/null
+++ b/server/Spells/Spells-Copy/Adaptable.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Adaptable.lua
+ Script Author : neatz09
+ Script Date : 2019.04.18 03:04:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Mitigation of caster vs elemental damage by 0
diff --git a/server/Spells/Spells-Copy/AgileMovements.lua b/server/Spells/Spells-Copy/AgileMovements.lua
new file mode 100755
index 000000000..240541fa8
--- /dev/null
+++ b/server/Spells/Spells-Copy/AgileMovements.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/AgileMovements.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 01:10:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases AGI of caster by 2.5
diff --git a/server/Spells/Spells-Copy/AllyRevivification.lua b/server/Spells/Spells-Copy/AllyRevivification.lua
new file mode 100755
index 000000000..8e4564150
--- /dev/null
+++ b/server/Spells/Spells-Copy/AllyRevivification.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/AllyRevivification.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 03:10:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Improves the reuse speed of in combat resurrection spells by 12 seconds.
diff --git a/server/Spells/Spells-Copy/AuraofLeadership.lua b/server/Spells/Spells-Copy/AuraofLeadership.lua
new file mode 100755
index 000000000..e7645946c
--- /dev/null
+++ b/server/Spells/Spells-Copy/AuraofLeadership.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/AuraofLeadership.lua
+ Script Author : John Adams
+ Script Date : 2013.11.25 05:11:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) against 0 points of all damage
+
+function cast(Caster, Target, WardAmt)
+ AddWard(WardAmt)
+end
diff --git a/server/Spells/Spells-Copy/BindWound.lua b/server/Spells/Spells-Copy/BindWound.lua
new file mode 100755
index 000000000..f0d87afb5
--- /dev/null
+++ b/server/Spells/Spells-Copy/BindWound.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/BindWound.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 03:10:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals caster for 100.0% of max health
+-- This effect cannot be critically applied.
+-- On a melee hit this spell will cast Invigorated on target. Lasts for 20.0 seconds.
+-- Combat arts deal 10% additional damage.
+-- Grants a total of 1 trigger of the spell.
+-- This effect cannot be cast during combat
diff --git a/server/Spells/Spells-Copy/CallServant.lua b/server/Spells/Spells-Copy/CallServant.lua
new file mode 100755
index 000000000..8326d3ab6
--- /dev/null
+++ b/server/Spells/Spells-Copy/CallServant.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/CallServant.lua
+ Script Author : neatz09
+ Script Date : 2020.05.17 10:05:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Teleports target to caster
diff --git a/server/Spells/Spells-Copy/Commoner/ABasicFirework.lua b/server/Spells/Spells-Copy/Commoner/ABasicFirework.lua
new file mode 100755
index 000000000..1f28db2bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ABasicFirework.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : ItemScripts/Snowball.lua
+ Script Author : neatz09
+ Script Date : 2019.08.18 09:08:57
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Basic Firework when Activated. Lasts for 3.0 seconds.
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/AFancyFirework.lua b/server/Spells/Spells-Copy/Commoner/AFancyFirework.lua
new file mode 100755
index 000000000..9d92ad323
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AFancyFirework.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/AFancyFirework.lua
+ Script Author : neatz09
+ Script Date : 2019.08.18 09:08:59
+ Script Purpose :
+ :
+--]]
+
+-- Applies Basic Firework when Activated. Lasts for 3.0 seconds.
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/AbyssalCarpet.lua b/server/Spells/Spells-Copy/Commoner/AbyssalCarpet.lua
new file mode 100755
index 000000000..95b90890c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AbyssalCarpet.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/AbyssalCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.23 07:03:37
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, HP, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 10173)
+
+
+-- Increases Potency of caster by 1.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Max Health of caster by 200.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 200.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/AncientCrucible.lua b/server/Spells/Spells-Copy/Commoner/AncientCrucible.lua
new file mode 100755
index 000000000..c0009fd89
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AncientCrucible.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Commoner/AncientCrucible.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 08:04:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealMin, HealMax, PowerMin, PowerMax)
+local Val1 = (GetLevel(Caster) * 1.08) * HealMin
+local Val2 = (GetLevel(Caster) * 1.08) * HealMax
+local Val3 = (GetLevel(Caster) * 1.08) * PowerMin
+local Val4 = (GetLevel(Caster) * 1.08) * PowerMax
+local HealAmt = randomFloat(Val1, Val2)
+local PowerAmt = randomFloat2(Val3, Val4)
+
+SpellHeal("Heal", HealAmt)
+SpellHeal("Power", PowerAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function randomFloat2(Val3, Val4)
+ return Val3 + math.random() * (Val4 - Val3);
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/AncientWrath.lua b/server/Spells/Spells-Copy/Commoner/AncientWrath.lua
new file mode 100755
index 000000000..a4f945704
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AncientWrath.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/AncientWrath.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 01:04:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+ Say(Caster, "Unsure if there is a stun or not.")
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Apinksaddledwhitetigercollar.lua b/server/Spells/Spells-Copy/Commoner/Apinksaddledwhitetigercollar.lua
new file mode 100755
index 000000000..8f03cb4c6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Apinksaddledwhitetigercollar.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/Apinksaddledwhitetigercollar.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.10 07:05:23
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 16130)
+Say(Caster, "Incorrect Model")
+
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/AppaloosaPackHorse.lua b/server/Spells/Spells-Copy/Commoner/AppaloosaPackHorse.lua
new file mode 100755
index 000000000..3f58729ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AppaloosaPackHorse.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/AppaloosaPackHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.24 08:03:59
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9031)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Fishing, Trapping, Mining, Foresting, Gathering and Transmuting of caster by 14.3
+ AddSkillBonus(Caster, GetSkillIDByName("Fishing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Trapping"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Mining"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Foresting"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Gathering"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Transmuting"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Arcane Enlightenment.lua b/server/Spells/Spells-Copy/Commoner/Arcane Enlightenment.lua
new file mode 100755
index 000000000..8ae2b4816
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Arcane Enlightenment.lua
@@ -0,0 +1,9 @@
+--[[
+ Script Name : Spells/Commoner/Arcane Enlightenment.lua
+ Script Author : neatz09
+ Script Date : 2020.03.22 08:03:09
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
diff --git a/server/Spells/Spells-Copy/Commoner/ArcaneAegis.lua b/server/Spells/Spells-Copy/Commoner/ArcaneAegis.lua
new file mode 100755
index 000000000..b42c414b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArcaneAegis.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Commoner/ArcaneAegis.lua
+ Script Author : neatz09
+ Script Date : 2020.04.09 09:04:09
+ Script Purpose :
+ :
+--]]
+
+-- Increases Mitigation of group (AE) vs Physical and Arcane damage by x - y based on Clevel
+
+function cast(Caster, Target, MinVal, MaxVal)
+ local Val1 = (GetLevel(Caster) * 1.08) * MinVal
+ local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
+ local MitAmt = randomFloat(Val1, Val2)
+ AddSpellBonus(Target, 200, MitAmt)
+ AddSpellBonus(Target, 203, MitAMt)
+
+
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/ArcaneChalice.lua b/server/Spells/Spells-Copy/Commoner/ArcaneChalice.lua
new file mode 100755
index 000000000..f2a17e236
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArcaneChalice.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/ArcaneChalice.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 08:04:01
+ Script Purpose :
+ :
+--]]
+
+-- Increase Power of Group Member by x - y based on Clevel
+
+function cast(Caster, Target, MinVal, MaxVal)
+local Val1 = (GetLevel(Caster) * 1.08) * MinVal
+local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
+local PwrAmt = randomFloat(Val1, Val2)
+SpellHeal("Power", PwrAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ArcaneEnlightenment.lua b/server/Spells/Spells-Copy/Commoner/ArcaneEnlightenment.lua
new file mode 100755
index 000000000..51a01344a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArcaneEnlightenment.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/ArcaneEnlightenment.lua
+ Script Author : neatz09
+ Script Date : 2020.03.30 08:03:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases power of caster by 20.0%
+-- When Damage is received this spell has a 50% chance to cast Enlightenment on caster. Lasts for 1 minute 30 seconds.
+-- Increases power of caster by 40.0%
+-- This effect cannot be critically apllied.
+-- Grants 8 triggers of the spell.
+
+function cast(Caster, Target, Power, Triggers)
+ AddSpellBonus(Target, 620, Power)
+AddProc(Caster, 15, 50)
+SetSpellTriggerCount(Triggers, 1)
+end
+
+function proc(Caster, Target, Type, Power, Triggers)
+CastSpell(Caster, 22, 1)
+RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+RemoveSpellBonus(Target)
+RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ArcaneFury.lua b/server/Spells/Spells-Copy/Commoner/ArcaneFury.lua
new file mode 100755
index 000000000..20bc2c686
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArcaneFury.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/ArcaneFury.lua
+ Script Author : neatz09
+ Script Date : 2020.03.21 04:03:57
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts magic damage on target.
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/ArcaneStorm.lua b/server/Spells/Spells-Copy/Commoner/ArcaneStorm.lua
new file mode 100755
index 000000000..15734c7fb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArcaneStorm.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/ArcaneStorm.lua
+ Script Author : neatz09
+ Script Date : 2020.03.28 07:03:42
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ArcaneTrickery.lua b/server/Spells/Spells-Copy/Commoner/ArcaneTrickery.lua
new file mode 100755
index 000000000..5a3a6ce52
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArcaneTrickery.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/ArcaneTrickery.lua
+ Script Author : neatz09
+ Script Date : 2020.03.22 05:03:34
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MitMin, MitMax)
+ local Val1 = (GetLevel(Caster) * 1.08) * MitMin
+ local Val2 = (GetLevel(Caster) * 1.08) * MitMax
+ local MitAmt = randomFloat(Val1, Val2)
+ SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+ AddSpellBonus(Caster, 200, MitAmt)
+ AddSpellBonus(Caster, 203, MitAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ArchaicRuin.lua b/server/Spells/Spells-Copy/Commoner/ArchaicRuin.lua
new file mode 100755
index 000000000..b9dcf6e2f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArchaicRuin.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Commoner/ArchaicRuin.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 01:04:36
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MitMin, MitMax)
+ local Val1 = (GetLevel(Caster) * 1.08) * MitMin
+ local Val2 = (GetLevel(Caster) * 1.08) * MitMax
+ local MitAmt = randomFloat(Val1, Val2)
+
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+ AddSpellBonus(Target, 200, MitAmt)
+ AddSpellBonus(Target, 203, MitAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ArdentChallenge.lua b/server/Spells/Spells-Copy/Commoner/ArdentChallenge.lua
new file mode 100755
index 000000000..a74355cb5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArdentChallenge.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Commoner/ArdentChallenge.lua
+ Script Author : neatz09
+ Script Date : 2020.04.02 12:04:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ local Val1 = (GetLevel(Caster) * 1.08) * MinVal
+ local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
+ local StatAmt = randomFloat(Val1, Val2)
+ AddSpellBonus(Target, 0, StatAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ArmoredHighlandStalkerwhistle.lua b/server/Spells/Spells-Copy/Commoner/ArmoredHighlandStalkerwhistle.lua
new file mode 100755
index 000000000..412d4b3a5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArmoredHighlandStalkerwhistle.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Commoner/ArmoredHighlandStalkerwhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.24 08:03:35
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+--Summons a mount to ride
+SetMount(Caster, 12343)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ArmoredPinto.lua b/server/Spells/Spells-Copy/Commoner/ArmoredPinto.lua
new file mode 100755
index 000000000..f25b602b5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ArmoredPinto.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/ArmoredPinto.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.24 09:03:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, XP, Speed)
+--Summons a mount to ride
+SetMount(Caster, 9970)
+
+-- Increase Combat XP Gain of target by 10%
+AddSpellBonus(Caster, 625, XP)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/AwakenedDrakota.lua b/server/Spells/Spells-Copy/Commoner/AwakenedDrakota.lua
new file mode 100755
index 000000000..25b44f99b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AwakenedDrakota.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/AwakenedDrakota.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.11 07:03:20
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 17132)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 6.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 6.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 20.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 600.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 600.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/AzureSkystrider.lua b/server/Spells/Spells-Copy/Commoner/AzureSkystrider.lua
new file mode 100755
index 000000000..64474a307
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/AzureSkystrider.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/AzureSkystrider.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.03 06:03:59
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15857)
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BastionofTruthsDisc.lua b/server/Spells/Spells-Copy/Commoner/BastionofTruthsDisc.lua
new file mode 100755
index 000000000..ee52da5de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BastionofTruthsDisc.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/BastionofTruthsDisc.lua
+ Script Author : neatz09
+ Script Date : 2019.11.19 07:11:16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, MP, Speed, Crit, Cast)
+-- Summons a mount to ride
+SetMount(Caster, 10985)
+ AddControlEffect(Caster, 13)
+-- Increases Max Health of caster by 200.
+ AddSpellBonus(Caster, 606, HP)
+-- Increases Max Power by 200.0
+ AddSpellBonus(Caster, 619, MP)
+-- increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+-- Increases Crit Chance by 2.0%
+ AddSpellBonus(Caster, 654, Crit)
+-- Increases Ability Casting Speed by 2.0%
+ AddSpellBonus(Caster, 664, Cast)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/BattlehardenedFightingWarg.lua b/server/Spells/Spells-Copy/Commoner/BattlehardenedFightingWarg.lua
new file mode 100755
index 000000000..272762a4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BattlehardenedFightingWarg.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/BattlehardenedFightingWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.25 04:03:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 12987)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0%
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BattlehardenedFireWarg.lua b/server/Spells/Spells-Copy/Commoner/BattlehardenedFireWarg.lua
new file mode 100755
index 000000000..f9530288e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BattlehardenedFireWarg.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/BattlehardenedFireWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.05 06:02:02
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14055)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/BeardedFrostRhino.lua b/server/Spells/Spells-Copy/Commoner/BeardedFrostRhino.lua
new file mode 100755
index 000000000..2e69b536c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BeardedFrostRhino.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/BeardedFrostRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.25 05:03:32
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 13320)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0%
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Berserk.lua b/server/Spells/Spells-Copy/Commoner/Berserk.lua
new file mode 100755
index 000000000..148abffe9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Berserk.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/Berserk.lua
+ Script Author : neatz09
+ Script Date : 2020.02.28 09:02:21
+ Script Purpose :
+ :
+--]]
+
+
+-- Increases Haste of target by 8.6
+-- Increases DPS of target by 8.6
+
+function cast(Caster, Target, Buff)
+ AddSpellBonus(Target, 617, Buff)
+AddSpellBonus(Target, 629, Buff)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BerylliumArmoredRhinoPinkSaddle.lua b/server/Spells/Spells-Copy/Commoner/BerylliumArmoredRhinoPinkSaddle.lua
new file mode 100755
index 000000000..2b7908c27
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BerylliumArmoredRhinoPinkSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BerylliumArmoredRhinoPinkSaddle.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 10:11:46
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Speed, Def, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 255, 20, 147, 219, 112, 147)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+-- Increases Slashing, Piercing, Ranged, Crushing and Focus of caster by 7.0
+AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BetaCarpet.lua b/server/Spells/Spells-Copy/Commoner/BetaCarpet.lua
new file mode 100755
index 000000000..d01f3ff01
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BetaCarpet.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/BetaCarpet.lua
+ Script Purpose : Spawns mounts of {model_id}, {color} and {speed}
+ Script Author : John Adams / LethalEncounter
+ Script Date : 2009.03.28
+ Script Notes : JA: Color and Speed params are optional?
+--]]
+
+function cast(Caster, Target, MountID, MountRed, MountGreen, MountBlue, SaddleRed, SaddleGreen, SaddleBlue, MountSpeed)
+
+ if MountID ~= nil then
+ SetMount(Caster, MountID)
+ if MountRed ~= nil then
+ SetMountColor(Caster, MountRed, MountGreen, MountBlue, SaddleRed, SaddleGreen, SaddleBlue)
+ end
+ if MountSpeed ~= nil then
+ SetSpeed(Caster, MountSpeed)
+ end
+ end -- missing me
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+ SetSpeed(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BetaDamage.lua b/server/Spells/Spells-Copy/Commoner/BetaDamage.lua
new file mode 100755
index 000000000..28735c6fc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BetaDamage.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Spells/Commoner/BetaDamage.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BetaGriffon.lua b/server/Spells/Spells-Copy/Commoner/BetaGriffon.lua
new file mode 100755
index 000000000..1308a853b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BetaGriffon.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/BetaGriffon.lua
+ Script Author : John Adams
+ Script Date : 2010.03.31 05:03:52
+ Script Notes :
+ :
+--]]
+
+function cast(Caster, Target, MountID, MountRed, MountGreen, MountBlue, SaddleRed, SaddleGreen, SaddleBlue, MountSpeed)
+
+ if MountID ~= nil then
+ SetMount(Caster, MountID)
+ if MountRed ~= nil then
+ SetMountColor(Caster, MountRed, MountGreen, MountBlue, SaddleRed, SaddleGreen, SaddleBlue)
+ end
+ if MountSpeed ~= nil then
+ SetSpeed(Caster, MountSpeed)
+ end
+ end -- missing me
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+ SetSpeed(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BetaHeal.lua b/server/Spells/Spells-Copy/Commoner/BetaHeal.lua
new file mode 100755
index 000000000..308fcbc44
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BetaHeal.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/BetaHeal.lua
+ Script Purpose : Fast / High healing for Beta testers
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note : This heal has an instand heal + HoT
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal, EffectType, EffectMinVal, EffectMaxVal)
+ if HealType == "complete" then
+ ModifyHP(Target, GetMaxHP(Target))
+ else
+ if HealMaxVal ~= nil and HealMinVal < HealMaxVal then
+ ModifyHP(Target, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Target, HealMinVal)
+ end
+ end
+ if EffectType ~= nil then
+ if EffectType == "hot" then
+ if EffectMaxVal ~= nil and EffectMinVal < EffectMaxVal then
+ ModifyHP(Target, math.random(EffectMinVal, EffectMaxVal))
+ else
+ ModifyHP(Target, EffectMinVal)
+ end
+ end
+ end
+end
+
+function tick(Caster, Target, HealType, HealMinVal, HealMaxVal, EffectType, EffectMinVal, EffectMaxVal)
+ if EffectType ~= nil then
+ if EffectType == "hot" then
+ if EffectMaxVal ~= nil and EffectMinVal < EffectMaxVal then
+ ModifyHP(Target, math.random(EffectMinVal, EffectMaxVal))
+ else
+ ModifyHP(Target, EffectMinVal)
+ end
+ end
+ end
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BetaMount.lua b/server/Spells/Spells-Copy/Commoner/BetaMount.lua
new file mode 100755
index 000000000..31a479178
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BetaMount.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/BetaMount.lua
+ Script Purpose : Spawns mounts of {model_id}, {color} and {speed}
+ Script Author : John Adams / LethalEncounter
+ Script Date : 2009.03.28
+ Script Notes : JA: Color and Speed params are optional?
+--]]
+
+function cast(Caster, Target, MountID, MountRed, MountGreen, MountBlue, SaddleRed, SaddleGreen, SaddleBlue, MountSpeed)
+
+ if MountID ~= nil then
+ SetMount(Caster, MountID)
+ if MountRed ~= nil then
+ SetMountColor(Caster, MountRed, MountGreen, MountBlue, SaddleRed, SaddleGreen, SaddleBlue)
+ end
+ if MountSpeed ~= nil then
+ SetSpeed(Caster, MountSpeed)
+ end
+ end -- missing me
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+ SetSpeed(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BindWound.lua b/server/Spells/Spells-Copy/Commoner/BindWound.lua
new file mode 100755
index 000000000..84c28df20
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BindWound.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/BindWound.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 03:10:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals caster for 25.0% of max health
+-- This effect cannot be critically applied.
+-- This effect cannot be cast during combat
+-- Must not be engaged in combat
diff --git a/server/Spells/Spells-Copy/Commoner/Bjorn.lua b/server/Spells/Spells-Copy/Commoner/Bjorn.lua
new file mode 100755
index 000000000..aa2bfc808
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Bjorn.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/Bjorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.25 05:03:01
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Bonus, Chance, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 9741)
+
+-- Increases Crit Bonus of caster by 1.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 3.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+--Increases Max Power of caster by 200.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackNightmarePurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackNightmarePurpleSaddle.lua
new file mode 100755
index 000000000..6f08c2e9f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackNightmarePurpleSaddle.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/BlackNightmarePurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.25 06:03:47
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, HP, Mana, Speed)
+-- Summons a mount
+SetMount(Caster, 7183)
+SetMountColor(Caster, 0, 0, 0, 148, 0, 211)
+
+-- Increase Crushing, Piercing, Slashing, Ranged and Disruption of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+
+
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+-- Increases Max Mana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlackArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlackArmor.lua
new file mode 100755
index 000000000..1236931d1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlackArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithBlackArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 09:12:49
+ Script Purpose :
+ :
+--]]
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7220)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlackSaddle.lua
new file mode 100755
index 000000000..1e548268e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlackSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 08:12:33
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7218)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlueArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlueArmor.lua
new file mode 100755
index 000000000..dde251430
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlueArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithBlueArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 09:12:44
+ Script Purpose :
+ :
+--]]
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7220)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlueSaddle.lua
new file mode 100755
index 000000000..607afb1e8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithBlueSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 08:12:20
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7218)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithPurpleArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithPurpleArmor.lua
new file mode 100755
index 000000000..4894d54b8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithPurpleArmor.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithPurpleArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.17 09:12:20
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7243)
+SetMountColor(Caster, 153, 76, 0, 127, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithPurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithPurpleSaddle.lua
new file mode 100755
index 000000000..4d5d65b97
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithPurpleSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithPurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 08:12:54
+ Script Purpose :
+ :
+--]]
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7218)
+SetMountColor(Caster, 0, 0, 0, 127, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithRedArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithRedArmor.lua
new file mode 100755
index 000000000..9da59fe33
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithRedArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.14 08:12:43
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7220)
+SetMountColor(Caster, 0, 0, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithRedSaddle.lua
new file mode 100755
index 000000000..ab25599e5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithRedSaddle.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 09:12:13
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7218)
+SetMountColor(Caster, 0, 0, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithYellowArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithYellowArmor.lua
new file mode 100755
index 000000000..d809eb2a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackSpottedWargwithYellowArmor.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BlackSpottedWargwithYellowArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.14 08:12:49
+ Script Purpose :
+ :
+--]]
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 255, 255, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackStripedWargBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackStripedWargBlueSaddle.lua
new file mode 100755
index 000000000..62af5d12a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackStripedWargBlueSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BlackStripedWargBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.26 06:03:30
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7229)
+SetMountColor(Caster, 0, 0, 0, 30, 144, 255)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlackArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlackArmor.lua
new file mode 100755
index 000000000..d22572b4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlackArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithBlackArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.10 08:12:42
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlackSaddle.lua
new file mode 100755
index 000000000..9a9c8dd1c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlackSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 08:12:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlueArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlueArmor.lua
new file mode 100755
index 000000000..c60006ca7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlueArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithBlueArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.10 08:12:07
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlueSaddle.lua
new file mode 100755
index 000000000..3617a60e1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithBlueSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 08:12:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithGreenArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithGreenArmor.lua
new file mode 100755
index 000000000..b4faaeb33
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithGreenArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithGreenArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.10 08:12:53
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 0, 153, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithGreenSaddle.lua
new file mode 100755
index 000000000..12a17063e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithGreenSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 08:12:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 0, 153, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithOrangeArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithOrangeArmor.lua
new file mode 100755
index 000000000..ff55740c0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithOrangeArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithOrangeArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.10 08:12:44
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 255, 128, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithOrangeSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithOrangeSaddle.lua
new file mode 100755
index 000000000..30e08d77d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithOrangeSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithOrangeSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 08:12:41
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 255, 128, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithPurpleArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithPurpleArmor.lua
new file mode 100755
index 000000000..30c2ed37c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithPurpleArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithPurpleArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.10 08:12:02
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 127, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithPurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithPurpleSaddle.lua
new file mode 100755
index 000000000..87d79724a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithPurpleSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithPurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 08:12:10
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 127, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithRedSaddle.lua
new file mode 100755
index 000000000..d3edb94df
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithRedSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 08:12:16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithYellowArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithYellowArmor.lua
new file mode 100755
index 000000000..86a333973
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithYellowArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithYellowArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.14 09:12:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 255, 255, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithYellowSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithYellowSaddle.lua
new file mode 100755
index 000000000..336148b13
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwoToneWargwithYellowSaddle.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwoToneWargwithYellowSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.15 09:12:10
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 0, 0, 0, 255, 255, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlackTwotoneWargwithRedArmor.lua b/server/Spells/Spells-Copy/Commoner/BlackTwotoneWargwithRedArmor.lua
new file mode 100755
index 000000000..45e4d065a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackTwotoneWargwithRedArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BlackTwotoneWargwithRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.14 09:12:30
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 0, 0, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackWargBrownSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackWargBrownSaddle.lua
new file mode 100755
index 000000000..bd27d5bd5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackWargBrownSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BlackWargBrownSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.26 06:03:18
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7229)
+SetMountColor(Caster, 0, 0, 0, 150, 75, 0)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlackWargwithGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlackWargwithGreenSaddle.lua
new file mode 100755
index 000000000..71dfcbce8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlackWargwithGreenSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BlackWargwithGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.26 06:03:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7229)
+SetMountColor(Caster, 0, 0, 0, 0, 255, 0)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlessingofFaith.lua b/server/Spells/Spells-Copy/Commoner/BlessingofFaith.lua
new file mode 100755
index 000000000..b9edf2aa7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlessingofFaith.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/BlessingofFaith.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 06:03:34
+ Script Purpose :
+ :
+--]]
+
+-- Increases power of caster by 30.0% instantly and every 30 seconds
+-- This effect cannot be critically applied
+function cast(Caster, Target, pctHeal)
+SpellHeal("Power", GetPCTOfPower(Caster, pctHeal))
+end
+
+function tick(Caster, Target, pctHeal)
+SpellHeal("Power", GetPCTOfPower(Caster, pctHeal))
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/BloodRoanStallion.lua b/server/Spells/Spells-Copy/Commoner/BloodRoanStallion.lua
new file mode 100755
index 000000000..c34d68b59
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BloodRoanStallion.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/BloodRoanStallion.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.23 07:11:37
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 1326)
+AddControlEffect(Caster, 13)
+
+-- Reduces maximum falling speed of caster.
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlueAncientChampionsFlyingSymbol.lua b/server/Spells/Spells-Copy/Commoner/BlueAncientChampionsFlyingSymbol.lua
new file mode 100755
index 000000000..33f6dfca1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueAncientChampionsFlyingSymbol.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BlueAncientChampionsFlyingSymbol.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.26 06:03:38
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 9010)
+SetMountColor(Caster, 65, 105, 225, 65, 105, 225)
+--Increases your ground speed by 35%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BlueCanvasOscillatingKajiggers.lua b/server/Spells/Spells-Copy/Commoner/BlueCanvasOscillatingKajiggers.lua
new file mode 100755
index 000000000..5d3be8743
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueCanvasOscillatingKajiggers.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/BlueCanvasOscillatingKajiggers.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.12 07:03:28
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17865)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlueNightmareBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlueNightmareBlackSaddle.lua
new file mode 100755
index 000000000..d058755a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueNightmareBlackSaddle.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/BlueNightmareBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.28 01:03:08
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 7183)
+SetMountColor(Caster, 0, 0, 102, 0, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 200
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlueNightmareBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/BlueNightmareBlueSaddle.lua
new file mode 100755
index 000000000..c99e8b66d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueNightmareBlueSaddle.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/BlueNightmareBlueSaddle.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 01:11:47
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 7183)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+--Increases your ground speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 450
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlueSaddleBlackNightmare.lua b/server/Spells/Spells-Copy/Commoner/BlueSaddleBlackNightmare.lua
new file mode 100755
index 000000000..9bf8bb846
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueSaddleBlackNightmare.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/BlueSaddleBlackNightmare.lua
+ Script Author : neatz09
+ Script Date : 2019.11.15 05:11:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Pwr, SkillAmt, Speed)
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 500, HP)
+--Increases Max Power of caster by 150.0
+ AddSpellBonus(Caster, 619, Pwr)
+--Increases Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases Piercing, Disruption and Crushing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Target, 611, Speed)
+--Requires Evil Alignment.
+ Say(Caster, "Alignment Requirement not implemented.")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlueSaddleIndigoNightmare.lua b/server/Spells/Spells-Copy/Commoner/BlueSaddleIndigoNightmare.lua
new file mode 100755
index 000000000..1060c673c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueSaddleIndigoNightmare.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/BlueSaddleIndigoNightmare.lua
+ Script Author : neatz09
+ Script Date : 2019.11.15 05:11:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Pwr, SkillAmt, Speed)
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+--Increases Max Power of caster by 150.0
+ AddSpellBonus(Caster, 619, Pwr)
+--Increases Ranged and Slashing of caster by 7.0
+--Increases Piercing, Disruption and Crushing of caster by 7.0
+AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 75, 0, 130)
+--Increases your ground speed by 130%
+ AddSpellBonus(Target, 611, Speed)
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BlueSaddlePurpleNightmare.lua b/server/Spells/Spells-Copy/Commoner/BlueSaddlePurpleNightmare.lua
new file mode 100755
index 000000000..093632db8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueSaddlePurpleNightmare.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Commoner/BlueSaddlePurpleNightmare.lua
+ Script Author : neatz09
+ Script Date : 2019.11.15 05:11:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Pwr, SkillAmt, Speed)
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+--Increases Max Power of caster by 150.0
+ AddSpellBonus(Caster, 619, Pwr)
+--Increases Ranged and Slashing of caster by 7.0
+--Increases Piercing, Disruption and Crushing of caster by 7.0
+AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 138, 43, 226)
+--Increases your ground speed by 130%
+ AddSpellBonus(Target, 611, Speed)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/BlueSaddleRedNightmare.lua b/server/Spells/Spells-Copy/Commoner/BlueSaddleRedNightmare.lua
new file mode 100755
index 000000000..3f9b91c24
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BlueSaddleRedNightmare.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/BlueSaddleRedNightmare.lua
+ Script Author : neatz09
+ Script Date : 2019.11.15 05:11:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Pwr, SkillAmt, Speed)
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+--Increases Max Power of caster by 150.0
+ AddSpellBonus(Caster, 619, Pwr)
+--Increases Ranged and Slashing of caster by 7.0
+--Increases Piercing, Disruption and Crushing of caster by 7.0
+AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Target, 611, Speed)
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BoneclawFetidspineProwler.lua b/server/Spells/Spells-Copy/Commoner/BoneclawFetidspineProwler.lua
new file mode 100755
index 000000000..d1689b326
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BoneclawFetidspineProwler.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/BoneclawFetidspineProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.28 01:03:08
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Chance, Health, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 14422)
+ Say(Caster, "Might not be accurate model")
+
+
+-- Increases Potency of caster by 1.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Chance of caster by 1.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+--Increases Max Health of caster by 200.0
+ AddSpellBonus(Caster, 606, Health)
+
+--Increases Max Power of caster by 200.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BoombasPickles.lua b/server/Spells/Spells-Copy/Commoner/BoombasPickles.lua
new file mode 100755
index 000000000..f93c2ebf0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BoombasPickles.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/BoomasPickles.lua
+ Script Author : neatz09
+ Script Date : 2019.08.19 12:08:40
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Bonus)
+-- Increases Out-of-Combat Health Regeneration of target by 4.0
+AddSpellBonus(Target, 602, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BravosDance.lua b/server/Spells/Spells-Copy/Commoner/BravosDance.lua
new file mode 100755
index 000000000..22e1feeaa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BravosDance.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BravosDance.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 05:03:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinHaste, MaxHaste, MinDPS, MaxDPS)
+local Val1 = (GetLevel(Caster) * 1.08) * MinHaste
+local Val2 = (GetLevel(Caster) * 1.08) * MaxHaste
+local Val3 = (GetLevel(Caster) * 1.08) * MinDPS
+local Val4 = (GetLevel(Caster) * 1.08) * MaxDPS
+local Haste = randomFloat(Val1, Val2)
+local DPS = randomFloat2(Val3, Val4)
+
+ AddSpellBonus(Target, 617, Haste)
+ AddSpellBonus(Target, 629, DPS)
+
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function randomFloat2(Val3, Val4)
+ return Val3 + math.random() * (Val3 - Val4);
+end
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BregolontheBurly.lua b/server/Spells/Spells-Copy/Commoner/BregolontheBurly.lua
new file mode 100755
index 000000000..790220fdf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BregolontheBurly.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/BregolontheBurly.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.28 01:03:41
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Health, Pwr, Chance, Potency, Double, Speed)
+-- Summons a mount
+SetMount(Caster, 15379)
+ Say(Caster, "Might not be accurate model")
+
+--Increases Max Heath of caster by 400.0
+ AddSpellBonus(Caster, 606, Health)
+
+--Increases Max Power of caster by 400.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+-- Increases Crit Chance of caster by 3.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Potency of caster by 3.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Potency of caster by 14.0%
+ AddSpellBonus(Caster, 642, Double)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoBlackSaddle.lua
new file mode 100755
index 000000000..9ca4960e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoBlackSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/BronzeArmoredRhinoBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.23 08:11:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 212, 175, 55, 0, 0, 0)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 100.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 3.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoRedSaddle.lua
new file mode 100755
index 000000000..e176c5fcf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoRedSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/BronzeArmoredRhinoRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 07:12:37
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 212, 175, 55, 255, 0, 0)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 100.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 3.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoYellowSaddle.lua b/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoYellowSaddle.lua
new file mode 100755
index 000000000..ab8e39cc9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BronzeArmoredRhinoYellowSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/BronzeArmoredRhinoYellowSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.09 07:12:43
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 212, 175, 55, 255, 255, 0)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 100.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 3.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BronzeMechamagicWings.lua b/server/Spells/Spells-Copy/Commoner/BronzeMechamagicWings.lua
new file mode 100755
index 000000000..3a27c9de2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BronzeMechamagicWings.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/BronzeMechamagicWings.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.17 08:12:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17861)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargBlueArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargBlueArmor.lua
new file mode 100755
index 000000000..43b76befe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargBlueArmor.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/BrownMistrunnerWargBlueArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.28 02:03:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7242)
+SetMountColor(Caster, 153, 76, 0, 0, 0, 255)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargOrangeArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargOrangeArmor.lua
new file mode 100755
index 000000000..1c3b21dad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargOrangeArmor.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/BrownMistrunnerWargOrangeArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 07:03:59
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7242)
+SetMountColor(Caster, 153, 76, 0, 255, 100, 0)
+
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargwithPurpleArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargwithPurpleArmor.lua
new file mode 100755
index 000000000..c7b00cddb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargwithPurpleArmor.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/BrownMistrunnerWargwithPurpleArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 08:03:58
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7215)
+SetMountColor(Caster, 153, 76, 0, 153, 50, 204)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargwithRedArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargwithRedArmor.lua
new file mode 100755
index 000000000..0bb8aa676
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownMistrunnerWargwithRedArmor.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/BrownMistrunnerWargwithRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 08:03:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7215)
+SetMountColor(Caster, 153, 76, 0, 255, 0, 0)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithBlueArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithBlueArmor.lua
new file mode 100755
index 000000000..63f382a37
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithBlueArmor.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Commoner/BrownNightmareWargwithBlueArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.17 09:12:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7243)
+SetMountColor(Caster, 153, 76, 0, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithIndigoArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithIndigoArmor.lua
new file mode 100755
index 000000000..c624042c9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithIndigoArmor.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/BrownNightmareWargwithIndigoArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.17 09:12:41
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7243)
+SetMountColor(Caster, 153, 76, 0, 51, 51, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithRedArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithRedArmor.lua
new file mode 100755
index 000000000..e534c8f45
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownNightmareWargwithRedArmor.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Commoner/BrownNightmareWargwithRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.17 09:12:33
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7243)
+SetMountColor(Caster, 153, 76, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 75.
+ AddSpellBonus(Caster, 704, Dmg)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownSpottedWargwithRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/BrownSpottedWargwithRedSaddle.lua
new file mode 100755
index 000000000..fb5340fc5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownSpottedWargwithRedSaddle.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/BrownSpottedWargwithRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 08:03:23
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7218)
+SetMountColor(Caster, 153, 76, 0, 255, 0, 0)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/BrownStripedWargwithBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/BrownStripedWargwithBlueSaddle.lua
new file mode 100755
index 000000000..78f62098c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownStripedWargwithBlueSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BrownStripedWargwithBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 08:03:43
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7229)
+SetMountColor(Caster, 153, 76, 0, 65, 105, 255)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownTreeglider.lua b/server/Spells/Spells-Copy/Commoner/BrownTreeglider.lua
new file mode 100755
index 000000000..a471a175b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownTreeglider.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/BrownTreeglider.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.17 09:12:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15857)
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownTwoToneWargwithRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/BrownTwoToneWargwithRedSaddle.lua
new file mode 100755
index 000000000..73aa024d6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownTwoToneWargwithRedSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BrownTwoToneWargwithRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.22 06:12:39
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 153, 76, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownTwotoneWargwithRedArmor.lua b/server/Spells/Spells-Copy/Commoner/BrownTwotoneWargwithRedArmor.lua
new file mode 100755
index 000000000..80b932f5b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownTwotoneWargwithRedArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/BrownTwotoneWargwithRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.22 06:12:15
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 153, 76, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownWargwithBrownSaddle.lua b/server/Spells/Spells-Copy/Commoner/BrownWargwithBrownSaddle.lua
new file mode 100755
index 000000000..1801b4d2b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownWargwithBrownSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BrownWargwithBrownSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 08:03:50
+ Script Purpose :
+ :
+-]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7216)
+SetMountColor(Caster, 153, 76, 0, 139, 69, 19)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/BrownWargwithGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/BrownWargwithGreenSaddle.lua
new file mode 100755
index 000000000..c065aea23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/BrownWargwithGreenSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/BrownWargwithGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.30 08:03:16
+ Script Purpose :
+ :
+-]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7216)
+SetMountColor(Caster, 153, 76, 0, 0, 255, 0)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CalltoHome.lua b/server/Spells/Spells-Copy/Commoner/CalltoHome.lua
new file mode 100755
index 000000000..ee9e3a7a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CalltoHome.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/CalltoHome.lua
+ Script Author : neatz09
+ Script Date : 2019.04.08 12:04:04
+ Script Purpose :
+ :
+--]]
+
+-- Teleports you to your recall point.
+function precast(Caster, Target)
+ if GetBoundZoneID(Caster) == 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ Gate(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CarpetDjinnMaster.lua b/server/Spells/Spells-Copy/Commoner/CarpetDjinnMaster.lua
new file mode 100755
index 000000000..a3df7c392
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CarpetDjinnMaster.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/CarpetDjinnMaster.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.06 09:04:30
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Ward, Speed)
+-- Summons a mount
+SetMount(Caster, 21641)
+AddWard(157)
+ Say(Caster, "Cannot be modified except by direct means ")
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+RemoveWard()
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CarpetofClover.lua b/server/Spells/Spells-Copy/Commoner/CarpetofClover.lua
new file mode 100755
index 000000000..aff59459b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CarpetofClover.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/CarpetofClover.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.01 08:04:40
+ Script Purpose :
+ :
+-]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 10440)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CarpetofEl'Khazi.lua b/server/Spells/Spells-Copy/Commoner/CarpetofEl'Khazi.lua
new file mode 100755
index 000000000..7feb371d3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CarpetofEl'Khazi.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/CarpetofEl'Khazi.lua
+ Script Author : neatz09
+ Script Date : 2019.11.15 10:11:32
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons mount
+-- Reduces maximum falling speed of caster.
+-- Increases your ground speed by 130%.
+
+function cast(Caster, Target, Amt)
+SetMount(Caster, 1369)
+SetMountColor(Caster, 0, 0, 0, 30, 144, 255)
+ AddSpellBonus(Caster, 611, Amt)
+AddControlEffect(Caster, 13)
+end
+
+
+function remove(Caster, Target)
+RemoveSpellBonus(Caster)
+RemoveControlEffect(Caster, 13)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CavalryAppaloosaWarbarding.lua b/server/Spells/Spells-Copy/Commoner/CavalryAppaloosaWarbarding.lua
new file mode 100755
index 000000000..5429e9ca2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CavalryAppaloosaWarbarding.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/CavalryAppaloosaWarbarding.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.21 06:11:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6836)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CavalryMorganWarbarding.lua b/server/Spells/Spells-Copy/Commoner/CavalryMorganWarbarding.lua
new file mode 100755
index 000000000..e21541dfd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CavalryMorganWarbarding.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/CavalryMorganWarbarding.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.21 06:11:12
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6837)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CavalryPalominoWarbarding.lua b/server/Spells/Spells-Copy/Commoner/CavalryPalominoWarbarding.lua
new file mode 100755
index 000000000..10607c965
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CavalryPalominoWarbarding.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/CavalryPalominoWarbarding.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.21 07:11:54
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6838)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CavalryPintoWarbarding.lua b/server/Spells/Spells-Copy/Commoner/CavalryPintoWarbarding.lua
new file mode 100755
index 000000000..c9f22770a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CavalryPintoWarbarding.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/CavalryPintoWarbarding.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.21 07:11:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6839)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CavalrySpiritsteedWarbarding.lua b/server/Spells/Spells-Copy/Commoner/CavalrySpiritsteedWarbarding.lua
new file mode 100755
index 000000000..4bdf4863b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CavalrySpiritsteedWarbarding.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/CavalrySpiritsteedWarbarding.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.21 07:11:27
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6917)
+SetMountColor(Spawn, 65, 105, 225)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CelestialBloom.lua b/server/Spells/Spells-Copy/Commoner/CelestialBloom.lua
new file mode 100755
index 000000000..4153f8e83
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CelestialBloom.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/CelestialBloom.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 08:04:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealMin, HealMax)
+local Val1 = (GetLevel(Caster) * 1.08) * HealMin
+local Val2 = (GetLevel(Caster) * 1.08) * HealMax
+local HealAmt = randomFloat(Val1, Val2)
+
+SpellHeal("Heal", HealAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CevernVastspan.lua b/server/Spells/Spells-Copy/Commoner/CevernVastspan.lua
new file mode 100755
index 000000000..f475af934
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CevernVastspan.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/CevernVastspan.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 06:03:20
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18768)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 12.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 12.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 50.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 2000.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 2000.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ChaliceofLife.lua b/server/Spells/Spells-Copy/Commoner/ChaliceofLife.lua
new file mode 100755
index 000000000..f216743f2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ChaliceofLife.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/ChaliceofLife.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 01:04:32
+ Script Purpose :
+ :
+--]]
+
+-- Wards target against 5118 points of all damage
+
+function cast(Caster, Target, Ward, HealMin, HealMax, TickMin, TickMax)
+local Val1 = (GetLevel(Caster) * 1.08) * HealMin
+local Val2 = (GetLevel(Caster) * 1.08) * HealMax
+local Val3 = (GetLevel(Caster) * 1.08) * TickMin
+local Val4 = (GetLevel(Caster) * 1.08) * TickMax
+local HealAmt = randomFloat(Val1, Val2)
+local TickAmt = randomFloat2(Val3, Val4)
+
+AddWard((GetLevel(Caster) * 1.08) * Ward, 0, 0)
+SpellHeal("Heal", HealAmt)
+end
+
+function tick(Caster, Target, Ward, HealMin, HealMax, TickMin, TickMax)
+SpellHeal("Heal", TickAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function randomFloat2(Val3, Val4)
+ return Val3 + math.random() * (Val4 - Val3);
+end
+
+function remove(Caster, Target)
+RemoveWard()
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CobaltArmoredSaliraptor.lua b/server/Spells/Spells-Copy/Commoner/CobaltArmoredSaliraptor.lua
new file mode 100755
index 000000000..c1bf996f6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CobaltArmoredSaliraptor.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/AwakenedDrakota.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.11 07:03:20
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15594)
+-- Mez the target.
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+Say(Caster, "This is a leaper mount not a flier, leapers not implemented.")
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CraftKeepersDiscofFlight.lua b/server/Spells/Spells-Copy/Commoner/CraftKeepersDiscofFlight.lua
new file mode 100755
index 000000000..b524a560a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CraftKeepersDiscofFlight.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/CraftKeepersDiscofFlight.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.22 09:12:42
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, MP, Speed, Multi, Cast)
+-- Summons a mount to ride
+SetMount(Caster, 11059)
+-- Reduces maximum falling speed of caster.
+ AddControlEffect(Caster, 13)
+-- Increases Max Health of caster by 200.
+ AddSpellBonus(Caster, 606, HP)
+-- Increases Max Power by 200.0
+ AddSpellBonus(Caster, 619, MP)
+-- increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+-- Increases Multi Attack Chance by 2.0
+ AddSpellBonus(Caster, 641, Multi)
+-- Increases Ability Casting Speed by 2.0%
+ AddSpellBonus(Caster, 664, Cast)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveControlEffect(Caster, 13)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CrimsonHandsDiscofVoyage.lua b/server/Spells/Spells-Copy/Commoner/CrimsonHandsDiscofVoyage.lua
new file mode 100755
index 000000000..dbab72edd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CrimsonHandsDiscofVoyage.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/CrimsonHandsDiscofVoyage.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.23 08:12:43
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, MP, Speed, Reuse, Crit)
+-- Summons a mount to ride
+SetMount(Caster, 10983)
+ -- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+-- Increases Max Health of caster by 200.
+ AddSpellBonus(Caster, 606, HP)
+-- Increases Max Power by 200.0
+ AddSpellBonus(Caster, 619, MP)
+-- increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+-- Increases Ability Reuse Speed by 1.0
+ AddSpellBonus(Caster, 662, Reuse)
+-- Increases Ability Casting Speed by 2.0%
+ AddSpellBonus(Caster, 654, Crit)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveControlEffect(Caster, 13)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CrimsonNightmarePegasus.lua b/server/Spells/Spells-Copy/Commoner/CrimsonNightmarePegasus.lua
new file mode 100755
index 000000000..80f89dbdb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CrimsonNightmarePegasus.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/CrimsonNightmarePegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.23 09:12:24
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 15739)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/CripplingShroud.lua b/server/Spells/Spells-Copy/Commoner/CripplingShroud.lua
new file mode 100755
index 000000000..162901c3d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CripplingShroud.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Commoner/CripplingShroud.lua
+ Script Author : neatz09
+ Script Date : 2020.04.09 08:04:38
+ Script Purpose :
+ :
+--]]
+
+-- When any damage received this spell has a 5% chance to cast Hasten on caster. Lasts for 30.0 seconds.
+-- Increases Haste of target by x - y Based on CLevel
+
+function cast(Caster, Target, Triggers)
+Say(Caster, "need to add hasten to the DB")
+AddProc(Target, 15, 5, nil, 1)
+ SetSpellTriggerCount(Triggers, 1)
+end
+
+function proc(Caster, Target, Type, Triggers)
+
+CastSpell(Caster, 2002, 1)
+ Say(Caster, "need to add hasten to the DB")
+ RemoveTriggerFromSpell(1)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/CrushingAnvil.lua b/server/Spells/Spells-Copy/Commoner/CrushingAnvil.lua
new file mode 100755
index 000000000..497c34c60
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/CrushingAnvil.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/CrushingAnvil.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 02:03:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DallynsTrotter.lua b/server/Spells/Spells-Copy/Commoner/DallynsTrotter.lua
new file mode 100755
index 000000000..929d911ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DallynsTrotter.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/DallynsTrotter.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.01 08:04:21
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 9974)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkArmoredRhino.lua b/server/Spells/Spells-Copy/Commoner/DarkArmoredRhino.lua
new file mode 100755
index 000000000..36fd1a1ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkArmoredRhino.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/DarkArmoredRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.01 09:04:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 7981)
+SetMountColor(Caster, 1, 1, 1, 205, 133, 63)
+-- Increases Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkArmoredWarg.lua b/server/Spells/Spells-Copy/Commoner/DarkArmoredWarg.lua
new file mode 100755
index 000000000..7c7fe3c2e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkArmoredWarg.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/DarkArmoredWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.02 07:04:12
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 7313)
+-- Increases Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkCanvasOscillatingKajiggers.lua b/server/Spells/Spells-Copy/Commoner/DarkCanvasOscillatingKajiggers.lua
new file mode 100755
index 000000000..c4bd0fac3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkCanvasOscillatingKajiggers.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/DarkCanvasOscillatingKajiggers.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 06:03:00
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17868)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkHarbingersFlightWings.lua b/server/Spells/Spells-Copy/Commoner/DarkHarbingersFlightWings.lua
new file mode 100755
index 000000000..3efe87421
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkHarbingersFlightWings.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/DarkHarbingersFlightWings.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 07:03:04
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17594)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkPegasus.lua b/server/Spells/Spells-Copy/Commoner/DarkPegasus.lua
new file mode 100755
index 000000000..121a3c081
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkPegasus.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/DarkPegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 09:01:23
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 4308)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkRedNightmareBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/DarkRedNightmareBlackSaddle.lua
new file mode 100755
index 000000000..215b9625f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkRedNightmareBlackSaddle.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/DarkRedNightmareBlackSaddle.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 01:11:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, MP, SkillAmt, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6831)
+SetMountColor(Caster, 128, 0, 0, 0, 0, 0)
+--Increases Max Health of caster by 100
+AddSpellBonus(Caster, 606, HP)
+--Increases Max Power of caster by 100
+AddSpellBonus(Caster, 619, MP)
+--Increases, Piercing, Slashing, Crushing, Ranged and Disruption by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkRedNightmareRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/DarkRedNightmareRedSaddle.lua
new file mode 100755
index 000000000..b9c1d9c77
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkRedNightmareRedSaddle.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/DarkRedNightmareRedSaddle.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 01:11:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, MP, SkillAmt, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6831)
+SetMountColor(Caster, 128, 0, 0, 255, 0, 0)
+--Increases Max Health of caster by 100
+AddSpellBonus(Caster, 606, HP)
+--Increases Max Power of caster by 100
+AddSpellBonus(Caster, 619, MP)
+--Increases, Piercing, Slashing, Crushing, Ranged and Disruption by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DarkTreeglider.lua b/server/Spells/Spells-Copy/Commoner/DarkTreeglider.lua
new file mode 100755
index 000000000..2c87a0044
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DarkTreeglider.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/DarkTreeglider.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.26 07:12:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 16307)
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DeadlyDireWolf.lua b/server/Spells/Spells-Copy/Commoner/DeadlyDireWolf.lua
new file mode 100755
index 000000000..3f25c909c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DeadlyDireWolf.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/DeadlyDireWolf.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.02 08:04:51
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 14388)
+-- Increases Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DeathclawFetidspineProwler.lua b/server/Spells/Spells-Copy/Commoner/DeathclawFetidspineProwler.lua
new file mode 100755
index 000000000..d323c3a70
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DeathclawFetidspineProwler.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Commoner/DeathclawFetidspineProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.02 08:04:21
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Health, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 14422)
+ Say(Caster, "Might not be accurate model")
+
+
+-- Increases Potency of caster by 3.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+--Increases Max Health of caster by 300.0
+ AddSpellBonus(Caster, 606, Health)
+
+--Increases Max Power of caster by 300.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DeepwaterDiskScion.lua b/server/Spells/Spells-Copy/Commoner/DeepwaterDiskScion.lua
new file mode 100755
index 000000000..8548c0401
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DeepwaterDiskScion.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/DeepwaterDiskScion.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.02 08:04:50
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Crit, Health, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 10984)
+
+
+-- Increases Crit Chance of caster by 2.0%
+ AddSpellBonus(Caster, 654, Crit)
+
+--Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, Health)
+
+--Increases Max Power of caster by 150.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DerakartheSoulMelter.lua b/server/Spells/Spells-Copy/Commoner/DerakartheSoulMelter.lua
new file mode 100755
index 000000000..bdd565fea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DerakartheSoulMelter.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/DerakartheSoulMelter.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 07:03:26
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 17085)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 7.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 7.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 22.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 900.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 900.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierBlackSaddle.lua
new file mode 100755
index 000000000..78a8b773f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierBlackSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 08:04:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 0, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierBlueSaddle.lua
new file mode 100755
index 000000000..abf443327
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierBlueSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 09:04:05
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 0, 0, 139)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierGreenSaddle.lua
new file mode 100755
index 000000000..6147cb572
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierGreenSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 09:04:19
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 152, 251, 152)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierPinkSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierPinkSaddle.lua
new file mode 100755
index 000000000..735e3ff1d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierPinkSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierPinkSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 09:04:42
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 219, 112, 147)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierPurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierPurpleSaddle.lua
new file mode 100755
index 000000000..c87f86cd2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierPurpleSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierPurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 09:04:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 75, 0, 130)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierRedSaddle.lua
new file mode 100755
index 000000000..1b22d83d0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierRedSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 09:04:34
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 128, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierWhiteSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierWhiteSaddle.lua
new file mode 100755
index 000000000..5d6863d51
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierWhiteSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierWhiteSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 09:04:30
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 255, 255, 255)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DervishDestrierYellowSaddle.lua b/server/Spells/Spells-Copy/Commoner/DervishDestrierYellowSaddle.lua
new file mode 100755
index 000000000..a41d38839
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DervishDestrierYellowSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/DervishDestrierYellowSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.04 10:04:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 240, 230, 140)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Destroying.lua b/server/Spells/Spells-Copy/Commoner/Destroying.lua
new file mode 100755
index 000000000..8bae50990
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Destroying.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/Destroying.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 10:11:31
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Must not be targeted by an enemy
+
+function cast(Caster, Target)
+ Say(Caster, "Destroying not implemented yet")
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DeverishDestrier.lua b/server/Spells/Spells-Copy/Commoner/DeverishDestrier.lua
new file mode 100755
index 000000000..cd6db201b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DeverishDestrier.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/DeverishDestrier.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.21 06:11:22
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Dhume.lua b/server/Spells/Spells-Copy/Commoner/Dhume.lua
new file mode 100755
index 000000000..b298ff5be
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Dhume.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/Dhume.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.06 07:04:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 240, 230, 140)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DiscordEnduringDisk.lua b/server/Spells/Spells-Copy/Commoner/DiscordEnduringDisk.lua
new file mode 100755
index 000000000..71363a3b8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DiscordEnduringDisk.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/DiscordEnduringDisk.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.06 07:04:45
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Health)
+-- Summons a mount
+SetMount(Caster, 10978)
+ Say(Caster, "Might not be accurate model")
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed, Speed)
+
+
+--Increases Max Heath of caster by 300.0
+ AddSpellBonus(Caster, 606, Health)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DiscordPrescientDisk.lua b/server/Spells/Spells-Copy/Commoner/DiscordPrescientDisk.lua
new file mode 100755
index 000000000..2a0a59ac8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DiscordPrescientDisk.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/DiscordPrescientDisk.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.06 08:04:22
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Health)
+-- Summons a mount
+SetMount(Caster, 10984)
+ Say(Caster, "Might not be accurate model")
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed, Speed)
+
+
+--Increases Max Heath of caster by 300.0
+ AddSpellBonus(Caster, 606, Health)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DiskChaoticEnergy.lua b/server/Spells/Spells-Copy/Commoner/DiskChaoticEnergy.lua
new file mode 100755
index 000000000..a5a5dc730
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DiskChaoticEnergy.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Commoner/DiskChaoticEnergy.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.06 08:04:23
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Health, Mana)
+-- Summons a mount
+SetMount(Caster, 12992)
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed, Speed)
+
+
+--Increases Max Heath of caster by 300.0
+ AddSpellBonus(Caster, 606, Health)
+
+
+--Increases Max Heath of caster by 300.0
+ AddSpellBonus(Caster, 619, Mana)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DivineBlade.lua b/server/Spells/Spells-Copy/Commoner/DivineBlade.lua
new file mode 100755
index 000000000..449c2e71a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DivineBlade.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/DivineBlade.lua
+ Script Author : neatz09
+ Script Date : 2020.04.09 05:04:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/DivineJudgment.lua b/server/Spells/Spells-Copy/Commoner/DivineJudgment.lua
new file mode 100755
index 000000000..df1403e3c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DivineJudgment.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/DivineJudgment.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 02:03:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DivineNobility.lua b/server/Spells/Spells-Copy/Commoner/DivineNobility.lua
new file mode 100755
index 000000000..46659a975
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DivineNobility.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Commoner/DivineNobility.lua
+ Script Author : neatz09
+ Script Date : 2020.04.09 06:04:00
+ Script Purpose :
+ :
+--]]
+
+-- Heals caster for x - y instantly based on Clevel.
+
+function cast(Caster, Target, HealMin, HealMax, TickMin, TickMax)
+local Val1 = (GetLevel(Caster) * 1.08) * HealMin
+local Val2 = (GetLevel(Caster) * 1.08) * HealMax
+local Val3 = (GetLevel(Caster) * 1.08) * TickMin
+local Val4 = (GetLevel(Caster) * 1.08) * TickMax
+local HealAmt = randomFloat(Val1, Val2)
+local TickAmt = randomFloat2(Val3, Val4)
+
+SpellHeal("Heal", HealAmt)
+end
+
+
+function tick(Caster, Target, MinVal, MaxVal, TickMin, TickMax)
+SpellHeal("Heal", TickAmt)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function randomFloat2(Val3, Val4)
+ return Val3 + math.random() * (Val4 - Val3);
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DivineTrickery.lua b/server/Spells/Spells-Copy/Commoner/DivineTrickery.lua
new file mode 100755
index 000000000..59790ada7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DivineTrickery.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/DivineTrickery.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 06:04:32
+ Script Purpose :
+ :
+--]]
+
+-- Deals x - y damage to target based on CLevel
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/DrawUponHeart.lua b/server/Spells/Spells-Copy/Commoner/DrawUponHeart.lua
new file mode 100755
index 000000000..baba0a377
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DrawUponHeart.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/DrawUponHeart.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 03:10:49
+ Script Purpose :
+ :
+--]]
+
+
+
+function cast(Caster, Target, pctHealMin, pctHealMax)
+SpellHeal("Power", GetPCTOfPower(Caster, pctHealMin), GetPCTOfPower(Caster, pctHealMax), Caster, 2)
+end
+
+function tick(Caster, Target, pctHealMin, pctHealMax)
+SpellHeal("Power", GetPCTOfPower(Caster, pctHealMin), GetPCTOfPower(Caster, pctHealMax), Caster, 2)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/DrawuponEssence.lua b/server/Spells/Spells-Copy/Commoner/DrawuponEssence.lua
new file mode 100755
index 000000000..af2bd6482
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/DrawuponEssence.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/DrawuponEssence.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 08:10:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases power of caster by 4.6 - 5.6%
+function cast(Caster, Target, pctHealMin, pctHealMax)
+SpellHeal("Power", GetPCTOfPower(Caster, pctHealMin), GetPCTOfPower(Caster, pctHealMax), Caster, 2)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/EashindortheFarSeer.lua b/server/Spells/Spells-Copy/Commoner/EashindortheFarSeer.lua
new file mode 100755
index 000000000..66c84bac5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EashindortheFarSeer.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/EashindortheFarSeer.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 07:03:09
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 17084)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 3.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 3.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 10.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 300.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 300.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/EbonVanguardSteed.lua b/server/Spells/Spells-Copy/Commoner/EbonVanguardSteed.lua
new file mode 100755
index 000000000..f3f25c43b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EbonVanguardSteed.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/EbonVanguardSteed.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 06:04:50
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6840)
+ Say(Caster, "Might not be an accurate model")
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/EbonWarbardedParadeHorse.lua b/server/Spells/Spells-Copy/Commoner/EbonWarbardedParadeHorse.lua
new file mode 100755
index 000000000..563349083
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EbonWarbardedParadeHorse.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/EbonWarbardedParadeHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 06:04:02
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9977)
+ Say(Caster, "Might not be an accurate model")
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ElddarianCharger.lua b/server/Spells/Spells-Copy/Commoner/ElddarianCharger.lua
new file mode 100755
index 000000000..6b9c3e9cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ElddarianCharger.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Commoner/ElddarianCharger.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.26 07:12:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount to ride
+SetMount(Caster, 6850)
+-- increases your speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ElementalDiscofAir.lua b/server/Spells/Spells-Copy/Commoner/ElementalDiscofAir.lua
new file mode 100755
index 000000000..350fd4788
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ElementalDiscofAir.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/ElementalDiscofAir.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 09:03:32
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15596)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ElementalDiscofEarth.lua b/server/Spells/Spells-Copy/Commoner/ElementalDiscofEarth.lua
new file mode 100755
index 000000000..7e1462a43
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ElementalDiscofEarth.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/ElementalDiscofEarth.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 09:03:49
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15597)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ElementalDiscofFlame.lua b/server/Spells/Spells-Copy/Commoner/ElementalDiscofFlame.lua
new file mode 100755
index 000000000..ad252a1f8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ElementalDiscofFlame.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/ElementalDiscofFlame.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.14 09:03:30
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15598)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ElementalDiscofWater.lua b/server/Spells/Spells-Copy/Commoner/ElementalDiscofWater.lua
new file mode 100755
index 000000000..5bfc3c4b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ElementalDiscofWater.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/ElementalDiscofWater.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 06:03:21
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15595)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ElevationheRendadal.lua b/server/Spells/Spells-Copy/Commoner/ElevationheRendadal.lua
new file mode 100755
index 000000000..d8bed096c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ElevationheRendadal.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/ElevationheRendadal.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 06:04:39
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 13321)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/EmeraldNightmarePegasus.lua b/server/Spells/Spells-Copy/Commoner/EmeraldNightmarePegasus.lua
new file mode 100755
index 000000000..d263b8b37
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EmeraldNightmarePegasus.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/EmeraldNightmarePegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.17 08:03:51
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 15740)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/EnchantedWarg.lua b/server/Spells/Spells-Copy/Commoner/EnchantedWarg.lua
new file mode 100755
index 000000000..740ae188c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EnchantedWarg.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/EnchantedWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 07:04:34
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 8136)
+SetMountColor(Caster, 0, 0, 0, 30, 144, 255)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/EnergizedTinkerfestHovercog.lua b/server/Spells/Spells-Copy/Commoner/EnergizedTinkerfestHovercog.lua
new file mode 100755
index 000000000..659fa7ad6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EnergizedTinkerfestHovercog.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Commoner/EnergizedTinkerfestHovercog.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 07:04:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+--Summons a mount to ride
+SetMount(Caster, 1806)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Enlightenment.lua b/server/Spells/Spells-Copy/Commoner/Enlightenment.lua
new file mode 100755
index 000000000..75c2b2cbf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Enlightenment.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/Enlightenment.lua
+ Script Author : neatz09
+ Script Date : 2020.03.30 08:03:05
+ Script Purpose :
+ :
+--]]
+
+-- Increases power of caster by 40.0%
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 620, BonusAmt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/EtherealProwler.lua b/server/Spells/Spells-Copy/Commoner/EtherealProwler.lua
new file mode 100755
index 000000000..a65df986d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EtherealProwler.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/EtherealProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 07:04:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 13845)
+SetMountColor(Caster, 250, 250, 250, 250, 250, 250)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/EtherealSkeletalProwler.lua b/server/Spells/Spells-Copy/Commoner/EtherealSkeletalProwler.lua
new file mode 100755
index 000000000..8323ff53d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EtherealSkeletalProwler.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/EtherealSkeletalProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 07:04:47
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14420)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/EthernereCloud .lua b/server/Spells/Spells-Copy/Commoner/EthernereCloud .lua
new file mode 100755
index 000000000..0fa7c309f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/EthernereCloud .lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/EthernereCloud .lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.11 08:04:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 19680)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FaithsBulwark.lua b/server/Spells/Spells-Copy/Commoner/FaithsBulwark.lua
new file mode 100755
index 000000000..391ec4373
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FaithsBulwark.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/FaithsBulwark.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 01:04:27
+ Script Purpose :
+ :
+--]]
+
+-- increases Mitigation of group members vs physical damage by X based on Clevel
+
+function cast(Caster, Target, Mit)
+ AddSpellBonus(Target, 200, (GetLevel(Caster) * 1.08) * Mit)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FarisDiskMeditation.lua b/server/Spells/Spells-Copy/Commoner/FarisDiskMeditation.lua
new file mode 100755
index 000000000..00b016b45
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FarisDiskMeditation.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/FarisDiskMeditation.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.12 08:04:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, HP, MP, Speed)
+-- Summons a mount to ride
+SetMount(Caster, 12449)
+-- Increases Potency of caster by 1.5%
+ AddSpellBonus(Caster, 659, Potency)
+-- Increases Max Health of caster by 250.
+ AddSpellBonus(Caster, 606, HP)
+-- Increases Max Power by 250.
+ AddSpellBonus(Caster, 619, MP)
+-- increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/FerventQuickening.lua b/server/Spells/Spells-Copy/Commoner/FerventQuickening.lua
new file mode 100755
index 000000000..40d36d1ce
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FerventQuickening.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Commoner/FerventQuickening.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 01:04:22
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, PwrAmt, DefAmt)
+ SpellHeal("Power", GetPCTOfPower(Caster, PwrAmt))
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FieryDireBear.lua b/server/Spells/Spells-Copy/Commoner/FieryDireBear.lua
new file mode 100755
index 000000000..640cce37f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FieryDireBear.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/FieryDireBear.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.12 09:04:12
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9784)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/FieryHorse.lua b/server/Spells/Spells-Copy/Commoner/FieryHorse.lua
new file mode 100755
index 000000000..45801c33d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FieryHorse.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/FieryHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.12 09:04:33
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9963)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FireSpiritHorse.lua b/server/Spells/Spells-Copy/Commoner/FireSpiritHorse.lua
new file mode 100755
index 000000000..87b3c7142
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FireSpiritHorse.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/FireSpiritHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.12 09:04:05
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 8226)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FireworkRosePetalShower.lua b/server/Spells/Spells-Copy/Commoner/FireworkRosePetalShower.lua
new file mode 100755
index 000000000..75770dfd7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FireworkRosePetalShower.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/FireworkSwirlingSnowflakes.lua
+ Script Author : neatz09
+ Script Date : 2019.08.18 10:08:21
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+
+end
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Basic Firework when Activated. Lasts for 3.0 seconds.
diff --git a/server/Spells/Spells-Copy/Commoner/FireworkSwirlingSnowflakes.lua b/server/Spells/Spells-Copy/Commoner/FireworkSwirlingSnowflakes.lua
new file mode 100755
index 000000000..3f1298c87
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FireworkSwirlingSnowflakes.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/FireworkSwirlingSnowflakes.lua
+ Script Author : neatz09
+ Script Date : 2019.08.18 10:08:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+
+end
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Basic Firework when Activated. Lasts for 3.0 seconds.
diff --git a/server/Spells/Spells-Copy/Commoner/FitzpitzleEtherealHoverPlatform.lua b/server/Spells/Spells-Copy/Commoner/FitzpitzleEtherealHoverPlatform.lua
new file mode 100755
index 000000000..81617131b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FitzpitzleEtherealHoverPlatform.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Commoner/FitzpitzleEtherealHoverPlatform.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 06:04:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9963)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Defense"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FitzpitzleHoverPlatform.lua b/server/Spells/Spells-Copy/Commoner/FitzpitzleHoverPlatform.lua
new file mode 100755
index 000000000..9a12344a9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FitzpitzleHoverPlatform.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/FitzpitzleHoverPlatform.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 06:04:40
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6673)
+
+-- Increases Focus and Defense of caster by 6.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Defense"), SkillAmt)
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostDireBear.lua b/server/Spells/Spells-Copy/Commoner/FrostDireBear.lua
new file mode 100755
index 000000000..e5eb49cd3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostDireBear.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/FrostDireBear.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 07:04:21
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9786)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostGryphon.lua b/server/Spells/Spells-Copy/Commoner/FrostGryphon.lua
new file mode 100755
index 000000000..c8e728ef7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostGryphon.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/FrostGryphon.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.17 08:03:49
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 13944)
+AddControlEffect(Caster, 12)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostHorse.lua b/server/Spells/Spells-Copy/Commoner/FrostHorse.lua
new file mode 100755
index 000000000..99ba77434
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostHorse.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/FrostHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 07:04:27
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9964)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostfellSnowCloud.lua b/server/Spells/Spells-Copy/Commoner/FrostfellSnowCloud.lua
new file mode 100755
index 000000000..9c806639a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostfellSnowCloud.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/FrostfellSnowCloud.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 10:11:46
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground)
+-- Summons a mount
+SetMount(Caster, 15487)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Ground)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostfellSnowstag.lua b/server/Spells/Spells-Copy/Commoner/FrostfellSnowstag.lua
new file mode 100755
index 000000000..a79622e22
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostfellSnowstag.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/FrostfellSnowstag.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.23 07:11:14
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 23470)
+SetMountColor(Caster, 255, 255, 255, 0, 0, 255)
+ Say(Caster, "Model not accurate")
+
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostfellStormWings.lua b/server/Spells/Spells-Copy/Commoner/FrostfellStormWings.lua
new file mode 100755
index 000000000..598a88078
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostfellStormWings.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/FrostfellStormWings.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 10:11:46
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 20344)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/FrostspiritUnicorn.lua b/server/Spells/Spells-Copy/Commoner/FrostspiritUnicorn.lua
new file mode 100755
index 000000000..02336ea84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/FrostspiritUnicorn.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/FrostspiritUnicorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 07:04:02
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 18183)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GhostlyDarkWarg.lua b/server/Spells/Spells-Copy/Commoner/GhostlyDarkWarg.lua
new file mode 100755
index 000000000..191807b72
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GhostlyDarkWarg.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/GhostlyDarkWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 07:04:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 8128)
+SetMountColor(Caster, 0, 0, 0, 30, 144, 255)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/GhostlyWarg.lua b/server/Spells/Spells-Copy/Commoner/GhostlyWarg.lua
new file mode 100755
index 000000000..a383548f1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GhostlyWarg.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/GhostlyWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 08:04:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 8129)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GigglegibberGiggleGiver.lua b/server/Spells/Spells-Copy/Commoner/GigglegibberGiggleGiver.lua
new file mode 100755
index 000000000..31fcc9965
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GigglegibberGiggleGiver.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Commoner/GigglegibberGiggleGiver.lua
+ Script Author : neatz09
+ Script Date : 2020.04.24 06:04:22
+ Script Purpose :
+ :
+--]]
+
+-- Launches a goblin into oblivion.
+
+function cast(Caster, Target)
+local Zone = GetZone(Caster)
+local X = GetX(Caster)
+local Y = GetY(Caster)
+local Z = GetZ(Caster)
+local Heading = GetHeading(Caster)
+
+SpawnMob(Zone, 5590951, false, X, Y, Z, Heading)
+ if S ~= nil then
+ Despawn(S, 200)
+ end
+end
+
+function remove(Caster, Target)
+local S = GetSpawn(Caster, 5590951)
+ if S ~= nil then
+ Despawn(S, 200)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GlacialBattleSteed.lua b/server/Spells/Spells-Copy/Commoner/GlacialBattleSteed.lua
new file mode 100755
index 000000000..9dfbb568c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GlacialBattleSteed.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/GlacialBattleSteed.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.13 08:04:28
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 634)
+ Say(Caster, "Model might not be accurate")
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GlacialBrute.lua b/server/Spells/Spells-Copy/Commoner/GlacialBrute.lua
new file mode 100755
index 000000000..82870c763
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GlacialBrute.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Commoner/GlacialBrute.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.15 07:04:42
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 10176)
+
+-- Increases Max Health of caster by 300.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 300.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GlacialRhino.lua b/server/Spells/Spells-Copy/Commoner/GlacialRhino.lua
new file mode 100755
index 000000000..473fe2dcf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GlacialRhino.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/GlacialRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.15 08:04:35
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 10176)
+ Say(Caster, "Model might not be accurate")
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GlacialSavage.lua b/server/Spells/Spells-Copy/Commoner/GlacialSavage.lua
new file mode 100755
index 000000000..686b3e870
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GlacialSavage.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Commoner/GlacialSavage.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.15 08:04:37
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 10169)
+
+-- Increases Max Health of caster by 300.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 300.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GlacialWarg.lua b/server/Spells/Spells-Copy/Commoner/GlacialWarg.lua
new file mode 100755
index 000000000..d1e67b12a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GlacialWarg.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Commoner/GlacialWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.15 08:04:03
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 10169)
+ Say(Caster, "Might not be accurate model")
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GnomishHoveringDevice.lua b/server/Spells/Spells-Copy/Commoner/GnomishHoveringDevice.lua
new file mode 100755
index 000000000..283cc457e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GnomishHoveringDevice.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/GnomishHoveringDevice.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.15 08:04:11
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 19680)
+ Say(Caster, "Model not accurate")
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GoldArmoredRhinoRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/GoldArmoredRhinoRedSaddle.lua
new file mode 100755
index 000000000..0684341cb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GoldArmoredRhinoRedSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/GoldArmoredRhinoRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2019.12.26 08:12:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 255, 215, 0, 255, 0, 0)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GorowynDestrierwhistle.lua b/server/Spells/Spells-Copy/Commoner/GorowynDestrierwhistle.lua
new file mode 100755
index 000000000..63822d492
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GorowynDestrierwhistle.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/GorowynDestrierwhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.16 07:04:55
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 6852)
+SetMountColor(Caster, 139, 69, 19, 255, 0, 0)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Graol.lua b/server/Spells/Spells-Copy/Commoner/Graol.lua
new file mode 100755
index 000000000..8a6f87ff7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Graol.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/Graol.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.16 07:04:25
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Chance, Bonus, Speed)
+-- Summons a mount
+SetMount(Caster, 9744)
+SetMountColor(Caster, 250, 250, 250, 255, 0, 0)
+
+-- Increases Max Health of caster by 200.0
+ AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crit Bonus of caster by 3
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 1
+ AddSpellBonus(Caster, 654, Chance)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GrayMustangPackHorse.lua b/server/Spells/Spells-Copy/Commoner/GrayMustangPackHorse.lua
new file mode 100755
index 000000000..494e27b17
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GrayMustangPackHorse.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/GrayMustangPackHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.16 08:04:34
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9033)
+SetMountColor(Caster, 150, 150, 150, 0, 0, 0)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Fishing, Trapping, Mining, Foresting, Gathering and Transmuting of caster by 9.5
+ AddSkillBonus(Caster, GetSkillIDByName("Fishing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Trapping"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Mining"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Foresting"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Gathering"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Transmuting"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/GreenAncientChampionsFlyingSymbol.lua b/server/Spells/Spells-Copy/Commoner/GreenAncientChampionsFlyingSymbol.lua
new file mode 100755
index 000000000..47bf2a669
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GreenAncientChampionsFlyingSymbol.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/GreenAncientChampionsFlyingSymbol.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.19 07:04:23
+ Script Purpose :
+ :
+-]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 9010)
+SetMountColor(Caster, 255, 255, 255, 50, 205, 50)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GreyCavalryHorsewitWarbarding.lua b/server/Spells/Spells-Copy/Commoner/GreyCavalryHorsewitWarbarding.lua
new file mode 100755
index 000000000..65826d78b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GreyCavalryHorsewitWarbarding.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Commoner/GreyCavalryHorsewitWarbarding.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.19 07:04:41
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 6840)
+SetMountColor(Caster, 100, 100, 100, 0, 0, 0)
+-- increases your speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Crushing, Piercing, Slashing and Ranged of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/GreySpottedWargwithRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/GreySpottedWargwithRedSaddle.lua
new file mode 100755
index 000000000..619010d57
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GreySpottedWargwithRedSaddle.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/GreySpottedWargwithRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.19 08:04:19
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7218)
+SetMountColor(Caster, 255, 255, 255, 255, 0, 0)
+ Say(Caster, "Model might not be accurate")
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GreyStripedWargBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/GreyStripedWargBlueSaddle.lua
new file mode 100755
index 000000000..41732aa0e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GreyStripedWargBlueSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/GreyStripedWargBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.19 08:04:53
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7229)
+SetMountColor(Caster, 100, 100, 100, 30, 144, 255)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GreyWargwithBrownSaddle.lua b/server/Spells/Spells-Copy/Commoner/GreyWargwithBrownSaddle.lua
new file mode 100755
index 000000000..76bfea4b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GreyWargwithBrownSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/GreyWargwithBrownSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.19 09:04:28
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7216)
+SetMountColor(Caster, 255, 255, 255, 101, 67, 33)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GreyWargwithGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/GreyWargwithGreenSaddle.lua
new file mode 100755
index 000000000..ea25ccbf1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GreyWargwithGreenSaddle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/GreyWargwithGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.20 07:04:38
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 7216)
+SetMountColor(Caster, 255, 255, 255, 50, 205, 50)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/GustofInsight.lua b/server/Spells/Spells-Copy/Commoner/GustofInsight.lua
new file mode 100755
index 000000000..ce337bafc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GustofInsight.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Commoner/GustofInsight.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 10:04:35
+ Script Purpose :
+ :
+--]]
+
+-- Increases power of caster by 2 instantly and every 5 seconds.
+
+function cast(Caster, Target, PwrAmt)
+SpellHeal("Power", PwrAmt)
+end
+
+function tick(Caster, Target, PwrAmt)
+SpellHeal("Power", PwrAmt)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/GweyVastspan.lua b/server/Spells/Spells-Copy/Commoner/GweyVastspan.lua
new file mode 100755
index 000000000..20dc6c367
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/GweyVastspan.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/GweyVastspan.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.17 09:03:54
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18471)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 7.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 7.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 32.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 900.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 900.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/HOTemplate.lua b/server/Spells/Spells-Copy/Commoner/HOTemplate.lua
new file mode 100755
index 000000000..73117ee05
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HOTemplate.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/HOTemplate.lua
+ Script Author : neatz09
+ Script Date : 2020.04.09 06:04:47
+ Script Purpose :
+ :
+--]]
+
+-- Heals caster for x - y instantly based on Clevel.
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Power", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/HalasianDraftHorse.lua b/server/Spells/Spells-Copy/Commoner/HalasianDraftHorse.lua
new file mode 100755
index 000000000..8f1012c10
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HalasianDraftHorse.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/HalasianDraftHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.20 09:11:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6849)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/HerlakartheAlluringWyvern.lua b/server/Spells/Spells-Copy/Commoner/HerlakartheAlluringWyvern.lua
new file mode 100755
index 000000000..aee079e09
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HerlakartheAlluringWyvern.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/HerlakartheAlluringWyvern.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.18 07:03:15
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18766)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/HerosArmor.lua b/server/Spells/Spells-Copy/Commoner/HerosArmor.lua
new file mode 100755
index 000000000..3ebedae2b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HerosArmor.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Commoner/HerosArmor.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 03:03:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ local Val1 = (GetLevel(Caster) * 1.08) * MinVal
+ local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
+ local MitAmt = randomFloat(Val1, Val2)
+ AddSpellBonus(Target, 200, MitAmt)
+ Say(Caster, "MitAmt = " .. MitAmt)
+
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/HighlandStalkerwhistle.lua b/server/Spells/Spells-Copy/Commoner/HighlandStalkerwhistle.lua
new file mode 100755
index 000000000..2f885f966
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HighlandStalkerwhistle.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/HighlandStalkerwhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.20 08:04:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 12606)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/HillrunnerPackHorse.lua b/server/Spells/Spells-Copy/Commoner/HillrunnerPackHorse.lua
new file mode 100755
index 000000000..bed01e990
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HillrunnerPackHorse.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/HillrunnerPackHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.20 08:04:26
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9033)
+SetMountColor(Caster, 107, 68, 35, 0, 0, 0)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Fishing, Trapping, Mining, Foresting, Gathering and Transmuting of caster by 23.8
+ AddSkillBonus(Caster, GetSkillIDByName("Fishing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Trapping"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Mining"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Foresting"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Gathering"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Transmuting"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/HolySteed.lua b/server/Spells/Spells-Copy/Commoner/HolySteed.lua
new file mode 100755
index 000000000..aba48e8c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HolySteed.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/HolySteed.lua
+ Script Author : Jabantiz
+ Script Date : 2014.05.31 07:05:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a mount to ride
+-- Increases your ground speed by 130%
+
+function cast(Caster, Target, Mount)
+ -- Test for aerakyn
+ SetMount(Caster, 17509)
+ AddControlEffect(Caster, 12)
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/HordustheCovetousWyvern.lua b/server/Spells/Spells-Copy/Commoner/HordustheCovetousWyvern.lua
new file mode 100755
index 000000000..8afbb51cd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HordustheCovetousWyvern.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/HordustheCovetousWyvern.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.18 07:03:58
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18765)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/HorseoDifferentColor.lua b/server/Spells/Spells-Copy/Commoner/HorseoDifferentColor.lua
new file mode 100755
index 000000000..f33aae932
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HorseoDifferentColor.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/HorseoDifferentColor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.20 08:04:07
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 6840)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/HotwiredGnomishHoverpad.lua b/server/Spells/Spells-Copy/Commoner/HotwiredGnomishHoverpad.lua
new file mode 100755
index 000000000..2c97fe10b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/HotwiredGnomishHoverpad.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/HotwiredGnomishHoverpad.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.20 08:04:35
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 11347)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Hover.lua b/server/Spells/Spells-Copy/Commoner/Hover.lua
new file mode 100755
index 000000000..fab68989a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Hover.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/Hover.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces maximum falling speed of caster
+-- You cannot use this spell while riding on a mount.
diff --git a/server/Spells/Spells-Copy/Commoner/IcewindKomodo.lua b/server/Spells/Spells-Copy/Commoner/IcewindKomodo.lua
new file mode 100755
index 000000000..4a6268b8d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/IcewindKomodo.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/IcewindKomodo.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.03 07:03:37
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15566)
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/IlluminatedTinkerfestHovercog.lua b/server/Spells/Spells-Copy/Commoner/IlluminatedTinkerfestHovercog.lua
new file mode 100755
index 000000000..98bcd8c25
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/IlluminatedTinkerfestHovercog.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/IlluminatedTinkerfestHovercog.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.23 05:04:16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 1807)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/IncandescentSwiftwing.lua b/server/Spells/Spells-Copy/Commoner/IncandescentSwiftwing.lua
new file mode 100755
index 000000000..86671faf4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/IncandescentSwiftwing.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/IncandescentSwiftwing.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.02 08:01:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 15364)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/InspiringPiety.lua b/server/Spells/Spells-Copy/Commoner/InspiringPiety.lua
new file mode 100755
index 000000000..a083c93ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/InspiringPiety.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Commoner/InspiringPiety.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 03:03:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinFocus, MaxFocus)
+local Val1 = (GetLevel(Caster) * 1.08) * MinFocus
+local Val2 = (GetLevel(Caster) * 1.08) * MaxFocus
+local FocusAmt = randomFloat(Val1, Val2)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), FocusAmt)
+ SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
+
+function randomFloat(Val1, Val2)
+ return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Iridescent Swiftwing.lua b/server/Spells/Spells-Copy/Commoner/Iridescent Swiftwing.lua
new file mode 100755
index 000000000..deb0e0bc8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Iridescent Swiftwing.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/Iridescent Swiftwing.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.04 07:01:38
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 15675)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/JadeArmoredRhinowithTealSaddle.lua b/server/Spells/Spells-Copy/Commoner/JadeArmoredRhinowithTealSaddle.lua
new file mode 100755
index 000000000..e50642d48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/JadeArmoredRhinowithTealSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/JadeArmoredRhinowithTealSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.04 08:01:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 50, 205, 50, 65, 105, 225)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 100.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 3.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/KaranaPlainstrider.lua b/server/Spells/Spells-Copy/Commoner/KaranaPlainstrider.lua
new file mode 100755
index 000000000..5311db89d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/KaranaPlainstrider.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Commoner/KaranaPlainstrider.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.04 08:01:24
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6847)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/KelethinCourserwhistle.lua b/server/Spells/Spells-Copy/Commoner/KelethinCourserwhistle.lua
new file mode 100755
index 000000000..0b42e481b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/KelethinCourserwhistle.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/KelethinCourserwhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.23 06:04:00
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 9033)
+SetMountColor(Caster, 222, 184, 135, 0, 0, 0)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Knockdown.lua b/server/Spells/Spells-Copy/Commoner/Knockdown.lua
new file mode 100755
index 000000000..8865e3da5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Knockdown.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Commoner/Knockdown.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 01:11:34
+ Script Purpose : Apply Knockdown
+ :
+--]]
+
+function cast(Caster, Target)
+
+ --Throws target back
+ --Stuns target
+ AddControlEffect(Target, 4)
+
+ --Blurs vision of target (to do)
+
+ --Except Epic
+
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/LavabornWarg.lua b/server/Spells/Spells-Copy/Commoner/LavabornWarg.lua
new file mode 100755
index 000000000..ad47c0f41
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/LavabornWarg.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Commoner/LavabornWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.23 06:04:49
+ Script Purpose :
+ :
+--]]
+
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, PReg, HReg, Health, Crit, Speed)
+-- Summons a mount
+SetMount(Caster, 10170)
+
+-- Increase Out-of-Combat Power Regeneration Per Tick of caster by 15
+ AddSpellBonus(Caster, 603, PReg)
+
+-- Increase Out-of-Combat Health Regeneration Per Tick of caster by 15
+ AddSpellBonus(Caster, 602, HReg)
+
+-- Increase health of caster by 150
+ AddSpellBonus(Caster, 606, Health)
+
+-- Increase critbonus of caster by 1
+ AddSpellBonus(Caster, 657, Crit)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/LavawalkersStallion.lua b/server/Spells/Spells-Copy/Commoner/LavawalkersStallion.lua
new file mode 100755
index 000000000..7b1ecae23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/LavawalkersStallion.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/LavawalkersStallion.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.23 06:04:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 18011)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/LightningWolf.lua b/server/Spells/Spells-Copy/Commoner/LightningWolf.lua
new file mode 100755
index 000000000..e6f6ac939
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/LightningWolf.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/LightningWolf.lua
+ Script Author : neatz09
+ Script Date : 2019.11.25 09:11:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 15584)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/LucksBite.lua b/server/Spells/Spells-Copy/Commoner/LucksBite.lua
new file mode 100755
index 000000000..d2ad7a284
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/LucksBite.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/LucksBite.lua
+ Script Author : neatz09
+ Script Date : 2020.04.02 12:04:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MagicalStormWhistle.lua b/server/Spells/Spells-Copy/Commoner/MagicalStormWhistle.lua
new file mode 100755
index 000000000..77d30d6fe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MagicalStormWhistle.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/MagicalStormWhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.07 08:01:38
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 13905)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+ --Increases your Ground Speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Maj'dulCarpet.lua b/server/Spells/Spells-Copy/Commoner/Maj'dulCarpet.lua
new file mode 100755
index 000000000..cca2081b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Maj'dulCarpet.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/Maj'dulCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.25 08:04:19
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 7322)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Maj'dulEnchantedCarpet.lua b/server/Spells/Spells-Copy/Commoner/Maj'dulEnchantedCarpet.lua
new file mode 100755
index 000000000..03fcf6ad2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Maj'dulEnchantedCarpet.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/Maj'dulEnchantedCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.25 08:04:41
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 18243)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+RemoveControlEffect(Caster, 13)
+
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MajesticPridewing.lua b/server/Spells/Spells-Copy/Commoner/MajesticPridewing.lua
new file mode 100755
index 000000000..62a2ad53b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MajesticPridewing.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/MajesticPridewing.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.18 07:03:44
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18724)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MaleficFury.lua b/server/Spells/Spells-Copy/Commoner/MaleficFury.lua
new file mode 100755
index 000000000..7e07c6a96
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MaleficFury.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/MaleficFury.lua
+ Script Author : neatz09
+ Script Date : 2020.05.29 07:05:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell will cast Malefic Fury on target of spell.
+-- Inflicts 229 mental damage on target
+-- Increases Threat to target by 1,660
+-- Cannot be modified except by direct means
+
+function cast(Caster, Target)
+AddProc(Caster, 5, 100)
+end
+
+function proc(Caster, Target, DmgType, Dmg, Hate)
+SpellDamage(Target, DmgType, Dmg, nil, 2, 1)
+AddHate(Caster, Target, Hate, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MalevolentDisc.lua b/server/Spells/Spells-Copy/Commoner/MalevolentDisc.lua
new file mode 100755
index 000000000..3294008e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MalevolentDisc.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/MalevolentDisc.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.07 09:01:44
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 14314)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Reduces maximum falling speed of caster.
+AddControlEffect(Caster, 13)
+
+
+ --Increases your Ground Speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+RemoveControlEffect(Caster, 13)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ManaSpiritHorse.lua b/server/Spells/Spells-Copy/Commoner/ManaSpiritHorse.lua
new file mode 100755
index 000000000..ad2a634f7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ManaSpiritHorse.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/ManaSpiritHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.25 09:04:55
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 8227)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Disruption, Ministration, Subjugation and Ordination of caster by 5
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Meleen's Mare.lua b/server/Spells/Spells-Copy/Commoner/Meleen's Mare.lua
new file mode 100755
index 000000000..a198d8f14
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Meleen's Mare.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/Meleen's Mare.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.25 09:04:22
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6858)
+ Say(Caster, "Incorrect model")
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerBlueSaddle.lua
new file mode 100755
index 000000000..92a1059fc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerBlueSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/MidnightMistrunnerBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.26 08:04:41
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt, HP, Mana)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 100, 100, 100, 0, 0, 255)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Crushing, Piercing, Slashing, Ranged and Disruption of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Mana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerGoldSaddle.lua b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerGoldSaddle.lua
new file mode 100755
index 000000000..967cc8c08
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerGoldSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/MidnightMistrunnerGoldSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.26 08:04:05
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt, HP, Mana)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 100, 100, 100, 218, 165, 32)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Crushing, Piercing, Slashing, Ranged and Disruption of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Mana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerPinkSaddle.lua b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerPinkSaddle.lua
new file mode 100755
index 000000000..c273b2675
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerPinkSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/MidnightMistrunnerPinkSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.26 07:04:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt, HP, Mana)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 100, 100, 100, 255, 20, 147)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Crushing, Piercing, Slashing, Ranged and Disruption of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Mana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerRedSaddle.lua
new file mode 100755
index 000000000..5f0dd8bc6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MidnightMistrunnerRedSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/MidnightMistrunnerRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.26 08:04:18
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt, HP, Mana)
+--Summons a mount to ride
+SetMount(Caster, 6829)
+SetMountColor(Caster, 100, 100, 100, 255, 0, 0)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Crushing, Piercing, Slashing, Ranged and Disruption of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Mana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MistrunnerHorseBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/MistrunnerHorseBlueSaddle.lua
new file mode 100755
index 000000000..33172b47e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MistrunnerHorseBlueSaddle.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/MistrunnerHorseBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.26 08:04:51
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 0, 0, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 200
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MistrunnerHorsePurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/MistrunnerHorsePurpleSaddle.lua
new file mode 100755
index 000000000..0e4a1cbb7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MistrunnerHorsePurpleSaddle.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/MistrunnerHorsePurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.26 08:04:59
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 6829)
+SetMountColor(Caster, 255, 255, 255, 75, 0, 130)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 200
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MistyMustang.lua b/server/Spells/Spells-Copy/Commoner/MistyMustang.lua
new file mode 100755
index 000000000..6522c3204
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MistyMustang.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/MistyMustang.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.08 08:01:33
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6851)
+--Increases your ground speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MistyUnicorn.lua b/server/Spells/Spells-Copy/Commoner/MistyUnicorn.lua
new file mode 100755
index 000000000..e7c65d4b8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MistyUnicorn.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Commoner/MistyUnicorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.08 09:01:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed)
+-- Summons a mount
+SetMount(Caster, 16318)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MoleratTest.lua b/server/Spells/Spells-Copy/Commoner/MoleratTest.lua
new file mode 100755
index 000000000..177a1c130
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MoleratTest.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/MoleratTest.lua
+ Script Author : neatz09
+ Script Date : 2019.08.29 01:08:30
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ SummonPet(Caster, 2780089)
+CallCliffdiverHawk(NPC, Spawn)
+ local CliffdiverHawk = GetSpawn(NPC, 2780089)
+
+ if CliffdiverHawk ~= nil then
+ AddTimer(CliffdiverHawk, 5000, "FlyToMoleRat", 1, Spawn)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MoltenspiritUnicorn.lua b/server/Spells/Spells-Copy/Commoner/MoltenspiritUnicorn.lua
new file mode 100755
index 000000000..dc9a03902
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MoltenspiritUnicorn.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/MoltenspiritUnicorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.27 07:04:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 18188)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Multitalented.lua b/server/Spells/Spells-Copy/Commoner/Multitalented.lua
new file mode 100755
index 000000000..8b8cd9063
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Multitalented.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Commoner/Multitalented.lua
+ Script Author : John
+ Script Date : 2012.07.07 12:07:31
+ Script Notes : Reduces harvesting time by 0.5 seconds (Passive)
+ :
+--]]
+
+function cast(Caster, Target, Defense)
+ -- testing Jabantiz' passive spells
+ AddSkillBonus(Target, 609880714, Defense) -- Defense
+end
+
+function tick(Caster, Target, Type, Min, Max)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target, Type, Min, Max)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/MyronsCombustibleGearskif.lua b/server/Spells/Spells-Copy/Commoner/MyronsCombustibleGearskif.lua
new file mode 100755
index 000000000..4da4c5a7f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MyronsCombustibleGearskif.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/MyronsCombustibleGearskif.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.27 07:04:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 1808)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MyronsEnergizedGearskif.lua b/server/Spells/Spells-Copy/Commoner/MyronsEnergizedGearskif.lua
new file mode 100755
index 000000000..2060839eb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MyronsEnergizedGearskif.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/MyronsEnergizedGearskif.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.27 07:04:25
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 1809)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MyronsIlluminatedGearskif.lua b/server/Spells/Spells-Copy/Commoner/MyronsIlluminatedGearskif.lua
new file mode 100755
index 000000000..5ce41e731
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MyronsIlluminatedGearskif.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/MyronsIlluminatedGearskif.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.27 07:04:25
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+-- Summons a mount
+SetMount(Caster, 1805)
+SetMountColor(Caster, 100, 100, 100, 100, 100, 100)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/MysticMoppetDisguise.lua b/server/Spells/Spells-Copy/Commoner/MysticMoppetDisguise.lua
new file mode 100755
index 000000000..d71fe3fe5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MysticMoppetDisguise.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/MysticMoppetDisguise.lua
+ Script Author : neatz09
+ Script Date : 2020.03.03 02:03:54
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+-- Applies Mystic Moppet Disguise when activated.
+function cast(Caster, Target)
+-- Shapechanges caster into a Form of a mystic moppet.
+SetIllusion(Caster, 149)
+-- Shrinks caster by 40.0%
+ AddSpellBonus(Caster, 628, 40)
+-- This effect cannot be cast during combat
+end
+
+
+function remove(Caster, Target)
+ResetIllusion(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/MysticOrderRimeIcemare.lua b/server/Spells/Spells-Copy/Commoner/MysticOrderRimeIcemare.lua
new file mode 100755
index 000000000..b0db202b7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/MysticOrderRimeIcemare.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/MysticOrderRimeIcemare.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.29 08:04:35
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Mana, HP, Time, Speed)
+-- Summons a mount
+SetMount(Caster, 10467)
+
+--Increase maxmana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+-- Increase health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+-- Increase Ability Casting Time of caster by 3
+ AddSpellBonus(Caster, 664, Time)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/NewHalasianCourserwhistle.lua b/server/Spells/Spells-Copy/Commoner/NewHalasianCourserwhistle.lua
new file mode 100755
index 000000000..5c9310c7e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NewHalasianCourserwhistle.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Commoner/NewHalasianCourserwhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.29 08:04:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6852)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/NightmareBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/NightmareBlackSaddle.lua
new file mode 100755
index 000000000..581b7de7d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NightmareBlackSaddle.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Commoner/NightmareBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.08 09:01:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 200
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/NightmareFlightWings.lua b/server/Spells/Spells-Copy/Commoner/NightmareFlightWings.lua
new file mode 100755
index 000000000..f1b991f87
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NightmareFlightWings.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/NightmareFlightWings.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.18 07:03:14
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 16294)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/NightmarePlainSaddle.lua b/server/Spells/Spells-Copy/Commoner/NightmarePlainSaddle.lua
new file mode 100755
index 000000000..870d5cc26
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NightmarePlainSaddle.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/NightmarePlainSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.08 09:01:57
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 255, 255, 255)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 200
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/NightmareRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/NightmareRedSaddle.lua
new file mode 100755
index 000000000..d97710a84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NightmareRedSaddle.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Commoner/NightmareRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.09 07:01:19
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, Mit)
+SetMount(Caster, 6831)
+SetMountColor(Caster, 0, 0, 0, 220, 20, 60)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Mitigation of caster vs elemental, noxious and arcane damage by 200
+AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+
+--Requires Evil Alignment.
+ Say(Caster, "Alignment not implemented.")
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/NormalDrink.lua b/server/Spells/Spells-Copy/Commoner/NormalDrink.lua
new file mode 100755
index 000000000..93532f397
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NormalDrink.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/NormalDrink.lua
+ Script Purpose : Apply drink buffs
+ Script Author : Zcoretri
+ Script Date : 2013.04.11
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+ AddSpellBonus(Target, 601, Bonus)
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/NormalMeal.lua b/server/Spells/Spells-Copy/Commoner/NormalMeal.lua
new file mode 100755
index 000000000..af1a670d5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/NormalMeal.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/NormalMeal.lua
+ Script Purpose : Apply food buffs
+ Script Author : Zcoretri
+ Script Date : 2013.04.11
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+ AddSpellBonus(Target, 600, Bonus)
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhino.lua b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhino.lua
new file mode 100755
index 000000000..4fadcf1f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhino.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/OnyxArmoredRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.09 07:01:13
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 0, 0, 0, 218, 112, 147)
+
+--Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoBlueSaddle.lua
new file mode 100755
index 000000000..d06e021f1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoBlueSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/OnyxArmoredRhinoBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.09 07:01:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 0, 0, 0, 65, 102, 225)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoGreenSaddle.lua
new file mode 100755
index 000000000..fcafbd670
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoGreenSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/OnyxArmoredRhinoGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.09 08:01:11
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 0, 0, 0, 0, 225, 0)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoPurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoPurpleSaddle.lua
new file mode 100755
index 000000000..bfecfcb9d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoPurpleSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/OnyxArmoredRhinoPurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.09 08:01:54
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 0, 0, 0, 148, 0, 211)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoRedSaddle.lua
new file mode 100755
index 000000000..a80f83cdc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OnyxArmoredRhinoRedSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/OnyxArmoredRhinoRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.09 08:01:23
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 0, 0, 0, 178, 34, 34)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OpalescentProwler.lua b/server/Spells/Spells-Copy/Commoner/OpalescentProwler.lua
new file mode 100755
index 000000000..e42263866
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OpalescentProwler.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/OpalescentProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.29 08:04:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 18990)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithBrownArmor.lua b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithBrownArmor.lua
new file mode 100755
index 000000000..b46a035c6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithBrownArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/OrangeTwoToneWargwithBrownArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 08:01:10
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 255, 128, 0, 139, 69, 19)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithBrownSaddle.lua b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithBrownSaddle.lua
new file mode 100755
index 000000000..218c75c6a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithBrownSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/OrangeTwoToneWargwithBrownSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 09:01:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 255, 128, 0, 139, 69, 19)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithRedArmor.lua b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithRedArmor.lua
new file mode 100755
index 000000000..7298276e7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithRedArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/OrangeTwoToneWargwithRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 08:01:16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 255, 128, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithRedSaddle.lua
new file mode 100755
index 000000000..04dfeb103
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrangeTwoToneWargwithRedSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/OrangeTwoToneWargwithRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 09:01:32
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 255, 128, 0, 255, 0, 0)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OrderFlameLavathreadedCarpet.lua b/server/Spells/Spells-Copy/Commoner/OrderFlameLavathreadedCarpet.lua
new file mode 100755
index 000000000..ec80be54c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrderFlameLavathreadedCarpet.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/OrderFlameLavathreadedCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.06 08:05:05
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Power, Health, DMG, Heal, Melee, Speed)
+-- Summons a mount
+SetMount(Caster, 10172)
+
+-- Increases Out-of-Combat Power Regeneration Per tick of caster by 90
+ AddSpellBonus(Caster, 603, Power)
+
+-- Increases Out-of-Combat Health Regeneration Per Tick of caster by 90
+ AddSpellBonus(Caster, 602, Health)
+
+-- Increases spell damage by 15.0
+ AddSpellBonus(Caster, 700, DMG)
+
+-- Increases heal amount by 15.0
+AddSpellBonus(Caster, 701, Heal)
+
+-- Increases melee damage by 15.0
+AddSpellBonus(Caster, 313, Melee)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/OrderRimeIcemare.lua b/server/Spells/Spells-Copy/Commoner/OrderRimeIcemare.lua
new file mode 100755
index 000000000..3491296f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrderRimeIcemare.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/OrderRimeIcemare.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.06 08:05:46
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Mana, HP, DPS, Speed)
+-- Summons a mount
+SetMount(Caster, 10467)
+
+--Increase maxmana of caster by 150.0
+ AddSpellBonus(Caster, 619, Mana)
+
+-- Increase health of caster by 150.0
+ AddSpellBonus(Caster, 606, HP)
+
+-- Increases Damage Per Second of caster by 5.0
+ AddSpellBonus(Caster, 629, DPS)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/OrnateMaj'dulCarpet.lua b/server/Spells/Spells-Copy/Commoner/OrnateMaj'dulCarpet.lua
new file mode 100755
index 000000000..1c6687284
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrnateMaj'dulCarpet.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/OrnateMaj'dulCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.07 06:05:26
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14386)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/OrnateMajdulCarpet.lua b/server/Spells/Spells-Copy/Commoner/OrnateMajdulCarpet.lua
new file mode 100755
index 000000000..8e86cdf49
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OrnateMajdulCarpet.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/OrnateMajdulCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.07 06:05:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 7320)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Ranged, Aggression, Piercing, Crushing and Slashing of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/OverclockedGnomishHoveringDevice.lua b/server/Spells/Spells-Copy/Commoner/OverclockedGnomishHoveringDevice.lua
new file mode 100755
index 000000000..762151346
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/OverclockedGnomishHoveringDevice.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/OverclockedGnomishHoveringDevice.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.07 07:05:26
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, STA, Speed)
+-- Summons a mount
+SetMount(Caster, 5997)
+
+--Increase maxmana of caster by 20.0
+ AddSpellBonus(Caster, 1, STA)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PackUnicorn.lua b/server/Spells/Spells-Copy/Commoner/PackUnicorn.lua
new file mode 100755
index 000000000..b6c99e199
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PackUnicorn.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/PackUnicorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.07 07:05:34
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9114)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Fishing, Trapping, Mining, Foresting, Gathering and Transmuting of caster by 47.5
+ AddSkillBonus(Caster, GetSkillIDByName("Fishing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Trapping"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Mining"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Foresting"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Gathering"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Transmuting"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PaleArmoredAlbinoWarg.lua b/server/Spells/Spells-Copy/Commoner/PaleArmoredAlbinoWarg.lua
new file mode 100755
index 000000000..72b4b0d92
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PaleArmoredAlbinoWarg.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/PaleArmoredAlbinoWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.07 08:05:51
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 7313)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Ranged, Aggression, Piercing, Crushing and Slashing of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PaleArmoredRhino.lua b/server/Spells/Spells-Copy/Commoner/PaleArmoredRhino.lua
new file mode 100755
index 000000000..de5704a0d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PaleArmoredRhino.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/PaleArmoredRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.07 08:05:58
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Ranged, Aggression, Piercing, Crushing and Slashing of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ParadeElddarianCharger.lua b/server/Spells/Spells-Copy/Commoner/ParadeElddarianCharger.lua
new file mode 100755
index 000000000..9035aaee4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ParadeElddarianCharger.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/ParadeElddarianCharger.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.11 08:02:11
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6856)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ParadeHalasianDraftHorse.lua b/server/Spells/Spells-Copy/Commoner/ParadeHalasianDraftHorse.lua
new file mode 100755
index 000000000..2db612335
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ParadeHalasianDraftHorse.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/ParadeHalasianDraftHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 09:01:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6856)
+SetMountColor(Caster, 11, 11, 11, 0, 0, 0)
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ParadeKaranaPlainstrider.lua b/server/Spells/Spells-Copy/Commoner/ParadeKaranaPlainstrider.lua
new file mode 100755
index 000000000..4feadcb93
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ParadeKaranaPlainstrider.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/ParadeKaranaPlainstrider.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.10 10:01:08
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6853)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ParadeMistyMustang.lua b/server/Spells/Spells-Copy/Commoner/ParadeMistyMustang.lua
new file mode 100755
index 000000000..c13329b61
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ParadeMistyMustang.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/ParadeMistyMustang.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.21 08:01:28
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6849)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ParadeRujarkianHillrunner.lua b/server/Spells/Spells-Copy/Commoner/ParadeRujarkianHillrunner.lua
new file mode 100755
index 000000000..e827f96a7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ParadeRujarkianHillrunner.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Commoner/ParadeRujarkianHillrunner.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.21 08:01:23
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6854)
+SetMountColor(Caster, 222, 184, 135, 0, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ParadeSteppesPony.lua b/server/Spells/Spells-Copy/Commoner/ParadeSteppesPony.lua
new file mode 100755
index 000000000..720a712c3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ParadeSteppesPony.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/ParadeSteppesPony.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.21 08:01:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6853)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Pathfinding.lua b/server/Spells/Spells-Copy/Commoner/Pathfinding.lua
new file mode 100755
index 000000000..76c490f62
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Pathfinding.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/Pathfinding.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 10:11:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases speed of group members (AE) by 16.0%
+
+function cast(Caster, Target, BuffValue)
+ AddSpellBonus(Target, 609, BuffValue)
+end
+
+function remove(Caster, Target, BuffValue)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Pegasus.lua b/server/Spells/Spells-Copy/Commoner/Pegasus.lua
new file mode 100755
index 000000000..974d2a8e4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Pegasus.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/Pegasus.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 10:11:46
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 1814)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PegasusFeatherFlightWings.lua b/server/Spells/Spells-Copy/Commoner/PegasusFeatherFlightWings.lua
new file mode 100755
index 000000000..65867c4f2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PegasusFeatherFlightWings.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/PegasusFeatherFlightWings.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.18 07:03:23
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 16204)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Pets.lua b/server/Spells/Spells-Copy/Commoner/Pets.lua
new file mode 100755
index 000000000..7357a3054
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Pets.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/Pets.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 06:11:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PetID)
+ -- Summons a pet
+ SummonPet(Caster, PetID)
+end
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PiercingFaith.lua b/server/Spells/Spells-Copy/Commoner/PiercingFaith.lua
new file mode 100755
index 000000000..1e3cab02b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PiercingFaith.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/PiercingFaith.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 02:04:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/PinkTwoToneWargwithPinkArmor.lua b/server/Spells/Spells-Copy/Commoner/PinkTwoToneWargwithPinkArmor.lua
new file mode 100755
index 000000000..caecc3bfd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PinkTwoToneWargwithPinkArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/PinkTwoToneWargwithPinkArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.21 09:01:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 255, 105, 180, 255, 105, 180)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/PinkTwoToneWargwithPinkSaddle.lua b/server/Spells/Spells-Copy/Commoner/PinkTwoToneWargwithPinkSaddle.lua
new file mode 100755
index 000000000..8e70465ca
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PinkTwoToneWargwithPinkSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/PinkTwoToneWargwithPinkSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.21 09:01:11
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 255, 105, 180, 255, 105, 180)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PinkUnicorn.lua b/server/Spells/Spells-Copy/Commoner/PinkUnicorn.lua
new file mode 100755
index 000000000..3e22d7d44
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PinkUnicorn.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/PinkUnicorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.10 06:05:27
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9112)
+SetMountColor(Caster, 255, 105, 180, 0, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PlagueCloud.lua b/server/Spells/Spells-Copy/Commoner/PlagueCloud.lua
new file mode 100755
index 000000000..c666bfe15
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PlagueCloud.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Plaguecloud Ground Mount
+ Script Purpose :
+ Script Author : Neatz09
+ Script Date : 11/17/2019
+ Script Notes :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground)
+--Increases Oridination, Subjugation, Ministration, Disruption and Focus by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+--Summons a mount to ride
+ SetMount(Caster, 14760)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Ground)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+ SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/PrankstersSepiaSkystrider.lua b/server/Spells/Spells-Copy/Commoner/PrankstersSepiaSkystrider.lua
new file mode 100755
index 000000000..0168228ca
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PrankstersSepiaSkystrider.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/PrankstersSepiaSkystrider.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.03 08:03:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15861)
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/PrankstersTealSkystrider.lua b/server/Spells/Spells-Copy/Commoner/PrankstersTealSkystrider.lua
new file mode 100755
index 000000000..537d5ad10
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PrankstersTealSkystrider.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/PrankstersTealSkystrider.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.03 08:03:56
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15862 )
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/PrimalFuryproc.lua b/server/Spells/Spells-Copy/Commoner/PrimalFuryproc.lua
new file mode 100755
index 000000000..9110e92e4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PrimalFuryproc.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Commoner/PrimalFuryproc.lua
+ Script Author : neatz09
+ Script Date : 2020.02.22 08:02:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Cast, Haste, Multi)
+ AddSpellBonus(Target, 664, Cast)
+ AddSpellBonus(Target, 617, Haste)
+ AddSpellBonus(Target, 641, Multi)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+-- Increases Ability Casting Speed of target by 7.2%
+-- Increases Haste of target by 21.0
+-- Increases Multi Attack of target by 21.0
diff --git a/server/Spells/Spells-Copy/Commoner/PrismaticCloud.lua b/server/Spells/Spells-Copy/Commoner/PrismaticCloud.lua
new file mode 100755
index 000000000..f3c67d331
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PrismaticCloud.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/PrismaticCloud.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 05:03:32
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 14759)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/PurpleHeartPegasus.lua b/server/Spells/Spells-Copy/Commoner/PurpleHeartPegasus.lua
new file mode 100755
index 000000000..c49a87a27
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/PurpleHeartPegasus.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/PurpleHeartPegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 05:03:10
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 15741)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/QSTDrawingRays.lua b/server/Spells/Spells-Copy/Commoner/QSTDrawingRays.lua
new file mode 100755
index 000000000..93d12d7bd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/QSTDrawingRays.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/QSTDrawingRays.lua
+ Script Author : neatz09
+ Script Date : 2020.01.05 06:01:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/QeynosProtectorPegasus.lua b/server/Spells/Spells-Copy/Commoner/QeynosProtectorPegasus.lua
new file mode 100755
index 000000000..f844faeb9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/QeynosProtectorPegasus.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/QeynosProtectorPegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 05:03:29
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18759)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/QuadrortheStou.lua b/server/Spells/Spells-Copy/Commoner/QuadrortheStou.lua
new file mode 100755
index 000000000..0395fce48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/QuadrortheStou.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/QuadrortheStou.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.10 07:05:09
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Bonus, Potency, Chance, HP, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 631)
+
+
+-- Increases Crit Bonus of caster by 4.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Potency of caster by 4.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Chance of caster by 15.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 600.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 600.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/RShadowedSaddledHighlandSnowmane.lua b/server/Spells/Spells-Copy/Commoner/RShadowedSaddledHighlandSnowmane.lua
new file mode 100755
index 000000000..a7897f653
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RShadowedSaddledHighlandSnowmane.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/RShadowedSaddledHighlandSnowmane.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.23 07:01:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 16237)
+SetMountColor(Caster, 0, 0, 0, 0, 0, 255)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/RagingSword.lua b/server/Spells/Spells-Copy/Commoner/RagingSword.lua
new file mode 100755
index 000000000..edb56761c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RagingSword.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/RagingSword.lua
+ Script Author : neatz09
+ Script Date : 2020.04.02 01:04:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/RedAncientChampionsFlyingSymbol.lua b/server/Spells/Spells-Copy/Commoner/RedAncientChampionsFlyingSymbol.lua
new file mode 100755
index 000000000..42966cb88
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RedAncientChampionsFlyingSymbol.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/RedAncientChampionsFlyingSymbol.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.10 08:05:27
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9010)
+SetMountColor(Caster, 255, 255, 0, 255, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/RedTwoToneWargwithPurpleArmor.lua b/server/Spells/Spells-Copy/Commoner/RedTwoToneWargwithPurpleArmor.lua
new file mode 100755
index 000000000..611df3b25
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RedTwoToneWargwithPurpleArmor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/RedTwoToneWargwithPurpleArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.22 06:01:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 255, 0, 0, 153, 50, 204)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 50.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RedTwoToneWargwithPurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/RedTwoToneWargwithPurpleSaddle.lua
new file mode 100755
index 000000000..5818884f2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RedTwoToneWargwithPurpleSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/RedTwoToneWargwithPurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.22 07:01:14
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 130%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7219)
+SetMountColor(Caster, 255, 0, 0, 153, 50, 204)
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Refine.lua b/server/Spells/Spells-Copy/Commoner/Refine.lua
new file mode 100755
index 000000000..311b4bb89
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Refine.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Commoner/Refine.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 01:10:39
+ Script Purpose : JA Test Write - remove me
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Commoner/ReinforcedWarg.lua b/server/Spells/Spells-Copy/Commoner/ReinforcedWarg.lua
new file mode 100755
index 000000000..7e0544f69
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ReinforcedWarg.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Commoner/ReinforcedWarg.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.10 08:05:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 8191)
+SetMountColor(Caster, 0, 0, 0, 255, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Ranged, Aggression, Piercing, Crushing and Slashing of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ReklaarnOnyxstorm.lua b/server/Spells/Spells-Copy/Commoner/ReklaarnOnyxstorm.lua
new file mode 100755
index 000000000..e33b83e50
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ReklaarnOnyxstorm.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/ReklaarnOnyxstorm.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 05:03:58
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18358)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 10.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 10.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 35.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 1500.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 1500.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ResonatingCascade.lua b/server/Spells/Spells-Copy/Commoner/ResonatingCascade.lua
new file mode 100755
index 000000000..132ff7001
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ResonatingCascade.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/ResonatingCascade.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 01:04:55
+ Script Purpose :
+ :
+--]]
+
+-- increases power of group members by x instantly and every 12 seconds
+
+function cast(Caster, Target, PowerMin)
+local PowerAmt = (GetLevel(Caster) * 1.08) * PowerMin
+
+SpellHeal("Power", PowerAmt)
+end
+
+
+function tick(Caster, Target)
+SpellHeal("Power", PowerAmt)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/RhyansMustang.lua b/server/Spells/Spells-Copy/Commoner/RhyansMustang.lua
new file mode 100755
index 000000000..bc5fe4750
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RhyansMustang.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/RhyansMustang.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.11 07:05:51
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6851)
+ Say(Caster, "Might be incorrect model")
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RilissianSoldierRhino.lua b/server/Spells/Spells-Copy/Commoner/RilissianSoldierRhino.lua
new file mode 100755
index 000000000..ef0cf928d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RilissianSoldierRhino.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/RilissianSoldierRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.11 08:05:31
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Power, Health, Ability, Speed)
+-- Summons a mount
+SetMount(Caster, 10177)
+
+
+-- Increases Power Regen of caster by 15.0
+ AddSpellBonus(Caster, 601, Power)
+
+-- Increases Health Regen of caster by 15.0
+ AddSpellBonus(Caster, 600, Health)
+
+-- Increases Ability Mod of caster by 15.0
+ AddSpellBonus(Caster, 707, Ability)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RilissianWarRhino.lua b/server/Spells/Spells-Copy/Commoner/RilissianWarRhino.lua
new file mode 100755
index 000000000..7e9bfe1f3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RilissianWarRhino.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/RilissianWarRhino.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.11 08:05:01
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Range, Speed)
+-- Summons a mount
+SetMount(Caster, 7206)
+SetMountColor(Caster, 139, 0, 0, 0, 0, 0)
+
+-- Increase melee weapon range of caster by 1
+ AddSpellBonus(Caster, 666, Range)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Ringing Blow.lua b/server/Spells/Spells-Copy/Commoner/Ringing Blow.lua
new file mode 100755
index 000000000..e390e5c61
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Ringing Blow.lua
@@ -0,0 +1,9 @@
+--[[
+ Script Name : Spells/Commoner/Ringing Blow.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 01:03:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
diff --git a/server/Spells/Spells-Copy/Commoner/RingingBlow.lua b/server/Spells/Spells-Copy/Commoner/RingingBlow.lua
new file mode 100755
index 000000000..1a86ca5c6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RingingBlow.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/RingingBlow.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 01:03:33
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/Rob.lua b/server/Spells/Spells-Copy/Commoner/Rob.lua
new file mode 100755
index 000000000..c32a5f3de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Rob.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Commoner/Rob.lua
+ Script Author : neatz09
+ Script Date : 2020.04.02 09:04:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Gives the caster a chance to steal something from the target. The chance is based on the level difference of the opponent. Be wary, though, some creatures may not take kindly to being robbed.
diff --git a/server/Spells/Spells-Copy/Commoner/RoseSaddledHighlandSnowmane.lua b/server/Spells/Spells-Copy/Commoner/RoseSaddledHighlandSnowmane.lua
new file mode 100755
index 000000000..a3ac10d02
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RoseSaddledHighlandSnowmane.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/RoseSaddledHighlandSnowmane.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.22 07:01:08
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 16130)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/RubiciteArmoredRhinowithBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/RubiciteArmoredRhinowithBlackSaddle.lua
new file mode 100755
index 000000000..d7727ff8b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RubiciteArmoredRhinowithBlackSaddle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/RubiciteArmoredRhinowithBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.22 07:01:39
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, HP, SkillAmt, Def)
+--Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 255, 0, 0, 0, 0, 0)
+
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Max Health of caster by 150.0
+AddSpellBonus(Caster, 606, HP)
+
+-- Increases Crushing, Focus, Piercing, Ranged and Slashing of caster by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+-- Increases Defense of caster by 5.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrier.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrier.lua
new file mode 100755
index 000000000..5b3535a25
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrier.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrier.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.22 07:01:32
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 255, 255, 255, 255, 215, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Piercing, Ranged, Slashing, Crushing and Focus of caster by 4.7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierBlackSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierBlackSaddle.lua
new file mode 100755
index 000000000..70d3a9e51
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierBlackSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierBlackSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.29 09:04:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 10, 10, 10)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierBlueSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierBlueSaddle.lua
new file mode 100755
index 000000000..16ab5b480
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierBlueSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierBlueSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 07:04:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 65, 105, 225)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierGreenSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierGreenSaddle.lua
new file mode 100755
index 000000000..dd436d38c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierGreenSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierGreenSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 08:04:22
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 154, 205, 50)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierPinkSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierPinkSaddle.lua
new file mode 100755
index 000000000..1b2b774ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierPinkSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierPinkSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 08:04:31
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 255,105,180)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierPurpleSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierPurpleSaddle.lua
new file mode 100755
index 000000000..e8a777cc0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierPurpleSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierPurpleSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 08:04:01
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 147, 112, 219)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierRedSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierRedSaddle.lua
new file mode 100755
index 000000000..1109370ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierRedSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierRedSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 08:04:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 139, 0, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierWhiteSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierWhiteSaddle.lua
new file mode 100755
index 000000000..2d5372c57
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierWhiteSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierWhiteSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 08:04:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 255, 255, 255)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianDestrierYellowSaddle.lua b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierYellowSaddle.lua
new file mode 100755
index 000000000..7f81edcd2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianDestrierYellowSaddle.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianDestrierYellowSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.04.30 08:04:04
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6835)
+SetMountColor(Caster, 10, 10, 10, 255, 255, 0)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increase Focus, Crushing, Piercing & Slashing of caster by 4.75
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/RujarkianHillrunner.lua b/server/Spells/Spells-Copy/Commoner/RujarkianHillrunner.lua
new file mode 100755
index 000000000..14e9b0e72
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RujarkianHillrunner.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Commoner/RujarkianHillrunner.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.23 07:01:00
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6848)
+SetMountColor(Caster, 188, 143, 143, 255, 255, 255)
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/RussetWarg.lua b/server/Spells/Spells-Copy/Commoner/RussetWarg.lua
new file mode 100755
index 000000000..a06bd414e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/RussetWarg.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/RussetWarg.lua
+ Script Author : neatz09
+ Script Date : 2019.11.25 08:11:47
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+-- Summons a mount to ride that increases your ground speed by 135%
+function cast(Caster, Target, Speed, SkillAmt, Dmg)
+-- Summons a mount
+SetMount(Caster, 7221)
+SetMountColor(Caster, 128, 70, 27, 255, 182, 193)
+--Increases your ground speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases your Crushing, Disruption, Piercing, Slashing and Ranged by 7.0
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+--Increases damage done by spells and combat arts by upto 30.
+ AddSpellBonus(Caster, 704, Dmg)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Salvage.lua b/server/Spells/Spells-Copy/Commoner/Salvage.lua
new file mode 100755
index 000000000..26f5fef70
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Salvage.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Commoner/Salvage.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 01:10:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Commoner/SarlaktheFrenziedWyvern.lua b/server/Spells/Spells-Copy/Commoner/SarlaktheFrenziedWyvern.lua
new file mode 100755
index 000000000..945683845
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SarlaktheFrenziedWyvern.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/SarlaktheFrenziedWyvern.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 06:03:52
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 18767)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SaryrnDeathcharger.lua b/server/Spells/Spells-Copy/Commoner/SaryrnDeathcharger.lua
new file mode 100755
index 000000000..c59d8db94
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SaryrnDeathcharger.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/SaryrnDeathcharger.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.13 04:05:13
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, XP, Speed)
+-- Summons a mount
+SetMount(Caster, 9978)
+
+-- Increase Combat XP Gain of target by 10%
+ AddSpellBonus(Caster, 625, XP)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ScornDiskDeathmage.lua b/server/Spells/Spells-Copy/Commoner/ScornDiskDeathmage.lua
new file mode 100755
index 000000000..accc5da8f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ScornDiskDeathmage.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/ScornDiskDeathmage.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.13 05:05:21
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Crit, Potency, Pwr, Health, Speed)
+-- Summons a mount
+SetMount(Caster, 10978)
+
+
+-- Increases Crit Bonus of caster by 2.0%
+ AddSpellBonus(Caster, 657, Crit)
+
+
+-- Increases the potency of all abilities by 2.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+
+--Increases Max Power of caster by 300.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+--Increases Max Health of caster by 300.0
+ AddSpellBonus(Caster, 606, Health)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SeekerDiscDarktruth.lua b/server/Spells/Spells-Copy/Commoner/SeekerDiscDarktruth.lua
new file mode 100755
index 000000000..7bd40d0fd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SeekerDiscDarktruth.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Commoner/SeekerDiscDarktruth.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.13 05:05:36
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Crit, Pwr, Health, Speed)
+-- Summons a mount
+SetMount(Caster, 10985)
+
+
+-- Increases Crit Chance of caster by 2.0%
+ AddSpellBonus(Caster, 654, Crit)
+
+--Increases Max Power of caster by 150.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+--Increases Max Health of caster by 150.0
+ AddSpellBonus(Caster, 606, Health)
+
+ --Increases your Ground Speed by 130%
+
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SelfContainedCloud.lua b/server/Spells/Spells-Copy/Commoner/SelfContainedCloud.lua
new file mode 100755
index 000000000..96f71ab3a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SelfContainedCloud.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/SelfContainedCloud.lua
+ Script Author : neatz09
+ Script Date : 2019.11.19 08:11:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+
+-- Summons a mount to ride
+-- Increases your ground speed by 130%
+-- Reduces maximum falling speed of caster
+
+function cast(Caster, Target, Speed)
+SetMount(Caster, 14759)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+ AddControlEffect(Caster, 13)
+
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+RemoveSpellBonus(Caster)
+ RemoveControlEffect(Caster, 13)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SetRecallPoint.lua b/server/Spells/Spells-Copy/Commoner/SetRecallPoint.lua
new file mode 100755
index 000000000..a9e903abd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SetRecallPoint.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Commoner/SetRecallPoint.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 09:10:20
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- This effect cannot be cast during combat
+
+function cast(Caster, Target)
+ Bind(Caster)
+ Say(Caster, "No Check setup for allowed binds yet. cannot be cast during combat not implemented yet.")
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ShadowedDeathcharger.lua b/server/Spells/Spells-Copy/Commoner/ShadowedDeathcharger.lua
new file mode 100755
index 000000000..3cf1761d1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ShadowedDeathcharger.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/ShadowedDeathcharger.lua
+ Script Author : Skywalker646
+ Script Date : 2019.11.19 08:11:13
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 16181)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ShadowscaleDrakota.lua b/server/Spells/Spells-Copy/Commoner/ShadowscaleDrakota.lua
new file mode 100755
index 000000000..eb65c087f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ShadowscaleDrakota.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/ShadowscaleDrakota.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 06:03:40
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17082)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ShardLoveUnicorn.lua b/server/Spells/Spells-Copy/Commoner/ShardLoveUnicorn.lua
new file mode 100755
index 000000000..90aad9a0a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ShardLoveUnicorn.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Commoner/ShardLoveUnicorn.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.13 05:05:00
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9112)
+SetMountColor(Caster, 255, 105, 180, 0, 0, 0)
+ Say(Caster, "Model might not be accurate")
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ShareStormWindKomodo.lua b/server/Spells/Spells-Copy/Commoner/ShareStormWindKomodo.lua
new file mode 100755
index 000000000..9a889072c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ShareStormWindKomodo.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Commoner/ShareStormWindKomodo.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.31 07:01:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases your ground speed by 130%
diff --git a/server/Spells/Spells-Copy/Commoner/ShowerofDaggers.lua b/server/Spells/Spells-Copy/Commoner/ShowerofDaggers.lua
new file mode 100755
index 000000000..c841bfe08
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ShowerofDaggers.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/ShowerofDaggers.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 11:04:09
+ Script Purpose :
+ :
+--]]
+
+-- On a combat hit this spell may cast Daggers on target of attack. Triggers about 5.0 per minute.
+-- inflicts x - y damage based on character level
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 3, 5)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ ProcDamage(Caster, Target, "Daggers", DmgType, MinVal, MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SinisterProwler.lua b/server/Spells/Spells-Copy/Commoner/SinisterProwler.lua
new file mode 100755
index 000000000..03fa82964
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SinisterProwler.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/SinisterProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 09:05:54
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 13846)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SinisterSkeletalProwler.lua b/server/Spells/Spells-Copy/Commoner/SinisterSkeletalProwler.lua
new file mode 100755
index 000000000..2e7a23c59
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SinisterSkeletalProwler.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/SinisterSkeletalProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 09:05:58
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14419)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SkyCleave.lua b/server/Spells/Spells-Copy/Commoner/SkyCleave.lua
new file mode 100755
index 000000000..c9176e2a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SkyCleave.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/SkyCleave.lua
+ Script Author : neatz09
+ Script Date : 2020.03.22 07:03:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SkyshrineDrakota.lua b/server/Spells/Spells-Copy/Commoner/SkyshrineDrakota.lua
new file mode 100755
index 000000000..75b98f3e0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SkyshrineDrakota.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/SkyshrineDrakota.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 06:03:10
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 17082)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 7.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 7.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 22.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 900.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 900.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SnowBall.lua b/server/Spells/Spells-Copy/Commoner/SnowBall.lua
new file mode 100755
index 000000000..def47faf3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SnowBall.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/SnowBall.lua
+ Script Author : neatz09
+ Script Date : 2019.10.27 06:10:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SoldiersInstinct.lua b/server/Spells/Spells-Copy/Commoner/SoldiersInstinct.lua
new file mode 100755
index 000000000..7f6fe9434
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SoldiersInstinct.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SoldiersInstinct.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 12:04:51
+ Script Purpose :
+ :
+--]]
+
+-- On a combat hit this spell may cast Hasten on caster. Lasts for 30.0 seconds. Triggers about 6.6 times per minute.
+-- Increases Haste of target by x - y based on CLevel
+
+function cast(Caster, Target)
+Say(Caster, "need to add hasten to the DB")
+AddProc(Target, 3, 25)
+end
+
+function proc(Caster, Target, Type)
+
+CastSpell(Caster, 2002, 1)
+ Say(Caster, "need to add hasten to the DB")
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SootfootSpikyLavaCow.lua b/server/Spells/Spells-Copy/Commoner/SootfootSpikyLavaCow.lua
new file mode 100755
index 000000000..daf56a4a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SootfootSpikyLavaCow.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/SootfootSpikyLavaCow.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.14 07:05:27
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, PReg, HReg, Health, Speed)
+-- Summons a mount
+SetMount(Caster, 10175)
+
+
+-- Increases Power Regen of caster by 15.0
+ AddSpellBonus(Caster, 601, PReg)
+
+--Increases Health Regen of caster by 15.0
+ AddSpellBonus(Caster, 600, HReg)
+
+--Increases Max Health of caster by 100.0
+ AddSpellBonus(Caster, 606, Health)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SpellweaversBlueFlyingCarpet.lua b/server/Spells/Spells-Copy/Commoner/SpellweaversBlueFlyingCarpet.lua
new file mode 100755
index 000000000..189200ac5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpellweaversBlueFlyingCarpet.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/SpellweaversBlueFlyingCarpet.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.26 07:01:31
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18478)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SpellweaversBlueFlyingCarpetlua b/server/Spells/Spells-Copy/Commoner/SpellweaversBlueFlyingCarpetlua
new file mode 100755
index 000000000..822218758
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpellweaversBlueFlyingCarpetlua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/SpellweaversBlueFlyingCarpetlua
+ Script Author : Skywalker646
+ Script Date : 2020.01.26 07:01:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination,
+Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritSteed.lua b/server/Spells/Spells-Copy/Commoner/SpiritSteed.lua
new file mode 100755
index 000000000..db63ebfd6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritSteed.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/SpiritSteed.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.14 08:05:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6921)
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheBamboo.lua b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheBamboo.lua
new file mode 100755
index 000000000..c6bff8b05
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheBamboo.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/SpiritTotemoftheBamboo.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:55
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 108.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 80 )
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheChokidai.lua b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheChokidai.lua
new file mode 100755
index 000000000..69c06d0e0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheChokidai.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/SpiritTotemoftheChokidai.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 08:04:09
+ Script Purpose :
+ :
+--]]
+
+-- Increases Speed of caster by 45.0%
+function cast(Caster, Target, OutSpd)
+ if (GetLevel(Caster) >= 65)
+ then
+ SetIllusion(Caster, 7323)
+ AddSpellBonus(Caster, 609, OutSpd)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheFearstalker.lua b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheFearstalker.lua
new file mode 100755
index 000000000..a49854951
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheFearstalker.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/SpiritTotemoftheFearstalker.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:01
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 265.5
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 80)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheWolf.lua b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheWolf.lua
new file mode 100755
index 000000000..40fd8fba4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritTotemoftheWolf.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritTotemoftheWolf.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:08
+ Script Purpose :
+ :
+--]]
+
+-- Increases Speed of caster by 24.0%
+function cast(Caster, Target, OutSpd, InSpd)
+ if (GetLevel(Caster) >= 15)
+ then
+ SetIllusion(Caster, 216)
+ AddSpellBonus(Caster, 609, OutSpd)
+ AddSpellBonus(Caster, 616, InSpd)
+
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheBat.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheBat.lua
new file mode 100755
index 000000000..65357ab5d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheBat.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheBat.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 09:04:59
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 48.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 30)
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 239)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheBear.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheBear.lua
new file mode 100755
index 000000000..e3eebfa3a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheBear.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheBear.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 06:04:51
+ Script Purpose :
+ :
+--]]
+
+-- Increases Health Regen of caster by 22.0
+
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 50)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 198)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheBeetles.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheBeetles.lua
new file mode 100755
index 000000000..a5154f58f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheBeetles.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheBeetles.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 11:04:29
+ Script Purpose :
+ :
+--]]
+
+-- Increases power regen of caster by 12.0
+function cast(Caster, Target, PwrAmt)
+ AddSpellBonus(Target, 603, PwrAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheBeholder.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheBeholder.lua
new file mode 100755
index 000000000..cdc259d05
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheBeholder.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheBeholder.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 08:04:51
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 84.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 60)
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 5918)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheCarnivorousPlant.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheCarnivorousPlant.lua
new file mode 100755
index 000000000..f90926f48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheCarnivorousPlant.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheCarnivorousPlant.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 08:04:29
+ Script Purpose :
+ :
+--]]
+
+-- Increases Health Regen of caster by 127.0
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 60)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 5946)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheCobra.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheCobra.lua
new file mode 100755
index 000000000..d9d3146cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheCobra.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheCobra.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 09:04:57
+ Script Purpose :
+ :
+--]]
+
+-- Increases Health Regen of caster by 102.0
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 49)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 4661)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheCockatrice.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheCockatrice.lua
new file mode 100755
index 000000000..a94a1aced
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheCockatrice.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheCockatrice.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 01:04:57
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 40 )
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 7235)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheFrog.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheFrog.lua
new file mode 100755
index 000000000..2402483ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheFrog.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheFrog.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 12:04:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Health Regen of caster by 8.0
+
+function cast(Caster, Target, HP)
+ AddSpellBonus(Target, 602, HP)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheGoblin.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheGoblin.lua
new file mode 100755
index 000000000..1b1652883
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheGoblin.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheGoblin.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 01:04:57
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 70)
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 7311)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheHawk.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheHawk.lua
new file mode 100755
index 000000000..f0dcb60e0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheHawk.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheHawk.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:08
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 60.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 40)
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 2358)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheLion.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheLion.lua
new file mode 100755
index 000000000..994ca567b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheLion.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheLion.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:38
+ Script Purpose :
+ :
+--]]
+
+-- Increases Health Regen of caster by 82.0
+
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 50)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 303)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheMonkey.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheMonkey.lua
new file mode 100755
index 000000000..1c585eb8b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheMonkey.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheMonkeylua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Power Regen of caster by 72.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 50)
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 5006)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheMonkeylua b/server/Spells/Spells-Copy/Commoner/SpiritoftheMonkeylua
new file mode 100755
index 000000000..97ac1f60a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheMonkeylua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheMonkeylua
+ Script Author : neatz09
+ Script Date : 2020.04.04 05:04:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Power Regen of caster by 72.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 50 )
+ then
+ AddSpellBonus(Caster, 602, Pwr)
+ SetIllusion(Caster, 5006)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheRat.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheRat.lua
new file mode 100755
index 000000000..99a8b56ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheRat.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheRat.lua
+ Script Author : neatz09
+ Script Date : 2020.04.04 01:04:57
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 24.0
+
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 10 )
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 196)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheTiger.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheTiger.lua
new file mode 100755
index 000000000..7773c478c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheTiger.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheTiger.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 10:04:41
+ Script Purpose :
+ :
+--]]
+
+-- Increases Health Regen of caster by 62.0
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 50)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 2415)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheWhiteBear.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheWhiteBear.lua
new file mode 100755
index 000000000..c8fd51846
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheWhiteBear.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheWhiteBear.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 10:04:26
+ Script Purpose :
+ :
+--]]
+
+-- Increases Health Regen of caster by 42.0
+function cast(Caster, Target, HP)
+ if (GetLevel(Caster) >= 10)
+ then
+ AddSpellBonus(Caster, 602, HP)
+ SetIllusion(Caster, 3836)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SpiritoftheWingedViper.lua b/server/Spells/Spells-Copy/Commoner/SpiritoftheWingedViper.lua
new file mode 100755
index 000000000..7522ea877
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SpiritoftheWingedViper.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Commoner/SpiritoftheWingedViper.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 10:04:18
+ Script Purpose :
+ :
+--]]
+
+-- Increases Power Regen of caster by 36.0
+function cast(Caster, Target, Pwr)
+ if (GetLevel(Caster) >= 20)
+ then
+ AddSpellBonus(Caster, 603, Pwr)
+ SetIllusion(Caster, 197)
+else
+ SetIllusion(Caster, 0)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetIllusion(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Sprint.lua b/server/Spells/Spells-Copy/Commoner/Sprint.lua
new file mode 100755
index 000000000..f5cb70d91
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Sprint.lua
@@ -0,0 +1,63 @@
+--[[
+ Script Name : Spells/Commoner/Sprint.lua
+ Script Purpose : Sprint
+ Script Author : theFoof
+ Script Date : 2014.3.9
+ Script Note :
+--]]
+
+function cast(Caster, Target, Speed, is_tick)
+ local has_moved = SprinterHasMoved(Caster, is_tick)
+ if not has_moved and GetTempVariable(Caster, "sprint_bonus_active") == "true" then
+ return
+ end
+
+ local power_left = GetPower(Caster)
+ local total_power = GetMaxPower(Caster)
+ if power_left - (total_power * .1) < 0 then
+ if GetTempVariable(Caster, "sprint_bonus_active") == "true" then
+ RemoveSpellBonus()
+ SetTempVariable(Caster, "sprint_bonus_active", nil)
+ end
+ else
+ if is_tick == true then
+ ModifyPower(Caster, -1 * (total_power * .1))
+ end
+ if GetTempVariable(Caster, "sprint_bonus_active") ~= "true" then
+ AddSpellBonus(Caster, 609, Speed)
+ end
+ SetTempVariable(Caster, "sprint_bonus_active", "true")
+ SetTempVariable(Caster, "sprint_bonus_x", GetX(Caster) .. "")
+ SetTempVariable(Caster, "sprint_bonus_y", GetY(Caster) .. "")
+ SetTempVariable(Caster, "sprint_bonus_z", GetZ(Caster) .. "")
+ end
+end
+
+function SprinterHasMoved(Caster, is_tick)
+ if is_tick ~= true then
+ return true
+ end
+
+ local ret = false
+
+ if GetTempVariable(Caster, "sprint_bonus_x") ~= GetX(Caster) .. "" then
+ ret = true
+ elseif GetTempVariable(Caster, "sprint_bonus_y") ~= GetY(Caster) .. "" then
+ ret = true
+ elseif GetTempVariable(Caster, "sprint_bonus_z") ~= GetZ(Caster) .. "" then
+ ret = true
+ end
+ return ret
+end
+
+function tick(Caster, Target, Speed)
+ cast(Caster, Target, Speed, true)
+end
+
+function remove(Caster)
+ RemoveSpellBonus()
+ SetTempVariable(Caster, "sprint_bonus_active", nil)
+ SetTempVariable(Caster, "sprint_bonus_x", nil)
+ SetTempVariable(Caster, "sprint_bonus_y", nil)
+ SetTempVariable(Caster, "sprint_bonus_z", nil)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/StalwartSnowStallion.lua b/server/Spells/Spells-Copy/Commoner/StalwartSnowStallion.lua
new file mode 100755
index 000000000..707de7f37
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/StalwartSnowStallion.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/StalwartSnowStallion.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.14 08:05:15
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 634)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SteedBlazingSun.lua b/server/Spells/Spells-Copy/Commoner/SteedBlazingSun.lua
new file mode 100755
index 000000000..443e4e120
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SteedBlazingSun.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/SteedBlazingSun.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.14 08:05:02
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Speed)
+-- Summons a mount
+SetMount(Caster, 8226)
+
+--Increases Potency of caster by 2.0%
+ AddSpellBonus(Caster, 659, Health)
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SteedDeathLord.lua b/server/Spells/Spells-Copy/Commoner/SteedDeathLord.lua
new file mode 100755
index 000000000..cb4eb127c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SteedDeathLord.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/SteedDeathLord.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.17 08:05:53
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 617)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SteedoftheFaithful.lua b/server/Spells/Spells-Copy/Commoner/SteedoftheFaithful.lua
new file mode 100755
index 000000000..fa3fc83d3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SteedoftheFaithful.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/SteedoftheFaithful.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.26 07:01:52
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 13569)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/SteelArmoredRhinoGoldSaddle.lua b/server/Spells/Spells-Copy/Commoner/SteelArmoredRhinoGoldSaddle.lua
new file mode 100755
index 000000000..da64ca87b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SteelArmoredRhinoGoldSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/SteelArmoredRhinoGoldSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.30 07:01:30
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Speed, Def, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 150, 150, 150, 255, 215, 0)
+-- Increases Max Health of caster by 100.0
+AddSpellBonus(Caster, 606, HP)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Defense of caster by 3.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+-- Increases Slashing, Piercing, Ranged, Crushing and Focus of caster by 7.0
+AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SteelArmoredRhinoOrangeSaddle.lua b/server/Spells/Spells-Copy/Commoner/SteelArmoredRhinoOrangeSaddle.lua
new file mode 100755
index 000000000..e30108b18
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SteelArmoredRhinoOrangeSaddle.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Commoner/SteelArmoredRhinoOrangeSaddle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.30 07:01:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, HP, Speed, Def, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 7206)
+SetMountColor(Caster, 150, 150, 150, 255, 140, 0)
+-- Increases Max Health of caster by 100.0
+AddSpellBonus(Caster, 606, HP)
+--Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Defense of caster by 3.0
+AddSkillBonus(Caster, GetSkillIDByName("Defense"), Def)
+-- Increases Slashing, Piercing, Ranged, Crushing and Focus of caster by 7.0
+AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+RemoveSkillBonus(Caster)
+RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SteppesPony.lua b/server/Spells/Spells-Copy/Commoner/SteppesPony.lua
new file mode 100755
index 000000000..fa0506c6f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SteppesPony.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Commoner/SteppesPony.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.30 08:01:51
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 6852)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/StormWindKomodo.lua b/server/Spells/Spells-Copy/Commoner/StormWindKomodo.lua
new file mode 100755
index 000000000..45f5bb3f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/StormWindKomodo.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/StormWindKomodo.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.31 07:01:49
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15564)
+-- Mez the target.
+ AddControlEffect(Target, 13)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 13)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/StormfeatherBroodGuardian.lua b/server/Spells/Spells-Copy/Commoner/StormfeatherBroodGuardian.lua
new file mode 100755
index 000000000..03a05eca5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/StormfeatherBroodGuardian.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Commoner/StormfeatherBroodGuardian.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 06:11:06
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Ground, Air)
+SetMount(Caster, 382)
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Caster, 612, Air)
+ AddControlEffect(Caster, 12)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/StormofAncients.lua b/server/Spells/Spells-Copy/Commoner/StormofAncients.lua
new file mode 100755
index 000000000..f557fa26d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/StormofAncients.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/StormofAncients.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 12:04:55
+ Script Purpose :
+ :
+--]]
+
+-- Encounter AoE Magic Damage X - Y based on Clevel
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/StormscaleDrakota.lua b/server/Spells/Spells-Copy/Commoner/StormscaleDrakota.lua
new file mode 100755
index 000000000..ea9907d56
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/StormscaleDrakota.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/StormscaleDrakota.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 06:03:25
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17083)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/StunsporeParalysis.lua b/server/Spells/Spells-Copy/Commoner/StunsporeParalysis.lua
new file mode 100755
index 000000000..6bb934ce7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/StunsporeParalysis.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/StunsporeParalysis.lua
+ Script Author : Cynnar
+ Script Date : 2017.12.16 12:12:10
+ Script Purpose : For use with quest "Dust to Dust"
+ :
+--]]
+
+function cast(Caster, Target)
+ AddControlEffect(Target, 4)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SuffocatingWrath.lua b/server/Spells/Spells-Copy/Commoner/SuffocatingWrath.lua
new file mode 100755
index 000000000..c964136ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SuffocatingWrath.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/SuffocatingWrath.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 09:04:05
+ Script Purpose :
+ :
+--]]
+
+-- Deals X - Y magic damage based on CLevel.
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SummonGazerPet.lua b/server/Spells/Spells-Copy/Commoner/SummonGazerPet.lua
new file mode 100755
index 000000000..c8abe9990
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SummonGazerPet.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/SummonGazerPet.lua
+ Script Author : neatz09
+ Script Date : 2019.09.09 12:09:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ SummonCosmeticPet(Caster, 880161)
+
+end
+
+function remove(Caster, Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SummonMount.lua b/server/Spells/Spells-Copy/Commoner/SummonMount.lua
new file mode 100755
index 000000000..31f6e5f40
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SummonMount.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Commoner/SummonMount.lua
+ Script Author : TyroneSWG
+ Script Date : 2019.01.16 03:01:40
+ Script Purpose : mounting test
+ :
+--]]
+
+--local mount_favorites = { '25423', '24053', '25864', '23713', '15397', '20950', '20344', '17509' }
+function cast(Caster, Target)
+
+ SendMessage(Caster, "Mounting...", "red")
+ SetMount(Caster, 10441)
+ --SetMount(Caster, mount_favorites[ math.random( 1, #mount_favorites - 1 ) ] )
+PlaySound(Caster, "sounds/test/level_up.wav", GetX(Caster), GetY(Caster), GetZ(Caster))
+ SetSpeed(Caster, 100)
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+ SetSpeed(Caster, 1)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/SummonSatyr.lua b/server/Spells/Spells-Copy/Commoner/SummonSatyr.lua
new file mode 100755
index 000000000..3f33cc829
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SummonSatyr.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Commoner/SummonSatyr.lua
+ Script Author : TyroneSWG
+ Script Date : 2020.06.15 11:06:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet Dancing Satyr
+function cast(Caster, Target)
+ SummonCosmeticPet(Caster, 6538)
+
+end
+
+function remove(Caster, Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SummonSquire.lua b/server/Spells/Spells-Copy/Commoner/SummonSquire.lua
new file mode 100755
index 000000000..c858776ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SummonSquire.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Commoner/SummonSquire.lua
+ Script Author : neatz09
+ Script Date : 2020.02.24 09:02:20
+ Script Purpose :
+ :
+--]]
+
+
+-- Summons a pet shadowknight squire
+function cast(Caster, Target, PetID)
+ SummonCosmeticPet(Caster, PetID)
+
+end
+
+function remove(Caster, Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SummonaBitterGingerdreadPet.lua b/server/Spells/Spells-Copy/Commoner/SummonaBitterGingerdreadPet.lua
new file mode 100755
index 000000000..30a28fbab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SummonaBitterGingerdreadPet.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/SummonaBitterGingerdreadPet.lua
+ Script Author : TyroneSWG
+ Script Date : 2019.01.16 02:01:04
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target)
+ SummonCosmeticPet(Caster, 20314)
+
+end
+
+function remove(Caster, Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Sun-BlazonedPegasus.lua b/server/Spells/Spells-Copy/Commoner/Sun-BlazonedPegasus.lua
new file mode 100755
index 000000000..d0f897dd6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Sun-BlazonedPegasus.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/Sun-BlazonedPegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 07:03:00
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 19052)
+SetMountColor(Caster, 255, 1, 1, 255, 1, 1)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/SwindlersGift.lua b/server/Spells/Spells-Copy/Commoner/SwindlersGift.lua
new file mode 100755
index 000000000..9d807161d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SwindlersGift.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SwindlersGift.lua
+ Script Author : neatz09
+ Script Date : 2020.04.02 12:04:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ local Val1 = (GetLevel(Caster) * 1.08) * MinVal
+ local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
+ local SkillAmt = randomFloat(Val1, Val2)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+function randomFloat(Val1, Val2)
+return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/SwindlersLuck.lua b/server/Spells/Spells-Copy/Commoner/SwindlersLuck.lua
new file mode 100755
index 000000000..88174f684
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/SwindlersLuck.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Commoner/SwindlersLuck.lua
+ Script Author : neatz09
+ Script Date : 2020.03.29 05:03:16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ local Val1 = (GetLevel(Caster) * 1.08) * MinVal
+ local Val2 = (GetLevel(Caster) * 1.08) * MaxVal
+ local SkillAmt = randomFloat(Val1, Val2)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+function randomFloat(Val1, Val2)
+return Val1 + math.random() * (Val2 - Val1);
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TVosh.lua b/server/Spells/Spells-Copy/Commoner/TVosh.lua
new file mode 100755
index 000000000..584230c23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TVosh.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/TVosh.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.17 08:05:56
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Crit, Pwr, Speed)
+-- Summons a mount
+SetMount(Caster, 10174)
+
+-- Increases Potency of caster by 12.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 12.0%
+ AddSpellBonus(Caster, 657, Crit)
+
+--Increases Max Power of caster by 2000.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TakhasStallion.lua b/server/Spells/Spells-Copy/Commoner/TakhasStallion.lua
new file mode 100755
index 000000000..6cea04e8b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TakhasStallion.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Commoner/TakhasStallion.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.18 07:05:43
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14498)
+ Say(Caster, "Model not accurate")
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TanCanvasOscillatingKajiggers.lua b/server/Spells/Spells-Copy/Commoner/TanCanvasOscillatingKajiggers.lua
new file mode 100755
index 000000000..270eb3eab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TanCanvasOscillatingKajiggers.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Commoner/TanCanvasOscillatingKajiggers.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 07:03:53
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17870)
+SetMountColor(Caster, 255, 255, 0, 255, 255, 0)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Terrorbird.lua b/server/Spells/Spells-Copy/Commoner/Terrorbird.lua
new file mode 100755
index 000000000..6d2958de4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Terrorbird.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/Terrorbird.lua
+ Script Author : neatz09
+ Script Date : 2019.11.18 08:11:53
+ Script Purpose :
+ :
+--]]
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15381)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+-- Summons a mount to ride that increases your ground speed by 60%
+-- Summons a mount to ride that increases your ground speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+ Say(Caster, "This is a leaper mount not a flier, leapers not implemented.")
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/TestSpellOne.lua b/server/Spells/Spells-Copy/Commoner/TestSpellOne.lua
new file mode 100755
index 000000000..0ba37ce1e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TestSpellOne.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/TestSpellOne.lua
+ Script Author : neatz09
+ Script Date : 2020.01.05 02:01:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a mount to ride that increases your ground speed by 130%
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ThunderSlash.lua b/server/Spells/Spells-Copy/Commoner/ThunderSlash.lua
new file mode 100755
index 000000000..6749d437a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ThunderSlash.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Commoner/ThunderSlash.lua
+ Script Author : neatz09
+ Script Date : 2020.04.10 01:04:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Slashing, SlashMin, SlashMax, Magic, MagicMin, MagicMax, Divine, DivineMin, DivineMax)
+ SpellDamage(Target, Slashing, (GetLevel(Caster) * 1.08) * SlashMin, (GetLevel(Caster) * 1.08) * SlashMax)
+ SpellDamage(Target, Magic, (GetLevel(Caster) * 1.08) * MagicMin, (GetLevel(Caster) * 1.08) * MagicMax)
+ SpellDamage(Target, Divine, (GetLevel(Caster) * 1.08) * DivineMin, (GetLevel(Caster) * 1.08) * DivineMax)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TimberWolfMountWhistle.lua b/server/Spells/Spells-Copy/Commoner/TimberWolfMountWhistle.lua
new file mode 100755
index 000000000..a18e80218
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TimberWolfMountWhistle.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Commoner/TimberWolfMountWhistle.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.18 07:05:08
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14332)
+
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+
+
+end
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TinkerersCobaltFlappers.lua b/server/Spells/Spells-Copy/Commoner/TinkerersCobaltFlappers.lua
new file mode 100755
index 000000000..2206dde14
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TinkerersCobaltFlappers.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/TinkerersCobaltFlappers.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.31 08:01:05
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17863)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 75%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/TitaniumMechamagicWings.lua b/server/Spells/Spells-Copy/Commoner/TitaniumMechamagicWings.lua
new file mode 100755
index 000000000..825434fbc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TitaniumMechamagicWings.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/TitaniumMechamagicWings.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.31 08:01:02
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 17868)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/TotenoftheEnduringSpirit.lua b/server/Spells/Spells-Copy/Commoner/TotenoftheEnduringSpirit.lua
new file mode 100755
index 000000000..8195183c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TotenoftheEnduringSpirit.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Commoner/SpiritTotemoftheEnduringSpirit.lua
+ Script Author : neatz09
+ Script Date : 2020.04.05 09:20:01
+ Script Purpose :
+--]]
+
+function cast(Caster, Target)
+ if (GetLevel(Caster) >= 80)
+ then
+ AddControlEffect(Caster, 7)
+ BreatheUnderwater(Caster, true)
+ SetVision(Caster, 4)
+ end
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ SetVision(Caster, 0)
+ RemoveControlEffect(Caster, 7)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TouchoftheGray.lua b/server/Spells/Spells-Copy/Commoner/TouchoftheGray.lua
new file mode 100755
index 000000000..9f6a8980e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TouchoftheGray.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/TouchoftheGray.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19 09:11:23
+ Script Purpose :
+ :
+--]]
+--local mount_favorites = { '25423', '24053', '25864', '23713', '15397', '20950', '20344', '17509' }
+function cast(Caster, Target)
+
+ SendMessage(Caster, "Mounting...", "red")
+ --SetMount(Caster, mount_favorites[ math.random( 1, #mount_favorites - 1 ) ] )
+ setMount(Caster, 25864)
+
+end
+
+function remove(Caster, Target)
+ SetMount(Caster, 0)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/Tracking.lua b/server/Spells/Spells-Copy/Commoner/Tracking.lua
new file mode 100755
index 000000000..f7a1b4ca3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Tracking.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Commoner/Tracking.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 09:11:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Tracks a selected target, causing a trail to appear that leads to their location.
+
+function cast(Caster, Target)
+ ToggleTracking(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/Transmute.lua b/server/Spells/Spells-Copy/Commoner/Transmute.lua
new file mode 100755
index 000000000..8d4a3fb61
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Transmute.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/Transmute.lua
+ Script Author : smash
+ Script Date : 2020.02.26 12:02:57
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster)
+ StartTransmute(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TransmuteItem.lua b/server/Spells/Spells-Copy/Commoner/TransmuteItem.lua
new file mode 100755
index 000000000..915015d6d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TransmuteItem.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Commoner/TransmuteItem.lua
+ Script Author : smash
+ Script Date : 2020.02.26 12:02:57
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster)
+ CompleteTransmute(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TravelerPackHorse.lua b/server/Spells/Spells-Copy/Commoner/TravelerPackHorse.lua
new file mode 100755
index 000000000..633644237
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TravelerPackHorse.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/TravelerPackHorse.lua
+ Script Author : neatz09
+ Script Date : 2019.11.18 08:11:16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 15654)
+--Increases your ground speed by 135%
+ AddSpellBonus(Caster, 611, Speed)
+--Increases Ranged, Crushing, Focus, Disruption, Ordination, Subjugation, Aggression, Slashing,
+--Ministration and piercing by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/TravelersPackHorse.lua b/server/Spells/Spells-Copy/Commoner/TravelersPackHorse.lua
new file mode 100755
index 000000000..2f8318d94
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TravelersPackHorse.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/TravelersPackHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.31 08:01:33
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 9031)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/TrickstersGrasp.lua b/server/Spells/Spells-Copy/Commoner/TrickstersGrasp.lua
new file mode 100755
index 000000000..f112147db
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TrickstersGrasp.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Commoner/TrickstersGrasp.lua
+ Script Author : neatz09
+ Script Date : 2020.04.12 12:04:12
+ Script Purpose :
+ :
+--]]
+
+-- Deals x - y damage on target instantly and every 6 seconds.
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, (GetLevel(Caster) * 1.08) * MinVal, (GetLevel(Caster) * 1.08) * MaxVal)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/TropicalSaliraptor.lua b/server/Spells/Spells-Copy/Commoner/TropicalSaliraptor.lua
new file mode 100755
index 000000000..349459ae7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/TropicalSaliraptor.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/TropicalSaliraptor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.02 12:02:34
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 24845)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+ Say(Caster, "This is a leaper mount not a flier, leapers not implemented.")
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/Turborotor1000.lua b/server/Spells/Spells-Copy/Commoner/Turborotor1000.lua
new file mode 100755
index 000000000..4928e14f3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Turborotor1000.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/Turborotor1000.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.02 12:02:40
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 4835)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/UlteranProwler.lua b/server/Spells/Spells-Copy/Commoner/UlteranProwler.lua
new file mode 100755
index 000000000..2b5c31f79
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/UlteranProwler.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/UlteranProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.04 08:05:43
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 13851)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/UlteranSkeletalProwler.lua b/server/Spells/Spells-Copy/Commoner/UlteranSkeletalProwler.lua
new file mode 100755
index 000000000..08a072521
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/UlteranSkeletalProwler.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/UlteranSkeletalProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.04 08:05:50
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14420)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/UndeadMount.lua b/server/Spells/Spells-Copy/Commoner/UndeadMount.lua
new file mode 100755
index 000000000..0b0ec626f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/UndeadMount.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Commoner/UndeadMount.lua
+ Script Author : neatz09
+ Script Date : 2019.11.18 08:11:09
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed)
+--Summons a mount to ride
+SetMount(Caster, 6920)
+
+--Increases your ground speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/ValidonStormweaver.lua b/server/Spells/Spells-Copy/Commoner/ValidonStormweaver.lua
new file mode 100755
index 000000000..06afd0f46
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ValidonStormweaver.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Commoner/ValidonStormweaver.lua
+ Script Author : Skywalker646
+ Script Date : 2020.03.21 08:03:00
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Potency, Bonus, Chance, HP, Pwr, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 18189)
+AddControlEffect(Caster, 12)
+
+-- Increases Potency of caster by 7.0%
+ AddSpellBonus(Caster, 659, Potency)
+
+-- Increases Crit Bonus of caster by 7.0%
+ AddSpellBonus(Caster, 657, Bonus)
+
+-- Increases Crit Chance of caster by 22.0%
+ AddSpellBonus(Caster, 654, Chance)
+
+-- Increases Max Health of caster by 900.0
+ AddSpellBonus(Caster, 606, HP)
+
+--Increases Max Power of caster by 900.0
+ AddSpellBonus(Caster, 619, Pwr)
+
+ --Increases your Ground Speed by 130%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/VeliumDemonSteed.lua b/server/Spells/Spells-Copy/Commoner/VeliumDemonSteed.lua
new file mode 100755
index 000000000..7146b26fe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/VeliumDemonSteed.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/VeliumDemonSteed.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.04 08:05:42
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 12739)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/VeliumSaddledWarhog.lua b/server/Spells/Spells-Copy/Commoner/VeliumSaddledWarhog.lua
new file mode 100755
index 000000000..400bf9df3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/VeliumSaddledWarhog.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Commoner/VeliumSaddledWarhog.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.02 01:02:44
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 618)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ViciousMountainSaliraptor.lua b/server/Spells/Spells-Copy/Commoner/ViciousMountainSaliraptor.lua
new file mode 100755
index 000000000..ebcc8992c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ViciousMountainSaliraptor.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/ViciousMountainSaliraptor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.02 01:02:12
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 15561)
+-- Mez the target.
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 60%
+--Increases your air speed by 200%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+Say(Caster, "This is a leaper mount not a flier, leapers not implemented.")
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/VioletNightmarePegasus.lua b/server/Spells/Spells-Copy/Commoner/VioletNightmarePegasus.lua
new file mode 100755
index 000000000..c19ce99dc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/VioletNightmarePegasus.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Commoner/VioletNightmarePegasus.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.02 06:02:50
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Speed, Air)
+-- Summons a mount
+SetMount(Caster, 15741)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+ --Increases your Ground Speed by 75%
+ --Increases your Air Speed by 150%
+ AddSpellBonus(Caster, 611, Speed)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/VoidProwler.lua b/server/Spells/Spells-Copy/Commoner/VoidProwler.lua
new file mode 100755
index 000000000..cc16bde37
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/VoidProwler.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/VoidProwler.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.18 07:05:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14112)
+
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Ordination, Subjugation, Ministration, Focus & Disruption of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/VoidspiritUnicorn .lua b/server/Spells/Spells-Copy/Commoner/VoidspiritUnicorn .lua
new file mode 100755
index 000000000..e9430ebb9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/VoidspiritUnicorn .lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/VoidspiritUnicorn .lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.04 08:05:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 18186)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/WarBardingBlackCavalryHorse.lua b/server/Spells/Spells-Copy/Commoner/WarBardingBlackCavalryHorse.lua
new file mode 100755
index 000000000..34d41a309
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WarBardingBlackCavalryHorse.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Commoner/WarBardingBlackCavalryHorse.lua
+ Script Author : neatz09
+ Script Date : 2019.11.18 08:11:21
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 6840)
+SetMountColor(Caster, 0, 0, 0)
+-- increases your speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Crushing, Piercing, Slashing and Ranged of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/WarBardingGrayCavalryHorse.lua b/server/Spells/Spells-Copy/Commoner/WarBardingGrayCavalryHorse.lua
new file mode 100755
index 000000000..071e783dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WarBardingGrayCavalryHorse.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Commoner/WarBardingGrayCavalryHorse.lua
+ Script Author : Skywalker646
+ Script Date : 2020.01.02 08:01:05
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 6840)
+SetMountColor(Caster, 111, 111, 111, 55, 55, 55)
+-- increases your speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Crushing, Piercing, Slashing and Ranged of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/WarBardingWhiteCavalryHorse.lua b/server/Spells/Spells-Copy/Commoner/WarBardingWhiteCavalryHorse.lua
new file mode 100755
index 000000000..f048ca491
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WarBardingWhiteCavalryHorse.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Commoner/WarBardingWhiteCavalryHorse.lua
+ Script Author : neatz09
+ Script Date : 2019.11.18 08:11:21
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+-- Summons a mount to ride
+SetMount(Caster, 6840)
+-- increases your speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Crushing, Piercing, Slashing and Ranged of caster by 7
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Commoner/Weakness.lua b/server/Spells/Spells-Copy/Commoner/Weakness.lua
new file mode 100755
index 000000000..8d9f19f0a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/Weakness.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Commoner/Weakness.lua
+ Script Author : neatz09
+ Script Date : 2020.05.11 07:05:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels when an Advantage is used
+-- Allows the beastlord to use advantages!
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Commoner/WhiteSaddledHighlandSnowmane.lua b/server/Spells/Spells-Copy/Commoner/WhiteSaddledHighlandSnowmane.lua
new file mode 100755
index 000000000..7080f7662
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WhiteSaddledHighlandSnowmane.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/WhiteSaddledHighlandSnowmane.lua
+ Script Author : Skywalker646
+ Script Date : 2020.02.02 06:02:25
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 16237)
+SetMountColor(Caster, 250, 250, 250, 250, 250, 250)
+-- Increases your ground speed by 135%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Commoner/WindWalker.lua b/server/Spells/Spells-Copy/Commoner/WindWalker.lua
new file mode 100755
index 000000000..9bb5f5850
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WindWalker.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Commoner/WindWalker.lua
+ Script Author : neatz09
+ Script Date : 2020.03.07 11:03:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases in-combat movement speed of caster by 50.0%
+-- Increases speed of caster by 50.0%
diff --git a/server/Spells/Spells-Copy/Commoner/WingsofFrostfellWrapping.lua b/server/Spells/Spells-Copy/Commoner/WingsofFrostfellWrapping.lua
new file mode 100755
index 000000000..d199c9cf0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WingsofFrostfellWrapping.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Commoner/WingsofFrostfellWrapping.lua
+ Script Author : neatz09
+ Script Date : 2019.11.16 10:11:46
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, SkillAmt, Ground, Air)
+-- Summons a mount
+SetMount(Caster, 20513)
+AddControlEffect(Caster, 12)
+-- Increase Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing,
+--Aggression and Ranged of caster by 5
+AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+
+--Increases your ground speed by 130%
+--Increases your air speed by 150%
+ AddSpellBonus(Caster, 611, Ground)
+ AddSpellBonus(Target, 612, Air)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+ RemoveControlEffect(Caster, 12)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/WinterWolf.lua b/server/Spells/Spells-Copy/Commoner/WinterWolf.lua
new file mode 100755
index 000000000..6158c3e5f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/WinterWolf.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Commoner/WinterWolf.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.04 07:05:24
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Speed, SkillAmt)
+--Summons a mount to ride
+SetMount(Caster, 14386)
+
+-- Increases your ground speed by 130%
+AddSpellBonus(Caster, 611, Speed)
+-- Increases Focus, Disruption, Ministration, Subjugation, Ordination, Slashing, Piercing, Crushing, Aggression and Ranged of caster by 5.0
+ AddSkillBonus(Caster, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Caster, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+
+function remove(Caster, Target)
+SetMount(Caster, 0)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenBlackArmor.lua b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenBlackArmor.lua
new file mode 100755
index 000000000..e0607db5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenBlackArmor.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/YkeshanSpellbearGoldenBlackArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 09:05:39
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Pwr, Reuse, Speed)
+-- Summons a mount
+SetMount(Caster, 9747)
+SetMountColor(Caster, 0, 0, 0, 10, 10, 10)
+
+
+--Increase maxmana of caster by 250
+ AddSpellBonus(Caster, 619, Pwr)
+
+
+-- Increase Ability Reuse Time of caster by 3
+ AddSpellBonus(Caster, 662, Reuse)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenBlueArmor.lua b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenBlueArmor.lua
new file mode 100755
index 000000000..710348b95
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenBlueArmor.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/YkeshanSpellbearGoldenBlueArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 09:05:01
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Pwr, Reuse, Speed)
+-- Summons a mount
+SetMount(Caster, 9747)
+SetMountColor(Caster, 0, 0, 0, 65, 105, 225)
+
+
+--Increase maxmana of caster by 250
+ AddSpellBonus(Caster, 619, Pwr)
+
+
+-- Increase Ability Reuse Time of caster by 3
+ AddSpellBonus(Caster, 662, Reuse)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenRedArmor.lua b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenRedArmor.lua
new file mode 100755
index 000000000..863d81e4f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearGoldenRedArmor.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/YkeshanSpellbearGoldenRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 09:05:04
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Pwr, Reuse, Speed)
+-- Summons a mount
+SetMount(Caster, 9747)
+SetMountColor(Caster, 0, 0, 0, 139, 0, 0)
+
+
+--Increase maxmana of caster by 250
+ AddSpellBonus(Caster, 619, Pwr)
+
+
+-- Increase Ability Reuse Time of caster by 3
+ AddSpellBonus(Caster, 662, Reuse)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredBlackArmor.lua b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredBlackArmor.lua
new file mode 100755
index 000000000..091b2b2c1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredBlackArmor.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/YkeshanSpellbearSilveredBlackArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 08:05:07
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Pwr, Reuse, Speed)
+-- Summons a mount
+SetMount(Caster, 9746)
+SetMountColor(Caster, 0, 0, 0, 10, 10, 10)
+
+
+--Increase maxmana of caster by 250
+ AddSpellBonus(Caster, 619, Pwr)
+
+
+-- Increase Ability Reuse Time of caster by 3
+ AddSpellBonus(Caster, 662, Reuse)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredBlueArmor.lua b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredBlueArmor.lua
new file mode 100755
index 000000000..b4559abd8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredBlueArmor.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/YkeshanSpellbearSilveredBlueArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 08:05:16
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Pwr, Reuse, Speed)
+-- Summons a mount
+SetMount(Caster, 9746)
+SetMountColor(Caster, 0, 0, 0, 65, 105, 225)
+
+
+--Increase maxmana of caster by 250
+ AddSpellBonus(Caster, 619, Pwr)
+
+
+-- Increase Ability Reuse Time of caster by 3
+ AddSpellBonus(Caster, 662, Reuse)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredRedArmor.lua b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredRedArmor.lua
new file mode 100755
index 000000000..da1b45d12
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/YkeshanSpellbearSilveredRedArmor.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Commoner/YkeshanSpellbearSilveredRedArmor.lua
+ Script Author : Skywalker646
+ Script Date : 2020.05.03 08:05:23
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster)
+ if GetMount(Caster) > 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Pwr, Reuse, Speed)
+-- Summons a mount
+SetMount(Caster, 9746)
+SetMountColor(Caster, 0, 0, 0, 139, 0, 0)
+
+
+--Increase maxmana of caster by 250
+ AddSpellBonus(Caster, 619, Pwr)
+
+
+-- Increase Ability Reuse Time of caster by 3
+ AddSpellBonus(Caster, 662, Reuse)
+
+
+ --Increases your Ground Speed by 130%
+ AddSpellBonus(Caster, 611, Speed)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveSkillBonus(Caster)
+SetMount(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/flaskofwater.lua b/server/Spells/Spells-Copy/Commoner/flaskofwater.lua
new file mode 100755
index 000000000..2ce40e016
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/flaskofwater.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Commoner/flaskofwater.lua
+ Script Author : neatz09
+ Script Date : 2019.08.18 10:08:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Bonus)
+-- Increases Out-of-Combat Power Regeneration of target by 15.0
+AddSpellBonus(Target, 603, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Commoner/harvest.lua b/server/Spells/Spells-Copy/Commoner/harvest.lua
new file mode 100755
index 000000000..908c2d3a7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/harvest.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : harvest.lua
+ Script Purpose : Fishing, Foresting, Gathering/Collecting, Mining, Trapping
+ Script Author : John Adams
+ Script Date : 2008.12.05
+ Script Notes :
+--]]
+
+function precast(Caster, Target)
+ if IsGroundSpawn(Target) then
+ return CanHarvest(Caster, Target)
+ end
+
+ return false
+end
+
+function cast(Caster, Target)
+ Harvest(Caster, Target)
+end
diff --git a/server/Spells/Spells-Copy/Commoner/ration.lua b/server/Spells/Spells-Copy/Commoner/ration.lua
new file mode 100755
index 000000000..32ed7628f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Commoner/ration.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Commoner/ration.lua
+ Script Author : neatz09
+ Script Date : 2019.08.19 12:08:40
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Bonus)
+-- Increases Out-of-Combat Health Regeneration of target by 4.0
+AddSpellBonus(Target, 602, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Abuse.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Abuse.lua
new file mode 100755
index 000000000..dfc96c7e8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Abuse.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Abuse.lua
+ Script Author : Dello
+ Script Date : 25/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Increases Threat to target by 355 - 434
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Beatdown.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Beatdown.lua
new file mode 100755
index 000000000..4551d2760
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Beatdown.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Beatdown.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 10:03:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BlazeKick.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BlazeKick.lua
new file mode 100755
index 000000000..64ab02236
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BlazeKick.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/BlazeKick.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 05:03:14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, TickDmgType, TickDmg)
+ -- Inflicts 40 - 67 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, TickDmgType, TickDmg)
+ -- Inflicts 18 heat damage on target every 6 seconds
+ SpellDamage(Target, TickDmgType, TickDmg)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BlazingStrikes.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BlazingStrikes.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BlazingStrikes.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BobandWeave.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BobandWeave.lua
new file mode 100755
index 000000000..1ec930038
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BobandWeave.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/BobandWeave.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 05:03:32
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stat, Avoid, Resist)
+ -- Increases STR of caster by 9.4
+ AddSpellBonus(Target, 0, Stat)
+
+ -- Adds 2.5% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 168
+ AddSpellBonus(Target, 201, Resist)
+ AddSpellBonus(Target, 202, Resist)
+ AddSpellBonus(Target, 203, Resist)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Bodyguard.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Bodyguard.lua
new file mode 100755
index 000000000..7f62debaa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Bodyguard.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Bodyguard.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 09:03:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PhyDmg, Avoid, Deflect, Parry, OffSkill, Agg, DefSkill, NoxMit, Armor)
+ -- Reduces physical damage done to caster by 5%
+ -- AddSpellBonus(Target, , PhyDmg)
+ Say(Caster, "Not Implemented: physical damage reduction")
+
+ -- Adds 1.3% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Caster will deflect 9.0% of incoming attacks.
+ AddSpellBonus(Target, 670, Deflect)
+
+ -- Increases Parry of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), Parry)
+
+ -- Decreases Crushing, Piercing and Slashing of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkill)
+
+ -- Increases Aggression of caster by 1.2
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), Agg)
+
+ -- Increases Deflection and Defense of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Deflection"), DefSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkill)
+
+ -- Increases Mitigation of caster vs noxious damage by 138
+ AddSpellBonus(Target, 202, NoxMit)
+
+ -- Increases the caster's effectiveness of worn armor vs physical damage by 25%
+ AddSpellBonus(Target, 678, Armor)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Brag.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Brag.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Brag.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Bruising.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Bruising.lua
new file mode 100755
index 000000000..4e0a58200
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Bruising.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Bruising.lua
+ Script Author : neatz09
+ Script Date : 2020.01.24 11:01:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Caster will deflect 4.5% of incoming attacks.
+-- Increases Parry of caster by 5.9
+-- Increases Deflection, Slashing, Piercing, Crushing and Ranged of caster by 5.9
+-- Increases Mitigation of caster vs noxious damage by 396
+-- Increases the caster's effectiveness of worn armor vs physical damage by 13%
+-- On a melee hit this spell may cast Engulf on target of attack. Triggers about 1.0 times per minute.
+-- Inflicts 155 - 258 heat damage on target
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BruisingFist.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BruisingFist.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BruisingFist.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BruisingSpirit.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BruisingSpirit.lua
new file mode 100755
index 000000000..8cb0ba4de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/BruisingSpirit.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/BruisingSpirit.lua
+ Script Author : Dello
+ Script Date : 09/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+
+function remove(Caster, Target, BonusAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Brutality.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Brutality.lua
new file mode 100755
index 000000000..e4bc6c2e1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Brutality.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Brutality.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 10:03:32
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stats, Avoid, Taunts, Spells, CombatArts)
+ -- Increases AGI and STR of raid and group members (AE) by 5.4
+ AddSpellBonus(Target, 2, Stats)
+ AddSpellBonus(Target, 0, Stats)
+
+ -- Adds 0.9% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Improves the base amount of taunts by 9%.
+ AddSpellBonus(Target, 705, Taunts)
+
+ --Improves the base amount of spells by 0.85%.
+ AddSpellBonus(Target, 700, BonusAmt)
+
+ -- Improves the base amount of combat arts by 2.81%.
+ AddSpellBonus(Target, 703, CombatArts)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/CloseMind.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/CloseMind.lua
new file mode 100755
index 000000000..4d670c17c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/CloseMind.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/CloseMind.lua
+ Script Author : neatz09
+ Script Date : 2020.03.01 03:03:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Makes caster immune to Root effects
+AddImmunitySpell(5, Target)
+-- Makes caster immune to Stun effects
+AddImmunitySpell(4, Target)
+-- Makes caster immune to Stifle effects
+AddImmunitySpell(2, Target)
+-- Makes caster immune to Fear effects
+AddImmunitySpell(6, Target)
+-- Makes caster immune to Daze effects
+AddImmunitySpell(3, Target)
+-- Makes caster immune to Mesmerize effects
+AddImmunitySpell(1, Target)
+end
+
+function remove(Caster, Target)
+RemoveImmunitySpell(1, Target)
+RemoveImmunitySpell(2, Target)
+RemoveImmunitySpell(3, Target)
+RemoveImmunitySpell(4, Target)
+RemoveImmunitySpell(5, Target)
+RemoveImmunitySpell(6, Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/DivideandConquer.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/DivideandConquer.lua
new file mode 100755
index 000000000..b854be33c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/DivideandConquer.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/DivideandConquer.lua
+ Script Author : neatz09
+ Script Date : 2020.01.24 11:01:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases threat priority of target encounter by 2 positions
+-- Increases Threat to target encounter by 75 - 113
+-- Forces half of the target encounter to target and attack you. Upgrades to this spell increase the duration the target must target you from a range of 4 to 8 seconds.
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/EyeGouge.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/EyeGouge.lua
new file mode 100755
index 000000000..cacb84e09
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/EyeGouge.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/EyeGouge.lua
+ Script Author : Dello
+ Script Date : 09/07/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+if LastSpellAttackHit() then
+AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+
+AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+
+AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+
+AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+
+end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/FistofGorynn.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/FistofGorynn.lua
new file mode 100755
index 000000000..ee51032ff
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/FistofGorynn.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/FistofGorynn.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell may cast Strike of Anger on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Inflicts 626 - 940 crushing damage on target
+-- Increases Crit Chance of caster by 12.0
+-- Cannot be modified except by direct means
+-- Attacker must be behind or flanking
+-- On a combat hit this spell may cast Strike of Anger on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Increases Crit Chance of caster by 12.0
+-- Increases Threat to target by 3,648
+-- Inflicts 562 - 842 crushing damage on target
+-- Cannot be modified except by direct means
+-- Attacker must be in front of
+-- Caster will deflect 5.0% of incoming attacks.
+-- Reduces physical damage done to caster by 10%
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IgnoreBruises.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IgnoreBruises.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IgnoreBruises.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IgnorePain.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IgnorePain.lua
new file mode 100755
index 000000000..49d4e346a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IgnorePain.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/IgnorePain.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 09:03:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", math.random(MinVal, MaxVal))
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Impose.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Impose.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Impose.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IndomitableWill.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IndomitableWill.lua
new file mode 100755
index 000000000..ba05bab09
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/IndomitableWill.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/IndomitableWill.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 05:03:54
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, levels)
+ -- Dispels 15 levels of physical and arcane hostile effects on caster
+ CureByType(1, 1, "", levels) -- trauma
+ CureByType(1, 2, "", levels) -- arcane
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Intimidate.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Intimidate.lua
new file mode 100755
index 000000000..bfa9b820e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Intimidate.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Intimidate.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 01:10:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/KnockoutCombination.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/KnockoutCombination.lua
new file mode 100755
index 000000000..706a46258
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/KnockoutCombination.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/KnockoutCombination.lua
+ Script Author : neatz09
+ Script Date : 2020.01.24 11:01:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When a combat art is used this spell will cast Shove on target of combat art. Lasts for 1.0 second.
+-- Inflicts 73 - 221 melee damage on target
+-- Stuns target
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 94.
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/LightningFists.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/LightningFists.lua
new file mode 100755
index 000000000..48cc3fa59
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/LightningFists.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/LightningFists.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 06:03:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, Dmg)
+ -- Grants a total of 5 triggers of the spell.
+ SetSpellTriggerCount(5, 1)
+ -- On a melee hit this spell will cast Thunder Fist on target of attack.
+ AddProc(Target, 3, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, Dmg)
+ -- Inflicts 25 magic damage on target
+ if Type == 3 then
+ ProcDamage(Caster, Target, "Thunder Fist", DmgType, Dmg)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Manhandle.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Manhandle.lua
new file mode 100755
index 000000000..5ebe7d54b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Manhandle.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Manhandle.lua
+ Script Author : neatz09
+ Script Date : 2020.01.23 06:01:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell may cast Roughhousing on target of attack. Triggers about 5.0 times per minute.
+-- Inflicts 12 - 20 melee damage on target
+-- Increases Threat to target by 430
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/MercilessStomp.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/MercilessStomp.lua
new file mode 100755
index 000000000..c16e55fb5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/MercilessStomp.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/MercilessStomp.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 05:03:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 49 - 82 crushing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown. Lasts for 1.5 seconds.
+ -- Throws target back
+ -- Stuns target
+ -- Blurs vision of target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ Knockback(Caster, Target, 1500)
+ AddSpellTimer(1500, "RemoveKnockdown")
+ end
+end
+
+function RemoveKnockdown(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/MeteorFist.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/MeteorFist.lua
new file mode 100755
index 000000000..9ee7a909d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/MeteorFist.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/MeteorFist.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 09:03:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 13 - 22 heat damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/OneHundredHandPunch.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/OneHundredHandPunch.lua
new file mode 100755
index 000000000..9c0ec3cf9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/OneHundredHandPunch.lua
@@ -0,0 +1,71 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/OneHundredHandPunch.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 06:03:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Pummel.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Pummel.lua
new file mode 100755
index 000000000..6a95ae6ed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Pummel.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Pummel.lua
+ Script Author : John Adams
+ Script Date : 2013.11.17 07:11:55
+ Script Purpose : Direct Damage script
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+end
+
+function remove(Caster, Target, DDType, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/RockSkin.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/RockSkin.lua
new file mode 100755
index 000000000..8c7eb6b45
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/RockSkin.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/RockSkin.lua
+ Script Author : neatz09
+ Script Date : 2019.10.25 03:10:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Weapon Damage of caster by 50.0
+-- Slows caster by 88.9%
+-- Increases Mitigation of caster vs physical damage by 1727
+
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 685, Dmg)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Roundhouse.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Roundhouse.lua
new file mode 100755
index 000000000..5596f1cda
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Roundhouse.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Roundhouse.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 10:03:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 9 - 29 crushing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SavageAssault.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SavageAssault.lua
new file mode 100755
index 000000000..affa9b49d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SavageAssault.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/SavageAssault.lua
+ Script Author : Dello
+ Script Date : 10/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/ShoulderCharge.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/ShoulderCharge.lua
new file mode 100755
index 000000000..d3de2f49b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/ShoulderCharge.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/ShoulderCharge.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 05:03:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 26 - 79 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown. Lasts for 2.5 seconds.
+ -- Blurs vision of target
+ -- Throws target back
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) and LastSpellAttackHit() then
+ BlurVision(Target, 1.0)
+ AddControlEffect(Target, 4)
+ Knockback(Caster, Target, 2500)
+ AddSpellTimer(2500, "RemoveKnockback")
+ end
+end
+
+function RemoveKnockback(Caster, Target)
+ BlurVision(Target, 0.0)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/ShrugOff.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/ShrugOff.lua
new file mode 100755
index 000000000..941ae26ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/ShrugOff.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/ShrugOff.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:29
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+-- Adds 0.8% to base avoidance.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SlurredInsult.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SlurredInsult.lua
new file mode 100755
index 000000000..b6e90501b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SlurredInsult.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/SlurredInsult.lua
+ Script Author : Dello
+ Script Date : 25/06/2014
+ Script Notes :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Increases Threat to target by 355 - 434
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SmolderingFists.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SmolderingFists.lua
new file mode 100755
index 000000000..a4946a108
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SmolderingFists.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/SmolderingFists.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 09:03:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Def, OffSkills, ProcDmgType, ProcDmgMin, ProcDmgMax)
+ -- Decreases Defense of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
+
+ -- Increases Ranged, Crushing, Piercing and Slashing of caster by 2.4
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkills)
+
+ -- On a melee hit this spell may cast Engulf on target of attack. Triggers about 2.0 times per minute.
+ -- Inflicts 15 - 25 heat damage on target
+ AddProc(Target, 3, 20)
+end
+
+function proc(Caster, Target, Type, Def, OffSkills, ProcDmgType, ProcDmgMin, ProcDmgMax)
+ -- On a melee hit this spell may cast Engulf on target of attack. Triggers about 2.0 times per minute.
+ -- Inflicts 15 - 25 heat damage on target
+ if Type == 3 then
+ ProcDamage(Caster, Target, "Engulf", ProcDmgType, ProcDmgMin, ProcDmgMax)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SonicPunch.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SonicPunch.lua
new file mode 100755
index 000000000..ffcb447ef
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SonicPunch.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/SonicPunch.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 01:10:15
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Interrupts target
+-- Inflicts 541 - 903 melee damage on target
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/StoneDeaf.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/StoneDeaf.lua
new file mode 100755
index 000000000..38b525e54
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/StoneDeaf.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/StoneDeaf.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:40
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SuckerPunch.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SuckerPunch.lua
new file mode 100755
index 000000000..c7b376651
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/SuckerPunch.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/SuckerPunch.lua
+ Script Author : Dello
+ Script Date : 10/07/2014
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "You must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 3)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/UnyieldingResolve.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/UnyieldingResolve.lua
new file mode 100755
index 000000000..ef5cce5ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/UnyieldingResolve.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/UnyieldingResolve.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals caster for 10.0% of max health
+-- Heals caster for 5.0% of max health every second
+-- This effect cannot be critically applied.
+-- Makes caster immune to strikethrough attacks.
+-- Caster will Dodge 100.0% of incoming attacks
+-- The healing of this spell cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Uppercut.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Uppercut.lua
new file mode 100755
index 000000000..c2536f923
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Bruiser/Uppercut.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Bruiser/Uppercut.lua
+ Script Author : Dello
+ Script Date : 10/07/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ Knockback(Caster, Target, 1500)
+ AddSpellTimer(1500, "RemoveKnockdown")
+ end
+end
+
+function RemoveKnockdown(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/BruisingStrike.lua b/server/Spells/Spells-Copy/Fighter/Brawler/BruisingStrike.lua
new file mode 100755
index 000000000..76ee7a9d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/BruisingStrike.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/BruisingStrike.lua
+ Script Author : Dello
+ Script Date : 2014.07.11 02:07:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 94 - 156 melee damage on target
+-- If facing target
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/DevastationFist.lua b/server/Spells/Spells-Copy/Fighter/Brawler/DevastationFist.lua
new file mode 100755
index 000000000..dcd792e5f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/DevastationFist.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/DevastationFist.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 02:10:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 1795 - 2992 melee damage on target
+-- Inflicts 100.0% of max health in crushing damage on target
+-- If Target is Standard or weaker
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/FeignDeath.lua b/server/Spells/Spells-Copy/Fighter/Brawler/FeignDeath.lua
new file mode 100755
index 000000000..6e626bd41
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/FeignDeath.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/FeignDeath.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 07:01:36
+ Script Purpose :
+ :
+--]]
+
+-- Feigns Death with 58% chance of success
+function cast(Caster, Target, Chance)
+ -- Die animtaion and restricts movement
+ SetServerControlFlag(Caster, 5, 1, 1);
+
+ local roll = math.random(1, 100);
+ if roll <= Chance then
+ ClearHate(Target, Caster)
+ SendMessage(Caster, "Your feign death succeeded", "yellow")
+ else
+ SendMessage(Caster, "Your feign death attempt failed", "yellow")
+ end
+end
+
+function remove(Caster, Target)
+ SetServerControlFlag(Caster, 5, 1, 0);
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/FlyingKick.lua b/server/Spells/Spells-Copy/Fighter/Brawler/FlyingKick.lua
new file mode 100755
index 000000000..f5294ad53
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/FlyingKick.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/FlyingKick.lua
+ Script Author : Dello
+ Script Date : 19/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, CurrentHP, MinHeal, MaxHeal)
+ CurrentHP = GetMaxHP(Caster)
+ MinHeal = CurrentHP * (MinVal / 100)
+ MaxHeal = CurrentHP * (MaxVal / 100)
+ SpellHeal("Heal", MinHeal, MaxHeal, Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/FocusedStrike.lua b/server/Spells/Spells-Copy/Fighter/Brawler/FocusedStrike.lua
new file mode 100755
index 000000000..2b7c25cba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/FocusedStrike.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/FocusedStrike.lua
+ Script Author : Dello
+ Script Date : 2014.07.11 02:07:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/InstillPanic.lua b/server/Spells/Spells-Copy/Fighter/Brawler/InstillPanic.lua
new file mode 100755
index 000000000..9c825dd89
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/InstillPanic.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/InstillPanic.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 05:08:34
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Makes target afraid
+-- 30% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/MartialFocus.lua b/server/Spells/Spells-Copy/Fighter/Brawler/MartialFocus.lua
new file mode 100755
index 000000000..94a902d9b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/MartialFocus.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/MartialFocus.lua
+ Script Author : Dello
+ Script Date : 2014.07.10 06:07:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MaxVal)
+ AddSpellBonus(Target, 0, MaxVal)
+ AddSpellBonus(Target, 2, MaxVal)
+end
+
+function remove(Caster, Target, MaxVal)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ArcticTalon.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ArcticTalon.lua
new file mode 100755
index 000000000..7bc7938a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ArcticTalon.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/ArcticTalon.lua
+ Script Author : Dello
+ Script Date : 13/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 3)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/BlackWidowStance.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/BlackWidowStance.lua
new file mode 100755
index 000000000..ae9cb1987
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/BlackWidowStance.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/BlackWidowStance.lua
+ Script Author : neatz09
+ Script Date : 2019.11.14 08:11:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Deflect, Haste, Parry, SkillAmt, Arcane, Armor)
+-- Caster will deflect 4.5% of incoming attacks.
+ AddSpellBonus(Target, 670, Deflect)
+-- Increases Attack Speed of caster by 11.4
+ AddSpellBonus(Target, 617, Haste)
+-- Increases Parry of caster by 7.8
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), Parry)
+-- Increases Deflection, Slashing, Piercing, Crushing and Ranged of caster by 7.8
+ AddSkillBonus(Target, GetSkillIDByName("Deflection"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+-- Increases Mitigation of caster vs arcane damage by 522
+ AddSpellBonus(Target, 203, Arcane)
+-- Increases the caster's effectiveness of worn armor vs physical damage by 13%
+ AddSpellBonus(Target, 678, Armor)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/BodyLikeMountain.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/BodyLikeMountain.lua
new file mode 100755
index 000000000..b5a7a9e7b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/BodyLikeMountain.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/BodyLikeMountain.lua
+ Script Author : Dello
+ Script Date : 13/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ AddControlEffect(Target, 5)
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 5)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CalmTranquility.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CalmTranquility.lua
new file mode 100755
index 000000000..e9696ec80
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CalmTranquility.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/CalmTranquility.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 01:01:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, CastingSpeed, AttackSpeed)
+ -- Increases Ability Casting Speed of raid and group members (AE) by 2.4%
+ AddSpellBonus(Target, 664, CastingSpeed)
+
+ -- Increases Attack Speed of raid and group members (AE) by 6.0
+ AddSpellBonus(Target, 617, AttackSpeed)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Challenge.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Challenge.lua
new file mode 100755
index 000000000..d28fe5d1e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Challenge.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/Challenge.lua
+ Script Author : Dello
+ Script Date : 13/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinTaunt, MaxTaunt)
+ -- Increases Threat to target by 51 - 62
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+
+ -- Interrupts target
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ChargingTiger.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ChargingTiger.lua
new file mode 100755
index 000000000..baf637d43
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ChargingTiger.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/ChargingTiger.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 06:01:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 35 - 59 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown on termination. Lasts for 2.5 seconds.
+ -- Blurs vision of target
+ -- Throws target back
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 4000)
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(2500, "RemoveKnockback")
+ end
+end
+
+function RemoveKnockback(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CobraCircle.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CobraCircle.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CobraCircle.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ColdFist.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ColdFist.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/ColdFist.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CrescentStrike.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CrescentStrike.lua
new file mode 100755
index 000000000..71f516427
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CrescentStrike.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/CrescentStrike.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.12 06:01:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 31 - 52 magic damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CrouchingTiger.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CrouchingTiger.lua
new file mode 100755
index 000000000..1ba792dce
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/CrouchingTiger.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/CrouchingTiger.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.12 04:01:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgReduction, Avoid, Deflect, DefSkills, OffSkills, Agg, ArcaneMit, Armor)
+ -- Reduces physical damage done to caster by 5%
+ AddSpellBonus(Target, 313, DmgReduction) -- Not sure on the stat
+
+ -- Adds 1.3% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Caster will deflect 9.0% of incoming attacks.
+ AddSpellBonus(Target, 670, Deflect) -- Not sure about the stat
+
+ -- Increases Parry of caster by 1.6
+ -- Increases Deflection and Defense of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Deflection"), DefSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+
+ -- Decreases Crushing, Piercing and Slashing of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkills)
+
+ -- Increases Aggression of caster by 1.0
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), Agg)
+
+ -- Increases Mitigation of caster vs arcane damage by 138
+ AddSpellBonus(Target, 203, ArcaneMit)
+
+ -- Increases the caster's effectiveness of worn armor vs physical damage by 25%
+ AddSpellBonus(Target, 678, Armor)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/DragonRage.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/DragonRage.lua
new file mode 100755
index 000000000..09668ab16
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/DragonRage.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/DragonRage.lua
+ Script Author : neatz09
+ Script Date : 2019.11.14 08:11:01
+ Script Purpose :
+ :
+--]]
+
+
+-- On a melee hit this spell may cast Dragon Stance on target of attack. Triggers about 10.0 times per minute.
+-- Increases Threat to target by 1,364
+
+function cast(Caster, Target, Hate)
+ AddProc(Target, 3, 35)
+end
+
+function proc(Caster, Target, Type, Hate)
+ ProcHate(Caster, Target, Hate, "Dragon Stance")
+end
+
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Dragonfire.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Dragonfire.lua
new file mode 100755
index 000000000..defc77227
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Dragonfire.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/Dragonfire.lua
+ Script Author : neatz09 (edited by vo1d)
+ Script Date : 2019.10.10 09:10:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, AbilityCastSpeed)
+ if Target ~= Caster then
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+
+ -- Decreases Ability Casting Speed of targets in Area of Effect by 27.0%
+ AddSpellBonus(Target, 664, AbilityCastSpeed)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/EverburningFlame.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/EverburningFlame.lua
new file mode 100755
index 000000000..7d1b83cbc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/EverburningFlame.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/EverburningFlame.lua
+ Script Author : Dello
+ Script Date : 14/06/2014
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, AttackSpeed)
+
+ AddSpellBonus(Target, 617, AttackSpeed)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FallofthePhoenix.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FallofthePhoenix.lua
new file mode 100755
index 000000000..d699cf2bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FallofthePhoenix.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/FallofthePhoenix.lua
+ Script Author : Dello
+ Script Date : 15/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Chance)
+ -- Die animtaion and restricts movement
+ SetServerControlFlag(Caster, 5, 1, 1);
+
+ local roll = math.random(1, 100);
+ if roll <= Chance then
+ ClearHate(Target, Caster)
+ SendMessage(Caster, "Your feign death succeeded", "yellow")
+ else
+ SendMessage(Caster, "Your feign death attempt failed", "yellow")
+ end
+end
+
+function remove(Caster, Target)
+ SetServerControlFlag(Caster, 5, 1, 0);
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FiveRings.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FiveRings.lua
new file mode 100755
index 000000000..9644ce92c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FiveRings.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/FiveRings.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 07:01:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 34 - 57 melee damage on target
+ -- Inflicts 34 - 57 melee damage on target
+ -- Inflicts 34 - 57 melee damage on target
+ -- Inflicts 34 - 57 melee damage on target
+ -- Inflicts 34 - 57 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ SpellDamage(Target, DmgType, MinVal)
+ SpellDamage(Target, DmgType, MinVal)
+ SpellDamage(Target, DmgType, MinVal)
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FlowLikeWind.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FlowLikeWind.lua
new file mode 100755
index 000000000..e0126072a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FlowLikeWind.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/FlowLikeWind.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.12 05:01:24
+ Script Purpose :
+ :
+--]]
+--last tier has 1.4% potency
+function cast(Caster, Target, BonusAmt, DefSkills, SkillAmt)
+ -- Increases Attack Speed of caster by 10.9
+ AddSpellBonus(Target, 617, BonusAmt)
+
+ -- Decreases Defense of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+
+ -- Increases Ranged, Crushing, Piercing and Slashing of caster by 2.4
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSpellBonus(Target, 659, 20) --potency gain?
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Focus.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Focus.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Focus.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FrozenPalm.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FrozenPalm.lua
new file mode 100755
index 000000000..0b465417c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/FrozenPalm.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/FrozenPalm.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.12 04:01:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 11 - 18 cold damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/InnerCalm.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/InnerCalm.lua
new file mode 100755
index 000000000..3da872310
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/InnerCalm.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/InnerCalm.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 06:01:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, ResistAmt)
+ -- Increases STR of caster by 9.4
+ AddSpellBonus(Target, 0, BonusAmt)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 211
+ AddSpellBonus(Target, 201, ResistAmt)
+ AddSpellBonus(Target, 202, ResistAmt)
+ AddSpellBonus(Target, 203, ResistAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/LightningPalm.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/LightningPalm.lua
new file mode 100755
index 000000000..1dee6a0e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/LightningPalm.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/LightningPalm.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 07:03:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Grants a total of 8 triggers of the spell.
+ SetSpellTriggerCount(8, 1)
+
+ -- On a melee hit this spell will cast Jolting Strike on target of attack.
+ AddProc(Target, 3, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ if Type == 3 then
+ -- Inflicts 13 - 22 magic damage on target
+ ProcDamage(Caster, Target, "Jolting Strike", DmgType, MinVal, MaxVal)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Mend.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Mend.lua
new file mode 100755
index 000000000..6da81759b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Mend.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/Mend.lua
+ Script Author : Dello
+ Script Date : 19/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, CureLvls)
+SpellHeal("Heal", MinVal, MaxVal, 0, 2, 1)
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+
+
+ -- Dispels 7 levels of noxious hostile effects on target
+ CureByType(CureLvls, 3);
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Mendpct.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Mendpct.lua
new file mode 100755
index 000000000..1c0f49439
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Mendpct.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/Mendpct.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 03:10:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, CureLvls, MinVal, MaxVal)
+-- Dispels 7 levels of noxious hostile effects on target
+CureByType(CureLvls, 3);
+--Heals target for 8.1 - 9.9% of max health
+SpellHeal("Heal", GetPCTOfHP(Caster, MinVal), GetPCTOfHP(Caster, MaxVal),0 , 2, 1)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/MountainStance.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/MountainStance.lua
new file mode 100755
index 000000000..55873b663
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/MountainStance.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/MountainStance.lua
+ Script Author : Dello
+ Script Date : 14/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, BonusAmt)
+ AddControlEffect(Target, 3)
+ AddControlEffect(Target, 5)
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+ RemoveControlEffect(Target, 5)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/OutwardCalm.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/OutwardCalm.lua
new file mode 100755
index 000000000..d51a3e976
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/OutwardCalm.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/OutwardCalm.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 09:10:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards caster against 2789 points of elemental, noxious and arcane damage
+
+function cast(Caster, Target)
+AddWard(25, 1, 1)
+end
+
+
+function remove(Caster, Target)
+RemoveWard(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Peel.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Peel.lua
new file mode 100755
index 000000000..6cd1d48df
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Peel.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/Peel.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 07:10:23
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Wane on termination. Lasts for 20.0 seconds.
+-- Increases Threat to target by 4,946 - 5,925 instantly and by 3,345 - 3,969 every 4 seconds thereafter
+-- Forces target to change their selected target to caster instantly and every 2 seconds.
+-- Increases threat priority of target by 4 positions
+-- Increases Threat to target by 227 - 278 instantly and by 142 - 173 every 2 seconds thereafter
+-- Prevents target from changing targets
+-- Must be not at the top of the hate list of your current target.
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/PerfectSerenity.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/PerfectSerenity.lua
new file mode 100755
index 000000000..8b6eb6faa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/PerfectSerenity.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/PerfectSerenity.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Gives caster a 50.0% chance to strikethrough a successful avoidance check
+-- On a melee hit this spell may cast Serene Strike on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Increases Multi Attack Chance of caster by 15.0
+-- Inflicts 586 - 1088 crushing damage on target
+-- Cannot be modified except by direct means
+-- Gives caster an extra 20.0% mitigation to their worn armor
+-- Caster will deflect 5.0% of incoming attacks.
+-- Increases caster's chance to block by 15.0%
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RisingDragon.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RisingDragon.lua
new file mode 100755
index 000000000..41b4b3020
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RisingDragon.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/RisingDragon.lua
+ Script Author : Dello Updated by neatz09
+ Script Date : 13/06/2014 9/11/19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, MinVal2, MaxVal2)
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, MinVal2, MaxVal2)
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RisingPhoenix.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RisingPhoenix.lua
new file mode 100755
index 000000000..145a060a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RisingPhoenix.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/RisingPhoenix.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 05:01:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 54 - 90 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ Knocback(Caster, Target, 4000)
+ BlurVision(Target, 1.0)
+ AddControlEffect(Target, 4)
+ AddSpellTimer(1500, "RemoveKnockback")
+ end
+end
+
+function RemoveKnockback(Caster, Target)
+ BlurVision(Target, 0.0)
+ RemoveControlEffect(Target, 4)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RoundhouseKick.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RoundhouseKick.lua
new file mode 100755
index 000000000..0fdcce3a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/RoundhouseKick.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/RoundhouseKick.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.12 06:01:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 14 - 23 slashing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/SilentPalm.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/SilentPalm.lua
new file mode 100755
index 000000000..c085d02ee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/SilentPalm.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/SilentPalm.lua
+ Script Author : Dello
+ Script Date : 16/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/SilentThreat.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/SilentThreat.lua
new file mode 100755
index 000000000..ca16d2744
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/SilentThreat.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/SilentThreat.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 07:01:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Increases Threat to target by 355 - 434
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Stare.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Stare.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Stare.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/StrikingCobra.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/StrikingCobra.lua
new file mode 100755
index 000000000..2cc314e20
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/StrikingCobra.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/StrikingCobra.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 02:01:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+ Say(Caster, "need to add iflasthit to script.")
+-- Inflicts 49 - 82 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Decreases Defense of target by 1.3
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/TranquilVision.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/TranquilVision.lua
new file mode 100755
index 000000000..124fab5e6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/TranquilVision.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/TranquilVision.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 09:10:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+-- Increases Deflection of caster by 2.8
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Tsunami.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Tsunami.lua
new file mode 100755
index 000000000..8aa767317
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/Tsunami.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/Tsunami.lua
+ Script Author : neatz09
+ Script Date : 2020.03.03 02:03:01
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Caster will Riposte 100.0% of incoming frontal attacks. Attacks from other quadrants have the same chance of being Parried
+-- Makes caster immune to strikethrough attacks.
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WakingDragon.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WakingDragon.lua
new file mode 100755
index 000000000..89ed402bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WakingDragon.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/WakingDragon.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 05:08:41
+ Script Purpose : Direct Damage script
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+end
+
+function remove(Caster, Target, DDType, MinDmg, MaxDmg)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WalkingDragon.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WalkingDragon.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WalkingDragon.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WilloftheHeavens.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WilloftheHeavens.lua
new file mode 100755
index 000000000..43362456b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WilloftheHeavens.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/WilloftheHeavens.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.13 06:01:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DispellLvls)
+ -- Dispels 15 levels of elemental, noxious and arcane hostile effects on caster
+ CureByType(DispellLvls, 1)
+ CureByType(DispellLvls, 2)
+ CureByType(DispellLvls, 3)
+end
+
+--Makes caster immune to Root effects
+--Makes caster immune to Daze effects
+--Makes caster immune to Stun effects
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WindWalk.lua b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WindWalk.lua
new file mode 100755
index 000000000..034c65738
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/Monk/WindWalk.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/Monk/WindWalk.lua
+ Script Author : Jabantiz
+ Script Date : 2014.07.14 05:07:00
+ Script Purpose :
+ :
+--]]
+
+
+
+function cast(Caster, Target)
+ -- Grants invisibility to caster
+ -- Suspends caster's movement speed enhancements
+ -- 1 = stealth, 2 = invis
+ Stealth(2, Target)
+end
+
+function remove(Caster, Target)
+ -- for stealth use RemoveStealth()
+ RemoveInvis(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/PowerStrike.lua b/server/Spells/Spells-Copy/Fighter/Brawler/PowerStrike.lua
new file mode 100755
index 000000000..059e5fdb2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/PowerStrike.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/PowerStrike.lua
+ Script Author : Dello
+ Script Date : 2014.07.10 06:07:45
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DefSkills)
+
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/RapidSwings.lua b/server/Spells/Spells-Copy/Fighter/Brawler/RapidSwings.lua
new file mode 100755
index 000000000..751205bd3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/RapidSwings.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/RapidSwings.lua
+ Script Author : Dello
+ Script Date : 19/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, CurrentHP, MinVal, MaxVal, MinHeal, MaxHeal, DispellLvls)
+
+ CurrentHP = GetMaxHP(Caster)
+
+ MinHeal = CurrentHP * (MinVal / 100)
+
+ MaxHeal = CurrentHP * (MaxVal / 100)
+
+ SpellHeal("Heal", MinHeal, MaxHeal, Caster)
+
+ CureByType(DispellLvls, 3)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/ShoulderCharge.lua b/server/Spells/Spells-Copy/Fighter/Brawler/ShoulderCharge.lua
new file mode 100755
index 000000000..db8f6f21e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/ShoulderCharge.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/ShoulderCharge.lua
+ Script Author : Dello
+ Script Date : 2014.07.10 06:07:13
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ Knockback(Caster, Target, 1500)
+ AddSpellTimer(1500, "RemoveKnockdown")
+ end
+end
+
+function RemoveKnockdown(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/TauntingSlap.lua b/server/Spells/Spells-Copy/Fighter/Brawler/TauntingSlap.lua
new file mode 100755
index 000000000..d89d6dab0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/TauntingSlap.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/TauntingSlap.lua
+ Script Author : Dello
+ Script Date : 2014.07.11 02:07:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Increases Threat to target by 355 - 434
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/ThrustKick.lua b/server/Spells/Spells-Copy/Fighter/Brawler/ThrustKick.lua
new file mode 100755
index 000000000..88fe304d4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/ThrustKick.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/ThrustKick.lua
+ Script Author : Dello
+ Script Date : 2014.07.10 06:07:34
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ Knockback(Caster, Target, 1500)
+ AddSpellTimer(1500, "RemoveKnockdown")
+ end
+end
+
+function RemoveKnockdown(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Brawler/ThunderingFists.lua b/server/Spells/Spells-Copy/Fighter/Brawler/ThunderingFists.lua
new file mode 100755
index 000000000..89266c3b4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Brawler/ThunderingFists.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Brawler/ThunderingFists.lua
+ Script Author : Dello
+ Script Date : 2014.07.11 02:07:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, Dmg)
+ SetSpellTriggerCount(5, 1)
+ AddProc(Target, 3, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, Dmg)
+ if Type == 3 then
+ ProcDamage(Caster, Target, "Thunder Fist", DmgType, Dmg)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/CalltoArms.lua b/server/Spells/Spells-Copy/Fighter/CalltoArms.lua
new file mode 100755
index 000000000..bf35b633b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/CalltoArms.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/CalltoArms.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:58
+ Script Purpose :
+ :
+--]]
+
+-- Increases Crushing, Piercing and Slashing of group members (AE) by 1.9
+function cast(Caster, Target, SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/ConstructHead1.lua b/server/Spells/Spells-Copy/Fighter/ConstructHead1.lua
new file mode 100755
index 000000000..420ed199b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/ConstructHead1.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/ConstructHead1.lua
+ Script Author : neatz09
+ Script Date : 2019.11.11 09:11:38
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell may cast Mystical Essence on target of attack. Lasts for 2.0 seconds. Triggers about 2.0 times per minute.
+-- Stuns target
+-- Does not affect Epic targets
+
+function cast(Caster, Target)
+Say(Caster, "time " .. os.time(os.date("!*t")))
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/DoomJudgment.lua b/server/Spells/Spells-Copy/Fighter/Crusader/DoomJudgment.lua
new file mode 100755
index 000000000..c0486dcab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/DoomJudgment.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/DoomJudgment.lua
+ Script Author : neatz09
+ Script Date : 2020.02.22 12:02:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 11 levels of noxious and arcane beneficial effects on targets in Area of Effect
+-- Need code for dispell
+-- Inflicts 764 - 1274 melee damage on targets in Area of Effect
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Amends.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Amends.lua
new file mode 100755
index 000000000..0d9dd76ee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Amends.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Amends.lua
+ Script Author : neatz09
+ Script Date : 2019.10.25 04:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Transfers 21% of target's current Threat to the caster
+function cast(Caster, Target, Hate)
+ AddThreatTransfer(Target, Caster, Hate)
+end
+function remove(Caster, Target)
+ RemoveThreatTransfer(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/AncientWrath.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/AncientWrath.lua
new file mode 100755
index 000000000..5b5afa996
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/AncientWrath.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/AncientWrath.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 08:12:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Stuns targets in Area of Effect
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+
+ -- Inflicts 66 - 110 divine damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Resistibility increases against targets higher than level 29.
+
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/BlessedWeapon.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/BlessedWeapon.lua
new file mode 100755
index 000000000..214ac328e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/BlessedWeapon.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/BlessedWeapon.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 12:12:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- On a melee hit this spell may cast Glorious Strike on target of attack. Lasts for 2.0 seconds. Triggers about 1.6 times per minute.
+ AddProc(Target, 3, 12.5)
+ Say(Caster, "Not Implemented: stun and bonus damage to undead")
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal, bonusDmgType, bonusDmgMin, bonusDmgMax)
+ if Type == 3 then
+ -- Inflicts 43 - 72 divine damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ ProcDamage(Caster, Target, "Glorious Strike", DmgType, math.random(MinVal, MaxVal))
+ else
+ ProcDamage(Caster, Target, "Glorious Strike", DmgType, MinVal)
+ end
+
+ -- Inflicts 37 - 62 divine damage on target
+ -- If target is undead
+ --[[
+ if undead then
+ if bonusDmgMax ~= nil and bonusDmgMin < bonusDmgMax then
+ ProcDamage(Caster, Target, "Glorious Strike", bonusDmgType, math.random(bonusDmgMin, bonusDmgMax))
+ else
+ ProcDamage(Caster, Target, "Glorious Strike", bonusDmgType, bonusDmgMin)
+ end
+ end
+ --]]
+
+ -- Stuns target
+ -- If Target is not Epic
+
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/BlessingofthePaladin.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/BlessingofthePaladin.lua
new file mode 100755
index 000000000..3df0f142f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/BlessingofthePaladin.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/BlessingofthePaladin.lua
+ Script Author : neatz09
+ Script Date : 2019.10.01 06:10:03
+ Script Purpose :
+ :
+--]]
+
+-- Increases STA of caster by 25.1
+-- Increases STR of caster by 42.3
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 1106
+
+function cast(Caster, Target, Sta, Str, Mit)
+ AddSpellBonus(Target, 1, Sta)--Sta
+ AddSpellBonus(Target, 0, Str)--Str
+ AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 203, Mit)
+
+end
+
+
+function remove(Caster, Target, Sta, Str, Mit)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Castigate.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Castigate.lua
new file mode 100755
index 000000000..5491dfa8c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Castigate.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Castigate.lua
+ Script Author : neatz09
+ Script Date : 2020.05.20 06:05:38
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Castigate.
+-- Inflicts 462 - 770 divine damage on targets in Area of Effect
+-- Dispels 97 levels of any hostile effects on caster
+-- Casts Castigate for each successful Dispel.
+-- Inflicts 462 - 770 divine damage on targets in Area of Effect
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Clarion.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Clarion.lua
new file mode 100755
index 000000000..15af72c6f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Clarion.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Clarion.lua
+ Script Author : Dello
+ Script Date : 19/07/2014
+ Script Purpose :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+end
+
+function tick(Caster, Target, MinVal, MaxVal, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Consecrate.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Consecrate.lua
new file mode 100755
index 000000000..b08556eae
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Consecrate.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Consecrate.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 08:10:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Consecration.
+-- Inflicts 118 - 144 divine damage on targets in Area of Effect
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Crusade.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Crusade.lua
new file mode 100755
index 000000000..582110326
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Crusade.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Crusade.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 06:12:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, statBonus, mitBonus, healBonus)
+ -- Increases WIS of raid and group members (AE) by 9.2
+ AddSpellBonus(Target, 3, statBonus)
+
+ -- Increases Mitigation of raid and group members (AE) vs elemental, noxious and arcane damage by 78
+ AddSpellBonus(Target, 201, mitBonus)
+ AddSpellBonus(Target, 202, mitBonus)
+ AddSpellBonus(Target, 203, mitBonus)
+
+ -- Increases heal amounts of raid members by 2.82%.
+ AddSpellBonus(Target, 701, healBonus)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Decree.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Decree.lua
new file mode 100755
index 000000000..19331acd0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Decree.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Decree.lua
+ Script Author : neatz09
+ Script Date : 2019.09.27 10:09:09
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 208 - 347 divine damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+
+-- Interrupts target encounter
+Interrupt(Caster, Target)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DemonstrationofFaith.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DemonstrationofFaith.lua
new file mode 100755
index 000000000..0bbc7921f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DemonstrationofFaith.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/DemonstrationofFaith.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 06:12:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, WardAmt)
+ -- Wards target against 179 points of all damage
+ AddWard(WardAmt)
+end
+
+function remove(Caster, Target)
+ RemoveWard()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DevoutSacrament.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DevoutSacrament.lua
new file mode 100755
index 000000000..ca9d80fec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DevoutSacrament.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/DevoutSacrament.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:51
+ Script Purpose :
+ :
+--]]
+
+-- Heals caster for 31.6 - 38.6% of max health
+-- This effect cannot be critically applied.
+-- Increases Max Health of caster by 690.3
+-- The healing of this spell cannot be modified except by direct means
+function cast(Caster, Target)
+AddSpellBonus(Target, 606, BonusAmt)
+SpellHeal(Heal, GetPCTOfHP(Target, pctHealMin), GetPCTOfHP(Target, pctHealMax), nil, 2, 1)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineFavor.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineFavor.lua
new file mode 100755
index 000000000..a4149d165
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineFavor.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/DivineFavor.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:38
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineInspiration.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineInspiration.lua
new file mode 100755
index 000000000..23f425bac
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineInspiration.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/DivineInspiration.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 11:12:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- On a hit this spell may cast Divine Strike on target of attack. Triggers about 1.6 times per minute.
+ AddProc(Target, 3, 12.5, nil, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ if Type == 3 then
+ -- Inflicts 17 - 28 divine damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ ProcDamage(Caster, Target, "Divine Strike", DmgType, math.random(MinVal, MaxVal))
+ else
+ ProcDamage(Caster, Target, "Divine Strike", DmgType, MinVal)
+ end
+
+ -- Inflicts 17 - 28 divine damage on target
+ -- If target is undead
+ Say(Caster, "Not Implemented: Bonus damage to undead")
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineVengeance.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineVengeance.lua
new file mode 100755
index 000000000..f952357b5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/DivineVengeance.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/DivineVengeance.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 05:12:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType1, MinVal1, MaxVal1, DmgType2, MinVal2, MaxVal2, DmgType3, MinVal3, MaxVal3)
+ -- Inflicts 20 - 33 divine damage on target
+ if MaxVal1 ~= nil and MinVal1 < MaxVal1 then
+ SpellDamage(Target, DmgType1, math.random(MinVal1, MaxVal1))
+ else
+ SpellDamage(Target, DmgType1, MinVal1)
+ end
+
+ -- Applies Glorious Strike on termination. Lasts for 2.0 seconds.
+ -- Stuns target
+ -- If Target is not Epic
+ Say(Caster, "Not Implemented: Stun and bonus damage to undead")
+
+ -- Inflicts 47 - 79 divine damage on target
+ if MaxVal2 ~= nil and MinVal2 < MaxVal2 then
+ ProcDamage(Caster, Target, "Glorious Strike", DmgType2, math.random(MinVal2, MaxVal2))
+ else
+ ProcDamage(Caster, Target, "Glorious Strike", DmgType2, MinVal2)
+ end
+
+ -- Inflicts 41 - 68 divine damage on target
+ -- If target is undead
+
+end
+
+function remove(Caster, Target, DmgType1, MinVal1, MaxVal1, DmgType2, MinVal2, MaxVal2, DmgType3, MinVal3, MaxVal3)
+ end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/ElixirofResuscitation.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/ElixirofResuscitation.lua
new file mode 100755
index 000000000..4947e4416
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/ElixirofResuscitation.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/ElixirofResuscitation.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Resurrect on termination.
+-- Heals target for 100.0% of max health
+-- This effect cannot be critically applied.
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 13% health and power
+-- If outside an arena
+-- If between levels 1 - 6
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/FaithStrike.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/FaithStrike.lua
new file mode 100755
index 000000000..0651f884d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/FaithStrike.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/FaithStrike.lua
+ Script Author : Dello
+ Script Date : 19/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg, HealAmt)
+
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+ if HealAmt ~= nil then
+ SpellHeal("Heal", HealAmt, HealAmt, Caster)
+ end
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HeroicDash.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HeroicDash.lua
new file mode 100755
index 000000000..aa7dd09e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HeroicDash.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HeroicDash.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 07:12:55
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Hate)
+ -- Inflicts 19 - 33 divine damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Increases Threat to target by 302
+ AddHate(Caster, Target, Hate, 1)
+
+ -- Applies Knockdown. Lasts for 2.5 seconds.
+ -- Blurs vision of target
+ -- Throws target back
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 2500)
+ Say(Caster, "Not Implemented: stun and vision")
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAid.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAid.lua
new file mode 100755
index 000000000..0a9f4b4c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAid.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HolyAid.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 06:12:21
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, PhyBonus)
+ -- Heals target for 15.4 - 18.8% of max health
+ -- This effect cannot be critically applied.
+ SpellHeal(Heal, GetPCTOfHP(Caster, MinVal), GetPCTOfHP(Caster, MaxVal),Caster, 2, 1)
+
+ -- Increases Mitigation of target vs physical damage by 76
+ AddSpellBonus(Target, 200, PhyBonus)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAidT1.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAidT1.lua
new file mode 100755
index 000000000..730f3ca6f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAidT1.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HolyAid.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 06:12:21
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, PhyBonus)
+ -- -- Heals target for 175 - 213
+ -- This effect cannot be critically applied.
+ SpellHeal("heal", MinVal, MaxVal, nil, 2, 1)
+
+ -- Increases Mitigation of target vs physical damage by 76
+ AddSpellBonus(Target, 200, PhyBonus)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAvenger.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAvenger.lua
new file mode 100755
index 000000000..a6515057b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyAvenger.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HolyAvenger.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a Holy Avenger that transfers life from surrounding enemies to your allies.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyCircle.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyCircle.lua
new file mode 100755
index 000000000..c43c4d640
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyCircle.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HolyCircle.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 09:12:58
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, HealVal)
+ -- Inflicts 25 - 43 divine damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Heals group members (AE) for 13
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ local group = GetGroup(Caster)
+ if group == nil then
+ SpellHeal("Heal", HealVal, HealVal, Caster)
+ else
+ for key,value in pairs(group) do
+ if value ~= nil then
+ if GetDistance(Caster, value) <= 5 then
+ SpellHeal("Heal", HealVal, HealVal, value)
+ end
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyGround.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyGround.lua
new file mode 100755
index 000000000..4d4e20de2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyGround.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HolyGround.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:21
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyStrike.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyStrike.lua
new file mode 100755
index 000000000..89c47c0cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/HolyStrike.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/HolyStrike.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 07:10:08
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 112 - 186 divine damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, DotMin, DotMax)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+
+-- Inflicts 45 - 75 divine damage on target every 4 seconds
+function tick(Caster, Target)
+ SpellDamage(Target, DotType, DotMin, DotMax)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Incite.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Incite.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Incite.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Judgment.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Judgment.lua
new file mode 100755
index 000000000..679c72ddf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Judgment.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Judgment.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 05:12:36
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Interrupts target
+ Interrupt(Caster, Target)
+
+ -- Inflicts 9 - 14 divine damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/KnightsStance.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/KnightsStance.lua
new file mode 100755
index 000000000..7ee005c23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/KnightsStance.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/KnightsStance.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 01:11:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target, Phys, Sta, Avoid, OffSkill, DefSkill, Arcane, Armor)
+-- Reduces physical damage done to caster by 5%
+ AddSpellBonus(Target, 200, Phys)
+ Say(Caster, "Need % for Physical Mit. Using Stat 200 for now.")
+-- Increases STA of caster by 11.9
+ AddSpellBonus(Target, 1, Sta)
+-- Adds 2.8% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+-- Decreases Slashing, Piercing and Crushing of caster by 1.4
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkill)
+-- Increases Defense and Aggression of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), DefSkill)
+-- Increases Mitigation of caster vs arcane damage by 138
+ AddSpellBonus(Target, 203, Arcane)
+-- Increases the caster's effectiveness of worn armor vs physical damage by 15%
+ AddSpellBonus(Target, 678, Armor)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/LayonHands.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/LayonHands.lua
new file mode 100755
index 000000000..c4b38f98b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/LayonHands.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/LayonHands.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 06:12:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, statBonus, mitBonus, HealMin, HealMax)
+ -- Increases Max Health of target by 96.7
+ AddSpellBonus(Target, 500, statBonus)
+
+ -- Increases Mitigation of target vs physical damage by 180
+ AddSpellBonus(Target, 204, mitBonus)
+ AddSpellBonus(Target, 205, mitBonus)
+ AddSpellBonus(Target, 206, mitBonus)
+
+ -- Heals target for 42.1 - 51.5% of max health
+ -- This effect cannot be critically applied.
+ SpellHeal(Heal, GetPCTOfHP(Target, HealMin), GetPCTOfHP(Target, HealMax), nil, 2, 1)
+end
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/MarrsFavor.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/MarrsFavor.lua
new file mode 100755
index 000000000..79b29e8f3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/MarrsFavor.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/MarrsFavor.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:25
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell may cast Marr's Fury on target of attack. Triggers about 3.0 times per minute.
+-- Inflicts 811 - 991 divine damage on target
+-- Reduces physical damage done to caster by 10%
+-- When the paladin takes damage, they will heal themselves for 10% of the damage amount.
+-- On a spell cast this spell has a 15% chance to cast Marr's Favor on caster. Lasts for 15.0 seconds.
+-- Increases the damage of spells by up to 25% of your total strength
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PenitentKick.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PenitentKick.lua
new file mode 100755
index 000000000..b902cdd95
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PenitentKick.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/PenitentKick.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 07:12:40
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 12 - 20 divine damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown on termination. Lasts for 1.5 seconds.
+ -- Throws target back
+ -- Stuns target
+ -- Blurs vision of target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 1500)
+ Say(Caster, "Not Implemented: Stun and Vision")
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PowerCleave.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PowerCleave.lua
new file mode 100755
index 000000000..81532317f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PowerCleave.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/PowerCleave.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.06 08:12:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 44 - 73 divine damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PrayerofHealing.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PrayerofHealing.lua
new file mode 100755
index 000000000..2929f56b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PrayerofHealing.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/PrayerofHealing.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 05:12:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, MinVal, MaxVal)
+ -- Increases Max Health of group members (AE) by 15.8
+ AddSpellBonus(Target, 606, BonusAmt)
+
+ -- Heals group members (AE) for 21 - 25
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PrayerofHealingpct.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PrayerofHealingpct.lua
new file mode 100755
index 000000000..a3eed5470
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/PrayerofHealingpct.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/PrayerofHealingpct.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 06:11:06
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals group members (AE) for 6.9 - 8.5% of max health
+-- This effect cannot be critically applied.
+-- Increases Max Health of group members (AE) by 155.7
+-- The healing of this spell cannot be modified except by direct means
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/PrayerofHealing.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 05:12:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, MinVal, MaxVal)
+ -- Increases Max Health of group members (AE) by 15.8
+ AddSpellBonus(Target, 606, BonusAmt)
+
+ -- Heals group members (AE) for 21 - 25
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/RefusalofAtonement.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/RefusalofAtonement.lua
new file mode 100755
index 000000000..041194d34
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/RefusalofAtonement.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/RefusalofAtonement.lua
+ Script Author : neatz09
+ Script Date : 2019.09.27 10:09:54
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 786 - 1310 divine damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/ResoluteFaith.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/ResoluteFaith.lua
new file mode 100755
index 000000000..6802d9320
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/ResoluteFaith.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/ResoluteFaith.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+-- Increases Defense of caster by 2.8
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Righteousness.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Righteousness.lua
new file mode 100755
index 000000000..36289b6ae
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/Righteousness.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/Righteousness.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 09:12:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, minVal, maxVal, mitVal)
+ -- Increases Threat to target encounter by 125 - 153
+ if maxVal ~= nil and minVal < maxVal then
+ AddHate(Caster, Target, math.random(minVal, maxVal))
+ else
+ AddHate(Caster, Target, minVal)
+ end
+
+ -- Decreases Mitigation of target encounter vs arcane damage by 104
+ AddSpellBonus(Target, 203, mitVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/SigilofHeroism.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/SigilofHeroism.lua
new file mode 100755
index 000000000..3af610276
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/SigilofHeroism.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/SigilofHeroism.lua
+ Script Author : neatz09
+ Script Date : 2020.03.01 05:03:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Transfers 20% of group members (AE)'s current Threat to the caster
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/WrathStance.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/WrathStance.lua
new file mode 100755
index 000000000..8bd18abe3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Paladin/WrathStance.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Paladin/WrathStance.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.05 06:12:58 updated 11/9/2019 - Neatz09
+ Script Purpose :
+ :
+--]]
+
+--caster may not benefit from any stoneskin, death prevent, or 100% avoidance abilities while under this effect and for 5 seconds after the effect has been removed.
+--
+function cast(Caster, Target, statBonus, skillReduction, skillBonus)
+ -- Increases STR of caster by 11.9
+ AddSpellBonus(Target, 0, statBonus)
+ -- Decreases Defense of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), skillReduction)
+ -- Increases Disruption, Slashing, Piercing and Crushing of caster by 2.4
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), skillBonus)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), skillBonus)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), skillBonus)
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), skillBonus)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), skillBonus)
+-- Potency
+AddSpellBonus(Target, 659, 20)
+ Say(Caster, "Missing the Beneficial immunity features.")
+ Say(Caster, "Missing Potency of caster for level 93 t10 and t11")
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/PledgeofArmament.lua b/server/Spells/Spells-Copy/Fighter/Crusader/PledgeofArmament.lua
new file mode 100755
index 000000000..c25963b5d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/PledgeofArmament.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/PledgeofArmament.lua
+ Script Author : neatz09
+ Script Date : 2020.02.24 08:02:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Mitigation of target vs physical damage by 73
+-- Decreases Mitigation of caster vs physical damage by 162
+
+function cast(Caster, Target, TgtMit, CastMit)
+ AddSpellBonus(Target, 200, TgtMit)
+ AddSpellBonus(Caster, 200, CastMit)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSpellBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Blasphemy.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Blasphemy.lua
new file mode 100755
index 000000000..564348250
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Blasphemy.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Blasphemy.lua
+ Script Author : Dello
+ Script Date : 15/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, ResistAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+
+ if target ~= nil then
+ Interrupt(Target)
+ end
+
+ AddSpellBonus(Target, 202, ResistAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Bloodletter.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Bloodletter.lua
new file mode 100755
index 000000000..fa35f4d9f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Bloodletter.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Bloodletter.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/CleaveFlesh.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/CleaveFlesh.lua
new file mode 100755
index 000000000..054cbcfdc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/CleaveFlesh.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/CleaveFlesh.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.11 06:01:30
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, BonusAmt)
+ -- Inflicts 64 - 107 disease damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Decreases WIS of target by 16.2
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/CondemningSmite.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/CondemningSmite.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/CondemningSmite.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DarkBlade.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DarkBlade.lua
new file mode 100755
index 000000000..7a2f08863
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DarkBlade.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DarkBlade.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 02:01:11 - potency 10/18/2019
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, DefSkillAmt, SkillAmt)
+ -- Increases STR of caster by 17.8
+ AddSpellBonus(Target, 0, BonusAmt)
+
+ -- Decreases Defense of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkillAmt)
+
+ -- Increases Crushing, Disruption, Piercing and Slashing of caster by 2.4
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+
+ -- Add
+ -- may not benefit from any stoneskin, death prevent, or 100% avoidance abilities while under this effect and for 5 seconds after the effect has been removed.
+ Say(Caster, "Stoneskin and potency parts missing.")
+
+ -- Add
+ -- Increases potency added on target by 20%.
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeathCloud.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeathCloud.lua
new file mode 100755
index 000000000..292738378
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeathCloud.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DeathCloud.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 04:01:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 30 - 50 disease damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 14 - 17 disease damage on targets in Area of Effect every 6 seconds
+ if DoTMaxVal ~= nil and DoTMinVal < DoTMaxVal then
+ SpellDamage(Target, DoTType, math.random(DoTMinVal, DoTMaxVal))
+ else
+ SpellDamage(Target, DoTType, DoTMinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeathMarch.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeathMarch.lua
new file mode 100755
index 000000000..ad3f118c2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeathMarch.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DeathMarch.lua
+ Script Author : neatz09
+ Script Date : 2019.11.14 10:11:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+CastSpell(Target, 5165, GetSpellTier())
+ AddProc(Target, 14, 100, nil, 1)
+
+end
+
+function proc(Caster, Target, Type)
+ CastSpell(Caster, 5165, GetSpellTier())
+ end
+
+
+function remove(Caster, Target)
+RemoveProc(Target)
+end
+
+-- Applies On the March. Lasts for 10.0 seconds.
+-- Increases INT of group members (AE) by 102.1
+-- Increases Ability Casting Speed of group members (AE) by 35.3%
+-- Increases Multi Attack of group members (AE) by 35.3
+-- Makes group members (AE) immune to Root, Stifle, Stun, Fear and Daze effects
+-- On a kill this spell will cast On the March on target. Lasts for 10.0 seconds.
+-- Increases INT of group members (AE) by 102.1
+-- Increases Ability Casting Speed of group members (AE) by 35.3%
+-- Increases Multi Attack of group members (AE) by 35.3
+-- Makes group members (AE) immune to Root, Stifle, Stun, Fear and Daze effects
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Decree.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Decree.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Decree.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeviousEvasion.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeviousEvasion.lua
new file mode 100755
index 000000000..f6573fb41
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DeviousEvasion.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DeviousEvasion.lua
+ Script Author : neatz09
+ Script Date : 2019.10.18 08:10:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+-- Increases Parry of caster by 2.8
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DevourVitae.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DevourVitae.lua
new file mode 100755
index 000000000..56c3bf574
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DevourVitae.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DevourVitae.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 08:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 97 - 119 disease damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, pctHealMin, pctHealMax)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Heals caster for 3.4 - 4.2% of max health
+-- This effect cannot be critically applied.
+-- The healing of this spell cannot be modified except by direct means
+SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMin), GetPCTOfHP(Caster, pctHealMax), Caster, 2)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DevouringMist.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DevouringMist.lua
new file mode 100755
index 000000000..4c8d47234
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DevouringMist.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DevouringMist.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 01:10:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Devouring Mist. Lasts for 1 minute 12 seconds.
+-- Increases Mitigation of caster vs physical damage by 216
+-- Decreases Mitigation of target encounter vs physical damage by 1234
+
+function cast(Caster, Target, CsterAmt, TgtAmt)
+ Say(Caster, "This Spell is not setup for AoE correctly. mitigation is also increased per target.")
+
+AddSpellBonus(Caster, 200, CstrAmt)
+AddSpellBonus(Target, 200, TgtAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DreadfulWrath.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DreadfulWrath.lua
new file mode 100755
index 000000000..af8727c96
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/DreadfulWrath.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/DreadfulWrath.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 01:10:03
+ Script Purpose :
+ :
+--]]
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Snare)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Applies Snare on termination. Lasts for 24.0 seconds.
+-- Slows target by 37.7%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+ SetSpeedMultiplier(Target, Snare)
+ AddProc(Target, 2, 5.0)
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+ SetSpeedMultiplier(Target, 1.0)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/GraveSacrament.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/GraveSacrament.lua
new file mode 100755
index 000000000..a5fe695d1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/GraveSacrament.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/GraveSacrament.lua
+ Script Author : neatz09
+ Script Date : 2019.10.09 04:10:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases threat priority of targets in Area of Effect by 2 positions---NOT SCRIPTED
+-- Increases Threat to targets in Area of Effect by 284 - 347 instantly and every 4 seconds thereafter
+-- Inflicts 5 - 8 disease damage on targets in Area of Effect
+-- Inflicts 3 - 4 disease damage on targets in Area of Effect every 4 seconds
+
+function cast(Caster, Target, HateMin, HateMax, DmgType, MinVal, MaxVal, DotType, DotMin, DotMax, ToTMin, ToTMax)
+ if HateMax ~= nil and HateMin < HateMax then
+ AddHate(Caster, Target, math.random(HateMin, HateMax), 1)
+ else
+ AddHate(Caster, Target, HateMin, 1)
+ end
+SpellDamage(Target, HateMin, HateMax, DmgType, MinVal, MaxVal)
+end
+function tick(Caster, Target, HateMin, HateMax, DoTType, DotMin, DotMax)
+ if ToTMax ~= nil and ToTMin < ToTMax then
+ AddHate(Caster, Target, math.random(ToTMin, ToTMax), 1)
+ else
+ AddHate(Caster, Target, ToTMin, 1)
+ end
+SpellDamage(Target, DoTType, DotMin, DotMax)
+ end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/GrimHarbinger.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/GrimHarbinger.lua
new file mode 100755
index 000000000..739450483
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/GrimHarbinger.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/GrimHarbinger.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 05:01:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- On a melee hit this spell may cast Grim Strike on target of attack. Triggers about 3.0 times per minute.
+ AddProc(Target, 3, 15.0)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgMin, DmgMax, pctHealMin, pctHealMax)
+ if Type == 3 then
+ -- Inflicts 37 - 62 disease damage on target
+ ProcDamage(Caster, Target, "Grim Strike", DmgType, DmgMin, DmgMax)
+
+ -- Heals caster for 15 - 25
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMin), GetPCTOfHP(Caster, pctHealMax),Caster, 2, 1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/HarmTouch.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/HarmTouch.lua
new file mode 100755
index 000000000..bac895a34
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/HarmTouch.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/HarmTouch.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.11 08:01:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 846 - 1411 disease damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/HatefulSlam.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/HatefulSlam.lua
new file mode 100755
index 000000000..17cb5921d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/HatefulSlam.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/HatefulSlam.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.11 05:01:41
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, HateAmt, TickHateAmt)
+ -- Inflicts 23 - 39 disease damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Increases Threat to target by 181 instantly ...
+ AddHate(Caster, Target, MinVal, 1)
+
+ -- Applies Knockdown. Lasts for 2.5 seconds.
+ -- Blurs vision of target
+ -- Throws target back
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 2500)
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(2500, "RemoveKnockback")
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, HateAmt, TickHateAmt)
+ -- ... and by 79 every 3 seconds thereafter
+ AddHate(Caster, Target, TickHateAmt, 1)
+end
+
+function RemoveKnockback(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/InnoruuksCaress.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/InnoruuksCaress.lua
new file mode 100755
index 000000000..acc16cee2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/InnoruuksCaress.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/InnoruuksCaress.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 02:01:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, HateAmt, DmgType, DmgAmt)
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 43
+ AddSpellBonus(Target, 201, BonusAmt)
+ AddSpellBonus(Target, 202, BonusAmt)
+ AddSpellBonus(Target, 203, BonusAmt)
+
+ AddProc(Target, 4, 100)
+end
+
+function proc(Caster, Target, Type, BonusAmt, HateAmt, DmgType, DmgAmt)
+ -- When damaged with a melee weapon this spell will cast Caress Feedback on target's attacker.
+ -- Increases Threat to target by 4
+ -- Inflicts 1 disease damage on target
+ if Type == 4 then
+ AddHate(Caster, Target, HateAmt)
+ ProcDamage(Caster, Target, "Caress Feedback", DmgType, DmgAmt)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/InsidiousWhisper.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/InsidiousWhisper.lua
new file mode 100755
index 000000000..3c4e39b2f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/InsidiousWhisper.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/InsidiousWhisper.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinTauntVal, MaxTauntVal, MinTauntTick, MaxTauntTick, DDType, MinDDVal, MaxDDVal, DoTType, MinDoTVal, MaxDoTVal)
+
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+
+ -- Disease component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+end
+
+function tick(Caster, Target, MinTauntVal, MaxTauntVal, MinTauntTick, MaxTauntTick, DDType, MinDDVal, MaxDDVal, DoTType, MinDoTVal, MaxDoTVal)
+
+ -- Taunt component
+ if MaxTauntTick ~= nil and MinTauntTick < MaxTauntTick then
+ hateAmount = math.random(MinTauntTick, MaxTauntTick)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntTick)
+ end
+
+
+ -- Disease component
+ if MaxDoTVal ~= nil and MinDoTVal < MaxDoTVal then
+ dmgAmount = math.random(MinDoTVal, MaxDoTVal)
+ SpellDamage(Target, DoTType, dmgAmount)
+ else
+ SpellDamage(Target, DoTType, MinDoTVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/LucansPact.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/LucansPact.lua
new file mode 100755
index 000000000..8103f53bd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/LucansPact.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/LucansPact.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 02:01:23
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StaBonusAmt, AvdBonusAmt, OffSkillAmt, DefSkillAmt, ResistAmt)
+ -- Reduces physical damage done to caster by 5%
+ AddSpellBonus(Target, 313, 5) -- Not sure on this value (313)
+
+
+ -- Increases STA of caster by 11.9
+ AddSpellBonus(Target, 1, StaBonusAmt)
+
+ -- Adds 2.8% to base avoidance.
+ AddSpellBonus(Target, 696, AvdBonusAmt)
+
+ -- Decreases Crushing, Piercing and Slashing of caster by 1.4
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillAmt)
+
+ -- Increases Aggression and Defense of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), DefSkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkillAmt)
+
+ -- Increases Mitigation of caster vs noxious damage by 138
+ AddSpellBonus(Target, 202, ResistAmt)
+
+ -- Increases the caster's effectiveness of worn armor vs physical damage by 15%
+ AddSpellBonus(Target, 678, 15)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Malice.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Malice.lua
new file mode 100755
index 000000000..8edc7224a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Malice.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Malice.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 01:01:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 9 - 15 disease damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ManaSieve.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ManaSieve.lua
new file mode 100755
index 000000000..592775031
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ManaSieve.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/ManaSieve.lua
+ Script Author : neatz09
+ Script Date : 2019.10.18 08:10:11
+ Script Purpose :
+ :
+--]]
+-- Inflicts 268 - 446 disease damage on target
+-- Inflicts 67 - 112 disease damage on target every 4 seconds
+-- Increases power of caster by 146 - 244
+-- Increases power of caster by 32 - 53 every 4 seconds
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinHeal, MaxHeal, DoTType, DoTMin, DoTMax, HoTMin, HotMax)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellHeal("Power", MinHeal, MaxHeal, Caster)
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, MinHeal, MaxHeal, DoTType, DoTMin, DoTMax, HoTMin, HotMax)
+SpellDamage(Target, DoTType, DotMin, DoTMax)
+SpellHeal("Power", HoTMin, HoTMax, Caster)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/MortalEmbrace.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/MortalEmbrace.lua
new file mode 100755
index 000000000..9251c8357
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/MortalEmbrace.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/MortalEmbrace.lua
+ Script Author : Dello
+ Script Date : 16/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Chance)
+ SetServerControlFlag(Target, 5, 1, 1);
+
+ local roll = math.random(1, 100);
+ if roll <= Chance then
+ ClearHate(Target)
+ SendMessage(Caster, "Your feign death succeeded", "yellow")
+ SendMessage(Target, "Your feign death succeeded", "yellow")
+ else
+ SendMessage(Caster, "Your feign death attempt failed", "yellow")
+ SendMessage(Target, "Your feign death attempt failed", "yellow")
+ end
+end
+
+function remove(Caster, Target)
+ SetServerControlFlag(Target, 5, 1, 0);
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/OffensivePresence.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/OffensivePresence.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/OffensivePresence.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/OntheMarch.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/OntheMarch.lua
new file mode 100755
index 000000000..c764769a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/OntheMarch.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/OntheMarch.lua
+ Script Author : neatz09
+ Script Date : 2020.02.22 12:02:38
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Int, CastSpeed, Multi)
+ AddSpellBonus(Target, 4, Int)
+ AddSpellBonus(Target, 664, CastSpeed)
+ AddSpellBonus(Target, 641, Multi)
+AddImmunitySpell(2, Target)
+AddImmunitySpell(3, Target)
+AddImmunitySpell(4, Target)
+AddImmunitySpell(5, Target)
+AddImmunitySpell(6, Target)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveImmunitySpell(2,Target)
+RemoveImmunitySpell(3,Target)
+RemoveImmunitySpell(4,Target)
+RemoveImmunitySpell(5,Target)
+RemoveImmunitySpell(6,Target)
+end
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies On the March. Lasts for 10.0 seconds.
+-- Increases INT of group members (AE) by 102.1
+-- Increases Ability Casting Speed of group members (AE) by 35.3%
+-- Increases Multi Attack of group members (AE) by 35.3
+-- Makes group members (AE) immune to Root, Stifle, Stun, Fear and Daze effects
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Painbringer.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Painbringer.lua
new file mode 100755
index 000000000..d1f54b673
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Painbringer.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Painbringer.lua
+ Script Author : John Adams
+ Script Date : 2013.11.17 05:11:19
+ Script Purpose : DD, DoT and Heal
+ :
+--]]
+
+function cast(Caster, Target, MinHeal, DmgType, MinDmg, MaxDmg, DoTType, DoT)
+
+ -- DD component
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+ -- Painbringer Component (instant heal)
+ if MinHeal ~= nil then
+ SpellHeal("Heal", MinHeal, 0, Caster)
+ -- ModifyHP(Caster, MinHeal) -- heals 2 every 3 seconds for 9 seconds
+ end
+
+end
+
+function tick(Caster, Target, MinHeal, DmgType, MinDmg, MaxDmg, DoTType, DoTAmt)
+
+ -- Heal component
+ if MinHeal ~= nil then
+ SpellHeal("Heal", MinHeal, 0, Caster)
+ -- ModifyHP(Caster, MinHeal) -- heals 2 every 3 seconds for 9 seconds
+ end
+
+ -- DoT component
+ if DoTAmt ~= nil then
+ SpellDamage(Target, DoTType, DoTAmt) -- Disease 1 every 3 seconds for 9 seconds
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/PainbringerPct.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/PainbringerPct.lua
new file mode 100755
index 000000000..1426e8c9d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/PainbringerPct.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/PainbringerPct.lua
+ Script Author : neatz09
+ Script Date : 2019.10.18 05:10:51
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, MinHeal, DmgType, MinDmg, MaxDmg, DoTType, DoT)
+
+ -- DD component
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+ -- Painbringer Component (instant heal)
+ if MinHeal ~= nil then
+ SpellHeal("Heal", GetPCTOfHP(Caster, MinHeal),Caster, 2, 1)
+ -- ModifyHP(Caster, MinHeal) -- heals 2 every 3 seconds for 9 seconds
+ end
+
+end
+
+function tick(Caster, Target, MinHeal, DmgType, MinDmg, MaxDmg, DoTType, DoTAmt)
+
+ -- Heal component
+ if MinHeal ~= nil then
+ SpellHeal("Heal", GetPCTOfHP(Caster, MinHeal),Caster, 2, 1)
+ -- ModifyHP(Caster, MinHeal) -- heals 2 every 3 seconds for 9 seconds
+ end
+
+ -- DoT component
+ if DoTAmt ~= nil then
+ SpellDamage(Target, DoTType, DoTAmt) -- Disease 1 every 3 seconds for 9 seconds
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Pestilence.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Pestilence.lua
new file mode 100755
index 000000000..2017a2d89
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Pestilence.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Pestilence.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 09:10:39
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Pestilence. Lasts for 16.0 seconds.
+-- Inflicts 333 - 407 disease damage on caster
+-- Inflicts 111 - 136 disease damage on caster every 2 seconds
+-- On death this spell will cast Pestilence Mark on target.
+-- Applies Pestilence. Lasts for 16.0 seconds.
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SeethingHatred.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SeethingHatred.lua
new file mode 100755
index 000000000..7c912ac0e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SeethingHatred.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/SeethingHatred.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 11:02:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Damage over time spells increase damage with each tick. Damage ceases to increase after 5 ticks.
+-- On any combat or spell hit this spell may cast Seething Hatred on target of attack. Lasts for 15.0 seconds. Triggers about 2.4 times per minute.
+-- 300% of health regained from lifetaps will be applied as hate to engaged targets.
+-- Inflicts 734 - 897 disease damage on target
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ShadowCoil.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ShadowCoil.lua
new file mode 100755
index 000000000..809a722c3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ShadowCoil.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/ShadowCoil.lua
+ Script Author : Dello
+ Script Date : 17/07/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMin, DoTMax)
+
+ if DoTMax ~= nil and DoTMin < DoTMax then
+ SpellDamage(Target, DoTType, math.random(DoTMin, DoTMax))
+ else
+ SpellDamage(Target, DoTType, DoTMin)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ShadowyElusion.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ShadowyElusion.lua
new file mode 100755
index 000000000..25c572a25
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/ShadowyElusion.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/ShadowyElusion.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 09:10:05
+ Script Purpose :
+ :
+--]]
+-- Teleports caster and caster's group within the zone
+function cast(Caster, Target)
+ Evac()
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SickeningCircle.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SickeningCircle.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SickeningCircle.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SiphonStrength.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SiphonStrength.lua
new file mode 100755
index 000000000..708d64c49
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SiphonStrength.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/SiphonStrength.lua
+ Script Author : Dello
+ Script Date : 18/07/2014 (Updated 9/23/19 by neatz09)
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DebuffAmt, BuffAmt)
+--Debuff
+ AddSpellBonus(Target, 0, DebuffAmt)
+ AddSpellBonus(Target, 4, DebuffAmt)
+--Buff Amt
+ AddSpellBonus(Caster, 0, BuffAmt)
+ AddSpellBonus(Caster, 4, BuffAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSpellBonus(Caster)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SiphonStrike.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SiphonStrike.lua
new file mode 100755
index 000000000..892fde7a9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/SiphonStrike.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/SiphonStrike.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 07:10:15
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, pctHealMin, pctHealMax, DmgType2, Minval2, MaxVal2)
+ -- Inflicts 46 - 77 disease damage on target
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+ if LastSpellAttackHit() then
+ -- Applies Life Draw on termination.
+ -- Heals caster for 1.0 - 1.2% of max health
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ Say(Caster, "Heal Min: " .. GetPCTOfHP(Caster, pctHealMin))
+ local min2 = GetMaxHP(Caster) * (pctHealMin / 100)
+ Say(Caster, "Heal Min2: " .. min2)
+ SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMin), GetPCTOfHP(Caster, pctHealMax),Caster, 2, 1)
+ -- Inflicts 13 - 22 disease damage on target
+ SpellDamage(Target, DmgType2, MinVal2, MaxVal2)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Soulrend.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Soulrend.lua
new file mode 100755
index 000000000..112ea1bd6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/Soulrend.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/Soulrend.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 03:01:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+
+ -- Inflicts 12 - 20 piercing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown on termination. Lasts for 1.5 seconds.
+ -- Throws target back
+ -- Stuns target
+ -- Blurs vision of target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 1500)
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(1500, "RemoveStunBlur")
+ end
+end
+
+function RemoveStunBlur(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/TapVeins.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/TapVeins.lua
new file mode 100755
index 000000000..f1e7be9fa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/TapVeins.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/TapVeins.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 12:10:27
+ Script Purpose :
+ :
+--]]
+--this needs to hit everything and tap each mob
+
+function cast(Caster, Target, DmgType, MinVal, HealType, pctHealMin, pctHealMax)
+ Say(Caster, "spell heals a portion of total amount of damage... not implemented.")
+
+-- Applies Tap on termination.
+-- Inflicts 543 disease damage on target
+SpellDamage(Target, DmgType, MinVal)
+ -- Heals caster for 2.2 - 2.7% of max health
+-- This effect cannot be critically applied.
+-- The healing of this spell cannot be modified except by direct means
+SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMin), GetPCTOfHP(Caster, pctHealMax), Caster, 2)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/TouchofDeath.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/TouchofDeath.lua
new file mode 100755
index 000000000..644259194
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/TouchofDeath.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/TouchofDeath.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Will absorb physical damage when the amount is greater than 60% of the target's maximum health.
+-- Forces target to change their selected target to caster instantly. Hate gain is increased by 10% for the duration.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnendingAgony.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnendingAgony.lua
new file mode 100755
index 000000000..b976d703f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnendingAgony.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/UnendingAgony.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.11 06:01:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, TickType, TickDmg)
+ -- Inflicts 51 disease damage on targets in Area of Effect
+ if MinVal ~= nil then
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, TickType, TickDmg)
+ -- Inflicts 34 disease damage on targets in Area of Effect every 4 seconds
+ if TickDmg ~= nil then
+ SpellDamage(Target, TickType, TickDmg)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyBlessing.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyBlessing.lua
new file mode 100755
index 000000000..5cf0684ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyBlessing.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/UnholyBlessing.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.11 06:03:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgMin, DmgMax, HealMin, HealMax)
+ -- Grants a total of 5 triggers of the spell.
+ SetSpellTriggerCount(5, 1)
+
+ -- When damaged this spell will cast Voracious Soul on target's attacker.
+ AddProc(Target, 2, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgMin, DmgMax, pctHealMin, pctHealMax)
+ if Type == 2 then
+ -- Inflicts 19 - 24 disease damage on target
+ ProcDamage(Caster, Target, "Voraciocus Soul", DmgType, DmgMin, DmgMax)
+
+ -- Heals caster for 24 - 30
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ SpellHeal(Heal, GetPCTOfHP(Caster, pctHealMin), GetPCTOfHP(Caster, pctHealMax),Caster, 2, 1)
+
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyHunger.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyHunger.lua
new file mode 100755
index 000000000..057e0ac0f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyHunger.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/UnholyHunger.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.08 05:01:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- On a hit this spell may cast Unholy Strike on target of attack. Triggers about 1.6 times per minute.
+ AddProc(Target, 3, 16, nil, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgMin, DmgMax, HealMin, HealMax)
+ if Type == 3 then
+ -- Inflicts 19 - 32 disease damage on target
+ ProcDamage(Caster, Target, "Unholy Strike", DmgType, DmgMin, DmgMax)
+
+ -- Heals caster for 6 - 10
+ -- This effect cannot be critically applied.
+ -- The healing of this spell cannot be modified except by direct means
+ -- Old code SpellHeal("Heal", HealMin, HealMax, Caster, 2, 1)
+ SpellHeal("Heal", HealMin / 100 * GetMaxHP(Caster), HealMax / 100 * GetMaxHP(Caster), Caster, 2, 1)
+SendMessage(Caster, "Minimum : " .. round(MinVal *level) .. " Maximum: " .. round(MaxVal*level),"yellow")
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyStrength.lua b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyStrength.lua
new file mode 100755
index 000000000..278aabb86
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/Shadowknight/UnholyStrength.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/Shadowknight/UnholyStrength.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.11 08:01:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, BonusDmgAmt)
+ -- Increases STA of raid and group members (AE) by 9.2
+ AddSpellBonus(Target, 1, BonusAmt)
+
+ -- Increase spell damage of group and raid members by 2.82%.
+ AddSpellBonus(Target, 700, BonusDmgAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Crusader/VigorofTrust.lua b/server/Spells/Spells-Copy/Fighter/Crusader/VigorofTrust.lua
new file mode 100755
index 000000000..098f1c521
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Crusader/VigorofTrust.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Crusader/VigorofTrust.lua
+ Script Author : neatz09
+ Script Date : 2020.02.24 08:02:47
+ Script Purpose :
+ :
+--]]
+
+-- Increases WIS and STR of group members (AE) by 9.6
+
+function cast(Caster, Target, Stat)
+ AddSpellBonus(Target, 0, Stat)
+ AddSpellBonus(Target, 3, Stat)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/FightingChance.lua b/server/Spells/Spells-Copy/Fighter/FightingChance.lua
new file mode 100755
index 000000000..5677282e5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/FightingChance.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/FightingChance.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 09:11:34
+ Script Purpose : Begins a Heroic Opportunity
+ :
+--]]
+
+
+function precast(Caster, Target)
+ -- Must be engaged in combat
+ return IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+ -- Begins a Heroic Opportunity
+StartHeroicOpportunity(Caster, 1)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Intercept.lua b/server/Spells/Spells-Copy/Fighter/Intercept.lua
new file mode 100755
index 000000000..88a0d99b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Intercept.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Intercept.lua
+ Script Author : John Adams
+ Script Date : 2013.08.10 02:08:36
+ Script Notes : Intercept damage to Target
+--]]
+
+function cast(Caster, Target)
+
+ local HalfMaxHP = GetMaxHP(Target) * .5
+ local CurrentHP = GetHP(Target)
+
+ Say(Caster, "[DEVL: HalfMaxHP: " .. HalfMaxHP .. " CurrentHP: " .. CurrentHP)
+
+ if CurrentHP <= HalfMaxHP then
+ -- 100% chance to intercept all damage on target.
+ -- On a successful intercept caster takes 50% of attack damage, target takes 75% of attack damage.
+ -- Spell ends after 2 successful intercepts.
+ else
+ -- 100% chance to intercept all damage on target.
+ -- On a successful intercept caster takes 50% of attack damage, target takes 75% of attack damage.
+ -- Spell ends after 1 successful intercept.
+ end
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Kick.lua b/server/Spells/Spells-Copy/Fighter/Kick.lua
new file mode 100755
index 000000000..a0cd08852
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Kick.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Kick.lua
+ Script Author : neatz09
+ Script Date : 2019.12.09 06:12:01
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 7 - 12 crushing damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/MastersRage.lua b/server/Spells/Spells-Copy/Fighter/MastersRage.lua
new file mode 100755
index 000000000..2d5c0e25d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/MastersRage.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/MastersRage.lua
+ Script Author : John Adams
+ Script Date : 2013.08.10 02:08:09
+ Script Notes : Melee damage + debuff
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg, Debuff)
+
+ -- Damage component, if a Lore and Legend Race ONLY
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Debuff component
+ AddSkillBonus(Target, 3850377186, Debuff) -- deflection
+ AddSkillBonus(Target, 540022425, Debuff) -- parry
+ AddSkillBonus(Target, 609880714, Debuff) -- defense
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Provoke.lua b/server/Spells/Spells-Copy/Fighter/Provoke.lua
new file mode 100755
index 000000000..3801f086c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Provoke.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Provoke.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:04
+ Script Purpose :
+ :
+--]]
+
+-- Increases Threat to target by 580 - 709
+
+function cast(Caster, Target, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ AddHate(Caster, Target, math.random(MinTauntVal, MaxTauntVal))
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Recklessness.lua b/server/Spells/Spells-Copy/Fighter/Recklessness.lua
new file mode 100755
index 000000000..732b60fda
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Recklessness.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Recklessness.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:15
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Doubles the caster's potency
+-- Increases all damage done to caster by 50%
+-- Exiting this stance in combat sets the fighter to extremely low health. Does not occur in PVP combat.
+-- Grants Reckless to caster, halving all taunt values and caster cannot block incoming attacks
+-- Decreases Hate Gain of caster by 30.0%
+-- Increases Potency of caster by 50.0%
+-- Removes all threat positions from abilities that inflict damage.
+-- Must not be engaged in combat
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Rescue.lua b/server/Spells/Spells-Copy/Fighter/Rescue.lua
new file mode 100755
index 000000000..8521c1725
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Rescue.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Fighter/Rescue.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:05
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+ Say(Caster, "Threat Position Not Implemented.")
+AddHate(Caster, Target, Hate)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Shout.lua b/server/Spells/Spells-Copy/Fighter/Shout.lua
new file mode 100755
index 000000000..4f9824c10
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Shout.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Shout.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:00
+ Script Purpose :
+ :
+--]]
+
+-- Increases Threat to target encounter by 350 - 427
+function cast(Caster, Target, MinTauntVal, MaxTauntVal)
+if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ AddHate(Caster, Target, math.random(MinTauntVal, MaxTauntVal))
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/SubtleStrikes.lua b/server/Spells/Spells-Copy/Fighter/SubtleStrikes.lua
new file mode 100755
index 000000000..8161d6c25
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/SubtleStrikes.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/SubtleStrikes.lua
+ Script Author : neatz09
+ Script Date : 2020.02.24 10:02:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Hate Gain of caster by 150.0%
+-- Removes all threat positions from abilities that inflict damage.
+-- Suspends incoming threat transfers while active
+-- Cannot be modified except by direct means
+-- Doubles the caster's potency
+-- Increases all damage done to caster by 50%
+-- Suspends for 15 seconds if the caster is swung at with a melee attack. Does not suspend in PVP Combat.
+-- Decreases Hate Gain of caster by 30.0%
+-- Increases Potency of caster by 50.0%
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Fighter/Taunt.lua b/server/Spells/Spells-Copy/Fighter/Taunt.lua
new file mode 100755
index 000000000..eed0db492
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Taunt.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Fighter/Taunt.lua
+ Script Author : Dello
+ Script Date : 19/07/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ local spell_name = GetSpellName()
+ if spell_name ~= "Faith Strike I" and spell_name ~= "Faith Strike II" and spell_name ~= "Faith Strike III" then
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ local max_hp = GetMaxHP(Target)
+ MinVal = (max_hp * (MinVal / 100))
+ MaxVal = (max_hp * (MaxVal / 100))
+ end
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ SpellHeal("Heal", MinVal, MaxVal, 0, 2, 1)
+
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Anger.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Anger.lua
new file mode 100755
index 000000000..c2d2f63e7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Anger.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Anger.lua
+ Script Author : Dello
+ Script Date : 2014.07.11 03:07:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinTaunt, MaxTaunt)
+ -- Increases Threat to target by 51 - 62
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+
+ -- Interrupts target
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Bash.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Bash.lua
new file mode 100755
index 000000000..d5ad913f6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Bash.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Bash.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Knockdown on termination. Lasts for 2.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Inflicts 14 - 23 crushing damage on target
+
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ Say(Caster, "Knockdown not implemented")
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/BattleTactics.lua b/server/Spells/Spells-Copy/Fighter/Warrior/BattleTactics.lua
new file mode 100755
index 000000000..cd70f772b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/BattleTactics.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/BattleTactics.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:32
+ Script Purpose :
+ :
+--]]
+
+-- Increases Max Health of group members (AE) by 73.3
+
+function cast(Caster, Target, HP)
+AddSpellBonus(Target, 606, HP)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/AbandonedFury.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/AbandonedFury.lua
new file mode 100755
index 000000000..174577913
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/AbandonedFury.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/AbandonedFury.lua
+ Script Author : neatz09
+ Script Date : 2019.10.29 11:10:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Defense of caster by 1.8
+-- Increases Slashing, Piercing and Crushing of caster by 2.4
+-- The caster may not benefit from any stoneskin, death prevent, or 100% avoidance abilities while under this effect and for 5 seconds after the effect has been removed.
+-- Increases the amount of Potency gained by 20%
+-- On a melee hit this spell may cast Furious Assault on target of attack. Triggers about 2.0 times per minute.
+-- Inflicts 5 - 9 melee damage on target encounter
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Adrenaline.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Adrenaline.lua
new file mode 100755
index 000000000..766df6998
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Adrenaline.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Adrenaline.lua
+ Script Author : neatz09
+ Script Date : 2020.05.14 06:05:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Lost Adrenaline on termination. Lasts for 30.0 seconds.
+-- Drains power instantly and every 3 seconds.
+-- Cannot be modified except by direct means
+-- 50% of all damage received by the caster is instantly regenerated.
+-- Adrenaline can only be used while berserk!
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/AggressiveDefense.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/AggressiveDefense.lua
new file mode 100755
index 000000000..3c7cad38e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/AggressiveDefense.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/AggressiveDefense.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 12:10:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 879
+-- When damaged with a melee weapon this spell has a 20% chance to cast Provoking Counterattack on target's attacker.
+-- Increases Threat to target by 472
+-- Inflicts 71 - 118 slashing damage on target
+-- On a block this spell will cast Provoking Counterattack on target's victim.
+-- Increases Threat to target by 472
+-- Increases Mitigation of caster vs elemental and noxious damage by 879
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BerserkRage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BerserkRage.lua
new file mode 100755
index 000000000..5f9ef1137
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BerserkRage.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/BerserkRage.lua
+ Script Author : neatz09
+ Script Date : 2020.02.28 08:02:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell may cast Berserk on target. Lasts for 10.0 seconds. Triggers about 2.0 times per minute.
+-- Increases Haste of target by 8.6
+-- Increases DPS of target by 8.6
+-- When damaged this spell has a 30% chance to cast Berserk on target. Lasts for 10.0 seconds.
+-- Increases Haste of target by 8.6
+-- Increases DPS of target by 8.6
+-- On a kill this spell will cast Berserk on target. Lasts for 10.0 seconds.
+-- Increases Haste of target by 8.6
+-- Increases DPS of target by 8.6
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BerserkerOnslaught.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BerserkerOnslaught.lua
new file mode 100755
index 000000000..b3ea0c014
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BerserkerOnslaught.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/BerserkerOnslaught.lua
+ Script Author : Dello
+ Script Date : 12/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BloodRage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BloodRage.lua
new file mode 100755
index 000000000..4bd07bbd8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BloodRage.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/BloodRage.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 08:10:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged with a melee weapon this spell has a 33% chance to cast Adrenal Flow on caster.
+-- Heals caster for 1.3 - 1.9% of max health
+-- This effect cannot be critically applied.
+-- This effect can only trigger once every 0.2 seconds.
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodbath.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodbath.lua
new file mode 100755
index 000000000..ae32b0ad9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodbath.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Bloodbath.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 12:10:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Knockdown on termination. Lasts for 1.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Inflicts 17 - 51 melee damage on targets in Area of Effect
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodlust.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodlust.lua
new file mode 100755
index 000000000..05fd434bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodlust.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Bloodlust.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MaxVal)
+ AddSpellBonus(Target, 0, MaxVal)
+ AddSpellBonus(Target, 2, MaxVal)
+end
+
+function remove(Caster, Target, MaxVal)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodshower.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodshower.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Bloodshower.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BodyCheck.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BodyCheck.lua
new file mode 100755
index 000000000..e34c5cbe7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/BodyCheck.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/BodyCheck.lua
+ Script Author : Dello
+ Script Date : 11/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ -- Inflicts 6 - 10 crushing damage on target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 4000, 150)
+ AddControlEffect(Target, 4)
+ end
+
+ -- Resistibility increases against targets higher than level 31.
+
+end
+
+
+function remove(Caster, Target)
+ RemoveKnockback(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Chaos.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Chaos.lua
new file mode 100755
index 000000000..41d685323
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Chaos.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Chaos.lua
+ Script Author : Dello
+ Script Date : 12/06/2014
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, ResistAmt)
+
+ AddSpellBonus(Target, 200, ResistAmt)
+end
+
+-- Increases Mitigation of group members (AE) vs physical damage by 94
+
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/ControlledRage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/ControlledRage.lua
new file mode 100755
index 000000000..e38a63e17
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/ControlledRage.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/ControlledRage.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 05:10:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, OffDebuff, DefAmt)
+-- Increases caster's chance to block by 10.0%
+ AddSpellBonus(Target, 651, 10)
+
+-- Decreases Haste of caster by 14.0
+ AddSpellBonus(Target, 617, OffDebuff)
+
+-- Decreases Multi Attack of caster by 14.0
+ AddSpellBonus(Target, 641, OffDebuff)
+
+-- Increases Parry of caster by 10.8
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefAmt)
+
+-- Increases Defense of caster by 10.8
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Demolish.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Demolish.lua
new file mode 100755
index 000000000..ac7407456
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Demolish.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Demolish.lua
+ Script Author : Dello
+ Script Date : 12/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/DestructiveRage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/DestructiveRage.lua
new file mode 100755
index 000000000..d0652a5b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/DestructiveRage.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/DestructiveRage.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:15
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, AttackSpeed)
+ AddSpellBonus(Target, 617, AttackSpeed)
+ Say(Caster, "T10 version missing strikethrough AE")
+
+end
+
+function remove(Caster, Target, MaxVal)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Enrage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Enrage.lua
new file mode 100755
index 000000000..0468b5ec0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Enrage.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Enrage.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinTaunt, MaxTaunt)
+
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Frenzy.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Frenzy.lua
new file mode 100755
index 000000000..c4ec4a432
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Frenzy.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Frenzy.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 06:10:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinVal2, MaxVal2, MinVal3, MaxVal3)
+-- Inflicts 118 - 354 melee damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Inflicts 147 - 443 melee damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType, MinVal2, MaxVal2)
+end
+-- Inflicts 177 - 532 melee damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType, MinVal3, MaxVal3)
+end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Growl.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Growl.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Growl.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/HeadCrush.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/HeadCrush.lua
new file mode 100755
index 000000000..e260372bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/HeadCrush.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/HeadCrush.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 06:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 41 - 125 crushing damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+if LastSpellAttackHit() then
+-- Interrupts target
+Interrupt(Target)
+end
+if LastSpellAttackHit() then
+-- Decreases Focus of target by 6.9
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), SkillAmt)
+end
+end
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Insolence.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Insolence.lua
new file mode 100755
index 000000000..fb732ad29
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Insolence.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Insolence.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Insolent Gibe.
+-- Increases Threat to targets in Area of Effect by 1,298 - 1,814
+-- Applies Insolent Assault.
+-- Inflicts 596 - 895 melee damage on targets in Area of Effect
+-- When any damage is received this spell has a 50% chance to cast Insolent Gibe on target's attacker.
+-- Increases Threat to target encounter by 608 - 738
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Juggernaut.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Juggernaut.lua
new file mode 100755
index 000000000..b7c0345b5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Juggernaut.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Juggernaut.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Crit Bonus of caster by 15.3%
+-- Decreases Parry of caster by 2.2
+-- Decreases Mitigation of caster vs elemental, noxious and arcane damage by 3467
+-- All combat arts have their damage increased by 17%
+-- Decreases Defense of caster by 2.2
+-- Decreases Mitigation of caster vs physical damage by 3467
+-- This ability can only be used while berserk!
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/KneeBreak.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/KneeBreak.lua
new file mode 100755
index 000000000..c411b1ae5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/KneeBreak.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/KneeBreak.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Maul.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Maul.lua
new file mode 100755
index 000000000..0ef1d4bf0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Maul.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Maul.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 10:05:09
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 32 - 53 melee damage on target
+-- Decreases Slashing, Crushing and Piercing of target by 1.5
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+ SpellDamage(Target, DmgType, MinVal, Maxval)
+ if LastSpellAttackHit() then
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Mock.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Mock.lua
new file mode 100755
index 000000000..ef2c30e9d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Mock.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Mock.lua
+ Script Purpose : Generic Taunt script
+ Script Author : Dello
+ Script Date : 10/06/2014
+--]]
+
+function cast(Caster, Target, MinTaunt, MaxTaunt)
+ -- Increases Threat to target by 51 - 62
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+
+ -- Interrupts target
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Mutilate.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Mutilate.lua
new file mode 100755
index 000000000..aa262ccfa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Mutilate.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Mutilate.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 07:10:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 4 - 14 slashing damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, DotMin, DotMax, AttkSpeed)
+-- Inflicts 4 - 14 slashing damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+if LastSpellAttackHit() then
+ -- Inflicts 10 slashing damage on target instantly and every 4 seconds
+spellDamage(Target, DotType, DotMin, DotMax)
+-- Decreases Haste of target by 5.1
+AddSpellBonus(Target, 617, AttkSpeed)
+end
+end
+
+
+function tick(Caster, Target, DotType, DotMin, DotMax)
+spellDamage(Target, DotType, DotMin, DotMax)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
+
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Offend.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Offend.lua
new file mode 100755
index 000000000..c4fbb61dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Offend.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : taunt.lua
+ Script Purpose : Generic Taunt script
+ Script Author : John Adams
+ Script Date : 2008.12.07
+--]]
+
+function cast(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ -- Taunt component
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+function tick(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
+
+function remove(Caster, Target, TauntType, MinTauntVal, MaxTauntVal)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/OpenWounds.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/OpenWounds.lua
new file mode 100755
index 000000000..89bb8bb5d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/OpenWounds.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/OpenWounds.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:30
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Open Wounds.
+-- Inflicts 100 - 185 slashing damage on targets in Area of Effect
+-- Increases Attack Speed of caster by 30.6
+-- Caster has a 100.0% chance of having one of their weapons' autoattack affect multiple targets they are facing, who are within range of that weapon.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/RagingBlow.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/RagingBlow.lua
new file mode 100755
index 000000000..bf13e1d44
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/RagingBlow.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/RagingBlow.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, AddHate)
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+
+ AddHate(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Rampage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Rampage.lua
new file mode 100755
index 000000000..cf281eb3d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Rampage.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Rampage.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 07:05:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell will cast Rampaging Blow on target of attack.
+-- Inflicts 250 - 466 melee damage on targets in Area of Effect
+-- Grants a total of 10 triggers of the spell.
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/RecklessAide.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/RecklessAide.lua
new file mode 100755
index 000000000..0c53a060e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/RecklessAide.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/RecklessAide.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:32
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Adds 0.8% to base avoidance.
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Rupture.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Rupture.lua
new file mode 100755
index 000000000..48c43b26c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Rupture.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Rupture.lua
+ Script Author : John Adams
+ Script Date : 2013.11.23 09:11:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ -- Inflicts 3 - 10 melee damage on target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StanceGreaterFury.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StanceGreaterFury.lua
new file mode 100755
index 000000000..9182f49ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StanceGreaterFury.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/StanceGreaterFury.lua
+ Script Author : neatz09
+ Script Date : 2019.10.29 11:10:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Defense of caster by 10.8
+-- Increases Slashing, Piercing and Crushing of caster by 15.4
+-- On a melee hit this spell may cast Furious Assault on target of attack. Triggers about 2.0 times per minute.
+-- Inflicts 56 - 94 melee damage on target encounter
+-- Increases Crushing and Slashing of caster by 15.4
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StanceUnbridledFury.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StanceUnbridledFury.lua
new file mode 100755
index 000000000..42bdf0e57
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StanceUnbridledFury.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/StanceUnbridledFury.lua
+ Script Author : neatz09
+ Script Date : 2019.10.29 11:10:42
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Defense of caster by 15.0
+-- Increases Slashing, Piercing and Crushing of caster by 21.4
+-- On a melee hit this spell may cast Furious Assault on target of attack. Triggers about 2.0 times per minute.
+-- Inflicts 84 - 141 melee damage on target encounter
+-- Increases Crushing and Slashing of caster by 21.4
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StunningRoar.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StunningRoar.lua
new file mode 100755
index 000000000..95a022699
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/StunningRoar.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/StunningRoar.lua
+ Script Author : Dello
+ Script Date : 12/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/UnflinchingWill.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/UnflinchingWill.lua
new file mode 100755
index 000000000..af3caa5b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/UnflinchingWill.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/UnflinchingWill.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 05:10:36
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, OffSkillAmt, Agro, DefSkillAmt, MitAmt)
+ -- Reduces physical damage done to caster by 5%
+ AddSpellBonus(Target, 313, 5) -- Not sure on this value (313)
+
+ -- Decreases Crushing, Piercing and Slashing of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkillAmt)
+
+-- Increases Agression of caster by 0.8
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), Agro)
+
+-- Increases Defense and Parry of caster by 1.6
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefSkillAmt)
+
+ -- Increases Mitigation of caster vs Elemental damage by 138
+ AddSpellBonus(Target, 201, ResistAmt)
+
+ -- Increases the caster's effectiveness of worn armor vs physical damage by 15%
+ AddSpellBonus(Target, 678, 15)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/VisionofMadness.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/VisionofMadness.lua
new file mode 100755
index 000000000..7bfe3f31a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/VisionofMadness.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/VisionofMadness.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Madness on caster. Lasts for 5.0 seconds.
+-- Heals caster for 2.7% of max health instantly and every second
+-- This effect cannot be critically applied.
+-- If target is not berserk
+-- Heals caster for 13.5% of max health instantly and every second
+-- This effect cannot be critically applied.
+-- If target is berserk
+-- The healing of this spell cannot be modified except by direct means
+-- Grants a total of 1 trigger of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WallofHatred.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WallofHatred.lua
new file mode 100755
index 000000000..5910bf743
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WallofHatred.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/WallofHatred.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell may cast Enrage on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Increases Crit Chance of caster by 15.0
+-- Inflicts 562 - 842 heat damage on target encounter
+-- Increases Multi Attack Chance of caster by 10.0
+-- Cannot be modified except by direct means
+-- Adds a hate position increase to the initial taunt portion of Insolence.
+-- 25% of the damage done to the berserker will be added back to the attacker as additional hate.
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WallofRage.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WallofRage.lua
new file mode 100755
index 000000000..2d3ce593b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WallofRage.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/WallofRage.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 07:10:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Haste of caster by 11.3
+-- Increases Mitigation of caster vs physical damage by 133
+-- On a melee hit this spell may cast Cripple on target of attack. Lasts for 10.0 seconds. Triggers about 5.0 times per minute.
+-- Slows targets in Area of Effect by 29.3%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WarCry.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WarCry.lua
new file mode 100755
index 000000000..44be5e1df
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WarCry.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/WarCry.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 01:02:41
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell has a 5% chance to cast Berserk on target. Lasts for 10.0 seconds.
+-- Increases Haste of target by 10.2
+-- Increases DPS of target by 10.2
+-- On any combat or spell hit this spell may cast Berserk on target. Lasts for 10.0 seconds. Triggers about 3.0 times per minute.
+-- Increases Haste of target by 10.2
+-- Increases DPS of target by 10.2
+-- On a kill this spell has a 50% chance to cast Berserk on target. Lasts for 10.0 seconds.
+-- Increases Haste of target by 10.2
+-- Increases DPS of target by 10.2
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WeaponCounter.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WeaponCounter.lua
new file mode 100755
index 000000000..1abded5ac
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/WeaponCounter.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/WeaponCounter.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 05:10:46
+ Script Purpose :
+ :
+--]]
+
+-- When damaged with a melee weapon this spell will cast Counterattack on target's attacker.
+-- Inflicts 43 - 72 melee damage on target
+-- Grants a total of 3 triggers of the spell.
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Triggers)
+ AddProc(Target, 15, 100)
+ SetSpellTriggerCount(Triggers, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal, Triggers)
+
+if Type == 15 then
+ -- Inflicts 79 - 133 piercing damage on target
+ ProcDamage(Caster, Target, "Counterattack", DmgType, MinVal, MaxVal)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Whirl.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Whirl.lua
new file mode 100755
index 000000000..ee9f59fcf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Whirl.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : dd.lua
+ Script Purpose : Generic direct damage script
+ Script Author : John Adams
+ Script Date : 2010.01.14
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Whirlwind.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Whirlwind.lua
new file mode 100755
index 000000000..7ca0e9781
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Berserker/Whirlwind.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Berserker/Whirlwind.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces physical damage done to caster by 5%
+-- Caster has a 100.0% chance of having one of their weapons' autoattack affect multiple targets they are facing, who are within range of that weapon.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Concussion.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Concussion.lua
new file mode 100755
index 000000000..69cd61dd0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Concussion.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Concussion.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, PwrMin, PwrMax)
+-- Inflicts 23 - 39 crushing damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases power of target by 23 - 38
+SpellHeal("Power", PwrMin, PwrMax)
+end
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/ForcedSwing.lua b/server/Spells/Spells-Copy/Fighter/Warrior/ForcedSwing.lua
new file mode 100755
index 000000000..bf2da8e48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/ForcedSwing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/ForcedSwing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:30
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 22 - 38 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Armored.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Armored.lua
new file mode 100755
index 000000000..5e08004da
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Armored.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Armored
+ Script Purpose : Guardian Defensive Stance script
+ Script Author : Zcoretri - rewriten by neatz09 10-29-19
+ Script Date : 2010.01.26
+ Script Note :
+--]]
+
+function cast(Caster, Target, Physical, Avoidance, SkillAmt, Aggro, Defense, MitNox, MitElem, Armor)
+ Say(Caster, "physical reduction looks wrong")
+
+ AddSpellBonus(Caster, 200, Physical) -- physical
+ AddSpellBonus(Caster, 696, Avoidance) -- avoidance
+ AddSpellBonus(Caster, 202, MitNox) -- mitigation against noxious
+ AddSpellBonus(Caster, 203, MitNox) -- mitigation against arcane
+ AddSpellBonus(Caster, 201, MitElem) -- mitigation against elemental
+
+AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+AddSkillBonus(Target, GetSkillIDByName("Agression"), Aggro)
+AddSkillBonus(Target, GetSkillIDByName("Defense"), Defense)
+AddSkillBonus(Target, GetSkillIDByName("Parry"), Defense)
+
+
+-- Increases the caster's effectiveness of worn armor vs physical damage by 25%
+ AddSpellBonus(Target, 678, Armor)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Caster)
+ RemoveSpellBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Assault.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Assault.lua
new file mode 100755
index 000000000..a2cfe37bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Assault.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Assault.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 07:11:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Bash.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Bash.lua
new file mode 100755
index 000000000..6efea9ab2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Bash.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Bash.lua
+ Script Author : Dello
+ Script Date : 13/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ -- Inflicts 6 - 10 crushing damage on target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ Knockback(Caster, Target, 4000)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/BattleCry.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/BattleCry.lua
new file mode 100755
index 000000000..b97297a34
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/BattleCry.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/BattleCry.lua
+ Script Author : John Adams
+ Script Date : 2013.12.08 03:12:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+
+ -- Increases Mitigation of group members (AE) vs physical damage by 100
+ AddSpellBonus(Target, 200, BonusAmt)
+
+end
+
+function remove(Caster, Target)
+
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/BattleTactics.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/BattleTactics.lua
new file mode 100755
index 000000000..e8562d016
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/BattleTactics.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/BattleTactics.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MaxVal)
+ -- Increases max Stamina of the group.
+ AddSpellBonus(Target, 1, MaxVal)
+end
+
+function remove(Caster, Target, MaxVal)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/CallofShielding.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/CallofShielding.lua
new file mode 100755
index 000000000..aaa63056a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/CallofShielding.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/CallofShielding.lua
+ Script Author : Dello
+ Script Date : 09/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MaxVal, DefSkills)
+
+ AddSpellBonus(Target, 1, MaxVal)
+
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/CalltoArms.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/CalltoArms.lua
new file mode 100755
index 000000000..927913f83
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/CalltoArms.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/CalltoArms.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 08:11:16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt)
+
+ -- Increases Slashing, Ranged, Crushing and Piercing of group members (AE) by 1.9
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+
+end
+
+function remove(Caster, Target, SkillAmt)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Concussion.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Concussion.lua
new file mode 100755
index 000000000..26411204d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Concussion.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Concussion.lua
+ Script Author : Dello
+ Script Date : 2013.08.11 02:08:51
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+
+ AddSkillBonus(Target, GetSkillIDByName("Ordination"), SkillAmt)
+
+ AddSkillBonus(Target, GetSkillIDByName("Ministration"), SkillAmt)
+
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+
+ AddSkillBonus(Target, GetSkillIDByName("Subjugation"), SkillAmt)
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Decimate.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Decimate.lua
new file mode 100755
index 000000000..c3f561691
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Decimate.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Decimate.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DefSkills)
+ Say(Caster, "cannot be parry etc... not implemented.")
+
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefSkills)
+
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+
+ AddSkillBonus(Target, GetSkillIDByName("Deflection"), DefSkills)
+
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/FocusedOffensive.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/FocusedOffensive.lua
new file mode 100755
index 000000000..9babc8921
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/FocusedOffensive.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/FocusedOffensive.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 08:05:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants a 50% chance to instantly recast any single target offensive Combat Art the guardian uses.
+-- Improves base auto-attack multiplier of caster by 0.15. Does not apply to spell weapons.
+-- Disables the caster's ability to AE Auto Attack
+-- Converts the caster's AE Auto Attack Chance to Flurry
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/ForwardCharge.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/ForwardCharge.lua
new file mode 100755
index 000000000..f89a62cfc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/ForwardCharge.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/ForwardCharge.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 06:11:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stats, DefSkills, SkillAmt)
+ AddSpellBonus(Target, 0, Stats)
+
+ -- Increases Slashing, Piercing and Crushing of caster.
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+
+ -- Decreases Defense of caster by 1.8
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/GuardianSphere.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/GuardianSphere.lua
new file mode 100755
index 000000000..b8548e8a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/GuardianSphere.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/GuardianSphere.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 09:05:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell has a 15% chance to cast Stoneskin on target. Lasts for 10.0 seconds.
+-- Will absorb all damage. This spell will absorb a total of 1 attack.
+-- When damaged this spell has a 30% chance to cast Stoneskin on target. Lasts for 10.0 seconds.
+-- Will absorb all damage. This spell will absorb a total of 1 attack.
+-- Will absorb all damage. This spell will absorb a total of 1 attack.
+-- If not fighter
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/GutKick.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/GutKick.lua
new file mode 100755
index 000000000..014de8e65
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/GutKick.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/GutKick.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 07:11:41
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ -- Inflicts 13 - 22 crushing damage on target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+ -- Interrupts target
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/HoldtheLine.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/HoldtheLine.lua
new file mode 100755
index 000000000..a8359dc3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/HoldtheLine.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/HoldtheLine.lua
+ Script Author : neatz09
+ Script Date : 2020.02.28 09:02:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Type, Hate)
+-- When damaged this spell has a 50% chance to cast Holding the Line on target's attacker.
+ AddProc(Target, 1, 50)
+-- On a block this spell will cast Holding the Line on target's victim.
+ AddProc(Target, 7, 100)
+end
+
+function proc(Caster, Target, Type, Hate)
+ if Type == 1 then
+ ProcHate(Caster, Target, Hate, "Holding the Line")
+ end
+
+ if Type == 7 then
+ ProcHate(Caster, Target, Hate, "Holding the Line")
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/HunkerDown.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/HunkerDown.lua
new file mode 100755
index 000000000..f10c7655d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/HunkerDown.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/HunkerDown.lua
+ Script Author : John Adams
+ Script Date : 2013.12.08 03:12:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MitAmt)
+
+ -- Decreases Attack Speed of caster by 11.3
+ AddSpellBonus(Caster, 617, -11.3)
+
+ -- Increases Mitigation of caster vs physical damage by 133
+ AddSpellBonus(Caster, 200, MitAmt)
+
+ AddProc(Target, 1, 25)
+end
+
+function proc(Caster, Target, Type)
+ -- On a melee hit this spell may cast Pin on target of attack. Lasts for 10.0 seconds. Triggers about 5.0 times per minute.
+ -- Roots target
+ AddSpellBonus(Target, 609, 0) -- set speed to 0, is rooting? :D
+
+ -- 5% chance to dispel when target takes damage
+ -- 5% chance to dispel when target receives hostile action
+ -- Epic targets gain an immunity to Root and Will not multi-attack if the primary attack was avoided. effects of 30.0 seconds and duration is reduced to 3.3 seconds.
+
+end
+
+function remove(Caster, Target, MitAmt)
+ RemoveSpellBonus(Caster)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/IronWill.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/IronWill.lua
new file mode 100755
index 000000000..26acd66b0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/IronWill.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/IronWill.lua
+ Script Author : neatz09
+ Script Date : 2019.11.14 08:11:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases STA of caster by 29.6
+-- Reduces slow effects on caster by 10.3%
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 777
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/LayWaste.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/LayWaste.lua
new file mode 100755
index 000000000..41149e523
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/LayWaste.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/LayWaste.lua
+ Script Author : neatz09
+ Script Date : 2019.10.29 12:10:15
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 810 - 1350 melee damage on target
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Moderate.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Moderate.lua
new file mode 100755
index 000000000..69e5306da
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Moderate.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Moderate.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+-- Decreases Hate Gain of target by 6.0%
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/NeverSurrender.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/NeverSurrender.lua
new file mode 100755
index 000000000..be16ab983
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/NeverSurrender.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/NeverSurrender.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants target a 13% chance of making an additional attempt to avoid being hit by a melee attack using the caster's avoidance.
+-- Increases Parry of caster by 2.8
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Overpower.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Overpower.lua
new file mode 100755
index 000000000..c2d9f665b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Overpower.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Overpower.lua
+ Script Author : John Adams
+ Script Date : 2013.11.17 18:00:00
+ Script Purpose : Direct Damage script
+ :
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Plant.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Plant.lua
new file mode 100755
index 000000000..f056cff5d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Plant.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Plant.lua
+ Script Author : neatz09
+ Script Date : 2019.11.14 08:11:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Forces targets in Area of Effect to change their selected target to caster.
+-- Increases Threat to targets in Area of Effect by 44
+-- Prevents targets in Area of Effect from changing targets
+function cast(Caster, Target, AddHate)
+ AddHate(Caster, Target, AddHate, 1)
+ Say(Caster, "Missing forced aggro")
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/PreciseStrike.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/PreciseStrike.lua
new file mode 100755
index 000000000..fc305687e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/PreciseStrike.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/PreciseStrike.lua
+ Script Author : Dello
+ Script Date : 09/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Provoke.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Provoke.lua
new file mode 100755
index 000000000..2a88ab712
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Provoke.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Provoke.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 12:11:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinTaunt, MaxTaunt)
+ -- Increases Threat to target by 51 - 62
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+
+ -- Interrupts target
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Recapture.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Recapture.lua
new file mode 100755
index 000000000..ac9b1f910
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Recapture.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Recapture.lua
+ Script Author : neatz09
+ Script Date : 2020.03.08 04:03:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces the hate position of all non-fighter group members on target encounter.
+-- Increases the hate position of all other fighter allies that are hated by every enemy in target encounter.
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Reinforcement.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Reinforcement.lua
new file mode 100755
index 000000000..a6a232c9e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Reinforcement.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Reinforcement.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 09:05:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell will cast Reinforcement on target of attack.
+-- Increases threat priority of target by 1 position
+-- Increases Threat to target by 1,044
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Retaliate.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Retaliate.lua
new file mode 100755
index 000000000..f63f58ff3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Retaliate.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Retaliate.lua
+ Script Author : Dello
+ Script Date : 10/6/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 3)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Ruin.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Ruin.lua
new file mode 100755
index 000000000..89466a8cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Ruin.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Ruin.lua
+ Script Author : John Adams
+ Script Date : 2013.12.08 02:12:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMin, DoTMax, SkillAmt)
+ --Inflicts 23 - 39 slashing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ --Decreases Piercing of target by 1.5
+ --Decreases Slashing and Crushing of target by 1.5
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMin, DoTMax, SkillAmt)
+ --Inflicts 10 - 12 slashing damage on target every 5 seconds
+ if DoTMax ~= nil and DoTMin < DoTMax then
+ SpellDamage(Target, DoTType, math.random(DoTMin, DoTMax))
+ else
+ SpellDamage(Target, DoTType, DoTMin)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Sentinel.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Sentinel.lua
new file mode 100755
index 000000000..c68be43ce
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Sentinel.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Sentinel.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell has a 5% chance to cast Stoneskin on target. Lasts for 10.0 seconds.
+-- Will absorb physical damage. This spell will absorb a total of 1 attack.
+-- If profession other than Fighter
+-- If profession other than Scout
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/SentryWatch.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/SentryWatch.lua
new file mode 100755
index 000000000..4127f8341
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/SentryWatch.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/SentryWatch.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 09:05:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Sentry Watch Guard on target. Lasts for 15.0 seconds.
+-- Reduces all damage done to target by 45% This spell will absorb a total of 1 attack.
+-- Heals target for 3.0% of max health
+-- This effect cannot be critically applied.
+-- When damaged this spell will cast Reinforcement on target's attacker.
+-- Increases threat priority of target by 1 position
+-- Increases Threat to target by 1,126
+-- The healing of this spell cannot be modified except by direct means
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Sever.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Sever.lua
new file mode 100755
index 000000000..7a4150fdd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Sever.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Sever.lua
+ Script Author : John Adams
+ Script Date : 2014.01.11 05:01:23
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, DoTVal, DmgType, MinVal, MaxVal, AttackSpeed)
+
+ -- Inflicts 17 slashing damage on target instantly and every 4 seconds
+ SpellDamage(Target, DoTType, DoTVal)
+
+ -- Decreases Damage Per Second of target by 6.0
+ AddSpellBonus(Target, 617, AttackSpeed)
+
+ -- Inflicts 12 - 21 slashing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, DoTVal, DmgType, MinVal, MaxVal, AttackSpeed)
+ SpellDamage(Target, DoTType, DoTVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/ShieldBash.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/ShieldBash.lua
new file mode 100755
index 000000000..3cd39f854
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/ShieldBash.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : ShieldBash.lua
+ Script Purpose : Generic damage + stun script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDmg, MaxDmg)
+ -- DD component
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DDType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DDType, MinDmg)
+ end
+end
+
+function remove(Caster, Target, DDType, MinDmg, MaxDmg)
+ --Apply Knockdown
+ --CastSpell(Target, 5000, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Shout.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Shout.lua
new file mode 100755
index 000000000..a81885e84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Shout.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Shout.lua
+ Script Author : Dello
+ Script Date : 13/06/2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinTaunt, MaxTaunt)
+ -- Increases Threat to target by 51 - 62
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+
+ -- Interrupts target
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Slam.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Slam.lua
new file mode 100755
index 000000000..01de51560
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/Slam.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/Slam.lua
+ Script Author : Dello
+ Script Date : 09/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TauntingAssault.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TauntingAssault.lua
new file mode 100755
index 000000000..185eea743
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TauntingAssault.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/TauntingAssault.lua
+ Script Author : Dello
+ Script Date : 10/06/2014
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function cast(Caster, Target)
+ AddHate(Caster, Target)
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TauntingBlow.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TauntingBlow.lua
new file mode 100755
index 000000000..383a14e57
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TauntingBlow.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/TauntingBlow.lua
+ Script Author : John Adams
+ Script Date : 2013.11.22 03:11:23
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinTauntVal, MaxTauntVal)
+
+ -- Inflicts 3 - 6 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Increases Threat to target by 47 - 57
+ if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ AddHate(Caster, Target, math.random(MinTauntVal, MaxTauntVal))
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TowerofStone.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TowerofStone.lua
new file mode 100755
index 000000000..92e579e95
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/TowerofStone.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/TowerofStone.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 09:05:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Stoneskin Reaction. Lasts for 1.0 seconds.
+-- Reduces all damage done to target by 100%
+-- Triggers when a Stoneskin is consumed. Suspends all other stoneskins that match the damage types of this effect.
+-- Will absorb all damage when the amount is greater than 10% of the target's maximum health. This spell will absorb a total of 1 attack.
+-- If towershield equipped in Secondary
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/WrathofVelArek.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/WrathofVelArek.lua
new file mode 100755
index 000000000..03e401a40
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Guardian/WrathofVelArek.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Guardian/WrathofVelArek.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:29
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell may cast Shielding of Vel`Arek on caster. Lasts for 10.0 seconds. Triggers about 1.8 times per minute.
+-- Makes caster immune to Fear effects
+-- Makes caster immune to Root effects
+-- Makes caster immune to Stun effects
+-- Makes caster immune to Daze effects
+-- Makes caster immune to Stifle effects
+-- Cannot be modified except by direct means
+-- On a melee hit this spell may cast Wrath of the Warrior on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Inflicts 635 - 953 slashing damage on target
+-- Reduces physical damage done to caster by 5%
+-- Cannot be modified except by direct means
+-- Caster is immune to riposte damage.
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/HunkerDown.lua b/server/Spells/Spells-Copy/Fighter/Warrior/HunkerDown.lua
new file mode 100755
index 000000000..6fe214366
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/HunkerDown.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/HunkerDown.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Haste of caster by 11.3
+-- Slows caster by 32.6%
+-- Increases Mitigation of caster vs physical damage by 133
+-- On a melee hit this spell may cast Cripple on target of attack. Lasts for 10.0 seconds. Triggers about 5.0 times per minute.
+-- Slows targets in Area of Effect by 29.3%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Kneebreak.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Kneebreak.lua
new file mode 100755
index 000000000..f2f60b801
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Kneebreak.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Kneebreak.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:03
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 26 - 43 crushing damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/Mangle.lua b/server/Spells/Spells-Copy/Fighter/Warrior/Mangle.lua
new file mode 100755
index 000000000..6a7fd7b96
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/Mangle.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/Mangle.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+-- Inflicts 21 - 35 slashing damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases Slashing, Crushing and Piercing of target by 1.5
+if LastSpellAttackHit() then
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+end
+ end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/RallyingCry.lua b/server/Spells/Spells-Copy/Fighter/Warrior/RallyingCry.lua
new file mode 100755
index 000000000..ece74ad26
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/RallyingCry.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/RallyingCry.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:02
+ Script Purpose :
+ :
+--]]
+
+-- Increases Mitigation of group members (AE) vs physical damage by 75
+
+function cast(Caster, Target, Mit)
+ AddSpellBonus(Target, 200, Mit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/StanceSoldiersStance.lua b/server/Spells/Spells-Copy/Fighter/Warrior/StanceSoldiersStance.lua
new file mode 100755
index 000000000..2275f1795
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/StanceSoldiersStance.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/StanceSoldiersStance.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+
+function cast(Caster, Target, Debuff, DefSkill, Mit)
+-- Decreases Slashing, Piercing and Crushing of caster by 4.8
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), Debuff)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), Debuff)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), Debuff)
+-- Increases Defense and Parry of caster by 4.3
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefSkill)
+-- Increases the caster's effectiveness of worn armor vs physical damage by 10%
+ AddSpellBonus(Target, 678, Mit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/TauntingBlow.lua b/server/Spells/Spells-Copy/Fighter/Warrior/TauntingBlow.lua
new file mode 100755
index 000000000..3358b2efe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/TauntingBlow.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/TauntingBlow.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh, MinTauntVal, MaxTauntVal)
+-- Inflicts 7 - 11 melee damage on target
+SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+-- Increases Threat to target by 435 - 531
+
+if MaxTauntVal ~= nil and MinTauntVal < MaxTauntVal then
+ hateAmount = math.random(MinTauntVal, MaxTauntVal)
+ AddHate(Caster, Target, hateAmount)
+ else
+ AddHate(Caster, Target, MinTauntVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Warrior/UnyieldingWill.lua b/server/Spells/Spells-Copy/Fighter/Warrior/UnyieldingWill.lua
new file mode 100755
index 000000000..bd86165c6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Warrior/UnyieldingWill.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Fighter/Warrior/UnyieldingWill.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Death's Door on caster. Lasts for 36.0 seconds.
+-- Applies Exploding Heart on termination.
+-- Heals caster for 56.2% of max health
+-- This effect cannot be critically applied.
+-- The healing of this spell cannot be modified except by direct means
+-- Grants a total of 1 trigger of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/Whirl.lua b/server/Spells/Spells-Copy/Fighter/Whirl.lua
new file mode 100755
index 000000000..b0604bd6c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/Whirl.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Fighter/Whirl.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:29
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 14 - 24 melee damage on targets in Area of Effect
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Fighter/WildSwing.lua b/server/Spells/Spells-Copy/Fighter/WildSwing.lua
new file mode 100755
index 000000000..25ee4c193
--- /dev/null
+++ b/server/Spells/Spells-Copy/Fighter/WildSwing.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Fighter/WildSwing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 5 - 8 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ Say(Caster, "Facing Target Not Implemented.")
+
+end
+
+-- If facing target
diff --git a/server/Spells/Spells-Copy/FurPluck.lua b/server/Spells/Spells-Copy/FurPluck.lua
new file mode 100755
index 000000000..a7b4090a5
--- /dev/null
+++ b/server/Spells/Spells-Copy/FurPluck.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/FurPluck.lua
+ Script Author : Jabantiz
+ Script Date : 2018.06.22 08:06:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/KineticistsIntelligence.lua b/server/Spells/Spells-Copy/KineticistsIntelligence.lua
new file mode 100755
index 000000000..5ff0882b4
--- /dev/null
+++ b/server/Spells/Spells-Copy/KineticistsIntelligence.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/KineticistsIntelligence.lua
+ Script Author : Ememjr
+ Script Date : 2019.04.21 06:04:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases INT and STA of caster by 4.0
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 1, BonusAmt)
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Mage/AbsorbMagic.lua b/server/Spells/Spells-Copy/Mage/AbsorbMagic.lua
new file mode 100755
index 000000000..6d32ad096
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/AbsorbMagic.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/AbsorbMagic.lua
+ Script Author : neatz09
+ Script Date : 2020.05.17 09:05:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 12 levels of arcane beneficial effects on target
+-- Decreases power of target by 9
+-- Increases power of caster by 8
diff --git a/server/Spells/Spells-Copy/Mage/ArcaneAugur.lua b/server/Spells/Spells-Copy/Mage/ArcaneAugur.lua
new file mode 100755
index 000000000..3a061e36a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/ArcaneAugur.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/ArcaneAugur.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:56
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster, Target)
+ -- Must be engaged in combat
+ return IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+ -- Begins a Heroic Opportunity
+StartHeroicOpportunity(Caster, 21)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/BindSight.lua b/server/Spells/Spells-Copy/Mage/BindSight.lua
new file mode 100755
index 000000000..23a4d73c4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/BindSight.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/BindSight.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 05:02:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Binds the caster's sight to the target
+-- Stuns caster
+-- This effect cancels during combat
diff --git a/server/Spells/Spells-Copy/Mage/CallServant.lua b/server/Spells/Spells-Copy/Mage/CallServant.lua
new file mode 100755
index 000000000..feb353002
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/CallServant.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/CallServant.lua
+ Script Author : neatz09
+ Script Date : 2020.05.17 10:05:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Teleports target to caster
diff --git a/server/Spells/Spells-Copy/Mage/CureMagic.lua b/server/Spells/Spells-Copy/Mage/CureMagic.lua
new file mode 100755
index 000000000..e4856c103
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/CureMagic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/CureMagic.lua
+ Script Author : theFoof
+ Script Date : 2014.1.16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Dispels X levels of any hostile effects on target
+ local level = ((GetLevel(Caster) * 1.08) + 1)
+ CureByType(1, 1, "", level)
+ CureByType(1, 2, "", level)
+ CureByType(1, 3, "", level)
+ CureByType(1, 4, "", level)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Blink.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Blink.lua
new file mode 100755
index 000000000..d8f02062b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Blink.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Blink.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:30
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Blink on termination.
+-- Teleports target to a random location within 10 meters.
+-- Decreases Threat to targets in Area of Effect by 236 - 289
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Amnesia.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Amnesia.lua
new file mode 100755
index 000000000..0e29093a1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Amnesia.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Amnesia.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 06:10:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Stuns target
+-- Wipes target's memory of any aggression
+-- Epic targets gain an immunity to Stun effects of 4.5 seconds and duration is reduced to 0.5 seconds.
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Asylum.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Asylum.lua
new file mode 100755
index 000000000..3bea04f8d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Asylum.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Asylum.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 07:03:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgMin, DmgMax, DoTType, MinVal, MaxVal, BonusAmt)
+ -- Inflicts 41 - 51 mental damage on target instantly and every 6 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+
+ -- Decreases Mitigation of target vs arcane damage by 141
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function tick(Caster, Target, DmgType, DmgMin, DmgMax, DoTType, MinVal, MaxVal, BonusAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function remove(Caster, Target, DmgType, DmgMin, DmgMax, DoTType, MinVal, MaxVal, BonusAmt)
+ RemoveSpellBonus(Target)
+
+ -- Applies Forceful Headache on termination.
+ -- Inflicts 103 - 172 mental damage on target
+ -- If over 50% power
+ if (GetCurrentHP(Target) / GetMaxHP(Target)) >= 0.5 then
+ -- Used ProcDamage() so I could override the spell name
+ ProcDamage(Caster, Target, "Forceful Headache", DmgType, DmgMin, DmgMax)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Brainshock.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Brainshock.lua
new file mode 100755
index 000000000..b5134bba0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Brainshock.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Brainshock.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 06:03:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, PowerDmg, PowerHeal)
+ -- Inflicts 14 - 17 mental damage on target instantly and every 6 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+
+ -- Decreases power of target by 2 instantly and every 6 seconds
+ ModifyPower(Target, PowerDmg)
+
+ -- Increases power of caster by 5
+ SpellHeal("Power", PowerHeal, PowerHeal, Caster)
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal, PowerDmg, PowerHeal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+
+ ModifyPower(Target, PowerDmg)
+ SpellHeal("Power", PowerHeal, PowerHeal, Caster)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Breeze.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Breeze.lua
new file mode 100755
index 000000000..3909a6ed3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Breeze.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Breeze.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 08:03:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Increases In-Combat Power Regeneration of group members (AE) by 5.6
+ AddSpellBonus(Target, 605, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/CannibalizeThoughts.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/CannibalizeThoughts.lua
new file mode 100755
index 000000000..6238bfe6a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/CannibalizeThoughts.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/CannibalizeThoughts.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 05:10:15
+ Script Purpose :
+ :
+--]]
+
+-- Increases power of group members (AE) by 11 instantly and every 6 seconds
+-- Decreases INT of target by 44.3
+
+function cast(Caster, Target, Int, GrpPwr)
+ AddSpellBonus(Target, 4, Int)
+
+local group = GetGroup(Caster)
+if group == nil then
+ SpellHeal("Power", GrpPwr, 0, Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Power", GrpPwr, 0, v)
+ end
+end
+end
+
+
+function tick(Caster, Target, Int, GrpPwr)
+local group = GetGroup(Caster)
+if group == nil then
+ SpellHeal("Power", GrpPwr, 0, Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Power", GrpPwr, 0, v)
+ end
+end
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/CerebralShock.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/CerebralShock.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/CerebralShock.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Channel.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Channel.lua
new file mode 100755
index 000000000..69c56a201
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Channel.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Channel.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 10:10:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Distributes the group members' total combined power evenly among all the members
+--need to loop the group memeber and add up all the power then divide by # of group members and loop over them again and set them
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Charm.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Charm.lua
new file mode 100755
index 000000000..664971226
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Charm.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Charm.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 05:03:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Charms target
+-- Increases Out-of-Combat Power Regeneration of target by 2.0
+-- Increases Out-of-Combat Health Regeneration of target by 4.0
+-- Applies Disorientation on termination. Lasts for 3.0 seconds.
+-- Mesmerizes target
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Mesmerize effects of 9.0 seconds and duration is reduced to 1.0 second.
+-- Applies Warning on termination. Lasts for 0.5 seconds.
+-- Grants Sonic Vision to caster
+-- Certain enemies cannot be charmed
+-- Only affects targets level 16 and below
+-- Does not affect Epic targets
+
+function cast(Caster, Target, PowerRegen, HealthRegen, MaxLevel)
+ if not IsEpic(Target) and (MaxLevel == 0 or GetLevel(Target) <= MaxLevel) then
+ Charm(Caster, Target)
+ AddSpellBonus(Target, 601, PowerRegen)
+ AddSpellBonus(Target, 600, HealthRegen)
+ end
+end
+
+function remove(Caster, Target)
+ local pet = GetCharmedPet(Caster)
+ if pet ~= nil then
+ RemoveSpellBonus(pet)
+ DismissPet(pet)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/DestructiveMind.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/DestructiveMind.lua
new file mode 100755
index 000000000..6e5166aa1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/DestructiveMind.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/DestructiveMind.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 06:10:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- On a damage spell hit this spell will cast Despotic Mind on target of spell.
+-- Inflicts 476 - 582 mental damage on target
+-- Grants a total of 3 triggers of the spell.
+ SetSpellTriggerCount(3, 1)
+ AddProc(Target, 5, 100)
+end
+
+function proc(Caster, Target, ProcType, DDType, DDLow, DDHigh)
+ ProcDamage(Caster, Target, "Despotic Mind", DDType, DDLow, DDHigh)
+ RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/EgoShock.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/EgoShock.lua
new file mode 100755
index 000000000..059904c60
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/EgoShock.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/EgoShock.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 06:03:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 65 - 79 mental damage on target encounter
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Dazes target encounter
+ AddControlEffect(Target, 3)
+
+ -- Epic targets gain an immunity to Daze effects of 12.0 seconds and duration is reduced to 1.3 seconds.
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/EnragingDemeanor.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/EnragingDemeanor.lua
new file mode 100755
index 000000000..70e37c9ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/EnragingDemeanor.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/EnragingDemeanor.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 06:10:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Xfer, Hate)
+-- Causes 3% Threat to transfer to target when in combat
+AddThreatTransfer(Caster, Target, Xfer)
+-- Increases Hate Gain of target by 7.9%
+ AddSpellBonus(Target, 624, Hate)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveThreatTransfer(Caster)
+ RemoveSpellBonus(Target)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ForcedHesitation.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ForcedHesitation.lua
new file mode 100755
index 000000000..3db740f5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ForcedHesitation.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/ForcedHesitation.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 08:03:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+
+ -- Applies Blind. Lasts for 4.0 seconds.
+ -- Dazes target
+ -- Blurs vision of target
+ -- Dispelled when target takes damage
+ -- Epic targets gain an immunity to Daze effects of 12.0 seconds and duration is reduced to 1.3 seconds.
+
+ -- Roots target
+ AddControlEffect(Target, 5)
+
+ -- 5% chance to dispel when target takes damage
+ AddProc(Target, 2, 5.0)
+
+ -- Epic targets gain an immunity to Root and Will not multi-attack if the primary attack was avoided. effects of 54.0 seconds and duration is reduced to 6.0 seconds.
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 5)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Hemorrhage.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Hemorrhage.lua
new file mode 100755
index 000000000..c25c1c195
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Hemorrhage.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Hemorrhage.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 05:11:54
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+
+ -- Inflicts 9 - 12 mental damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Interrupts target
+ Interrupt(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/HemorrhageX.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/HemorrhageX.lua
new file mode 100755
index 000000000..5b5ae6e40
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/HemorrhageX.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/HemorrhageX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Interrupts target
+-- Inflicts 476 - 644 mental damage on target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Hostage.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Hostage.lua
new file mode 100755
index 000000000..cfae0b61a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Hostage.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Hostage.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 05:10:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- When damaged with a melee weapon this spell will cast Convulsions on target.
+-- Inflicts 88 - 107 mental damage on target
+-- Grants a total of 3 triggers of the spell.
+
+ SetSpellTriggerCount(3, 1)
+ AddProc(Target, 16, 100)
+end
+
+function proc(Caster, Target, ProcType, DDType, DDLow, DDHigh)
+ ProcDamage(Caster, Target, "Convulsions", DDType, DDLow, DDHigh)
+ RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/LashingGaze.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/LashingGaze.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/LashingGaze.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MedusaGaze.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MedusaGaze.lua
new file mode 100755
index 000000000..9c0c44dc3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MedusaGaze.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/MedusaGaze.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 05:03:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 13 - 16 mental damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Stuns target
+ AddControlEffect(Target, 4)
+
+ -- Epic targets gain an immunity to Stun effects of 16.5 seconds and duration is reduced to 1.8 seconds.
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Mesmerize.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Mesmerize.lua
new file mode 100755
index 000000000..aaefabfe7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Mesmerize.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Mesmerize.lua
+ Script Author : neatz09
+ Script Date : 2020.05.08 10:05:53
+ Script Purpose :
+ :
+--]]
+
+-- Mesmerizes target
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Mesmerize effects of 45.0 seconds and duration is reduced to 5.0 seconds.
+-- Resistibility increases against targets higher than level 29.
+function cast(Caster, Target)
+ AddControlEffect(Target, 1)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MindBlast.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MindBlast.lua
new file mode 100755
index 000000000..fc86b7106
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MindBlast.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : dd_interrupt.lua
+ Script Purpose : Generic damage + stun script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, EffectChance)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Effect component - if EffectChance is blank, always apply the effect, otherwise random
+ if EffectChance ~= nil then
+ if EffectChance >= math.random(1, 100) then
+ -- Interrupt(Target)
+ end
+ else
+ -- Interrupt(Target)
+ end
+
+
+end
+
+function remove(Caster, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Mindbend.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Mindbend.lua
new file mode 100755
index 000000000..e19b83d4b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Mindbend.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Mindbend.lua
+ Script Author : neatz09
+ Script Date : 2020.02.13 05:02:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell will cast Disorientation on target. Lasts for 4.0 seconds.
+-- Stuns target
+-- If Target is not Epic
+-- Grants a total of 3 triggers of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MindsEye.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MindsEye.lua
new file mode 100755
index 000000000..d83ee438c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/MindsEye.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/MindsEye.lua
+ Script Author : neatz09
+ Script Date : 2019.10.20 09:10:41
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Combat Power Regen of group members (AE) by 6.3
+
+function cast(Caster, Target, Pwr)
+ AddSpellBonus(Target, 605, Pwr)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ObliteratedPsyche.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ObliteratedPsyche.lua
new file mode 100755
index 000000000..06e303d3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ObliteratedPsyche.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/ObliteratedPsyche.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 08:03:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Decreases Mitigation of target vs elemental, noxious and arcane damage by 180
+ AddSpellBonus(Target, 201, BonusAmt)
+ AddSpellBonus(Target, 202, BonusAmt)
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PeacefulLink.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PeacefulLink.lua
new file mode 100755
index 000000000..4b5b47998
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PeacefulLink.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/PeacefulLink.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 05:10:31
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged with a melee weapon this spell has a 33% chance to cast Linked Pain on target's attacker.
+-- Decreases threat priority of target by 1 position
+-- Decreases Hate Gain of target by 10.7%
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PossessEssence.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PossessEssence.lua
new file mode 100755
index 000000000..628061794
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PossessEssence.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/PossessEssence.lua
+ Script Author : neatz09
+ Script Date : 2020.02.13 05:02:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet possessed essence
+-- Certain enemies cannot be targetted by Possess Essence
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PowerofMind.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PowerofMind.lua
new file mode 100755
index 000000000..203f990b7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PowerofMind.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/PowerofMind.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 06:03:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Power, Arcane)
+ -- Increases Max Power of group members (AE) by 20.8
+ AddSpellBonus(Target, 619, Power)
+
+ -- Increases Mitigation of group members (AE) vs arcane damage by 79
+ AddSpellBonus(Target, 203, Arcane)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Puppetmaster.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Puppetmaster.lua
new file mode 100755
index 000000000..77bf692bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Puppetmaster.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Puppetmaster.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons 4 limited pets to aid the caster
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PureAwe.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PureAwe.lua
new file mode 100755
index 000000000..e7f0d61d4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/PureAwe.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/PureAwe.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 06:05:13
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target encounter
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Mesmerize effects of 27.0 seconds and duration is reduced to 3.0 seconds.
+-- Resistibility increases against targets higher than level 29.
+function cast(Caster, Target)
+ AddControlEffect(Target, 1)
+ Say(Caster, "Resistability and immunity not implemented.")
+
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ReekofTerror.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ReekofTerror.lua
new file mode 100755
index 000000000..3e8772a65
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ReekofTerror.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/ReekofTerror.lua
+ Script Author : neatz09
+ Script Date : 2020.02.13 04:02:05
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Threat to targets in Area of Effect by 1,850
+-- Makes targets in Area of Effect afraid
+-- Dispelled when target takes damage
+-- Resistibility increases against targets higher than level 29.
+function cast(Caster, Target, Hate)
+ AddHate(Caster, Target, Hate, 1)
+ AddControlEffect(Target, 6)
+ Say(Caster, "Resistability not implemented.")
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 6)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ShiftMana.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ShiftMana.lua
new file mode 100755
index 000000000..f300d8693
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ShiftMana.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/ShiftMana.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 06:03:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Power)
+ -- Increases power of caster by 6 instantly and every 4 seconds
+ SpellHeal("Power", Power)
+end
+
+function tick(Caster, Target, Power)
+ SpellHeal("Power", Power)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ShockWave.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ShockWave.lua
new file mode 100755
index 000000000..00acba0e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/ShockWave.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/ShockWave.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 07:14:50
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 402 - 669 mental damage on targets in Area of Effect
+-- Stuns targets in Area of Effect
+-- Epic targets gain an immunity to Stun effects of 15.0 seconds and duration is reduced to 1.7 seconds.
+-- Resistibility increases against targets higher than level 29.
+
+function cast(Caster, Target)
+ AddControlEffect(Target, 4)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Say(Caster, "Immunity and Resistability not implemented.")
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SignetofIntellect.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SignetofIntellect.lua
new file mode 100755
index 000000000..6dbb8a7b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SignetofIntellect.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/SignetofIntellect.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 06:03:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stats, Avoid)
+ -- Increases INT and AGI of group members (AE) by 9.4
+ AddSpellBonus(Target, 2, Stats)
+ AddSpellBonus(Target, 4, Stats)
+
+ -- Adds 1.4% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Silence.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Silence.lua
new file mode 100755
index 000000000..ff970f320
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Silence.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Silence.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 08:03:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 71 - 87 mental damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Stifles target
+ AddControlEffect(Target, 2)
+
+ -- Epic targets gain an immunity to Stifle effects of 18.0 seconds and duration is reduced to 2.0 seconds.
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 24 - 29 mental damage on target every second
+ if DoTMaxVal ~= nil and DoTMinVal < DoTMaxVal then
+ SpellDamage(Target, DoTType, math.random(DoTMinVal, DoTMaxVal))
+ else
+ SpellDamage(Target, DoTType, DoTMinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SimpleMinds.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SimpleMinds.lua
new file mode 100755
index 000000000..81ad6a89d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SimpleMinds.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/SimpleMinds.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 06:03:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, PowerDmg)
+ -- Inflicts 12 - 14 mental damage on target encounter instantly and every 4 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+
+ -- Decreases power of target encounter by 4 instantly and every 4 seconds
+ ModifyPower(Target, PowerDmg)
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal, PowerDmg)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+
+ ModifyPower(Target, PowerDmg)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SirensGift.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SirensGift.lua
new file mode 100755
index 000000000..68ef6a7d8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SirensGift.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/SirensGift.lua
+ Script Author : neatz09
+ Script Date : 2020.03.07 10:03:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases the max health of the coercer's Possess Essence by 25%
+-- Modifies mana flow to be group targeted. Also reduces duration and fuel cost.
+-- On a damage spell hit this spell has a 12% chance to cast Siren's Gift on the group. Lasts for 10.0 seconds.
+-- Reduces the power cost of group members' spells by 20%
+-- Reduces the reuse timers of all spells by 10%
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SirensStare.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SirensStare.lua
new file mode 100755
index 000000000..0dd95506e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SirensStare.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/SirensStare.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Adds mental damage to a fighter's single target and AE taunts.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SpellCurse.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SpellCurse.lua
new file mode 100755
index 000000000..5228ff07e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/SpellCurse.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/SpellCurse.lua
+ Script Author : neatz09
+ Script Date : 2019.10.22 05:10:30
+ Script Purpose :
+ :
+--]]
+
+-- When damaged with a spell this spell will cast Lash on target.
+-- Inflicts 388 - 475 mental damage on target
+-- Grants a total of 3 triggers of the spell.
+
+function cast(Caster, Target)
+ SetSpellTriggerCount(3, 1)
+ AddProc(Target, 17, 100)
+end
+
+function proc(Caster, Target, ProcType, DDType, DDLow, DDHigh)
+ ProcDamage(Caster, Target, "Lash", DDType, DDLow, DDHigh)
+ RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Stupefy.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Stupefy.lua
new file mode 100755
index 000000000..da30c4f9e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Stupefy.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Stupefy.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 08:03:33
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Stuns target encounter
+ AddControlEffect(Target, 4)
+
+ -- Epic targets gain an immunity to Stun effects of 12.4 seconds and duration is reduced to 1.4 seconds.
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Unveil.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Unveil.lua
new file mode 100755
index 000000000..5da1e6599
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Unveil.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Unveil.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:12
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Ultravision to group members (AE)
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Velocity.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Velocity.lua
new file mode 100755
index 000000000..06c7f77c1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Coercer/Velocity.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Coercer/Velocity.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.14 08:03:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Increases Multi Attack Chance of target by 26.5
+ AddSpellBonus(Target, 641, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Aneurysm.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Aneurysm.lua
new file mode 100755
index 000000000..cb807474a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Aneurysm.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Aneurysm.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+-- Dazes target
+-- Inflicts 65 - 79 mental damage on target
+-- Epic targets gain an immunity to Daze effects of 13.5 seconds and duration is reduced to 1.5 seconds.
+-- Resistibility increases against targets higher than level 29.
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+ AddControlEffect(Target, 3)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/AspectofGenius.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/AspectofGenius.lua
new file mode 100755
index 000000000..0c45a292e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/AspectofGenius.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/AspectofGenius.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Pow, Mit)
+ AddSpellBonus(Target, 619, Pow)
+ AddSpellBonus(Target, 203, Mit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/BarrierofIntellect.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/BarrierofIntellect.lua
new file mode 100755
index 000000000..ae87c6b01
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/BarrierofIntellect.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/BarrierofIntellect.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 06:05:09
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Threat to targets in Area of Effect by 1,850
+-- Mesmerizes targets in Area of Effect
+-- If Target is not Epic
+-- Dispelled when target takes damage
+-- Resistibility increases against targets higher than level 29.
+
+function cast(Caster, Target, Hate)
+ AddHate(Caster, Target, Hate, 1)
+ AddControlEffect(Target, 1)
+ Say(Caster, "leve resistability not implemented")
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Bewilderment.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Bewilderment.lua
new file mode 100755
index 000000000..a628d0f41
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Bewilderment.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Bewilderment.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Stuns target encounter
+-- Epic targets gain an immunity to Stun effects of 8.3 seconds and duration is reduced to 0.9 seconds.
+-- Resistibility increases against targets higher than level 29.
+ AddControlEffect(Target, 4)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Brainburst.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Brainburst.lua
new file mode 100755
index 000000000..11b919eec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Brainburst.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Brainburst.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType, DDLow, DDHigh, dotType, dotLow, dotHigh)
+-- Applies Migraine on termination.
+-- Inflicts 13 - 17 mental damage on target
+-- Inflicts 6 - 7 mental damage on target instantly and every 6 seconds
+ --NOTE: Need to allow spells to be irresistible
+ SpellDamage(Target, dotType, dotLow, dotHigh)
+end
+
+function tick(Caster, Target, DDType, DDLow, DDHigh, dotType, dotLow, dotHigh)
+ SpellDamage(Target, DDType, DDLow, DDHigh)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ChromaticShower.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ChromaticShower.lua
new file mode 100755
index 000000000..38d822b48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ChromaticShower.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/ChromaticShower.lua
+ Script Author : neatz09
+ Script Date : 2020.03.06 08:03:04
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 104 - 127 mental damage on target encounter instantly and every second
+-- Stifles target encounter
+-- Epic targets gain an immunity to Stifle effects of 15.0 seconds and duration is reduced to 1.7 seconds.
+-- Resistibility increases against targets higher than level 29.
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Say(Caster, "Epic Spell Abilities not implemented yet.")
+
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+ AddControlEffect(Target, 2)
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ChromaticStorm.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ChromaticStorm.lua
new file mode 100755
index 000000000..1c4b96e4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ChromaticStorm.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/ChromaticStorm.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+-- Inflicts X - Y mental damage on target encounter instantly and every 2 seconds
+-- Applies Stumble on termination.
+-- Interrupts target
+-- Interrupts target encounter
+
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+ Interrupt(Caster)
+end
+
+function tick(Caster, Target)
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+ Interrupt(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Dismay.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Dismay.lua
new file mode 100755
index 000000000..fa1a2df06
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Dismay.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Dismay.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 05:09:23
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Crushing, Piercing, Slashing and Ranged of target by 20.3
+function cast(Caster, Target, SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Doppelganger.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Doppelganger.lua
new file mode 100755
index 000000000..4fdb18ad2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Doppelganger.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Doppelganger.lua
+ Script Author : neatz09
+ Script Date : 2020.03.06 09:03:35
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Entrance.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Entrance.lua
new file mode 100755
index 000000000..1c1deeaeb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Entrance.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Entrance.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19
+ Script Purpose :
+--]]
+
+function cast(Caster, Target)
+ AddControlEffect(Target, 1)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Epiphany.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Epiphany.lua
new file mode 100755
index 000000000..94942ac2a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Epiphany.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Epiphany.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Buff)
+ AddSpellBonus(Target, 603, Buff)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ExtractMana.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ExtractMana.lua
new file mode 100755
index 000000000..d522814dc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ExtractMana.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/ExtractMana.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Pow)
+ SpellHeal("Power", Pow)
+end
+
+function tick(Caster, Target)
+ SpellHeal("Power", Pow)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/FlashofBrilliance.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/FlashofBrilliance.lua
new file mode 100755
index 000000000..cba33c827
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/FlashofBrilliance.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/FlashofBrilliance.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 05:09:45
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Int, SkillAmt)
+-- Increases INT of group members (AE) by 35.1
+ AddSpellBonus(Target, 4, Int)
+
+-- Increases Focus, Disruption, Subjugation, Ministration and Ordination of group members (AE) by 13.5
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ordination"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target, Int, SkillAmt)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionBurynai.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionBurynai.lua
new file mode 100755
index 000000000..e98a1bd45
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionBurynai.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/IllusionBurynai.lua
+ Script Author : neatz09
+ Script Date : 2020.05.15 06:05:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Shapechanges caster
+-- Enlarges caster by 27.0%
+-- This effect cannot be cast during combat
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionDrachnid.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionDrachnid.lua
new file mode 100755
index 000000000..52b15014f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionDrachnid.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/IllusionDrachnid.lua
+ Script Author : neatz09
+ Script Date : 2020.05.15 06:05:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Shapechanges caster
+-- If male
+-- Shapechanges caster
+-- If female
+-- Shrinks caster by 18.0%
+-- This effect cannot be cast during combat
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionFishman.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionFishman.lua
new file mode 100755
index 000000000..8742eecfc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionFishman.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/IllusionFishman.lua
+ Script Author : neatz09
+ Script Date : 2020.05.15 06:05:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Shapechanges caster
+-- Allows caster to breathe under water
+-- Grants Fish Vision to caster
+-- This effect cannot be cast during combat
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionSpiroc.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionSpiroc.lua
new file mode 100755
index 000000000..eee3f6b23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusionSpiroc.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/IllusionSpiroc.lua
+ Script Author : neatz09
+ Script Date : 2020.05.15 06:05:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Shapechanges caster
+-- Reduces maximum falling speed of caster
+-- This effect cannot be cast during combat
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusoryAllies.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusoryAllies.lua
new file mode 100755
index 000000000..d25d839af
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusoryAllies.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/IllusoryAllies.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 02:10:55
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Memory Wipe on termination. Lasts for 1.0 second.
+-- Wipes most of the target's memory of aggression
+-- Summons 6 limited pets to aid the caster
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusoryMask.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusoryMask.lua
new file mode 100755
index 000000000..1d268687f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/IllusoryMask.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/IllusoryMask.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 04:10:46
+ Script Purpose :
+ :
+--]]
+
+-- Grants invisibility to group members (AE)
+-- Suspends group members (AE)'s movement speed enhancements
+-- Dispelled when target takes damage
+-- This effect cancels during combat
+
+function cast(Caster, Target)
+Stealth(2, Target)
+ Say(Caster, "Suspends group members (AE)'s movement speed enhancements Not Implemented. Unsure if can be cast in combat or not.")
+end
+
+function remove(Caster, Target)
+RemoveInvis(2)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Lockdown.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Lockdown.lua
new file mode 100755
index 000000000..67033d602
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Lockdown.lua
@@ -0,0 +1,53 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Lockdown.lua
+ Script Author : Cynnar
+ Script Date : 2016.28.09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Roots target
+ SetSpeedMultiplier(Target, 0)
+
+ -- Applies Stifle. Lasts for 4.0 seconds.
+ -- Stifles target
+ AddControlEffect(Target, 2)
+ AddSpellTimer(4000, "RemoveStifle")
+
+ -- 100% chance to dispel when target takes damage
+ AddProc(Target, 2, 100.0)
+
+-- Blurs vision of target
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Stifle effects of 12.0 seconds and duration is reduced to 1.3 seconds.
+-- Resistibility increases against targets higher than level 34.
+-- Epic targets gain an immunity to Root effects of 54.0 seconds and duration is reduced to 6.0 seconds.
+-- Resistibility increases against targets higher than level 29.
+
+end
+
+function RemoveStifle(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ -- Dispell stifle when target takes damage
+ RemoveControlEffect(Target, 2)
+ -- 5% chance to dispel root when target takes damage
+ if math.random(1, 100) <= 5 then
+ CancelSpell()
+ end
+ end
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+ SetSpeedMultiplier(Target, 1.0)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Manatap.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Manatap.lua
new file mode 100755
index 000000000..2614eb705
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Manatap.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Manatap.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 03:10:32
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealType, EncPwr, GrpPwr)
+SpellHeal("Power", EncPwr)
+local group = GetGroup(Caster)
+if group == nil then
+ SpellHeal("Power", GrpPwr, 0, Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Power", GrpPwr, 0, v)
+ end
+end
+end
+
+
+function tick(Caster, Target, HealType, EncPwr, GrpPwr)
+-- Decreases power of target encounter by 63 instantly and every 4 seconds
+-- Increases power of group members (AE) by 47 instantly and every 4 seconds
+SpellHeal("Power", EncPower)
+local group = GetGroup(Caster)
+if group == nil then
+ SpellHeal("Power", GrpPwr, 0, Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Power", GrpPwr, 0, v)
+ end
+end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Migraine.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Migraine.lua
new file mode 100755
index 000000000..f5c488994
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Migraine.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, EffectType, DDType, MinDDVal, MaxDDVal)
+
+ -- NoDD is a 0/1 bool flag to perform the remove() component
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+ else
+ SpellDamage(Target, DOTType, MinDOTVal)
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, EffectType, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+ else
+ SpellDamage(Target, DOTType, MinDOTVal)
+ end
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, EffectType, DDType, MinDDVal, MaxDDVal)
+ SpellDamage(Target, DOTType, math.random(8, 14))
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/MirageMastery.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/MirageMastery.lua
new file mode 100755
index 000000000..439d05929
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/MirageMastery.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/MirageMastery.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases the max health of the illusionist's Personae Reflection by 25%
+-- On a hostile spell cast this spell has a 12% chance to cast Soothing Mind on the group. Lasts for 15.0 seconds.
+-- On any combat or spell hit this spell will cast Soothing Mind on target. Lasts for 15.0 seconds.
+-- Increases power of target by 360
+-- Grants a total of 1 trigger of the spell.
+-- Cannot be modified except by direct means
+-- Changes Rapidity to a group buff and adds 10% double attack.
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Nightmare.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Nightmare.lua
new file mode 100755
index 000000000..2200810bd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Nightmare.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Nightmare.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh, Debuff)
+-- Decreases Mitigation of target vs arcane damage by 141
+-- Inflicts 21 - 25 mental damage on target instantly and every 6 seconds
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+ AddSpellBonus(Target, 203, Debuff)
+end
+
+function tick(Caster, Target, DmgType, DmgLow, DmgHigh, Debuff)
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Paranoia.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Paranoia.lua
new file mode 100755
index 000000000..f32532e35
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Paranoia.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Paranoia.lua
+ Script Author : Neatz09
+ Script Date : 8-12-19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+-- Inflicts X - Y mental damage on target
+-- Stuns target
+-- Epic targets gain an immunity to Stun effects of 16.5 seconds and duration is reduced to 1.8 seconds.
+-- Resistibility increases against targets higher than level 29.
+ Say(Caster, "Epic Immunity and Resistability not implemented yet")
+
+ AddControlEffect(Target, 4)
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PersonaeReflection.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PersonaeReflection.lua
new file mode 100755
index 000000000..cf73dca8b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PersonaeReflection.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/PersonaeReflection.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 08:10:51
+ Script Purpose :
+ :
+--]]
+-- Summons a pet Illusion Ally
+function cast(Caster, Target, PetID, MaxLevel)
+ -- Summons a pet
+local pet = SummonPet(Caster, PetID, MaxLevel)
+if pet ~= nil then
+ CopySpawnAppearance(pet, Caster)
+end
+end
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
+
+
+
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PhantasmalAwe.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PhantasmalAwe.lua
new file mode 100755
index 000000000..c51d2c5be
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PhantasmalAwe.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/PhantasmalAwe.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 06:05:22
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target encounter
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Mesmerize effects of 27.0 seconds and duration is reduced to 3.0 seconds.
+-- Resistibility increases against targets higher than level 29.
+function cast(Caster, Target)
+ AddControlEffect(Target, 1)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PhantasmalBlast.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PhantasmalBlast.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PhantasmalBlast.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Phase.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Phase.lua
new file mode 100755
index 000000000..b8328cf91
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Phase.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Phase.lua
+ Script Author : neatz09
+ Script Date : 2020.03.06 08:03:42
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Teleports target to a random location within 5 meters.
+-- If Target is not Epic
+-- Wipes almost all of target's memory of aggression towards their current target.
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PrismaticChaos.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PrismaticChaos.lua
new file mode 100755
index 000000000..316752505
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/PrismaticChaos.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/PrismaticChaos.lua
+ Script Author : theFoof
+ Script Date : 2014.3.9
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- On a combat hit this spell will cast Prismatic Shock on target of attack.
+-- Inflicts 172 - 210 mental damage on target
+-- Grants a total of 3 triggers of the spell.
+
+ SetSpellTriggerCount(3, 1)
+ AddProc(Target, 3, 100)
+end
+
+function proc(Caster, Target, ProcType, DDType, DDLow, DDHigh)
+ ProcDamage(Caster, Target, "Prismatic Shock", DDType, DDLow, DDHigh)
+ RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Rapidity.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Rapidity.lua
new file mode 100755
index 000000000..c2fe1b6cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Rapidity.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Rapidity.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 04:09:35
+ Script Purpose :
+ :
+--]]
+
+-- Increases Haste of target by 23.0
+
+function cast(Caster, Target, Haste)
+ AddSpellBonus(Target, 617, Haste)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Regalia.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Regalia.lua
new file mode 100755
index 000000000..3ee72b602
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Regalia.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Regalia.lua
+ Script Author : neatz09
+ Script Date : 2020.01.31 06:01:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Mesmerize effects of 22.5 seconds and duration is reduced to 2.5 seconds.
+-- Resistibility increases against targets higher than level 29.
+function cast(Caster, Target)
+ AddControlEffect(Target, 1)
+ Say(Caster, "Resistability + immunity not implemented")
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/RuneofThought.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/RuneofThought.lua
new file mode 100755
index 000000000..49456bc29
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/RuneofThought.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/RuneofThought.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stat, Mit)
+ AddSpellBonus(Target, 3, Stat)
+ AddSpellBonus(Target, 4, Stat)
+ AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 203, Mit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Savante.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Savante.lua
new file mode 100755
index 000000000..7356cce0d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Savante.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Savante.lua
+ Script Author : neatz09
+ Script Date : 2020.01.31 06:01:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Target will lose 31% less power when power is consumed
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ShiftVision.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ShiftVision.lua
new file mode 100755
index 000000000..a00f83152
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/ShiftVision.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/ShiftVision.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Infravision to group members (AE)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Speechless.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Speechless.lua
new file mode 100755
index 000000000..0d86ede6f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Speechless.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Speechless.lua
+ Script Author : theFoof
+ Script Date : 2014.3.1
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+-- Inflicts 130 - 159 mental damage on target
+-- Stifles target
+-- Epic targets gain an immunity to Stifle effects of 18.0 seconds and duration is reduced to 2.0 seconds.
+-- Resistibility increases against targets higher than level 29.
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+ AddControlEffect(Target, 2)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Spellshield.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Spellshield.lua
new file mode 100755
index 000000000..7702fd813
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Spellshield.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Spellshield.lua
+ Script Author : neatz09
+ Script Date : 2020.01.31 06:01:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell will cast Shock of Mana on target's attacker.
+-- Inflicts 32 - 39 magic damage on target
+-- Grants a total of 5 triggers of the spell.
+-- This effect can only trigger once every 1.0 second.
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/StormofColors.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/StormofColors.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/StormofColors.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Synergism.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Synergism.lua
new file mode 100755
index 000000000..db676f4b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Synergism.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Synergism.lua
+ Script Author : neatz09
+ Script Date : 2020.01.31 06:01:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell hit this spell has a 33% chance to cast Dynamism on target of spell.
+-- Decreases Threat to target by 160 - 196
+-- If profession other than Fighter
+-- Inflicts 70 - 86 mental damage on target
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Theorems.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Theorems.lua
new file mode 100755
index 000000000..4804d623d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/Theorems.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/Theorems.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 04:10:42
+ Script Purpose :
+ :
+--]]
+
+
+-- When damaged with a spell this spell will cast Theorems on target.
+-- Inflicts 555 - 678 mental damage on target
+-- Grants a total of 3 triggers of the spell.
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 17, 100)
+ SetSpellTriggerCount(3, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ ProcDamage(Caster, Target, "Theorems", DmgType, MinVal, MaxVal)
+ RemoveTriggerFromSpell(1)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/UltravioletBeam.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/UltravioletBeam.lua
new file mode 100755
index 000000000..06a02eb4b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/UltravioletBeam.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/UltravioletBeam.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19
+ Script Purpose :
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/UltravioletBeamX.lua b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/UltravioletBeamX.lua
new file mode 100755
index 000000000..0052a97bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/Illusionist/UltravioletBeamX.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/Illusionist/UltravioletBeamX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:58
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 520 - 704 mental damage on target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/ManaCloak.lua b/server/Spells/Spells-Copy/Mage/Enchanter/ManaCloak.lua
new file mode 100755
index 000000000..e6054934b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/ManaCloak.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/ManaCloak.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When any damage is received this spell will cast Breeze on target.
+-- Increases power of caster by 103
+-- Grants a total of 3 triggers of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Enchanter/VeiloftheUnseen.lua b/server/Spells/Spells-Copy/Mage/Enchanter/VeiloftheUnseen.lua
new file mode 100755
index 000000000..1056a4334
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Enchanter/VeiloftheUnseen.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Enchanter/VeiloftheUnseen.lua
+ Script Author : theFoof
+ Script Date : 2014.1.16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+-- Say(Caster, "Prevents AOE (except when direct) -- need support for this")
+
+-- Grants invisibility to target
+-- Suspends target's movement speed enhancements
+-- Dispelled when target takes damage
+-- This effect cancels during combat
+
+ Stealth(2)
+end
+
+function remove(Caster, Target)
+ RemoveInvis()
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/GiftoftheMagi.lua b/server/Spells/Spells-Copy/Mage/GiftoftheMagi.lua
new file mode 100755
index 000000000..ebf8551f4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/GiftoftheMagi.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Mage/GiftoftheMagi.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Power of group members (AE) by 20.8
+-- Increases Mitigation of group members (AE) vs arcane damage by 123
+
+function cast(Caster, Target, Pwr, Mit)
+ AddSpellBonus(Target, 619, Pwr)
+ AddSpellBonus(Target, 203, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Invisibility.lua b/server/Spells/Spells-Copy/Mage/Invisibility.lua
new file mode 100755
index 000000000..bb1366637
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Invisibility.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Invisibility.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 02:10:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants invisibility to target
+-- Suspends target's movement speed enhancements
+-- Dispelled when target takes damage
+-- This effect cancels during combat
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+Stealth(2, Target)
+end
+
+
+function remove(Caster, Target)
+RemoveInvis(2,Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/LightningBurst.lua b/server/Spells/Spells-Copy/Mage/LightningBurst.lua
new file mode 100755
index 000000000..e4f07dea7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/LightningBurst.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/LightningBurst.lua
+ Script Author : Ememjr
+ Script Date : 2017.11.11 03:11:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 15 - 20 magic damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/LightningShock.lua b/server/Spells/Spells-Copy/Mage/LightningShock.lua
new file mode 100755
index 000000000..7418abda9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/LightningShock.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/LightningShock.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:55
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 20 - 27 magic damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/MagisShielding.lua b/server/Spells/Spells-Copy/Mage/MagisShielding.lua
new file mode 100755
index 000000000..cb8257a29
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/MagisShielding.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/MagisShielding.lua
+ Script Author : Zcoretri
+ Script Date : 2013.07.12 12:28:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StatBonus, SkillBonus, PhysMitBonus, MitBonus)
+ AddSpellBonus(Target, 1, StatBonus) -- STA
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), SkillBonus)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillBonus)
+ AddSpellBonus(Target, 200, PhysMitBonus) -- vs Physical Damage
+ AddSpellBonus(Target, 201, MitBonus) -- vs Elemental
+ AddSpellBonus(Target, 202, MitBonus) -- vs Noxiuos
+ AddSpellBonus(Target, 203, MitBonus) -- vs Arcane
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/MastersStrike.lua b/server/Spells/Spells-Copy/Mage/MastersStrike.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/MastersStrike.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/SeeInvisibility.lua b/server/Spells/Spells-Copy/Mage/SeeInvisibility.lua
new file mode 100755
index 000000000..74c6363a8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/SeeInvisibility.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/SeeInvisibility.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/ShrinkServant.lua b/server/Spells/Spells-Copy/Mage/ShrinkServant.lua
new file mode 100755
index 000000000..370e301dc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/ShrinkServant.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/ShrinkServant.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Shrink Servant to qualifying pets.
+-- Shrinks target by 35.0%
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/FlamesofVelious.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/FlamesofVelious.lua
new file mode 100755
index 000000000..a6a668000
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/FlamesofVelious.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/FlamesofVelious.lua
+ Script Author : neatz09
+ Script Date : 2020.05.14 09:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 190 heat damage on target
+-- Inflicts 190 cold damage on target
+-- Slows target by 33.3%
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/SummonAnimatedTome.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/SummonAnimatedTome.lua
new file mode 100755
index 000000000..55287861b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/SummonAnimatedTome.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/SummonAnimatedTome.lua
+ Script Author : Guardian
+ Script Date : 2012.10.21 08:10:11
+ Script Notes : Enter special notes here
+ :
+--]]
+
+function cast(Caster, Target, PetID)
+ SummonPet(Caster, PetID)
+end
+
+function tick(Caster, Target, Type, Min, Max)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target, Type, Min, Max)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/SummonShadows.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/SummonShadows.lua
new file mode 100755
index 000000000..42d34de5d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/SummonShadows.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/SummonShadows.lua
+ Script Author : theFoof
+ Script Date : 2014.01.17 05:01:09
+ Script Purpose :
+ :
+--]]
+
+-- Grants invisibility to target
+-- Suspends target's movement speed enhancements
+-- Dispelled when target takes damage
+-- This effect cancels during combat
+
+function precast(Caster, Target)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+ Stealth(2)
+end
+
+function remove(Caster, Target)
+ RemoveInvis()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Translocate.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Translocate.lua
new file mode 100755
index 000000000..abe161559
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Translocate.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Translocate.lua
+ Script Author : neatz09
+ Script Date : 2020.02.24 11:02:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Opens a portal that transports adventurers to any Spire in Norrath.
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Absolution.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Absolution.lua
new file mode 100755
index 000000000..7d7f38438
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Absolution.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Absolution.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 07:03:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 305 - 566 disease damage on target encounter
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Acid.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Acid.lua
new file mode 100755
index 000000000..13e779895
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Acid.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Acid.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 05:01:06
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 3 - 6 poison damage on target instantly and every 3 seconds
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AcidRain.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AcidRain.lua
new file mode 100755
index 000000000..2de17fef6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AcidRain.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/AcidRain.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Crit Bonus of caster by 10.0%
+-- On a damage spell hit this spell has a 12% chance to cast Acid Rain on target of spell.
+-- Inflicts 605 - 907 poison damage on target encounter
+-- Decreases threat priority of target encounter by 1 position
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AcidStorm.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AcidStorm.lua
new file mode 100755
index 000000000..74d5bee20
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AcidStorm.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/AcidStorm.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 08:10:01
+ Script Purpose :
+ :
+--]]
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Apocalypse.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Apocalypse.lua
new file mode 100755
index 000000000..c3e710700
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Apocalypse.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Apocalypse.lua
+ Script Author : neatz09
+ Script Date : 2019.04.23 09:04:39
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 191 - 355 poison damage on target encounter instantly and every 1.5 seconds
+
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AspectofDarkness.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AspectofDarkness.lua
new file mode 100755
index 000000000..ec707ca4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AspectofDarkness.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/AspectofDarkness.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.05 06:03:23
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PowerAmt, ResistAmt)
+ -- Increases Max Power of group members (AE) by 20.8
+ AddSpellBonus(Target, 501, PowerAmt)
+ -- Increases Mitigation of group members (AE) vs noxious damage by 79
+ AddSpellBonus(Target, 202, ResistAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AuraofVoid.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AuraofVoid.lua
new file mode 100755
index 000000000..2bf45e634
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/AuraofVoid.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/AuraofVoid.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 04:10:34
+ Script Purpose :
+ :
+--]]
+
+-- Grants a total of 3 triggers of the spell.
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 17, 100)
+ -- Grants a total of 3 triggers of the spell.
+ SetSpellTriggerCount(3, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ -- When damaged with a spell this spell will cast Aura of Pain on target.
+ if Type == 17 then
+ -- Inflicts 125 - 152 disease damage on target
+ ProcDamage(Caster, Target, "Aura of Pain", DmgType, MinVal, MaxVal)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/BoonoftheDamned.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/BoonoftheDamned.lua
new file mode 100755
index 000000000..d6bb43468
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/BoonoftheDamned.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/BoonoftheDamned.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 07:03:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged with a melee weapon this spell has a 10% chance to cast Mana Boon on target. Lasts for 16.0 seconds.
+-- Increases power of target by 3 instantly and every 4 seconds
+-- Increases power of caster by 3 instantly and every 4 seconds
+-- Causes 2% Threat to transfer to target when in combat
+-- If Fighter
+
+function cast(Caster, Target, Power, Hate)
+ Say(Target, "Hah, nice try! That's not implemented yet!")
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Cataclysm.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Cataclysm.lua
new file mode 100755
index 000000000..ce1971913
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Cataclysm.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+ Interrupt(Target)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CorrosiveBlast.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CorrosiveBlast.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CorrosiveBlast.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CurseofDarkness.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CurseofDarkness.lua
new file mode 100755
index 000000000..20b8cada3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CurseofDarkness.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/CurseofDarkness.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 04:02:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell will cast Curse of Darkness on target of spell.
+-- Inflicts 29 - 35 poison damage on target encounter
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CurseofVoid.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CurseofVoid.lua
new file mode 100755
index 000000000..e2a5b496f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/CurseofVoid.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/CurseofVoid.lua
+ Script Author : neatz09
+ Script Date : 2019.04.24 12:04:01
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases STR and INT of target by 19.4
+-- Only affects targets level 20 and above
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 0, BonusAmt)
+ AddSpellBonus(Target, 4, BonusAmt)
+
+end
+
+function remove(Caster, Target, BonusAmt)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkInfestation.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkInfestation.lua
new file mode 100755
index 000000000..d82a4f9f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkInfestation.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/DarkInfestation.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 05:05:39
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 183 - 224 poison damage on target instantly and every 4 seconds
+-- When damaged with a spell this spell has a 35% chance to cast Dark Broodlings on target. Lasts for 6.0 seconds.
+-- Summons 3 limited pets to aid the caster
+-- Grants a total of 1 trigger of the spell.
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkNebula.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkNebula.lua
new file mode 100755
index 000000000..59c691bc8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkNebula.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/DarkNebula.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.05 07:03:59
+ Script Purpose :
+ :
+--]]
+-- need to add resistance function --
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 55 - 101 poison damage on target encounter
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Stuns target encounter
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkPact.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkPact.lua
new file mode 100755
index 000000000..6cba20440
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkPact.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/DarkPact.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 08:03:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ -- Increases Disruption, Subjugation, Ordination, Ministration and Aggression of group members (AE) by 3.2
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkPyre.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkPyre.lua
new file mode 100755
index 000000000..8a0b44c12
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkPyre.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/DarkPyre.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.06 07:03:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTDmgType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 26 - 48 disease damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTDmgType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 16 - 29 disease damage on target every 2 seconds
+ if DoTMaxVal ~= nil and DoTMinVal < DoTMaxVal then
+ SpellDamage(Target, DoTDmgType, math.random(DoTMinVal, DoTMaxVal))
+ else
+ SpellDamage(Target, DoTDmgType, DoTMinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkSiphoning.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkSiphoning.lua
new file mode 100755
index 000000000..c4b2b6342
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DarkSiphoning.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/DarkSiphoning.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 12:10:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases power of target encounter by 50 - 61 instantly and every 3 seconds
+-- Inflicts 117 - 218 poison damage on target encounter instantly and every 3 seconds
+-- Heals group members (AE) for 64 - 119 instantly and every 3 seconds
+-- Increases power of group members (AE) by 1.3% instantly and every 3 seconds
+-- This effect cannot be critically applied.
+
+function cast(Caster, Target, PotDebuffMin, PotDebuffMax, DoTType, DotMin, DotMax, HealMin, HealMax, pctHealMin, PctHealMax)
+SpellHeal("Power", PotDebuffMin, PotDebuffMax)
+SpellDamage(Target, DoTType, DoTMin, DoTMax)
+if group == nil then
+ SpellHeal("Heal", HealMin, HealMax,Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Power", HealMin, HealMax, v)
+ end
+end
+
+if group == nil then
+ SpellHeal("Heal", pctHealMin, pctHealMax, Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMin), SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMax), v, 2, 1))
+ end
+end
+
+end
+function tick(Caster, Target, PotDebuffMin, PotDebuffMax, DoTType, DotMin, DotMax, HealMin, HealMax, pctHealMin, pctHealMax)
+SpellHeal("Power", PotDebuffMin, PotDebuffMax)
+SpellDamage(Target, DoTType, DoTMin, DoTMax)
+if group == nil then
+ SpellHeal("Heal", HealMin, HealMax,Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Power", HealMin, HealMax, v)
+ end
+end
+
+if group == nil then
+ SpellHeal("Heal", pctHealMin, pctHealMax, Caster)
+else
+ for k,v in ipairs(GetGroup(Spawn)) do
+ SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMin), SpellHeal("Heal", GetPCTOfHP(Caster, pctHealMax), v, 2, 1))
+ end
+end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Dissolve.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Dissolve.lua
new file mode 100755
index 000000000..1aa39f5c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Dissolve.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Dissolve.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19
+ Script Purpose :
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DissolveX.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DissolveX.lua
new file mode 100755
index 000000000..1aa39f5c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/DissolveX.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Dissolve.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19
+ Script Purpose :
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Distortion.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Distortion.lua
new file mode 100755
index 000000000..c44dd6a1f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Distortion.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Distortion.lua
+ Script Author : neatz09
+ Script Date : 2019.04.24 12:04:59
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 216 - 400 poison damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal, Power)
+-- Increases power of caster by 21
+SpellHeal(Power, Pwr, nil, Caster)
+
+
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Encase.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Encase.lua
new file mode 100755
index 000000000..becc6ba81
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Encase.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Encase.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 07:03:41
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 197 - 328 cold damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Stuns target
+ -- If Target is not Epic
+ -- Resistibility increases against targets higher than level 29.
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Erupt.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Erupt.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Erupt.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GasCloud.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GasCloud.lua
new file mode 100755
index 000000000..fc86b7106
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GasCloud.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : dd_interrupt.lua
+ Script Purpose : Generic damage + stun script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, EffectChance)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Effect component - if EffectChance is blank, always apply the effect, otherwise random
+ if EffectChance ~= nil then
+ if EffectChance >= math.random(1, 100) then
+ -- Interrupt(Target)
+ end
+ else
+ -- Interrupt(Target)
+ end
+
+
+end
+
+function remove(Caster, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GiftofBertoxxulous.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GiftofBertoxxulous.lua
new file mode 100755
index 000000000..b12e0aa8f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GiftofBertoxxulous.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/GiftofBertoxxulous.lua
+ Script Author : neatz09
+ Script Date : 2020.04.19 03:04:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell will cast Abhorrence on target of spell.
+-- Inflicts 12 - 22 poison damage on target encounter
+
+function cast(Caster, Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GraspofBertoxxulous.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GraspofBertoxxulous.lua
new file mode 100755
index 000000000..e61552faa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/GraspofBertoxxulous.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/GraspofBertoxxulous.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 08:03:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell may cast Venomous Runes on target of attack. Lasts for 16.0 seconds. Triggers about 2.0 times per minute.
+-- Inflicts 17 - 21 poison damage on target instantly and every 4 seconds
+
+function cast(Caster, Target)
+ Say(Target, "Hah, nice try! That's not implemented yet!")
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/ManaTrickle.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/ManaTrickle.lua
new file mode 100755
index 000000000..22fb798b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/ManaTrickle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/ManaTrickle.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 11:10:42
+ Script Purpose :
+ :
+--]]
+
+
+-- Increases power of target by 30 instantly and every 4 seconds
+
+function cast(Caster, Target, Min)
+SpellHeal("Power", Min)
+end
+
+
+function tick(Caster, Target, Min)
+SpellHeal("Power", Min)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NegativeVoid.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NegativeVoid.lua
new file mode 100755
index 000000000..f8e7e78ca
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NegativeVoid.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/NegativeVoid.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 06:10:38
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Changes damage based encounter AE spells into single target. Improves their damage by 30%
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Netherealm.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Netherealm.lua
new file mode 100755
index 000000000..45c6dccc6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Netherealm.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Netherealm.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 09:10:57
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Netherous Cascade. Lasts for 5.0 seconds.
+-- When damaged with a spell this spell will cast Nether Void on target.
+-- Inflicts 329 - 402 poison damage on target
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Netherlord.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Netherlord.lua
new file mode 100755
index 000000000..62a38ed26
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Netherlord.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Netherlord.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 09:10:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NetherousBind.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NetherousBind.lua
new file mode 100755
index 000000000..7d1b88364
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NetherousBind.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/NetherousBind.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 05:01:35
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+
+function cast(Caster, Target, Snare)
+ -- Roots target
+ -- 15% chance to dispel when target takes damage
+ -- Does not affect Epic targets
+ -- Resistibility increases against targets higher than level 29.
+ if not IsEpic(Target) then
+ SetSpeedMultiplier(Target, Snare)
+ AddProc(Target, 2, 15.0)
+ end
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ -- Cancel spell
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1.0)
+
+ -- Applies Element of Fear on termination. Lasts for 5.0 seconds.
+ -- Makes target afraid
+ -- Slows target by 27.9%
+ -- 30% chance to dispel when target takes damage
+ -- Does not affect Epic targets
+ -- Resistibility increases against targets higher than level 34.
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NullCaress.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NullCaress.lua
new file mode 100755
index 000000000..49df64a1d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/NullCaress.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/NullCaress.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Nullify.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Nullify.lua
new file mode 100755
index 000000000..882f43c6f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Nullify.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Nullify.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 08:03:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinHate, MaxHate)
+ -- Interrupts target encounter
+ Interrupt(Target)
+
+ -- Decreases Threat to target encounter by 112 - 137
+ AddHate(Caster, Target, math.random(MinHate, MaxHate), 1)
+
+ -- Dazes target encounter
+ -- If Target is not Epic
+ -- Resistibility increases against targets higher than level 29.
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 3)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Nullmail.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Nullmail.lua
new file mode 100755
index 000000000..aa3051501
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Nullmail.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Nullmail.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- When target falls below 30% health this spell will cast Nullmail Armor on target. Lasts for 12.0 seconds.
+-- Increases Mitigation of caster vs elemental and noxious damage by 1600
+-- Prevents AOE (except when direct)
+-- Caster will Dodge 50.0% of incoming attacks
+-- Increases Mitigation of caster vs physical and arcane damage by 1600
+-- Grants a total of 1 trigger of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Rift.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Rift.lua
new file mode 100755
index 000000000..840954aa0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Rift.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Rift.lua
+ Script Author : neatz09
+ Script Date : 2019.08.26 08:08:02
+ Script Purpose :
+ :
+--]]
+--need knockback function
+-- Inflicts 1107 - 1845 magic damage on targets in Area of Effect
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Throws target back
+-- If Target is not Epic
+-- Stuns targets in Area of Effect
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 29.
+
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Shadowsight.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Shadowsight.lua
new file mode 100755
index 000000000..5fc307687
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/Shadowsight.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/Shadowsight.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Sonic Vision to group members (AE)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/ShroudofBertoxxulous.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/ShroudofBertoxxulous.lua
new file mode 100755
index 000000000..fbff5824b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/ShroudofBertoxxulous.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/ShroudofBertoxxulous.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 04:02:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell has a 25% chance to cast Nihilistics on target's attacker.
+-- Inflicts 13 - 16 poison damage on target encounter
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/SkeletalGrasp.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/SkeletalGrasp.lua
new file mode 100755
index 000000000..8e9802481
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/SkeletalGrasp.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/SkeletalGrasp.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 11:10:35
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Roots target encounter
+-- 15% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/VacuumField.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/VacuumField.lua
new file mode 100755
index 000000000..b394ecccf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/VacuumField.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/VacuumField.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 05:01:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Decreases Mitigation of target encounter vs noxious damage by 69
+ AddSpellBonus(Target, 202, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/VoidContract.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/VoidContract.lua
new file mode 100755
index 000000000..03edb2a4f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Warlock/VoidContract.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Warlock/VoidContract.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.07 08:03:59
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Amt)
+ -- Increases power of caster by 29
+ SpellHeal("Power", Amt);
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Aurora.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Aurora.lua
new file mode 100755
index 000000000..063f0c282
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Aurora.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Aurora.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 01:10:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target
+-- Prevents AOE (except when direct)
+-- Roots caster
+-- Dispelled when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/BallofFire.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/BallofFire.lua
new file mode 100755
index 000000000..1e8ff5499
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/BallofFire.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/BallofFire.lua
+ Script Author : neatz09
+ Script Date : 2019.05.05 10:05:37
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 367 - 681 heat damage on target
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Cease.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Cease.lua
new file mode 100755
index 000000000..2dcb8ced0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Cease.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Cease.lua
+ Script Author : neatz09
+ Script Date : 2019.10.07 03:10:05
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Interrupts target encounter
+ Interrupt(Caster, Target)
+
+ -- Decreases Threat to target by 355 - 434
+ if MaxVal ~= nil and MinVal < MaxVal then
+ AddHate(Caster, Target, math.random(MinVal, MaxVal), 1)
+ else
+ AddHate(Caster, Target, MinVal, 1)
+ end
+
+-- Stifles target
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 29.
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Converge.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Converge.lua
new file mode 100755
index 000000000..7f107866b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Converge.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Converge.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 10:10:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Causes 2% Threat to transfer to target when in combat
+-- If Fighter
+--GetClass(Target) == fighter then AddThreatTransfer
+-- When damaged with a melee weapon this spell has a 10% chance to cast Concurrence on target.
+-- Increases power of target by 12
+-- Increases power of caster by 12
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Depart.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Depart.lua
new file mode 100755
index 000000000..f08ee4e4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Depart.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Depart.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 09:10:59
+ Script Purpose :
+ :
+--]]
+
+-- Teleports caster and caster's group within the zone
+function cast(Caster, Target)
+ Evac()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Engulf.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Engulf.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Engulf.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FireChamber.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FireChamber.lua
new file mode 100755
index 000000000..fc86b7106
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FireChamber.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : dd_interrupt.lua
+ Script Purpose : Generic damage + stun script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, EffectChance)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Effect component - if EffectChance is blank, always apply the effect, otherwise random
+ if EffectChance ~= nil then
+ if EffectChance >= math.random(1, 100) then
+ -- Interrupt(Target)
+ end
+ else
+ -- Interrupt(Target)
+ end
+
+
+end
+
+function remove(Caster, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Firestorm.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Firestorm.lua
new file mode 100755
index 000000000..70b675202
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Firestorm.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Firestorm.lua
+ Script Author : Zcoretri
+ Script Date : 2013.17.12 12:06:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FocusedMind.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FocusedMind.lua
new file mode 100755
index 000000000..43586873b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FocusedMind.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/FocusedMind.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a damage spell hit this spell has a 12% chance to cast Fire of Intellect on target of spell. Lasts for 15.0 seconds.
+-- Inflicts 588 - 881 heat damage on target
+-- Adds normalized spell damage based on 30% of the wizard's intelligence
+-- Cannot be modified except by direct means
+-- Increases the damage of all hostile spells by 10%
+-- Increases Doublecast Chance of caster by 10.0%
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FortifyElements.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FortifyElements.lua
new file mode 100755
index 000000000..fe6b1926d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FortifyElements.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/FortifyElements.lua
+ Script Author : Zcoretri
+ Script Date : 2013.09.12 15:47:05
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, PowerAmt, BonusAmt)
+ AddSpellBonus(Target, 501, PowerAmt) -- Power
+ AddSpellBonus(Target, 201, BonusAmt) -- vs Elemental
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FrigidGift.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FrigidGift.lua
new file mode 100755
index 000000000..e327b10aa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FrigidGift.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/FrigidGift.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FurnaceofRo.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FurnaceofRo.lua
new file mode 100755
index 000000000..6510fe4ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/FurnaceofRo.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/ServileSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 09:10:19
+ Script Purpose :
+ :
+--]]
+
+
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Fusion.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Fusion.lua
new file mode 100755
index 000000000..59069fc80
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Fusion.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Fusion.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 05:10:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Throws target back
+-- If Target is not Epic
+-- Inflicts 31 - 51 cold damage on targets in Area of Effect
+-- Stuns targets in Area of Effect
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/GlacialWind.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/GlacialWind.lua
new file mode 100755
index 000000000..eab9404a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/GlacialWind.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/GlacialWind.lua
+ Script Author : Zcoretri
+ Script Date : 2013.17.12 12:34:04
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
+function tick(Caster, Target)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/HarvestMana.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/HarvestMana.lua
new file mode 100755
index 000000000..59fe8b0e8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/HarvestMana.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/HarvestMana.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 04:10:40
+ Script Purpose :
+ :
+--]]
+
+-- Increases power of caster by 34 instantly and every second
+function cast(Caster, Target, MinHeal)
+ SpellHeal("Power", MinHeal)
+ AddControlEffect(Target, 2)
+end
+
+
+function tick(Caster, Target, MinHeal)
+SpellHeal("Power", MinHeal)
+end
+
+function remove(Caster, Target)
+RemoveControlEffect(Target, 2)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/IceComet.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/IceComet.lua
new file mode 100755
index 000000000..f9bc9bc5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/IceComet.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/IceComet.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 03:10:40
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 2837 - 5269 cold damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Applies Knockdown on termination. Lasts for 1.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+if not IsEpic(Target) then
+ Knockback(Caster, Target, 4000)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(1500, "RemoveKnockback")
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/IceSpears.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/IceSpears.lua
new file mode 100755
index 000000000..888639684
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/IceSpears.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/IceSpears.lua
+ Script Author : Zcoretri
+ Script Date : 2013.07.12 11:38:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, BonusAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+ AddSpellBonus(Target, 200, BonusAmt) -- vs Elemental
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal, BonusAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal, BonusAmt)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Iceshield.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Iceshield.lua
new file mode 100755
index 000000000..3d03a4e8d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Iceshield.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Iceshield.lua
+ Script Author : neatz09
+ Script Date : 2019.10.25 05:10:11
+ Script Purpose :
+ :
+--]]
+
+-- When damaged with a melee weapon this spell will cast Frost Spikes on target's attacker.
+-- Inflicts 83 - 101 cold damage on target
+-- Grants a total of 3 triggers of the spell.
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 16, 100)
+ SetSpellTriggerCount(3, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ ProcDamage(Caster, Target, "Frost Spikes", DmgType, MinVal, MaxVal)
+ RemoveTriggerFromSpell(1)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Immolation.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Immolation.lua
new file mode 100755
index 000000000..416516817
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Immolation.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Immolation.lua
+ Script Author : Zcoretri
+ Script Date : 2013.13.12 17:43:18
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DotMinVal, DotMaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DotMinVal, DotMaxVal)
+ if DotMaxVal ~= nil and DotMinVal < DotMaxVal then
+ SpellDamage(Target, DoTType, math.random(DotMinVal, DotMaxVal))
+ else
+ SpellDamage(Target, DoTType, DotMinVal)
+ end
+end
+
+
+function remove(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DotMinVal, DotMaxVal)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Incinerate.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Incinerate.lua
new file mode 100755
index 000000000..decb61124
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Incinerate.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Incinerate.lua
+ Script Author : Zcoretri
+ Script Date : 2013.07.12 07:08:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal)
+
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/LightningShock.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/LightningShock.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/LightningShock.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/MagmaChamber.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/MagmaChamber.lua
new file mode 100755
index 000000000..300b23860
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/MagmaChamber.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/MagmaChamber.lua
+ Script Author : Zcoretri
+ Script Date : 2013.06.12 09:12:10
+ Script Purpose :
+ :
+--]]
+
+-- Resistibility increases against targets higher than level 29.
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/MailofFrost.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/MailofFrost.lua
new file mode 100755
index 000000000..4359c3949
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/MailofFrost.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/MailofFrost.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- When target falls below 30% health this spell will cast Frost Ward on target. Lasts for 12.0 seconds.
+-- Wards caster against 729 points of all damage
+-- Grants a total of 1 trigger of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/ManaIntromission.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/ManaIntromission.lua
new file mode 100755
index 000000000..088716936
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/ManaIntromission.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/ManaIntromission.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 03:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Increases power of target by 136
+
+function cast(Caster, Target, MinHeal)
+ SpellHeal("Power", MinHeal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/NumbingCold.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/NumbingCold.lua
new file mode 100755
index 000000000..944f8cc49
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/NumbingCold.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/NumbingCold.lua
+ Script Author : neatz09
+ Script Date : 2020.01.17 11:01:22
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Slows targets in Area of Effect by 75.0%
+-- On a melee hit this spell may cast Dire Frost on target. Lasts for 20.0 seconds. Triggers about 6.0 times per minute.
+-- Roots target
+-- If Target is not Epic
+-- 5% chance to dispel when target takes damage
+-- Resistibility increases against targets higher than level 81.
+-- Does not affect Epic targets
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Portal.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Portal.lua
new file mode 100755
index 000000000..36b6f1b2a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Portal.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Portal.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 04:10:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ Evac()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Protoflame.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Protoflame.lua
new file mode 100755
index 000000000..0000d2af9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Protoflame.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/ServileSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 09:10:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RaysofDisintegration.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RaysofDisintegration.lua
new file mode 100755
index 000000000..b0afa6ba6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RaysofDisintegration.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/RaysofDisintegration.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 02:09:08
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 2744 - 4115 heat damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RingofIce.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RingofIce.lua
new file mode 100755
index 000000000..b81f3d5d9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RingofIce.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/RingofIce.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Roots target encounter
+-- Applies Icy Grasp on termination. Lasts for 12.0 seconds.
+-- Slows target by 34.2%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- 20% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RosBlade.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RosBlade.lua
new file mode 100755
index 000000000..27fc57922
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/RosBlade.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/RosBlade.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 10:10:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell may cast Flametongue on target of attack. Lasts for 3.0 seconds. Triggers about 5.0 times per minute.
+-- Inflicts 3 - 4 heat damage on target instantly and every second
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Shackle.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Shackle.lua
new file mode 100755
index 000000000..f8797edd7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Shackle.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Shackle.lua
+ Script Author : Zcoretri redone by Cynnar
+ Script Date : 2013.13.12 19:08:55 redone on 2016.26.09 21:05:55
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ -- Roots target
+ SetSpeedMultiplier(Target, 0)
+
+ -- 15% chance to dispel when target takes damage
+ AddProc(Target, 2, 15.0)
+
+ -- Resistibility increases against targets higher than level 34.
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+ SetSpeedMultiplier(Target, 1.0)
+
+ -- Applies Root in termination. Lasts for 10.0 seconds.
+ -- Slows target by X%
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Snow-filledSteps.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Snow-filledSteps.lua
new file mode 100755
index 000000000..a571cfb5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/Snow-filledSteps.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/Snow-filledSteps.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:25
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Fish Vision to group members (AE)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SnowfilledSteps.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SnowfilledSteps.lua
new file mode 100755
index 000000000..0288564bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SnowfilledSteps.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/SnowfilledSteps.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:03
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Fish Vision to group members (AE)
+
+function cast(Caster, Target)
+SetVision(Target, 4)
+ Say(Caster, "See Invis Not Implemented.")
+
+end
+
+
+function remove(Caster, Target)
+SetVision(Target, 0)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SolarFlare.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SolarFlare.lua
new file mode 100755
index 000000000..9233f8167
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SolarFlare.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/SolarFlare.lua
+ Script Author : Zcoretri
+ Script Date : 2013.06.12 09:12:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DmgType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SolarFlareX.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SolarFlareX.lua
new file mode 100755
index 000000000..9233f8167
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SolarFlareX.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/SolarFlare.lua
+ Script Author : Zcoretri
+ Script Date : 2013.06.12 09:12:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DmgType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/StormingTempest.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/StormingTempest.lua
new file mode 100755
index 000000000..d1cf8c8a9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/StormingTempest.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/StormingTempest.lua
+ Script Author : neatz09
+ Script Date : 2019.10.25 05:10:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Knockdown. Lasts for 1.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Inflicts 4 - 5 magic damage on target instantly and every 8 seconds
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/StormofLightning.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/StormofLightning.lua
new file mode 100755
index 000000000..478f23abb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/StormofLightning.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/StormOfLightning.lua
+ Script Author : Zcoretri
+ Script Date : 2013.09.12 21:42:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SurgeofRo.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SurgeofRo.lua
new file mode 100755
index 000000000..0b46b63f1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/SurgeofRo.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/SurgeofRo.lua
+ Script Author : neatz09
+ Script Date : 2019.10.25 05:10:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell will cast Flame Surge on target of spell. Lasts for 3.0 seconds.
+-- Inflicts 38 - 46 heat damage on target instantly and every second
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/TyrantsPact.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/TyrantsPact.lua
new file mode 100755
index 000000000..2c98e7695
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/TyrantsPact.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/TyrantsPact.lua
+ Script Author : Zcoretri
+ Script Date : 2013.13.12 19:30:32
+ Script Purpose : Increases INT and STR of group members by BonusAmt
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 4, BonusAmt) -- INT
+ AddSpellBonus(Target, 0, BonusAmt) -- STR
+end
+
+function remove(Caster, Target, BonusAmt)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/VitalTransfer.lua b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/VitalTransfer.lua
new file mode 100755
index 000000000..ac7c4e979
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Sorcerer/Wizard/VitalTransfer.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Sorcerer/Wizard/VitalTransfer.lua
+ Script Author : Zcoretri
+ Script Date : 2013.13.12 22:04:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Amount)
+ SpellHeal("Power", Amount)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/StaticPulse.lua b/server/Spells/Spells-Copy/Mage/StaticPulse.lua
new file mode 100755
index 000000000..a3c82da46
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/StaticPulse.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Mage/StaticPulse.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 01:12:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 2 - 3 magic damage on target instantly and every 4 seconds
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/StormofLightning.lua b/server/Spells/Spells-Copy/Mage/StormofLightning.lua
new file mode 100755
index 000000000..7e5466dae
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/StormofLightning.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/StormofLightning.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 01:12:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 22 - 27 magic damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/AqueousSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/AqueousSoul.lua
new file mode 100755
index 000000000..be621a52d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/AqueousSoul.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Summoner/AqueousSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 10:10:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Allows target to breathe under water
+BreatheUnderwater(Target, true)
+end
+
+
+
+function remove(Caster, Target)
+BreatheUnderwater(Target, False)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/AeryHunter.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/AeryHunter.lua
new file mode 100755
index 000000000..72e50552e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/AeryHunter.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/AeryHunter.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 01:10:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet aery hunter
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Antagonize.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Antagonize.lua
new file mode 100755
index 000000000..04ced8150
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Antagonize.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Antagonize.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 05:03:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Pot, Atk, DefSkills, OffSkills)
+ -- Increases Potency of target by 1.8%
+ AddSpellBonus(Target, 659, Pot)
+
+ -- Increases Attack Speed of target by 16.5
+ AddSpellBonus(Target, 617, Atk)
+
+ -- Decreases Defense and Parry of target by 4.9
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefSkills)
+
+ -- Increases Piercing, Slashing and Crushing of target by 3.0
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkills)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/AqueousSwarm.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/AqueousSwarm.lua
new file mode 100755
index 000000000..bc18730e6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/AqueousSwarm.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/ServileSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 09:10:19
+ Script Purpose :
+ :
+--]]
+
+-- Summons 3 limited pets to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/BlazingAvatar.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/BlazingAvatar.lua
new file mode 100755
index 000000000..9821090ee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/BlazingAvatar.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/BlazingAvatar.lua
+ Script Author : neatz09
+ Script Date : 2019.11.11 06:11:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged with a melee weapon this spell will cast Blaze on target's attacker.
+-- Inflicts 218 - 363 heat damage on target
+-- Grants a total of 5 triggers of the spell.
+-- On any combat or spell hit this spell will cast Blaze on target of attack.
+-- Inflicts 218 - 363 heat damage on target
+-- Grants a total of 5 triggers of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Burn.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Burn.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Burn.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CallofTheHero.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CallofTheHero.lua
new file mode 100755
index 000000000..7518fbc53
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CallofTheHero.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/CallofTheHero.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 12:10:03
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+-- This effect cannot be cast during combat
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+-- Teleports target to caster
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CatsEye.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CatsEye.lua
new file mode 100755
index 000000000..f73f19032
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CatsEye.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/CatsEye.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 12:10:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Sonic Vision to group members (AE)
+function cast(Caster, Target)
+ SetVision(Target, 2)
+ Say(Caster, "Still need see invis and verify that this is sonic vision")
+
+end
+
+
+function remove(Caster, Target)
+SetVision(Target, 0)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Communion.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Communion.lua
new file mode 100755
index 000000000..eeab73e82
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Communion.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Communion.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 03:10:22
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons three powerful planar beings to attack the conjuror's enemies.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ConjurorsPact.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ConjurorsPact.lua
new file mode 100755
index 000000000..e0d004c15
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ConjurorsPact.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/ConjurorsPact.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 06:03:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- When damaged this spell has a 25% chance to cast Exposed Elements on target's attacker. Lasts for 20.0 seconds.
+ AddProc(Target, 2, 25.0)
+
+ -- On any combat or spell hit this spell may cast Exposed Elements on target of attack. Lasts for 20.0 seconds. Triggers about 5.0 times per minute.
+ AddProc(Target, 1, 25.0)
+end
+
+function proc(Caster, Target, Type, BonusAmt)
+ if Type == 1 or Type == 2 then
+ -- When damaged this spell has a 25% chance to cast Exposed Elements on target's attacker. Lasts for 20.0 seconds.
+ -- Decreases Mitigation of target vs elemental and arcane damage by 141
+ local active = GetTempVariable(Target, "CONJURORS_PACT_PROC_ACTIVE")
+ if active == nil or active == "False" then
+ SetTempVariable(Target, "CONJURORS_PACT_PROC_ACTIVE", "True")
+ AddSpellBonus(Target, 201, BonusAmt)
+ AddSpellBonus(Target, 203, BonusAmt)
+ AddSpellTimer(20000, "RemoveProcEffect", Caster, Target)
+ end
+ end
+end
+
+function RemoveProcEffect(Caster, Target)
+ SetTempVariable(Target, "CONJURORS_PACT_PROC_ACTIVE", "False")
+ RemoveSpellBonus(Target)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CrystalBlast.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CrystalBlast.lua
new file mode 100755
index 000000000..f9936b69b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CrystalBlast.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/CrystalBlast.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 05:11:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+
+ -- Inflicts 11 - 15 magic damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CrystalBlastX.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CrystalBlastX.lua
new file mode 100755
index 000000000..04860535d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/CrystalBlastX.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/CrystalBlastX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 595 - 804 magic damage on target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/DefensiveHaven.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/DefensiveHaven.lua
new file mode 100755
index 000000000..27355d2ce
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/DefensiveHaven.lua
@@ -0,0 +1,49 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/DefensiveHaven.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 05:03:47
+ Script revision : Updated 4/13/2020 neatz09
+ :
+--]]
+
+function cast(Caster, Target, AtkSpeed, MaxHP, HateGain, Agg, Resist, HateMin, HateMax, Ward)
+ -- Decreases Attack Speed of target by 25.0
+ AddSpellBonus(Target, 617, AtkSpeed)
+
+ -- Increases Max Health of target by 9.0%
+ AddSpellBonus(Target, 607, MaxHP)
+
+ -- Increases Hate Gain of target by 11.9%
+ AddSpellBonus(Target, 624, HateGain)
+
+ -- Increases Aggression of target by 1.9
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), Agg)
+
+ -- Increases Mitigation of target vs arcane damage by 126
+ AddSpellBonus(Target, 203, Resist)
+
+ -- Increases Mitigation of target vs elemental damage by 126
+ AddSpellBonus(Target, 201, Resist)
+
+ -- Increases Mitigation of target vs noxious damage by 126
+ AddSpellBonus(Target, 202, Resist)
+
+ -- On any combat or spell hit this spell will cast Shout on target of attack.
+ -- Increases Threat to target encounter by 35 - 42
+ AddProc(Target, 1, 100)
+
+ -- Wards target against 13 points of all damage
+ AddWard(Ward, 1)
+end
+
+function proc(Caster, Target, Type, AtkSpeed, MaxHP, HateGain, Agg, Resist, HateMin, HateMax, Ward)
+ if Type == 1 then
+ProcHate(Caster, Target, math.random(HateMin, HateMax), "Shout")
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/EarthenAvatar.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/EarthenAvatar.lua
new file mode 100755
index 000000000..4eca8419f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/EarthenAvatar.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/EarthenAvatar.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 05:11:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet earthen avatar
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Earthquake.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Earthquake.lua
new file mode 100755
index 000000000..b5309f00e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Earthquake.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Earthquake.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 06:03:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 92 - 276 magic damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown on termination. Lasts for 1.5 seconds.
+ -- Throws target back
+ -- Stuns target
+ -- Blurs vision of target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 1500)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(1500, "RemoveKnockback")
+ end
+end
+
+function RemoveKnockback(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0.0)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalAspect.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalAspect.lua
new file mode 100755
index 000000000..03faf7714
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalAspect.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/ElementalAspect.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 04:03:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Power, Resist)
+ -- Increases Max Power of group members (AE) by 20.8
+ AddSpellBonus(Target, 619, Power)
+
+ -- Increases Mitigation of group members (AE) vs elemental damage by 79
+ AddSpellBonus(Target, 201, Resist)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalMastery.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalMastery.lua
new file mode 100755
index 000000000..6dd80cc47
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalMastery.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/ElementalMastery.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:25
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell has a 12% chance to cast Inferno on target of spell. Lasts for 12.0 seconds.
+-- Inflicts 592 - 888 heat damage on target
+-- Inflicts 194 - 292 heat damage on target every 3 seconds
+-- Applies Inferno. Lasts for 12.0 seconds.
+-- Increases Crit Chance of pet by 20.0
+-- Prevents AOE (except when direct)
+-- Cannot be modified except by direct means
+-- Improves the damage of the Conjuror's pet.
+-- Increases the base damage of hostile spells by 10%
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalUnity.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalUnity.lua
new file mode 100755
index 000000000..bc54027cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ElementalUnity.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/ElementalUnity.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 04:02:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a spell cast this spell will cast Elemental Vestment on target. Lasts for 15.0 seconds.
+-- On any combat or spell hit this spell will cast Force of the Elements on target of attack.
+-- Inflicts 77 heat damage on target encounter
+-- Inflicts 77 cold damage on target encounter
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/EssenceShift.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/EssenceShift.lua
new file mode 100755
index 000000000..db9248b1d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/EssenceShift.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/EssenceShift.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 06:03:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, Dmg, HealType, Power)
+ -- Inflicts 122 magic damage on target
+ SpellDamage(Target, DmgType, Dmg, Dmg, 2, 1)
+
+ -- Increases power of caster by 29
+ SpellHeal("Power", Power, Power, Caster, 2, 1)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FieryAnnihilation.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FieryAnnihilation.lua
new file mode 100755
index 000000000..b69a49788
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FieryAnnihilation.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/FieryAnnihilation.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 04:03:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, Dmg, DoTDmgType, DoTDmg)
+ -- Inflicts 15 heat damage on target
+ SpellDamage(Target, DmgType, Dmg)
+end
+
+function tick(Caster, Target, DmgType, Dmg, DoTDmgType, DoTDmg)
+ -- Inflicts 3 heat damage on target every 4 seconds
+ SpellDamage(Target, DoTDmgType, DoTDmg)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FieryMagician.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FieryMagician.lua
new file mode 100755
index 000000000..74943a014
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FieryMagician.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/FieryMagician.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FireSeed.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FireSeed.lua
new file mode 100755
index 000000000..c00d65035
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/FireSeed.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/FireSeed.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 10:10:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell has a 20% chance to cast Seed of Fire on target of attack. Lasts for 16.0 seconds.
+-- Inflicts 15 - 18 heat damage on target instantly and every 4 seconds
+-- On death this spell will cast Blooming Flames on caster.
+-- Inflicts 66 - 81 heat damage on target encounter
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Flameshield.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Flameshield.lua
new file mode 100755
index 000000000..3cc60ce82
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Flameshield.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Flameshield.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 06:03:12
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- When damaged with a melee weapon this spell will cast Flameshield on target's attacker.
+ AddProc(Target, 4, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, Dmg)
+ if Type == 4 then
+ -- When damaged with a melee weapon this spell will cast Flameshield on target's attacker.
+ -- Inflicts 10 heat damage on target
+ ProcDamage(Caster, Target, "Flameshield", DmgType, Dmg)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/GeoticRune.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/GeoticRune.lua
new file mode 100755
index 000000000..a795a3167
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/GeoticRune.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/GeoticRune.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 05:03:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Defense, Resist)
+ -- Increases Defense of group members' pets (AE) by 2.0
+ -- AddSkillBonus(Target, GetSkillIDByName("Defense"), Defense)
+
+ -- Increases Mitigation of group members (AE) vs all damage by 38
+ AddSpellBonus(Target, 200, Resist)
+ AddSpellBonus(Target, 201, Resist)
+ AddSpellBonus(Target, 202, Resist)
+ AddSpellBonus(Target, 203, Resist)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/HealServant.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/HealServant.lua
new file mode 100755
index 000000000..618addc22
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/HealServant.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/HealServant.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 03:03:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Heal, CureLevels)
+ -- Heals target for 17
+ SpellHeal("Heal", Heal)
+
+ -- Dispels 6 levels of any hostile effects on target
+ CureByType(1, 1, "", CureLevels)
+ CureByType(1, 2, "", CureLevels)
+ CureByType(1, 3, "", CureLevels)
+ CureByType(1, 4, "", CureLevels)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/IceStorm.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/IceStorm.lua
new file mode 100755
index 000000000..2380a7903
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/IceStorm.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : dd_snare.lua
+ Script Purpose : Generic damage + Snare effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, SnareAmount)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Snare component
+ local slow = 100.0 - SnareAmount
+ SetSpeedMultiplier(Target, slow)
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1.0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/MastersIntervention.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/MastersIntervention.lua
new file mode 100755
index 000000000..49b71b788
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/MastersIntervention.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/MastersIntervention.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 03:02:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Protect Servant on target.
+-- Dispels 48 levels of any hostile effects on target
+-- Heals target for 504
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/NajenasEssenceSummoning.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/NajenasEssenceSummoning.lua
new file mode 100755
index 000000000..16e6a8290
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/NajenasEssenceSummoning.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/NajenasEssenceSummoning.lua
+ Script Author : Neatz09
+ Script Date : 10/16/19
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, ItemID)
+ -- Summon 1 Shard of Esssence (Apprentice)
+ if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Petrify.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Petrify.lua
new file mode 100755
index 000000000..6e3761784
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Petrify.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Petrify.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 06:03:32
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 118 - 144 magic damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Stuns target
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/PlaneShift.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/PlaneShift.lua
new file mode 100755
index 000000000..ad335f646
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/PlaneShift.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/PlaneShift.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Quicksand.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Quicksand.lua
new file mode 100755
index 000000000..38292711a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Quicksand.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Quicksand.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.12 04:03:35
+ Script Purpose :
+ :
+--]]
+
+-- Resistibility increases against targets higher than level 29.
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ -- Roots target
+ SetSpeedMultiplier(Target, 0)
+
+ -- 15% chance to dispel when target takes damage
+ AddProc(Target, 2, 15.0)
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1.0)
+
+ -- Applies Quicksand on termination. Lasts for 10.0 seconds.
+ -- Slows target by 27.9%
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/RoaringFlames.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/RoaringFlames.lua
new file mode 100755
index 000000000..d74e75834
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/RoaringFlames.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/RoaringFlames.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 01:10:58
+ Script Purpose :
+ :
+--]]
+
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Sacrifice.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Sacrifice.lua
new file mode 100755
index 000000000..5733b1b24
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Sacrifice.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Sacrifice.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 01:10:02
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Sacrifice.
+-- Increases power of group members (AE) by 64
+-- Heals group members (AE) for 224
+-- Stuns target
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/SandBlast.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/SandBlast.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/SandBlast.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ShardofEssence.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ShardofEssence.lua
new file mode 100755
index 000000000..44f566949
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ShardofEssence.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/ShardofEssence.lua
+ Script Author : Neatz09
+ Script Date : 10/16/19
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, ItemID)
+ -- Summon 1 Shard of Essence (Apprentice)
+ if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ShatteredEarth.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ShatteredEarth.lua
new file mode 100755
index 000000000..b98c646b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/ShatteredEarth.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/ShatteredEarth.lua
+ Script Author : neatz09
+ Script Date : 2019.10.13 12:10:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+-- Inflicts 211 - 258 magic damage on target encounter instantly and every second
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Dazes target encounter
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 29.
+if not IsEpic(Target) then
+ AddControlEffect(Target, 3)
+end
+end
+function tick(Caster, Target, Dmgtype, MinVal, MaxVal)
+-- Inflicts 211 - 258 magic damage on target encounter instantly and every second
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Sleet.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Sleet.lua
new file mode 100755
index 000000000..c4b36a63b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Sleet.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : dd_snare.lua
+ Script Purpose : Generic damage + Snare effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, SnareAmount, DispelChance)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Snare component
+ OriginalSpeed = GetSpeed(Target)
+ newSpeed = OriginalSpeed - (OriginalSpeed * (SnareAmount / 100))
+
+ if OriginalSpeed > newSpeed then
+ SetSpeed(Target, newSpeed)
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, SnareAmount, DispelChance)
+--[[
+ OriginalSpeed = GetSpeed(Target)
+ newSpeed = OriginalSpeed - (OriginalSpeed * (SnareAmount / 100))
+
+ if OriginalSpeed > newSpeed then
+ SetSpeed(Target, newSpeed)
+ end
+--]]
+end
+
+function remove(Caster, Target)
+--[[
+ SetSpeed(Target, OriginalSpeed)
+--]]
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Stoneskin.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Stoneskin.lua
new file mode 100755
index 000000000..2783cff4b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/Stoneskin.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/Stoneskin.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 03:02:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Settle.
+-- Decreases Threat to targets in Area of Effect by 1,850
+-- Must be engaged in combat
+-- Will absorb all damage. This spell will absorb a total of 3 attacks.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/VehementSkin.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/VehementSkin.lua
new file mode 100755
index 000000000..ff9d29691
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/VehementSkin.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/VehementSkin.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 03:02:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Defense of target by 10.8
+-- Will absorb physical damage. This spell will absorb a total of 3 attacks.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/WindsofVelious.lua b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/WindsofVelious.lua
new file mode 100755
index 000000000..2c6edcd5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Conjuror/WindsofVelious.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Conjuror/WindsofVelious.lua
+ Script Author : neatz09
+ Script Date : 2019.11.11 05:11:10
+ Script Purpose :
+ :
+--]]
+
+-- Interrupts target
+-- Inflicts 90 - 111 cold damage on target instantly and every 4 seconds
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Interrupt(Target)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Slows target by 75.0%
+SetSpeedMultiplier(Target, 0.25)
+end
+
+-- Inflicts 90 - 111 cold damage on target instantly and every 4 seconds
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/DustBlast.lua b/server/Spells/Spells-Copy/Mage/Summoner/DustBlast.lua
new file mode 100755
index 000000000..262d29e03
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/DustBlast.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/DustBlast.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:20
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 33 - 49 magic damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Invisibility.lua b/server/Spells/Spells-Copy/Mage/Summoner/Invisibility.lua
new file mode 100755
index 000000000..b89e56d6e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Invisibility.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Invisibility.lua
+ Script Author : theFoof
+ Script Date : 2013.1.16 08:08:28
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+-- Grants invisibility to target
+-- Suspends target's movement speed enhancements
+-- Grants invisibility to pet
+-- Suspends pet's movement speed enhancements
+-- Dispelled when target takes damage
+-- This effect cancels during combat
+
+ Stealth(2)
+ if GetPet(Target) ~= nil then
+ Stealth(2, GetPet(Target))
+ elseif GetCharmedPet(Target) then
+ Stealth(2, GetCharmedPet(Target))
+ end
+end
+
+function remove(Caster, Target)
+ RemoveInvis()
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/MinionTranslocation.lua b/server/Spells/Spells-Copy/Mage/Summoner/MinionTranslocation.lua
new file mode 100755
index 000000000..b9151681a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/MinionTranslocation.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Summoner/MinionTranslocation.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 03:10:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Instantly change places with your summoned minion
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/AwakenGrave.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/AwakenGrave.lua
new file mode 100755
index 000000000..b54e1f321
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/AwakenGrave.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/AwakenGrave.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/BlightedHorde.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/BlightedHorde.lua
new file mode 100755
index 000000000..e2cf14d04
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/BlightedHorde.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/BlightedHorde.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 09:10:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons 3 limited pets to aid the caster
+function cast(Caster, Target)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Bloodcloud.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Bloodcloud.lua
new file mode 100755
index 000000000..42be1d238
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Bloodcloud.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Bloodcloud.lua
+ Script Author :
+ Script Date : 2013.12.08 02:12:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealVal, DmgType, DmgVal)
+ -- Heals caster for 75
+ SpellHeal("Heal", HealVal, 0, Caster)
+
+ -- Inflicts 184 disease damage on targets in Area of Effect
+ SpellDamage(Target, DmgType, DmgVal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Bloodcoil.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Bloodcoil.lua
new file mode 100755
index 000000000..0fcb0dd50
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Bloodcoil.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Bloodcoil.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 10:12:29
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 5 - 6 disease damage on target instantly and every 4 seconds
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/BloodyRitual.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/BloodyRitual.lua
new file mode 100755
index 000000000..f25ce8fbe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/BloodyRitual.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/BloodyRitual.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.08 12:12:38
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 21 magic damage on target instantly and every 4 seconds
+-- Increases power of caster by 6 instantly and every 4 seconds
+
+function cast(Caster, Target, dmgType, dmg, heal)
+ SpellDamage(Target, dmgType, dmg)
+ SpellHeal("Heal", heal)
+end
+
+function tick(Caster, Target, dmgType, dmg, heal)
+ SpellDamage(Target, dmgType, dmg)
+ SpellHeal("Heal", heal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ChainsofTorment.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ChainsofTorment.lua
new file mode 100755
index 000000000..f4420a0b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ChainsofTorment.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/ChainsofTorment.lua
+ Script Author : Cynnar
+ Script Date : 2016.09.21 19:19:47
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ if IsEpic(Target) then
+ return false, 43
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Snare)
+ -- Roots target
+ SetSpeedMultiplier(Target, Snare)
+
+ -- 15% chance to dispel when target takes damage
+ AddProc(Target, 2, 15.0)
+
+ -- Resistibility increases against targets higher than level 34.
+
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+ SetSpeedMultiplier(Target, 1.0)
+
+-- Applies Chains of Torment on termination. Lasts for 5.0 seconds.
+-- Makes target afraid
+-- Slows target by 13.9%
+-- Resistibility increases against targets higher than level 34.
+-- 30% chance to dispel when target takes damage
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Coil.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Coil.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Coil.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Consumption.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Consumption.lua
new file mode 100755
index 000000000..f3bf810df
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Consumption.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Consumption.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ControlUndead.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ControlUndead.lua
new file mode 100755
index 000000000..a2cca5b5f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ControlUndead.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/ControlUndead.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 07:11:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Charms target
+-- If outside an arena
+-- Certain enemies cannot be charmed
+-- Does not affect Epic targets
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DarkHeart.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DarkHeart.lua
new file mode 100755
index 000000000..e7852f12d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DarkHeart.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/DarkHeart.lua
+ Script Author : Neatz09
+ Script Date : 10/16/19
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, ItemID)
+ -- Summon 1 Dark Heart (Apprentice)
+ if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID, 1)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DeathlyPallor.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DeathlyPallor.lua
new file mode 100755
index 000000000..efd8d041c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DeathlyPallor.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/DeathlyPallor.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 05:10:27
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Feigns Death with 100% chance of success
+
+function cast(Caster, Target)
+SetServerControlFlag(Target, 5, 1, 1);
+ ClearHate(Target)
+ SendMessage(Caster, "Your feign death succeeded", "yellow")
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DoomingDarkness.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DoomingDarkness.lua
new file mode 100755
index 000000000..f277267ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/DoomingDarkness.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/DoomingDarkness.lua
+ Script Author : neatz09
+ Script Date : 2020.03.08 04:03:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Dooming Darkness. Lasts for 24.0 seconds.
+-- Applies Snare on termination. Lasts for 24.0 seconds.
+-- Slows target by 30.8%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- Slows target by 30.8%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- Interrupts target
+-- Inflicts 9 - 11 disease damage on target every 4 seconds
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Fear.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Fear.lua
new file mode 100755
index 000000000..9d2c5c4c9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Fear.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Fear.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 07:10:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Makes target afraid
+-- 30% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/FeastingSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/FeastingSoul.lua
new file mode 100755
index 000000000..fd2ed510c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/FeastingSoul.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/FeastingSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 11:10:55
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 112 disease damage on target instantly and every 4 seconds
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinHP, MinPwr)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellHeal(Heal, MinHP, nil, Caster, 2, 1)
+SpellHeal(Heal, MinPwr, nil, Caster, 2, 1)
+end
+
+
+-- Heals caster for 74 instantly and every 4 seconds
+-- Increases power of caster by 37 instantly and every 4 seconds
+function tick(Caster, Target, DmgType, MinVal, MaxVal, MinHP, MinPwr)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellHeal(Heal, MinHP, nil, Caster, 2, 1)
+SpellHeal(Heal, MinPwr, nil, Caster, 2, 1)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/FlayersSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/FlayersSoul.lua
new file mode 100755
index 000000000..0d2da2421
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/FlayersSoul.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/FlayersSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 06:10:01
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Power of target by 12.0%
+-- Increases Crushing, Piercing, Ranged, Slashing, Disruption, Subjugation and Ordination of target by 18.7
+-- Increases Piercing, Slashing, Ranged and Crushing of target by 31.2
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GraspingBones.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GraspingBones.lua
new file mode 100755
index 000000000..39f02b96b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GraspingBones.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/GraspingBones.lua
+ Script Author :
+ Script Date : 2013.12.08 02:12:54
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GreaterRot.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GreaterRot.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GreaterRot.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GrimSorcerer.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GrimSorcerer.lua
new file mode 100755
index 000000000..eb43bbadb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GrimSorcerer.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/GrimSorcerer.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PetID, MaxLevel)
+ -- Summons a pet
+ SummonPet(Caster, PetID, MaxLevel)
+end
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GrislyProtection.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GrislyProtection.lua
new file mode 100755
index 000000000..f3de25de5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/GrislyProtection.lua
@@ -0,0 +1,58 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/GrislyProtection.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.08 12:12:05
+ Script Purpose : Updated Proc Hate 4/16/20 Neatz09
+ :
+--]]
+
+function cast(Caster, Target, agg, procDmgType, procDmg, procHeal, atkSpeed, maxHP, hateGain, spellMit, procHateMin, procHateMax)
+ -- Increases Aggression of target by 1.9
+ AddSkillBonus(Target, GetSkillByName("Aggression"), agg)
+
+ -- Decreases Attack Speed of target by 25.0
+ AddSpellBonus(Target, 617, atkSpeed)
+
+ -- Increases Max Health of target by 9.0%
+ AddSpellBonus(Target, 607, maxHP)
+
+ -- Increases Hate Gain of target by 11.9%
+ AddSpellBonus(Target, 624, hateGain)
+
+ -- Increases Mitigation of target vs elemental and noxious damage by 126
+ -- Increases Mitigation of target vs arcane damage by 126
+ AddSpellBonus(Target, 201, spellMit)
+ AddSpellBonus(Target, 202, spellMit)
+ AddSpellBonus(Target, 203, spellMit)
+
+ AddProc(Target, 1, 100)
+ AddProc(Target, 2, 100)
+
+end
+
+function proc(Caster, Target, Type, agg, procDmgType, procDmg, procHeal, atkSpeed, maxHP, hateGain, spellMit, procHateMin, procHateMax)
+ if Type == 1 then
+ -- 1 = offensive
+
+ -- On any combat or spell hit this spell will cast Shout on target of attack.
+ -- Increases Threat to target encounter by 35 - 42
+ if procHateMax ~= nil and procHateMin < procHateMax then
+ProcHate(Caster, Target, math.random(procHateMin, procHateMax), "Shout")
+ end
+
+ elseif Type == 2 then
+ -- 2 = defensive
+
+ -- When damaged this spell will cast Grisly Feedback on target's attacker.
+ -- Inflicts 7 disease damage on target
+ -- Heals caster for 3
+ ProcDamage(Caster, Target, "Grisly Feedback", procDmgType, procDmg)
+ SpellHeal("Heal", procHeal, 0, Caster)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/HowloftheDamned.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/HowloftheDamned.lua
new file mode 100755
index 000000000..3f52c2853
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/HowloftheDamned.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/HowloftheDamned.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 11:12:43
+ Script Purpose : Updated 10-19-19 Neatz09
+ :
+--]]
+
+function cast(Caster, Target, atkSpeed, defPenalty, CastSkills, procDmgType, procDmg, procHeal, Focus)
+ -- Increases Attack Speed of target by 16.5
+ AddSpellBonus(Target, 617, atkSpeed)
+
+ -- Decreases Defense and Parry of target by 4.9
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), defPenalty)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), defPenalty)
+-- Increases Subjugation and Disruption of target by 4.5
+ -- Increases Focus of target by 4.5
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), Focus)
+AddSkillBonus(Target, GetSkillIDByName("Subjugation"), CastSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), CastSkills)
+end
+
+function proc(Caster, Target, Type, atkSpeed, defPenalty, focusBonus, procDmgType, procDmg, procHeal, castSkills)
+ -- On any combat or spell hit this spell may cast Clawing of the Soul on target of attack. Triggers about 2.0 times per minute.
+ -- Inflicts 49 disease damage on target
+ ProcDamage(Caster, Target, "Clawing of the Soul", procDmgType, procDmg)
+
+ -- Heals caster for 10
+ SpellHeal("Heal", procHeal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Lich.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Lich.lua
new file mode 100755
index 000000000..7b6337b4d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Lich.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Lich.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 07:11:57
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases power of caster by 3.6% instantly and every 6 seconds
+-- This effect cannot be critically applied.
+-- On a hostile spell cast this spell will cast Lich's Siphoning on target of spell.
+-- Inflicts 168 disease damage on target
+-- Heals caster for 122
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Lifetap.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Lifetap.lua
new file mode 100755
index 000000000..0565f7375
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Lifetap.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Lifetap.lua
+ Script Author :
+ Script Date : 2013.12.08 04:12:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, Dmg, Heal)
+ -- Inflicts 242 disease damage on target
+ SpellDamage(Target, DmgType, Dmg)
+
+ -- Heals caster for 99
+ SpellHeal("Heal", Heal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Locusts.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Locusts.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Locusts.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/MiragulsDarkHeartSummoning.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/MiragulsDarkHeartSummoning.lua
new file mode 100755
index 000000000..80b223ecc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/MiragulsDarkHeartSummoning.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/MiragulsDarkHeartSummoning.lua
+ Script Author : Neatz09
+ Script Date : 10/16/19
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, ItemID)
+ -- Summon 1 Dark Heart (Apprentice)
+ if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID, 1)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/MortalityMark.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/MortalityMark.lua
new file mode 100755
index 000000000..52374209b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/MortalityMark.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/MortalityMark.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 06:10:23
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases all damage done to target by 0.9%
+-- Decreases WIS of target by 47.3
+-- Increases WIS and STA of caster by 47.3
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 362
+-- Only affects targets level 17 and above
+
+function cast(Caster, Target, Dmg, Debuff, Buff, Mit)
+ Say(Caster, "Only affects targets level 17 and above not implemented yet")
+
+AddSpellBonus(Caster, 704, Dmg)
+ Say(Caster, "Unsure about 'Increases all damage done to target by 0.9% stat ID'")
+ AddSpellBonus(Target, 3, Debuff)
+ AddSpellBonus(Caster, 1, Buff)
+AddSpellBonus(Caster, 3, Buff)
+ AddSpellBonus(Caster, 201, Mit)
+ AddSpellBonus(Caster, 202, Mit)
+ AddSpellBonus(Caster, 203, Mit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSpellBonus(Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/NecromanticPact.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/NecromanticPact.lua
new file mode 100755
index 000000000..bebddd6d0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/NecromanticPact.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/NecromanticPact.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.08 01:12:35
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Necromantic Pact to qualifying pets.
+-- When damaged this spell has a 25% chance to cast Exposed Noxious on target's attacker. Lasts for 20.0 seconds.
+-- Decreases Mitigation of target vs noxious damage by 141
+-- On any combat or spell hit this spell may cast Exposed Noxious on target of attack. Lasts for 20.0 seconds. Triggers about 5.0 times per minute.
+-- Decreases Mitigation of target vs noxious damage by 141
+
+function cast(Caster, Target)
+ AddProc(Target, 1, 25)
+ AddProc(Target, 2, 25)
+end
+
+function proc(Caster, Target, Type, mitValue)
+ if type == 1 or Type == 2 then
+ AddSpellBonus(Target, 202, mitValue)
+ AddSpellTimer(20000, "RemoveDebuff")
+ end
+end
+
+function RemoveDebuff(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/NecroticReconstruction.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/NecroticReconstruction.lua
new file mode 100755
index 000000000..214a2d63f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/NecroticReconstruction.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/NecroticReconstruction.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 09:12:29
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, dispelLevels, healVal, tickHealVal)
+ -- Heals target for 9
+ SpellHeal("Heal", healVal)
+
+ -- Dispels 6 levels of any hostile effects on target
+ CureByType(1, 1, 0, dispelLevels)
+ CureByType(1, 2, 0, dispelLevels)
+ CureByType(1, 3, 0, dispelLevels)
+ CureByType(1, 4, 0, dispelLevels)
+end
+
+function tick(Caster, Target, dispelLevels, healVal, tickHealVal)
+ -- Heals target for 1 every second
+ SpellHeal("Heal", tickHealVal)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Nightshade.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Nightshade.lua
new file mode 100755
index 000000000..911c97283
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Nightshade.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Nightshade.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Pandemic.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Pandemic.lua
new file mode 100755
index 000000000..21a8cc540
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Pandemic.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Pandemic.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 10:12:04
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 3 - 4 disease damage on target encounter instantly and every 3 seconds
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/PestilentSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/PestilentSoul.lua
new file mode 100755
index 000000000..0d44387cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/PestilentSoul.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/PestilentSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 04:10:01
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 840 disease damage on targets in Area of Effect
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+ end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Rending.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Rending.lua
new file mode 100755
index 000000000..f230a4640
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Rending.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Rending.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 04:10:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Rending to qualifying pets.
+-- On any combat or spell hit this spell may cast Berserk on caster. Lasts for 10.0 seconds. Triggers about 4.0 times per minute.
+-- Increases Haste of target by 16.7
+-- Increases DPS of target by 16.7
+-- When damaged this spell has a 50% chance to cast Berserk on caster. Lasts for 10.0 seconds.
+-- Increases Haste of target by 16.7
+-- Increases DPS of target by 16.7
+-- On a kill this spell will cast Berserk on caster. Lasts for 10.0 seconds.
+-- Increases Haste of target by 16.7
+-- Increases DPS of target by 16.7
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Revivication.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Revivication.lua
new file mode 100755
index 000000000..4557e5f1c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Revivication.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Revivication.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 11:10:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 13% health and power
+-- If outside an arena
+-- If between levels 1 - 6
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SecretsofVazaelle.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SecretsofVazaelle.lua
new file mode 100755
index 000000000..418b04080
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SecretsofVazaelle.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/SecretsofVazaelle.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell has a 12% chance to cast Poisonous Blast on target of spell. Lasts for 12.0 seconds.
+-- Inflicts 786 - 1179 poison damage on target
+-- Inflicts 194 - 292 poison damage on target every 3 seconds
+-- Applies Poisonous Blast. Lasts for 12.0 seconds.
+-- Increases Crit Chance of pet by 20.0
+-- Prevents AOE (except when direct)
+-- Cannot be modified except by direct means
+-- Improves the damage of the Necromancer's pet.
+-- Damage over time spells increase damage with each tick. Damage ceases to increase after 5 ticks.
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ServileSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ServileSoul.lua
new file mode 100755
index 000000000..9e332ad29
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/ServileSoul.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/ServileSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 09:10:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SiphoningofSouls.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SiphoningofSouls.lua
new file mode 100755
index 000000000..bfaaf3405
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SiphoningofSouls.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/SiphoningofSouls.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases INT of target by 36.5
+-- When the target of this spell dies, the necromancer draws a random soul spell from the enemy. The soul spell can be used three times.
+-- Decreases STR of target by 36.5
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SoothingSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SoothingSoul.lua
new file mode 100755
index 000000000..57bceefab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SoothingSoul.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/SoothingSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 05:10:44
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 89 instantly and every 4 seconds
+
+function cast(Caster, Target, MinVal)
+SpellHeal("Heal", Min)
+end
+
+function tick(Caster, Target, MinVal)
+SpellHeal("Heal", Min)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Soulrot.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Soulrot.lua
new file mode 100755
index 000000000..080672f36
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Soulrot.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Soulrot.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 07:11:58
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 2 - 3 disease damage on target instantly and every second
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SoulrotX.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SoulrotX.lua
new file mode 100755
index 000000000..9e0a209d4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/SoulrotX.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/SoulrotX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 125 - 169 disease damage on target instantly and every second
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/TeachingsoftheUnderworld.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/TeachingsoftheUnderworld.lua
new file mode 100755
index 000000000..0d0af1bc5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/TeachingsoftheUnderworld.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/TeachingsoftheUnderworld.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.08 12:12:12
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases STA and INT of group members (AE) by 9.4
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 1, BonusAmt)
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/TransferLife.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/TransferLife.lua
new file mode 100755
index 000000000..fc348051c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/TransferLife.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/TransferLife.lua
+ Script Author : neatz09
+ Script Date : 2019.09.14 06:09:47
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 491
+
+function cast(Caster, Target, Amt)
+ SpellHeal("Heal", Amt)
+end
+
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UndeadHorde.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UndeadHorde.lua
new file mode 100755
index 000000000..58c233f3d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UndeadHorde.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/UndeadHorde.lua
+ Script Author : neatz09
+ Script Date : 2020.01.19 08:01:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons 12 limited pets to aid the caster
+-- Summons a limited pet to aid the caster
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UndeadKnight.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UndeadKnight.lua
new file mode 100755
index 000000000..8958d1efe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UndeadKnight.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/UndeadKnight.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 07:11:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet undead knight
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnholyCovenant.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnholyCovenant.lua
new file mode 100755
index 000000000..a312b200c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnholyCovenant.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/UnholyCovenant.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.07 10:12:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, powerBonus, mitBonus)
+ -- Increases Max Power of group members (AE) by 20.8
+ AddSpellBonus(Target, 619, powerBonus)
+
+ -- Increases Mitigation of group members (AE) vs noxious damage by 79
+ AddSpellBonus(Target, 202, mitBonus)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnlivingEyes.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnlivingEyes.lua
new file mode 100755
index 000000000..20278608e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnlivingEyes.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/UnlivingEyes.lua
+ Script Author : neatz09
+ Script Date : 2019.10.19 06:10:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to group members (AE)
+-- Grants Ultravision to group members (AE)
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnstoppableSoul.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnstoppableSoul.lua
new file mode 100755
index 000000000..91ea47df4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/UnstoppableSoul.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/UnstoppableSoul.lua
+ Script Author : neatz09
+ Script Date : 2020.01.09 05:01:12
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of target by 12.0%
+-- Increases Mitigation of target vs physical damage by 454
+
+function cast(Caster, Target, HP, Mit)
+ AddSpellBonus(Target, 607, HP)
+ AddSpellBonus(Target, 200, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Vampirism.lua b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Vampirism.lua
new file mode 100755
index 000000000..edcad6c1e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Necromancer/Vampirism.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Necromancer/Vampirism.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 07:11:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/Petrify.lua b/server/Spells/Spells-Copy/Mage/Summoner/Petrify.lua
new file mode 100755
index 000000000..b78ed03cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/Petrify.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Mage/Summoner/Petrify.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Stuns target
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/SootheServant.lua b/server/Spells/Spells-Copy/Mage/Summoner/SootheServant.lua
new file mode 100755
index 000000000..d3dcaf843
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/SootheServant.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Mage/Summoner/SootheServant.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 10:10:05
+ Script Purpose :
+ :
+--]]
+
+
+-- Heals target for 85
+
+function cast(Caster, Target, Min)
+SpellHeal(Heal, Min)
+end
diff --git a/server/Spells/Spells-Copy/Mage/Summoner/VampireBats.lua b/server/Spells/Spells-Copy/Mage/Summoner/VampireBats.lua
new file mode 100755
index 000000000..4f1ca73c3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Mage/Summoner/VampireBats.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Mage/Summoner/VampireBats.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.08 12:12:29
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, bonus)
+ -- Inflicts 14 - 22 piercing damage on target instantly and every 4 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+
+ -- Decreases Defense of target by 2.7
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), bonus)
+end
+
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ -- Inflicts 14 - 22 piercing damage on target instantly and every 4 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/MaliciousVelocity.lua b/server/Spells/Spells-Copy/MaliciousVelocity.lua
new file mode 100755
index 000000000..f8c70fc34
--- /dev/null
+++ b/server/Spells/Spells-Copy/MaliciousVelocity.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/MaliciousVelocity.lua
+ Script Author : neatz09
+ Script Date : 2020.05.20 07:05:46
+ Script Purpose :
+ :
+--]]
+
+-- Increases speed of caster by 5.0%
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 609, 5)
+end
diff --git a/server/Spells/Spells-Copy/Priest/ApprenticesCure.lua b/server/Spells/Spells-Copy/Priest/ApprenticesCure.lua
new file mode 100755
index 000000000..81ec4fc52
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/ApprenticesCure.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/ApprenticesCure.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 1
+-- But your target is not diseased!
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/AdmonishingSmite.lua b/server/Spells/Spells-Copy/Priest/Cleric/AdmonishingSmite.lua
new file mode 100755
index 000000000..3fdcc9fb4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/AdmonishingSmite.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/AdmonishingSmite.lua
+ Script Author : neatz09
+ Script Date : 2019.08.05 07:08:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 25 - 31 divine damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+-- Dazes target
+-- If Target is not Epic
+-- Dispelled when target receives hostile action
+-- Dispelled when target takes damage
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/ArchHealing.lua b/server/Spells/Spells-Copy/Priest/Cleric/ArchHealing.lua
new file mode 100755
index 000000000..46b304aee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/ArchHealing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/ArchHealing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 182 - 223
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/CombatHealing.lua b/server/Spells/Spells-Copy/Priest/Cleric/CombatHealing.lua
new file mode 100755
index 000000000..98c9a40c8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/CombatHealing.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Cleric/CombatHealing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:08
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 91 - 111
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Daring.lua b/server/Spells/Spells-Copy/Priest/Cleric/Daring.lua
new file mode 100755
index 000000000..7bdd192a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Daring.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Daring.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases STA of group members (AE) by 13.8
+-- Increases Mitigation of group members (AE) vs physical damage by 131
+
+function cast(Caster, Target, Sta, Mit)
+ AddSpellBonus(Target, 1, Sta)
+ AddSpellBonus(Target, 200, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/DivineAwakening.lua b/server/Spells/Spells-Copy/Priest/Cleric/DivineAwakening.lua
new file mode 100755
index 000000000..c4a2e45b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/DivineAwakening.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Cleric/DivineAwakening.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:36
+ Script Purpose :
+ :
+--]]
+
+-- This effect cannot be cast during combat
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target, ItemID)
+if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Absolution.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Absolution.lua
new file mode 100755
index 000000000..3f5d956ee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Absolution.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Absolution.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Has a 50% chance to cast an additional heal 0.5 seconds after Alleviation, Fanatical Healing or Ministration is cast.
+-- On a combat hit this spell may cast Penitent Smite on target of attack. Lasts for 12.0 seconds. Triggers about 1.8 times per minute.
+-- Makes group members (AE) immune to Daze and Stifle effects
+-- Inflicts 652 - 978 divine damage on target
+-- Cannot be modified except by direct means
+-- Improves the casting and reuse speed of heals by 15%
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ActofWar.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ActofWar.lua
new file mode 100755
index 000000000..03634ae54
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ActofWar.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/ActofWar.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 11:10:55
+ Script Purpose :
+ :
+--]]
+
+
+-- On any combat or spell hit this spell may cast Strike of Faith on target of attack. Triggers about 1.0 times per minute.
+-- Inflicts 83 divine damage on target
+
+function cast(Caster, Target, DmgType, Dmg)
+ AddProc(Target, 1, 1.7, nil, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, Dmg)
+ ProcDamage(Caster, Target, "Strike of Faith", DmgType, Dmg)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/AdmonishingInvocation.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/AdmonishingInvocation.lua
new file mode 100755
index 000000000..fc86b7106
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/AdmonishingInvocation.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : dd_interrupt.lua
+ Script Purpose : Generic damage + stun script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, EffectChance)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Effect component - if EffectChance is blank, always apply the effect, otherwise random
+ if EffectChance ~= nil then
+ if EffectChance >= math.random(1, 100) then
+ -- Interrupt(Target)
+ end
+ else
+ -- Interrupt(Target)
+ end
+
+
+end
+
+function remove(Caster, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Alleviation.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Alleviation.lua
new file mode 100755
index 000000000..fd82ed751
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Alleviation.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Alleviation.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 09:03:54
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinHeal, MaxHeal)
+ -- Heals group members (AE) for 107 - 131
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/CleansingoftheSoul.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/CleansingoftheSoul.lua
new file mode 100755
index 000000000..2a5938a76
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/CleansingoftheSoul.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/CleansingoftheSoul.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 09:03:00
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 176 levels of physical, elemental, noxious, arcane hostile effects on group members (AE)
+-- Casts Penitent Cleansing for each successful Dispel.
+-- Heals target for 714 - 1071
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/CombatTreatment.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/CombatTreatment.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/CombatTreatment.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Condemn.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Condemn.lua
new file mode 100755
index 000000000..6f8fa1b81
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Condemn.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Condemn.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 08:03:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Decreases Mitigation of target vs all damage by 23
+ AddSpellBonus(Target, 200, BonusAmt)
+ AddSpellBonus(Target, 201, BonusAmt)
+ AddSpellBonus(Target, 202, BonusAmt)
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ConversionoftheSoul.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ConversionoftheSoul.lua
new file mode 100755
index 000000000..85c1b1266
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ConversionoftheSoul.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/ConversionoftheSoul.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 08:03:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Conversion of the Soul on termination.
+-- Heals target for 50.0% of max health
+-- This effect cannot be critically applied.
+-- Increases power of target by 30.0%
+-- This effect cannot be critically applied.
+-- Resurrects target with 15% health and power
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Deny.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Deny.lua
new file mode 100755
index 000000000..520742ca4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Deny.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Deny.lua
+ Script Purpose : Inquisitor Debuff spell
+ Script Author : Zcoretri
+ Script Date : 23.May.2010
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Debuff)
+ -- Debuff INT and STR
+ AddSpellBonus(Target, 0, Debuff)
+ AddSpellBonus(Target, 4, Debuff)
+--missing bleedthrough
+end
+
+
+function remove(Caster, Target, Debuff)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Disorientation.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Disorientation.lua
new file mode 100755
index 000000000..4be2d10e6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Disorientation.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Disorientation.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 09:03:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Hate)
+ -- Decreases Threat to targets in Area of Effect by 323
+ AddHate(Caster, Target, Hate)
+
+ -- Stuns targets in Area of Effect
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+
+ -- Decreases threat priority of targets in Area of Effect by 1 position
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Dogma.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Dogma.lua
new file mode 100755
index 000000000..f2cb83528
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Dogma.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Dogma.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 12:10:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target, DmgType, DmgVal)
+ AddProc(Target, 12, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgVal)
+ -- On a beneficial spell cast this spell will cast Convert Ally on target of spell cast.
+ if Type == 12 then
+ -- Heals target for 128
+ ProcHeal(Caster, Target, "Convert Ally", "Heal", HealVal, 0, "You cast Convert Ally on %t")
+
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/EvidenceofFaith.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/EvidenceofFaith.lua
new file mode 100755
index 000000000..99fc9667c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/EvidenceofFaith.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/EvidenceofFaith.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 08:03:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When any damage is received this spell will cast Vengeful Faith on target, which can be triggered up to 9 times across all targets.
+-- Heals target for 176 - 216
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FanaticalHealing.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FanaticalHealing.lua
new file mode 100755
index 000000000..f4e67985d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FanaticalHealing.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : FanaticalHealing.lua
+ Script Purpose : Inquisitor large direct heal
+ Script Author : Zcoretri
+ Script Date : 23.May.2010
+ Script Notes :
+--]]
+
+function cast(Caster, Target, MinHeal, MaxHeal)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Fanaticism.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Fanaticism.lua
new file mode 100755
index 000000000..b7f6292f8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Fanaticism.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Fanaticism.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 11:10:40
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stats, Avoid, Reuse, Haste, Mit)
+--Increases INT, AGI, STR and WIS of group members (AE) by 79.2
+ AddSpellBonus(Target, 0, Stats)
+ AddSpellBonus(Target, 2, Stats)
+ AddSpellBonus(Target, 4, Stats)
+ AddSpellBonus(Target, 3, Stats)
+-- Adds 1.5% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+-- Increases Ability Reuse Speed of group members (AE) by 5.4%
+ AddSpellBonus(Target, 662, Reuse)
+-- Increases Haste of group members (AE) by 45.0
+ AddSpellBonus(Target, 617, Haste)
+-- Increases Mitigation of group members (AE) vs elemental, noxious and arcane damage by 497
+ AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 203, Mit)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FanaticsFaith.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FanaticsFaith.lua
new file mode 100755
index 000000000..efdeee603
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FanaticsFaith.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/FanaticsFaith.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 09:03:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Sta, Arcane)
+ -- Increases STA of group members (AE) by 3.0
+ AddSpellBonus(Target, 1, Sta)
+
+ -- Increases Mitigation of group members (AE) vs arcane damage by 194
+ AddSpellBonus(Target, 203, Arcane)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FerventFaith.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FerventFaith.lua
new file mode 100755
index 000000000..b7eaf3ced
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/FerventFaith.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/FerventFaith.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 12:10:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 140 levels of hostile Fear, hostile Root, hostile Stifle, hostile Stun, hostile Daze and hostile Mesmerize effects on caster
+function cast(Caster, Target, Levels)
+ CureByControlEffect(1, 1, "Cure", Levels)
+ CureByControlEffect(1, 2, "Cure", Levels)
+ CureByControlEffect(1, 3, "Cure", Levels)
+ CureByControlEffect(1, 4, "Cure", Levels)
+end
+
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+--not implemented
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ForcedObedience.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ForcedObedience.lua
new file mode 100755
index 000000000..f5b653bc5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ForcedObedience.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/ForcedObedience.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 09:03:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ -- Decreases Ranged, Piercing, Slashing and Crushing of target encounter by 4.9
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Heresy.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Heresy.lua
new file mode 100755
index 000000000..9e4561d0e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Heresy.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Heresy.lua
+ Script Author : neatz09
+ Script Date : 2019.10.04 06:10:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a spell cast this spell will cast Heretical Strike on target.
+-- Applies Knockdown. Lasts for 2.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Inflicts 446 - 744 divine damage on target
+-- Grants a total of 3 triggers of the spell.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/HereticsDoom.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/HereticsDoom.lua
new file mode 100755
index 000000000..e6d61ed14
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/HereticsDoom.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/HereticsDoom.lua
+ Script Author : neatz09
+ Script Date : 2019.10.04 06:10:28
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 180 - 220 heat damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Incarcerate.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Incarcerate.lua
new file mode 100755
index 000000000..751e49970
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Incarcerate.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Incarcerate.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 07:03:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Roots target
+-- Stifles target
+-- If Target is not Epic
+-- 20% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Inquest.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Inquest.lua
new file mode 100755
index 000000000..87119b4a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Inquest.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Inquest.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 07:03:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell has a 10% chance to cast The Pain of Confession on target of attack.
+-- Decreases power of target by 0.9%
+-- This effect cannot be critically applied.
+-- Increases power of caster by 0.4%
+-- This effect cannot be critically applied.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Inquisition.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Inquisition.lua
new file mode 100755
index 000000000..7e03492a7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Inquisition.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Inquisition.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 09:03:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Inquisition.
+-- Heals group members (AE) for 316 - 386
+-- If Target is closer than 8 meters
+-- Heals group members (AE) for 117 - 143
+-- If Target is between 8 and 15 meters away
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Invocation.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Invocation.lua
new file mode 100755
index 000000000..4056e4c74
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Invocation.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Invocation.lua
+ Script Author : JohnAdams
+ Script Date : 2013.11.17 05:11:19
+ Script Purpose : Inquisitor Direct Damage spell + interrupt
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+
+ -- DD component
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DmgType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+
+ -- Interrupt component
+ if target ~= nil then
+ Interrupt(Caster, Target)
+ end
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Litany.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Litany.lua
new file mode 100755
index 000000000..5d38a5bed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Litany.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Litany.lua
+ Script Author : neatz09
+ Script Date : 2019.10.04 06:10:08
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+-- Interrupts target encounter
+-- Inflicts 379 - 464 divine damage on target encounter
+Interrupt(Caster, Target)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MalevolentDiatribe.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MalevolentDiatribe.lua
new file mode 100755
index 000000000..11ce53bae
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MalevolentDiatribe.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/MalevolentDiatribe.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 09:03:40
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ SetSpellTriggerCount(9, 1)
+ AddProc(Target, 2, 100)
+end
+
+function proc(Caster, Target, Type, MinHeal, MaxHeal)
+ -- When any damage is received this spell will cast Atoning Faith on target, which can be triggered up to 9 times across all targets.
+ -- Heals target for 44 - 54
+ if Type == 2 then
+ SpellHeal("Heal", MinHeal, MaxHeal, Caster)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Ministration.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Ministration.lua
new file mode 100755
index 000000000..a2db80247
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Ministration.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Ministration.lua
+ Script Purpose : Inquisitor small direct heal
+ Script Author : Zcoretri
+ Script Date : 23.May.2010
+ Script Notes :
+--]]
+
+function cast(Caster, Target, MinHeal, MaxHeal)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MinistrationX.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MinistrationX.lua
new file mode 100755
index 000000000..26411650e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MinistrationX.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/MinistrationX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MinorRecovery.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MinorRecovery.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/MinorRecovery.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Penance.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Penance.lua
new file mode 100755
index 000000000..81859c1ca
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Penance.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Penance.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 08:03:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Grants a total of 5 triggers of the spell.
+ SetSpellTriggerCount(5, 1)
+
+ -- When any damage is received this spell will cast Vengeful Faith on target.
+ AddProc(Target, 2, 100)
+end
+
+function proc(Caster, Target, Type, MinHeal, MaxHeal)
+ -- When any damage is received this spell will cast Vengeful Faith on target.
+ if Type == 2 then
+ -- Heals target for 38 - 46
+ SpellHeal("Heal", MinHeal, MaxHeal, Caster)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/PurifyingFlames.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/PurifyingFlames.lua
new file mode 100755
index 000000000..6a025c457
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/PurifyingFlames.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/PurifyingFlames.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 09:10:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal, BonusAmt)
+-- Inflicts 33 - 40 heat damage on target instantly and every 4 seconds
+SpellDamage(Target, DoTType, MinVal, MaxVal)
+-- Decreases Mitigation of target vs arcane damage by 207
+ AddSpellBonus(Target, 203, BonusAmt)
+
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Redemption.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Redemption.lua
new file mode 100755
index 000000000..d701e38a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Redemption.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Redemption.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 07:03:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Redemption on caster. Lasts for 36.0 seconds.
+-- Heals target for 512
+-- Increases Max Health of target by 362.5
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ReformingSoul.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ReformingSoul.lua
new file mode 100755
index 000000000..e92b6d420
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ReformingSoul.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/ReformingSoul.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Reforming Soul on termination. Lasts for 1 minute.
+-- Increases Mitigation of target vs noxious and arcane damage by 220
+-- Heals target for 27.6% of max health
+-- Increases Mitigation of target vs elemental damage by 220
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 75.0
+-- Decreases Lethality of target by 75.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Repentance.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Repentance.lua
new file mode 100755
index 000000000..45a029e19
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Repentance.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Repentance.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 09:03:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Grants a total of 3 triggers of the spell.
+ SetSpellTriggerCount(3, 1)
+
+ -- On any combat or spell hit this spell will cast Repenting Strike on caster. Lasts for 2.5 seconds.
+ AddProc(Target, 1, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgMin, DmgMax)
+ if Type == 1 then
+ -- Inflicts 88 - 147 divine damage on target
+ ProcDamage(Target, Caster, "Repenting Strike", DmgType, DmgMin, DmgMax)
+
+ -- Stuns target
+ -- If Target is not Epic
+ if not IsEpic(Caster) then
+ AddControlEffect(Caster, 4)
+ AddSpellTimer(2500, "RemoveStun", Caster, Target)
+ end
+
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function RemoveStun(Caster, Target)
+ RemoveControlEffect(Caster, 4)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ResoluteFlagellant.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ResoluteFlagellant.lua
new file mode 100755
index 000000000..a4cb80b69
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/ResoluteFlagellant.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/ResoluteFlagellant.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 08:10:55
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 42 levels of any hostile effects on group members (AE)
+function cast(Caster, Target, Amt)
+ CureByType(Amt, 0, "Cure")
+end
+
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Resurgence.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Resurgence.lua
new file mode 100755
index 000000000..df4032d15
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Resurgence.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Resurgence.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 98.0
+-- Decreases Lethality of target by 98.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- Applies Reforming Soul on termination. Lasts for 1 minute.
+-- Increases Mitigation of target vs noxious and arcane damage by 360
+-- Heals target for 27.6% of max health
+-- Increases Mitigation of target vs elemental damage by 360
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/SacredArmor.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/SacredArmor.lua
new file mode 100755
index 000000000..cd9d64095
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/SacredArmor.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : SacredArmor.lua
+ Script Purpose : Inquisitor Sacred Armor spell line
+ Script Author : Zcoretri
+ Script Date : 23.May.2010
+ Script Notes :
+--]]
+
+function cast(Caster, Target, HealthAmt, MitAmt)
+ AddSpellBonus(Target, 500, HealthAmt, 1)
+ AddSpellBonus(Target, 200, MitAmt, 11, 21, 31)
+end
+
+function remove(Caster, Target, HealthAmt, MitAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Shame.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Shame.lua
new file mode 100755
index 000000000..c8662b66c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Shame.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : debuff.lua
+ Script Purpose : Generic Debuff script
+ Script Author : John Adams
+ Script Date : 2008.12.05
+--]]
+
+function cast(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 1
+ -- Need functionality to buff/debuff
+ if DebuffType == "Defense" then
+ -- ModifyDefense(Target, -DebuffValue)
+ end
+ if DebuffType == "Elemental" then
+ -- ModifyHeat(Target, -DebuffValue)
+ -- ModifyCold(Target, -DebuffValue)
+ end
+ if DebuffType == "Noxious" then
+ -- ModifyPoison(Target, -DebuffValue)
+ -- ModifyDisease(Target, -DebuffValue)
+ end
+
+end
+
+function tick(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+-- Need functionality to restore original mitigations
+
+ if DebuffType == "Defense" then
+ -- ModifyDefense(Target, Original)
+ end
+ if DebuffType == "Elemental" then
+ -- ModifyHeat(Target, Original)
+ -- ModifyCold(Target, Original)
+ end
+ if DebuffType == "Noxious" then
+ -- ModifyPoison(Target, Original)
+ -- ModifyDisease(Target, Original)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Swill.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Swill.lua
new file mode 100755
index 000000000..f75a7905f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Swill.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Swill.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 11:10:46
+ Script Purpose :
+ :
+--]]
+
+-- Increases Swimming of group members (AE) by 62.1
+-- Allows group members (AE) to breathe under water
+
+function cast(Caster, Target, Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Swimming"), Skill)
+BreatheUnderwater(Target, true)
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+BreatheUnderwater(Target, false)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Tenacity.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Tenacity.lua
new file mode 100755
index 000000000..19879c1b1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Tenacity.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Tenacity.lua
+ Script Purpose : Inquisitor Tenacity spell line
+ Script Author : Zcoretri
+ Script Date : 23.May.2010
+ Script Notes :
+--]]
+
+function cast(Caster, Target, HealthAmt, SkillAmt)
+ AddSpellBonus(Target, 1, HealthAmt) -- Sta
+ AddSpellBonus(Target, 641, SkillAmt) -- Multi Attack
+end
+
+function remove(Caster, Target, HealthAmt, SkillAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Torment.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Torment.lua
new file mode 100755
index 000000000..2dcab090b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Torment.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Torment.lua
+ Script Purpose : Inquisitor Debuff + DoT Damage
+ Script Author : Zcoretri
+ Script Date : 23.May.2010 UPDated by neatz09 10-15-19
+ Script Notes :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, Debuff)
+ Say(Caster, "Combat Mitigation component not supported")
+
+-- Debuff component
+ AddSpellBonus(Target, 203, Debuff)
+ -- Instant Damage
+SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function tick(Caster, Target, DmgType, MinDmg, MaxDmg)
+SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function remove(Caster, Target)
+RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/TormentingConversion.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/TormentingConversion.lua
new file mode 100755
index 000000000..4fbd3a691
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/TormentingConversion.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/TormentingConversion.lua
+ Script Author : neatz09
+ Script Date : 2020.03.02 08:03:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Traumatization on termination. Lasts for 8.8 seconds.
+-- Decreases Threat to target by 2,087 instantly and Decreases Threat by 2,089 every 1.8 seconds thereafter
+-- Mesmerizes target
+-- Dispelled when target takes damage
+-- Epic targets gain an immunity to Mesmerize effects of 26.3 seconds and duration is reduced to 2.9 seconds.
+-- Resistibility increases against targets higher than level 76.
+-- Makes target afraid
+-- 30% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Vengeance.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Vengeance.lua
new file mode 100755
index 000000000..9cb6e5959
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Vengeance.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Vengeance.lua
+ Script Author : neatz09
+ Script Date : 2019.10.04 05:10:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgVal)
+ AddProc(Target, 16, 100)
+ -- Grants a total of 5 triggers of the spell.
+ SetSpellTriggerCount(5, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgVal)
+ -- On a melee hit this spell will cast Vengeance on caster.
+ if Type == 16 then
+ -- -- Inflicts 237 divine damage on target
+ ProcDamage(Caster, Target, "Vengeance", Type, DmgType, DmgVal)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Verdict.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Verdict.lua
new file mode 100755
index 000000000..335114b40
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Verdict.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Inquisitor/Verdict.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 11:10:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Verdict on termination.
+-- Reduces target's health to 1.
+-- If under 5% Health
+-- Applies Verdict.
+-- Reduces target's health to 1.
+-- If Target is Weak
+-- If under 50% Health
+-- Applies Verdict.
+-- Reduces target's health to 1.
+-- Certain creature strengths only
+-- If under 25% Health
+-- Applies Verdict.
+-- Reduces target's health to 1.
+-- If Target is stronger than Standard
+-- If under 10% Health
+-- Applies Verdict.
+-- Reduces target's health to 1.
+-- If Target is Epic
+-- If under 2% Health
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Weakness.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Weakness.lua
new file mode 100755
index 000000000..c8662b66c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Weakness.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : debuff.lua
+ Script Purpose : Generic Debuff script
+ Script Author : John Adams
+ Script Date : 2008.12.05
+--]]
+
+function cast(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 1
+ -- Need functionality to buff/debuff
+ if DebuffType == "Defense" then
+ -- ModifyDefense(Target, -DebuffValue)
+ end
+ if DebuffType == "Elemental" then
+ -- ModifyHeat(Target, -DebuffValue)
+ -- ModifyCold(Target, -DebuffValue)
+ end
+ if DebuffType == "Noxious" then
+ -- ModifyPoison(Target, -DebuffValue)
+ -- ModifyDisease(Target, -DebuffValue)
+ end
+
+end
+
+function tick(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+-- Need functionality to restore original mitigations
+
+ if DebuffType == "Defense" then
+ -- ModifyDefense(Target, Original)
+ end
+ if DebuffType == "Elemental" then
+ -- ModifyHeat(Target, Original)
+ -- ModifyCold(Target, Original)
+ end
+ if DebuffType == "Noxious" then
+ -- ModifyPoison(Target, Original)
+ -- ModifyDisease(Target, Original)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Writhe.lua b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Writhe.lua
new file mode 100755
index 000000000..055762a87
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Inquisitor/Writhe.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : dot_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+
+ else
+
+ DebuffValue = MinDebuffVal
+
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Defense" then
+
+ -- Need functionality to buff/debuff
+ -- ModifyDefense(Target, -DebuffValue)
+
+ end
+
+ if DebuffType == "Elemental" then
+
+ -- Need functionality to buff/debuff
+ -- ModifyHeat(Target, -DebuffValue)
+ -- ModifyCole(Target, -DebuffValue)
+
+ end
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ if DebuffType == "Defense" then
+ -- Need functionality to restore original mitigations
+ -- ModifyDefense(Target, Original)
+ end
+
+ if DebuffType == "Elemental" then
+ -- Need functionality to restore original mitigations
+ -- ModifyHeat(Target, Original)
+ -- ModifyCold(Target, Original)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Odyssey.lua b/server/Spells/Spells-Copy/Priest/Cleric/Odyssey.lua
new file mode 100755
index 000000000..c36af7bb6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Odyssey.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Odyssey.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Teleports target to a zone landmark
+-- You must be a citizen to benefit from an odyssey.
+-- This effect cannot be cast during combat
+-- If not a City Betrayer
+-- Teleports you to your recall point.
+function precast(Caster, Target)
+ if GetBoundZoneID(Caster) == 0 then
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target)
+ Gate(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/PrayerofAmelioration.lua b/server/Spells/Spells-Copy/Priest/Cleric/PrayerofAmelioration.lua
new file mode 100755
index 000000000..21ddf2ff2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/PrayerofAmelioration.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Cleric/PrayerofAmelioration.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:40
+ Script Purpose :
+ :
+--]]
+
+-- Heals group members (AE) for 97 - 119
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Radiance.lua b/server/Spells/Spells-Copy/Priest/Cleric/Radiance.lua
new file mode 100755
index 000000000..c02f60669
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Radiance.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Radiance.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:34
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- When any damage is received this spell will cast Vitae on target.
+-- Heals target for 52 - 64
+-- Grants a total of 5 triggers of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Rebuke.lua b/server/Spells/Spells-Copy/Priest/Cleric/Rebuke.lua
new file mode 100755
index 000000000..0a5c1bd61
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Rebuke.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Rebuke.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:51
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Mitigation of target vs physical damage by 108
+function cast(Caster, Target)
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Redoubt.lua b/server/Spells/Spells-Copy/Priest/Cleric/Redoubt.lua
new file mode 100755
index 000000000..9a82a20b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Redoubt.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Redoubt.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of target by 91.3
+-- Increases Slashing and Crushing of target by 2.2
+-- Increases Piercing of target by 4.3
+
+function cast(Caster, Target, HP, OffSkill, Pierce)
+ AddSpellBonus(Target, 600, HP)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), Pierce)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/SmiteCorruption.lua b/server/Spells/Spells-Copy/Priest/Cleric/SmiteCorruption.lua
new file mode 100755
index 000000000..ffdd84d23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/SmiteCorruption.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Cleric/SmiteCorruption.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 03:10:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 1 divine damage on target instantly and every 4 seconds
+-- Decreases WIS of target by 24.3
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Stat)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+ AddSpellBonus(Target, 3, Stat)
+
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Soothe.lua b/server/Spells/Spells-Copy/Priest/Cleric/Soothe.lua
new file mode 100755
index 000000000..c36dca70f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Soothe.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Soothe.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:34
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces Awareness of Enemies
+-- If Target is not Epic
+-- Dispelled when target receives hostile action
+-- Dispelled when target takes damage
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/SymbolofTransal.lua b/server/Spells/Spells-Copy/Priest/Cleric/SymbolofTransal.lua
new file mode 100755
index 000000000..3995bad0d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/SymbolofTransal.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Cleric/SymbolofTransal.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:35
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of group members (AE) by 30.4
+-- Increases Mitigation of group members (AE) vs arcane damage by 156
+
+function cast(Caster, Target, HP, Mit)
+ AddSpellBonus(Target, 606, HP)
+ AddSpellBonus(Target, 203, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Aegolism.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Aegolism.lua
new file mode 100755
index 000000000..0f7aebfd5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Aegolism.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Aegolism.lua
+ Script Purpose : Templar Aegolism spell line
+ Script Author : Zcoretri
+ Script Date : 2010.3.18
+--]]
+
+function cast(Caster, Target, StaAmt, SkillAmt)
+ AddSpellBonus(Target, 1, StaAmt)
+ AddSkillBonus(Target, 418532101, SkillAmt) --Slashing
+ AddSkillBonus(Target, 3421494576, SkillAmt) --Crushing
+ AddSkillBonus(Target, 3048574950, SkillAmt) --Piercing
+ AddSkillBonus(Target, 1756482397, SkillAmt) --Ranged
+end
+
+function remove(Caster, Target, StaAmt, SkillAmt)
+ RemoveSpellBonus()
+ RemoveSkillBonus()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Awestruck.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Awestruck.lua
new file mode 100755
index 000000000..4abe238d7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Awestruck.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Awestruck.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 12:10:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Stuns target
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
+
+function cast(Caster, Target)
+if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ Say(Caster, "Resistibility not implemented yet.")
+end
+
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/BattlesReprieve.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/BattlesReprieve.lua
new file mode 100755
index 000000000..4b8f39740
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/BattlesReprieve.lua
@@ -0,0 +1,40 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/BattlesReprieve.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Battle's Reprieve on termination. Lasts for 1 minute.
+-- Heals target for 27.6% of max health
+-- Increases Mitigation of target vs physical damage by 220
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 75.0
+-- Decreases Lethality of target by 75.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Beneficence.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Beneficence.lua
new file mode 100755
index 000000000..ee0f0c196
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Beneficence.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Beneficence.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- When any damage is received this spell will cast Supplicant's Prayer on target, which can be triggered up to 9 times across all targets.
+-- Heals target for 195 - 238
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/BlazeofFaith.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/BlazeofFaith.lua
new file mode 100755
index 000000000..818ee6aed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/BlazeofFaith.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/BlazeofFaith.lua
+ Script Author : neatz09
+ Script Date : 2019.10.14 11:10:27
+ Script Purpose :
+ :
+--]]
+-- Inflicts 350 divine damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/BlazonLife.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/BlazonLife.lua
new file mode 100755
index 000000000..54daa9334
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/BlazonLife.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/BlazonLife.lua
+ Script Author : neatz09
+ Script Date : 2020.02.01 06:02:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Battle's Reprieve on termination. Lasts for 1 minute.
+-- Heals target for 25.0% of max health
+-- This effect cannot be critically applied.
+-- Increases Mitigation of target vs physical damage by 360
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- If outside an arena
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/DevotedResolve.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DevotedResolve.lua
new file mode 100755
index 000000000..d9adb4920
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DevotedResolve.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/DevotedResolve.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 08:10:07
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 42 levels of any hostile effects on group members (AE)
+function cast(Caster, Target, Amt)
+ CureByType(Amt, 0, "Cure")
+end
+
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineArbitration.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineArbitration.lua
new file mode 100755
index 000000000..5cedd2f92
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineArbitration.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/DivineArbitration.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineLight.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineLight.lua
new file mode 100755
index 000000000..4b56f9dcf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineLight.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/DivineLight.lua
+ Script Author : neatz09
+ Script Date : 2020.02.01 07:02:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces all damage done to the target by 8%. 50% of the reduced damage is reflected on the attacker.
+-- Inflicts 1866 - 2281 divine damage on target
+-- This effect can only trigger once every 0.1 seconds.
+-- Reduces all damage done to the target by 8%.
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineSmite.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineSmite.lua
new file mode 100755
index 000000000..1cfbf7c3d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineSmite.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/DivineSmite.lua
+ Script Purpose : Templar Direct Damage spell
+ Script Author : Zcoretri
+ Script Date : 2010.2.14
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, dmgAmount)
+ end
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineStrike.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineStrike.lua
new file mode 100755
index 000000000..18e11ca89
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/DivineStrike.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : DivineStrike.lua
+ Script Purpose : Templar Direct Damage spell with Undead bonus damage
+ Script Author : theFoof
+ Script Date : 2014.3.9
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ --[[ We don't have racetypes on npcs yet
+ if GetRaceType(Target) == "Undead" then
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ end--]]
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/FocusedIntervention.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/FocusedIntervention.lua
new file mode 100755
index 000000000..0bfa11b84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/FocusedIntervention.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/FocusedIntervention.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Glory.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Glory.lua
new file mode 100755
index 000000000..1f8590eb4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Glory.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Glory.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 04:02:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hit this spell may cast Combat Glory on target. Triggers about 1.0 times per minute.
+-- Heals group members (AE) for 470
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Harmony.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Harmony.lua
new file mode 100755
index 000000000..faa235e7e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Harmony.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Harmony.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 12:10:38
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases threat priority of targets in Area of Effect by 1 position
+-- Decreases Threat to targets in Area of Effect by 13,094
+-- Dazes targets in Area of Effect
+-- If Target is not Epic
+-- Dispelled when target receives hostile action
+-- Dispelled when target takes damage
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/HealingFate.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HealingFate.lua
new file mode 100755
index 000000000..7e75c6e0b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HealingFate.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/HealingFate.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 08:11:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When target receives a reduction in health of 20% this spell will cast Fate of Healing on caster.
+-- Heals group members (AE) for 153
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolyArmor.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolyArmor.lua
new file mode 100755
index 000000000..dc499ad15
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolyArmor.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/HolyArmor.lua
+ Script Purpose : Templar Holy Armor spell line
+ Script Author : theFoof
+ Script Date : 2014.3.9
+--]]
+
+function cast(Caster, Target, HealthAmt, MitAmt)
+ AddSpellBonus(Target, 200, MitAmt, 11, 21, 31)
+ AddSpellBonus(Target, 500, HealthAmt, 1)
+end
+
+function remove(Caster, Target, HealthAmt, MitAmt)
+ RemoveSpellBonus()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolyIntercession.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolyIntercession.lua
new file mode 100755
index 000000000..9480a8549
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolyIntercession.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/HolyIntercession.lua
+ Script Author : Zcoretri
+ Script Date : 2014.03.13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealLow, HealHigh, Triggers)
+-- When any damage is received this spell will cast Divine Prayer on target, which can be triggered up to 9 times across all targets.
+-- Heals target for 44 - 54
+ AddProc(Target, 15, 100, 0, 1)
+ SetSpellTriggerCount(Triggers, 1)
+end
+
+function proc(Caster, Target, ProcType, HealLow, HealHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+ RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolySalvation.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolySalvation.lua
new file mode 100755
index 000000000..830bbdf5b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/HolySalvation.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/HolySalvation.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/ImpenetrableFaith.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/ImpenetrableFaith.lua
new file mode 100755
index 000000000..58854bfa4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/ImpenetrableFaith.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/ImpenetrableFaith.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Makes Aegolism a group wide spell adding additional haste, defense, parry, deflection and aggression
+-- On a beneficial spell cast this spell has a 12% chance to cast Impenetrable Faith on caster. Lasts for 15.0 seconds.
+-- Makes caster immune to Stun effects and increases casting speed by 20%
+-- Increases the heal amount of Supplicant's Prayer and Divine Prayer by 20% of the templar's wisdom.
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/InvoluntaryGift.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/InvoluntaryGift.lua
new file mode 100755
index 000000000..9ddfdd5b8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/InvoluntaryGift.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/InvoluntaryGift.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell may cast Involuntary Cure on target of attack. Triggers about 4.0 times per minute.
+-- Dispels 36 levels of physical hostile effects on target
+-- Heals targets in Area of Effect for 68 - 83
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/MarkofDivinity.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/MarkofDivinity.lua
new file mode 100755
index 000000000..522a665af
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/MarkofDivinity.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/MarkofDivinity.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 04:10:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Mitigation of target vs arcane damage by 168
+-- When damaged with a melee weapon this spell has a 20% chance to cast Mark of Nobility on target's attacker. Lasts for 8.0 seconds.
+-- Heals target for 6 instantly and every 2 seconds
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Meliorate.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Meliorate.lua
new file mode 100755
index 000000000..e5befe9bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Meliorate.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Meliorate.lua
+ Script Purpose : Templar small direct heal
+ Script Author : theFoof
+ Script Date : 2014.3.9
+ Script Note :
+--]]
+
+function cast(Caster, Target, MinHeal, MaxHeal)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
+function remove()
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/MeliorateX.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/MeliorateX.lua
new file mode 100755
index 000000000..73161b20c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/MeliorateX.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/MeliorateX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Rebuke.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Rebuke.lua
new file mode 100755
index 000000000..861a57c99
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Rebuke.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Rebuke.lua
+ Script Purpose : Templar Mitigation debuff
+ Script Author : theFoof
+ Script Date : 2014.3.9
+--]]
+
+function cast(Caster, Target, DebuffVal)
+ AddSpellBonus(Target, 200, DebuffVal)
+ Interrupt(Caster, Target)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Repent.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Repent.lua
new file mode 100755
index 000000000..edf57ee64
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Repent.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Repent.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 08:11:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards target against 17 points of all damage
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Restoration.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Restoration.lua
new file mode 100755
index 000000000..47ee75331
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Restoration.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Restoration.lua
+ Script Purpose : Templar large direct heal
+ Script Author : theFoof
+ Script Date : 2014.3.9
+ Script Note :
+--]]
+
+function cast(Caster, Target, MinHeal, MaxHeal)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
+function remove()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Resurrect.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Resurrect.lua
new file mode 100755
index 000000000..2e87deccd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Resurrect.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Resurrect.lua
+ Script Author : neatz09
+ Script Date : 2020.02.01 07:02:24
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Resurrect on termination.
+-- Heals target for 100.0% of max health
+-- This effect cannot be critically applied.
+-- Resurrects target with 15% health and power
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Reverence.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Reverence.lua
new file mode 100755
index 000000000..792b6c589
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Reverence.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Reverence.lua
+ Script Author : neatz09
+ Script Date : 2020.02.01 07:02:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Suspends when Windwalk or Sprint is active
+-- Reduces Bleedthrough on Target by 2.25%.
+-- 134% of target's power consumed will be added to target's health
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Sanctuary.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Sanctuary.lua
new file mode 100755
index 000000000..10b0d6563
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Sanctuary.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Sanctuary.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/ShieldofFaith.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/ShieldofFaith.lua
new file mode 100755
index 000000000..4ad7d31ed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/ShieldofFaith.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/ShieldofFaith.lua
+ Script Author : neatz09
+ Script Date : 2019.10.01 08:10:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) against 13 points of arcane damage
+-- Increases Mitigation of group members (AE) vs arcane damage by 769
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/SignofPacification.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/SignofPacification.lua
new file mode 100755
index 000000000..b3b729b84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/SignofPacification.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/SignofPacification.lua
+ Script Purpose : Templar control effect
+ Script Author : theFoof
+ Script Date : 2014.3.9
+--]]
+
+function cast(Caster, Target)
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 3) --Daze effect
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 3)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/SymbolofMarzin.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/SymbolofMarzin.lua
new file mode 100755
index 000000000..3019272bd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/SymbolofMarzin.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/SymbolofMarzin.lua
+ Script Author : Zcoretri
+ Script Date : 2014.03.13
+ Script Purpose : Templar Symbol of Marzin line
+ :
+--]]
+
+function cast(Caster, Target, StatAmt, MitAmt)
+ AddSpellBonus(Target, 1, StatAmt)
+ AddSpellBonus(Target, 203, MitAmt)
+end
+
+function remove(Caster, Target, StatAmt, MitAmt)
+ RemoveSpellBonus()
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/UnswervingHammer.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/UnswervingHammer.lua
new file mode 100755
index 000000000..6f8958d2f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/UnswervingHammer.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/UnswervingHammer.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 08:11:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet hammer
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/UnyieldingBenediction.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/UnyieldingBenediction.lua
new file mode 100755
index 000000000..fd25d34ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/UnyieldingBenediction.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/UnyieldingBenediction.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 06:08:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/Virtue.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Virtue.lua
new file mode 100755
index 000000000..e33e751ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/Virtue.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/Virtue.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 04:10:37
+ Script Purpose :
+ :
+--]]
+
+-- Increases STR and WIS of target by 117.3
+
+function cast(Caster, Target, Stat, Mit)
+ AddSpellBonus(Target, 0, Stat)
+ AddSpellBonus(Target, 3, Stat)
+-- Increases Mitigation of target vs elemental, noxious and arcane damage by 748
+AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 203, Mit)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/VitalIntercession.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/VitalIntercession.lua
new file mode 100755
index 000000000..c9eec8bee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/VitalIntercession.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/VitalIntercession.lua
+ Script Author : theFoof
+ Script Date : 2014.3.9
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealLow, HealHigh, Triggers)
+-- When any damage is received this spell will cast Supplicant's Prayer on target.
+-- Heals target for X - Y
+-- Grants a total of 5 triggers of the spell.
+
+ AddProc(Target, 15, 100)
+ SetSpellTriggerCount(Triggers, 1)
+end
+
+function proc(Caster, Target, ProcType, HealLow, HealHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+ RemoveTriggerFromSpell()
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/WarringDeities.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/WarringDeities.lua
new file mode 100755
index 000000000..6516466c9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/WarringDeities.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/WarringDeities.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 04:10:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 58 - 71 divine damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, DotMin, DotMax)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+-- Inflicts 24 - 30 divine damage on target every 4 seconds
+function tick(Caster, Target)
+ SpellDamage(Target, DotType, DotMin, DotMax)
+end
+
+function remove(Caster, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/WateryRespite.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/WateryRespite.lua
new file mode 100755
index 000000000..b73a861cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/WateryRespite.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/WateryRespite.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 07:11:39
+ Script Purpose :
+ :
+--]]
+
+-- Increases Swimming of group members (AE) by 69.0
+-- Allows group members (AE) to breathe under water
+
+function cast(Caster, Target, SkillAmt)
+BreatheUnderwater(Target, true)
+ AddSkillBonus(Target, GetSkillIDByName("Swimming"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+BreatheUnderwater(Target, false)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cleric/Templar/WordofRedemption.lua b/server/Spells/Spells-Copy/Priest/Cleric/Templar/WordofRedemption.lua
new file mode 100755
index 000000000..968534ee7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cleric/Templar/WordofRedemption.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Cleric/Templar/WordofRedemption.lua
+ Script Author : Zcoretri
+ Script Date : 2014.03.13
+ Script Purpose : Templar Group AE heal
+ :
+--]]
+
+function cast(Caster, Target, MinHeal, MaxHeal)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Courage.lua b/server/Spells/Spells-Copy/Priest/Courage.lua
new file mode 100755
index 000000000..69e971dc2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Courage.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Courage.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:25
+ Script Purpose :
+ :
+--]]
+
+-- Increases STA of group members (AE) by 6.3
+-- Increases Mitigation of group members (AE) vs physical damage by 61
+function cast(Caster, Target, Sta, Mit)
+ AddSpellBonus(Target, 1, Sta)
+ AddSpellBonus(Target, 200, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Cure.lua b/server/Spells/Spells-Copy/Priest/Cure.lua
new file mode 100755
index 000000000..ff4179633
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Cure.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Cure.lua
+ Script Author : theFoof
+ Script Date : 2014.1.13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Dispels X levels of any hostile effects on target
+ CureByType(1, 1, "", (GetLevel(Caster) * 1.08) + 1)
+ CureByType(1, 2, "", (GetLevel(Caster) * 1.08) + 1)
+ CureByType(1, 3, "", (GetLevel(Caster) * 1.08) + 1)
+ CureByType(1, 4, "", (GetLevel(Caster) * 1.08) + 1)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/CureCurse.lua b/server/Spells/Spells-Copy/Priest/CureCurse.lua
new file mode 100755
index 000000000..7c7d395af
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/CureCurse.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/CureCurse.lua
+ Script Author : neatz09
+ Script Date : 2019.10.26 03:10:41
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 88 levels of curse effects on target
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- Cannot be modified except by direct means
+function cast(Caster, Target, Levels)
+ CureByType(1, 5, "Cure", Levels)
+end
diff --git a/server/Spells/Spells-Copy/Priest/CureNoxious.lua b/server/Spells/Spells-Copy/Priest/CureNoxious.lua
new file mode 100755
index 000000000..b346b576e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/CureNoxious.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/CureNoxious.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 08:10:24
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 10 levels of noxious hostile effects on target
+
+function cast(Caster, Target, Amt)
+ CureByType(1, 3, "Cure", Amt)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/DivineProvidence.lua b/server/Spells/Spells-Copy/Priest/DivineProvidence.lua
new file mode 100755
index 000000000..94306b62a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/DivineProvidence.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/DivineProvidence.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:17
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be engaged in combat
+ return IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+ -- Begins a Heroic Opportunity
+StartHeroicOpportunity(Caster, 11)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Chill.lua b/server/Spells/Spells-Copy/Priest/Druid/Chill.lua
new file mode 100755
index 000000000..195dbec39
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Chill.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Druid/Chill.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, Dmgtype, MinVal, MaxVal)
+ Say(Caster, "Elemental not implemented")
+
+end
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 55 - 68 cold damage on target
+-- Inflicts 55 - 68 cold damage on target
+-- If target is elemental
diff --git a/server/Spells/Spells-Copy/Priest/Druid/CircleofGrowth.lua b/server/Spells/Spells-Copy/Priest/Druid/CircleofGrowth.lua
new file mode 100755
index 000000000..b27a2fa0b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/CircleofGrowth.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/CircleofGrowth.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Effloresce.lua b/server/Spells/Spells-Copy/Priest/Druid/Effloresce.lua
new file mode 100755
index 000000000..c9d984e2b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Effloresce.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Effloresce.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 07:01:39
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 102 - 125
+-- Heals target for 13 - 16 every second
+
+function cast(Caster, Target, MinVal, MaxVal, HoTMin, HoTMax)
+SpellHeal("Heal", MinVal, MaxVal)
+end
+
+function tick(Caster, Target, MinVal, MaxVal, HoTMin, HoTMax)
+SpellHeal("Heal", HoTMin, HoTMax)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/FavorofthePhoenix.lua b/server/Spells/Spells-Copy/Priest/Druid/FavorofthePhoenix.lua
new file mode 100755
index 000000000..a0d2339d4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/FavorofthePhoenix.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/FavorofthePhoenix.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:13
+ Script Purpose :
+ :
+--]]
+
+-- Summon 1 Crystallized Phoenix Feather
+-- This effect cannot be cast during combat
+
+function cast(Caster, Target, ItemID)
+if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Abolishment.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Abolishment.lua
new file mode 100755
index 000000000..bce4deb72
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Abolishment.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Abolishment.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 09:10:33
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 42 levels of any hostile effects on group members (AE)
+function cast(Caster, Target, Amt)
+ CureByType(Amt, 0, "Cure")
+end
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/ArmorofNature.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/ArmorofNature.lua
new file mode 100755
index 000000000..67863af8f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/ArmorofNature.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/ArmorofNature.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 02:01:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HPBonus, ResistBonus)
+ -- Increases Max Health of group members (AE) by 21.6
+ -- If fighter
+ AddSpellBonus(Target, 606, HPBonus, 11, 21, 31)
+
+ -- Increases Mitigation of group members (AE) vs physical damage by 93
+ -- If not fighter
+ AddSpellBonus(Target, 200, ResistBonus, 1)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/AutumnsKiss.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/AutumnsKiss.lua
new file mode 100755
index 000000000..08bb4d389
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/AutumnsKiss.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/AutumnsKiss.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 03:01:53
+ Script Purpose :
+ :
+--]]
+
+-- Heals group members (AE) for 44 - 54 instantly and every 2 seconds
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
+
+function tick(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/BackintotheFray.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/BackintotheFray.lua
new file mode 100755
index 000000000..307805654
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/BackintotheFray.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/BackintotheFray.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 06:10:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, OverMin, OverMax, UnderMin, UnderMax)
+-- Heals target for 402 - 491
+-- If over 50% Health
+-- Heals target for 804 - 982
+-- If under 50% Health
+if GetHP(Target) > GetPCTOfHP(Target, 50) then
+SpellDamage(Target, Heal, OverMin, OverMax)
+else
+ SpellDamage(Target, UnderMin, UnderMax)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/BallLightning.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/BallLightning.lua
new file mode 100755
index 000000000..c778397f4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/BallLightning.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/BallLightning.lua
+ Script Author : neatz09
+ Script Date : 2020.03.24 08:03:55
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Brambles.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Brambles.lua
new file mode 100755
index 000000000..ab3d71a62
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Brambles.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Brambles.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 03:01:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Hate, Snare)
+ -- Stifles targets in Area of Effect
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2)
+ end
+
+ -- Decreases Threat to targets in Area of Effect by 323
+ -- Decreases threat priority of targets in Area of Effect by 1 position
+ AddHate(Caster, Target, Hate, 1)
+
+ -- Slows targets in Area of Effect by 31.5%
+ SetSpeedMultiplier(Target, (100 - Snare))
+
+ -- 10% chance to dispel when target receives hostile action
+ -- 10% chance to dispel when target takes damage
+ AddProc(Target, 2, 10.0)
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ Say(Caster, "Not Implemented: cancel spell")
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+ SetSpeedMultiplier(Target, 1.0)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/CallofStorms.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/CallofStorms.lua
new file mode 100755
index 000000000..58fc17933
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/CallofStorms.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/CallofStorms.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:19
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/CalloftheHunt.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/CalloftheHunt.lua
new file mode 100755
index 000000000..7562a268a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/CalloftheHunt.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/CalloftheHunt.lua
+ Script Author : neatz09
+ Script Date : 2020.05.16 10:05:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Awakening on termination.
+-- Heals target for 15.0% of max health
+-- This effect cannot be critically applied.
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- If outside an arena
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/DeathSwarm.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/DeathSwarm.lua
new file mode 100755
index 000000000..cb170f9d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/DeathSwarm.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/DeathSwarm.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19 07:11:29
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt, DmgType, MinDmgVal, MaxDmgVal)
+
+ -- Debuff component
+ AddSkillBonus(Target, 609880714, SkillAmt) -- Defense
+
+ -- Damage component
+ if MaxDmgVal ~= nil and MinDmgVal < MaxDmgVal then
+ dmgAmount = math.random(MinDmgVal, MaxDmgVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmgVal)
+ end
+
+end
+
+function tick(Caster, Target, DefenseAmt, DmgType, MinDmgVal, MaxDmgVal)
+
+ -- DoT component
+ if MaxDmgVal ~= nil and MinDmgVal < MaxDmgVal then
+ dmgAmount = math.random(MinDmgVal, MaxDmgVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDmgVal)
+ end
+
+end
+
+function remove(Caster, Target, DefenseAmt, DmgType, MinDmgVal, MaxDmgVal)
+ -- Remove debuff when spell expires
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/FaeFire.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/FaeFire.lua
new file mode 100755
index 000000000..d8252a493
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/FaeFire.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/FaeFire.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 05:10:28
+ Script Purpose :
+ :
+--]]
+
+-- On any combat or spell hit this spell will cast Fae Fires on target of attack.
+-- Inflicts 195 heat damage on target
+-- Grants a total of 3 triggers of the spell.
+
+function cast(Caster, Target, DmgType, Dmg)
+ AddProc(Target, 1, 100)
+ SetSpellTriggerCount(3, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, Dmg)
+ ProcDamage(Caster, Target, "Fae Fires", DmgType, Dmg)
+ RemoveTriggerFromSpell(1)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Feast.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Feast.lua
new file mode 100755
index 000000000..f4541170d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Feast.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Feast.lua
+ Script Author : neatz09
+ Script Date : 2019.10.09 05:10:06
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When target receives a reduction in health of 20% this spell will cast Savage Feast on caster. Lasts for 18.0 seconds.
+-- Heals group members (AE) for 39 - 48 instantly and every 3 seconds
+-- Increases STR, AGI, WIS and INT of group members (AE) by 15.0
+-- Increases STA of group members (AE) by 30.1
+-- Adds 0.5% to base avoidance.
+-- Increases Mitigation of group members (AE) vs elemental, noxious and arcane damage by 39
+-- Reduces the power cost of spells cast by group members by 2.81%
+-- Reduces the power cost of spells cast by group members by 2.81%
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/FeralPulse.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/FeralPulse.lua
new file mode 100755
index 000000000..9d93da7ee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/FeralPulse.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/FeralPulse.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 06:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals group members (AE) for 428 - 524
+-- Heals group members (AE) for 176 - 216 every 2 seconds
+function cast(Caster, Target, MinHeal, MaxHeal, HoTMin, HoTMax)
+ SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
+
+function tick(Caster, Target, MinHeal, MaxHeal, HoTMin, HoTMax)
+SpellHeal("Heal", HoTMin, HoTMax)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/FeralTenacity.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/FeralTenacity.lua
new file mode 100755
index 000000000..192a66a6b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/FeralTenacity.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/FeralTenacity.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/FerocityoftheEel.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/FerocityoftheEel.lua
new file mode 100755
index 000000000..e04096ec7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/FerocityoftheEel.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/FerocityoftheEel.lua
+ Script Author : neatz09
+ Script Date : 2019.11.03 06:11:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows group members (AE) to breathe under water
+-- Grants Fish Vision to group members (AE)
+function cast(Caster, Target)
+BreatheUnderwater(Target, true)
+SetVision(Target, 4)
+end
+
+
+function remove(Caster, Target)
+BreatheUnderwater(Target, false)
+SetVision(Target, 0)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/FierceRousing.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/FierceRousing.lua
new file mode 100755
index 000000000..52328e357
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/FierceRousing.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/FierceRousing.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 10:10:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target)
+-- Resurrects target with 15% health and power
+Resurrect(15, 15, 1)
+ Say(Caster, "need to complete spell script")
+end
+--nil, "Awakening", 2, No_calcs(add to perams)
+-- Applies Awakening on termination.
+--function remove(Caster, Target)
+--Heals target for 15.0% of max health
+--SpellHeal("Heal", GetPCTOfHP(Target, 15))
+--end
+
+-- Heals target for 15.0% of max health
+-- This effect cannot be critically applied.
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+
+-- If outside an arena
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/ForestSpirit.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/ForestSpirit.lua
new file mode 100755
index 000000000..47bb3a333
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/ForestSpirit.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/ForestSpirit.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 04:01:25
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stat, Resist)
+ -- Increases INT and WIS of group members (AE) by 13.1
+ AddSpellBonus(Target, 4, Stat)
+ AddSpellBonus(Target, 3, Stat)
+
+ -- Increases Mitigation of group members (AE) vs elemental, noxious and arcane damage by 86
+ AddSpellBonus(Target, 201, Resist)
+ AddSpellBonus(Target, 202, Resist)
+ AddSpellBonus(Target, 203, Resist)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Hibernation.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Hibernation.lua
new file mode 100755
index 000000000..c6f296eae
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Hibernation.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Hibernation.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 09:10:58
+ Script Purpose :
+ :
+--]]
+
+
+-- Applies Awakening on termination.
+-- Heals target for 1089 - 1332
+
+function cast(Caster, Target)
+
+end
+
+function remove(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Intimidation.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Intimidation.lua
new file mode 100755
index 000000000..2ff5a8561
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Intimidation.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Intimidation.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 03:01:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Decreases WIS and AGI of target by 6.4
+ AddSpellBonus(Target, 3, BonusAmt)
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/KaranasHold.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/KaranasHold.lua
new file mode 100755
index 000000000..ca54296e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/KaranasHold.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/KaranasHold.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 03:01:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ -- Roots target
+ SetSpeedMultiplier(Target, 0)
+
+ -- 5% chance to dispel when target takes damage
+ AddProc(Target, 2, 5.0)
+ end
+
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ -- Cancel the spell
+ Say(Caster, "Not Implemented: cancel the spell");
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Lucidity.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Lucidity.lua
new file mode 100755
index 000000000..98c71e720
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Lucidity.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Lucidity.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 02:01:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StaAmt, IntAmt)
+ -- Increases STA of target by 2.6
+ AddSpellBonus(Target, 1, StaAmt)
+
+ -- Increases INT of target by 8.9
+ AddSpellBonus(Target, 4, IntAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/MaddeningSwarm.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/MaddeningSwarm.lua
new file mode 100755
index 000000000..a7251748b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/MaddeningSwarm.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/MaddeningSwarm.lua
+ Script Author : neatz09
+ Script Date : 2019.10.09 05:10:01
+ Script Purpose :
+ :
+--]]
+
+-- Interrupts target encounter
+function cast(Caster, Target, SkillAmt)
+ Interrupt(Target)
+-- Decreases Disruption, Ordination, Ministration, Subjugation, Focus and Aggression of target encounter by 15.2
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Agression"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/MasteroftheHunt.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/MasteroftheHunt.lua
new file mode 100755
index 000000000..497605aa8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/MasteroftheHunt.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/MasteroftheHunt.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 04:01:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Increases STA of group members (AE) by 3.0
+ AddSpellBonus(Target, 1, StatAmt)
+
+ -- Increases Mitigation of group members (AE) vs elemental damage by 194
+ AddSpellBonus(Target, 201, ResistAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/MinorElixir.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/MinorElixir.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/MinorElixir.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesElixir.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesElixir.lua
new file mode 100755
index 000000000..e682a184f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesElixir.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/NaturesElixir.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 02:01:50
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Heals target for 31 - 38
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesSalve.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesSalve.lua
new file mode 100755
index 000000000..275d6e558
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesSalve.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/NaturesSalve.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19
+ Script Purpose :
+--]]
+
+function cast(Caster, Target, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ SpellHeal("Heal", HealMinVal, HealMaxVal)
+ else
+ SpellHeal("Heal", HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesSalveX.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesSalveX.lua
new file mode 100755
index 000000000..aaf76ba84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesSalveX.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/NaturesSalveX.lua
+ Script Author : neatz09
+ Script Date : 2019.04.24 11:04:05
+ Script Purpose :
+ :
+--]]
+
+
+-- Heals target for 838 - 1024
+
+
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ ModifyHP(Target, math.random(MinVal, MaxVal))
+ else
+ ModifyHP(Target, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesWrath.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesWrath.lua
new file mode 100755
index 000000000..43a3bd461
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/NaturesWrath.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/NaturesWrath.lua
+ Script Author : neatz09
+ Script Date : 2019.11.03 06:11:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hostile spell cast this spell has a 12% chance to cast Nature's Wrath on target of spell. Lasts for 10.0 seconds.
+-- Inflicts 622 - 933 heat damage on target
+-- On a hit this spell will cast Nature's Soothing on target of attack.
+-- Heals target for 379 - 703
+-- Cannot be modified except by direct means
+-- Improves the damage of hostile spells by 10% of the fury's wisdom.
+-- Improves the fury's heals by 10% of their wisdom.
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/PactoftheCheetah.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/PactoftheCheetah.lua
new file mode 100755
index 000000000..20fbece08
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/PactoftheCheetah.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/PactoftheCheetah.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 05:10:12
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/PeerlessPredator.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/PeerlessPredator.lua
new file mode 100755
index 000000000..f62f54a9c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/PeerlessPredator.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/PeerlessPredator.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 04:01:30
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stat, Avoid, Resist)
+ -- Shapechanges caster into a lion
+ if GetGender(Target) == 0 then
+ SetIllusion(Target, 1372)
+ else
+ SetIllusion(Target, 303)
+ end
+
+ -- Increases STA of caster by 21.6
+ AddSpellBonus(Target, 1, Stat)
+
+ -- Adds 2.1% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 342
+ AddSpellBonus(Target, 201, Resist)
+ AddSpellBonus(Target, 202, Resist)
+ AddSpellBonus(Target, 203, Resist)
+
+ -- Grants See Stealth to caster
+ Say(Caster, "Not Implemented: see stealth")
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ ResetIllusion(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Porcupine.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Porcupine.lua
new file mode 100755
index 000000000..a91051036
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Porcupine.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Porcupine.lua
+ Script Author : neatz09
+ Script Date : 2020.03.01 10:03:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of raid and group members (AE) by 58.5
+-- Increases Mitigation of raid and group members (AE) vs all damage by 1260
+-- When any damage is received this spell will cast Porcupine Quills on target's attacker, which can be triggered up to 50 times across all targets.
+-- Inflicts 121 divine damage on target
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/PrimalFury.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/PrimalFury.lua
new file mode 100755
index 000000000..1390ef1fb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/PrimalFury.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/PrimalFury.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 05:10:20
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases STR, AGI, WIS and INT of target by 18.2
+local buff = { [170148] = 5164, [170149] = 5166, [170150] = 5167, [170151] = 5168, [170152] = 5169, [170153] = 5170, [170154] = 5171 }
+
+function cast(Caster, Target, Stats, Avoid, Mit)
+ AddSpellBonus(Target, 0, Stats)
+ AddSpellBonus(Target, 2, Stats)
+ AddSpellBonus(Target, 3, Stats)
+ AddSpellBonus(Target, 4, Stats)
+ AddSpellBonus(Target, 696, Avoid)
+ AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 203, Mit)
+ AddProc(Target, 1, 20)
+end
+
+function proc(Caster, Target, Type)
+local Spell_ID = GetSpellID()
+CastSpell(Caster, buff[Spell_ID], GetSpellTier())
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveProc(Target)
+end
+-- Adds 1.4% to base avoidance.
+-- Increases Mitigation of target vs elemental, noxious and arcane damage by 129
+-- On any combat or spell hit this spell may cast Battle Fury on target. Lasts for 10.0 seconds. Triggers about 2.0 times per minute.
+-- Increases Ability Casting Speed of target by 7.2%
+-- Increases Haste of target by 21.0
+-- Increases Multi Attack of target by 21.0
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/PrimevalAwakening.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/PrimevalAwakening.lua
new file mode 100755
index 000000000..898856f3c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/PrimevalAwakening.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/PrimevalAwakening.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Primeval Awakening on termination. Lasts for 1 minute.
+-- Increases Focus of target by 30.0
+-- Heals target for 30.0% of max health
+-- This effect cannot be critically applied.
+-- Increases power of target by 1.0% instantly and every 6 seconds
+-- This effect cannot be critically applied.
+-- Increases INT of target by 78.0
+-- Increases Disruption of target by 30.0
+-- Shapechanges target into a treant
+-- Increases Subjugation of target by 30.0
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 145.0
+-- Decreases Lethality of target by 145.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Regrowth.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Regrowth.lua
new file mode 100755
index 000000000..852f9ca43
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Regrowth.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Regrowth.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 03:01:53
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 38 - 46 instantly and every 2 seconds
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
+
+function tick(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/RingofFire.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/RingofFire.lua
new file mode 100755
index 000000000..518c2fbc4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/RingofFire.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/RingofFire.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 06:10:09
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Salve.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Salve.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Salve.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Squall.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Squall.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Squall.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Starnova.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Starnova.lua
new file mode 100755
index 000000000..44bc6eb7c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Starnova.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Starnova.lua
+ Script Author : neatz09
+ Script Date : 2019.04.24 11:04:05
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 520 - 635 heat damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/StingingSwarm.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/StingingSwarm.lua
new file mode 100755
index 000000000..055762a87
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/StingingSwarm.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : dot_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+
+ else
+
+ DebuffValue = MinDebuffVal
+
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Defense" then
+
+ -- Need functionality to buff/debuff
+ -- ModifyDefense(Target, -DebuffValue)
+
+ end
+
+ if DebuffType == "Elemental" then
+
+ -- Need functionality to buff/debuff
+ -- ModifyHeat(Target, -DebuffValue)
+ -- ModifyCole(Target, -DebuffValue)
+
+ end
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ if DebuffType == "Defense" then
+ -- Need functionality to restore original mitigations
+ -- ModifyDefense(Target, Original)
+ end
+
+ if DebuffType == "Elemental" then
+ -- Need functionality to restore original mitigations
+ -- ModifyHeat(Target, Original)
+ -- ModifyCold(Target, Original)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Tempest.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Tempest.lua
new file mode 100755
index 000000000..29bbde628
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Tempest.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Tempest.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 02:01:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 7 - 8 cold damage on target instantly and every 2 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Inflicts 7 - 8 cold damage on target instantly and every 2 seconds
+ -- If target is elemental
+ Say(Caster, "Not Implemented: Bonus damage to elementals")
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 7 - 8 cold damage on target instantly and every 2 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Inflicts 7 - 8 cold damage on target instantly and every 2 seconds
+ -- If target is elemental
+ Say(Caster, "Not Implemented: Bonus damage to elementals")
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Thornskin.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Thornskin.lua
new file mode 100755
index 000000000..de583a5d9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Thornskin.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Thornskin.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 02:01:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- When damaged with a melee weapon this spell will cast Thornstorm on target's attacker.
+ AddProc(Target, 4, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ if Type == 4 then
+ -- Inflicts 1 piercing damage on target encounter
+ if MaxVal ~= nil and MinVal < MaxVal then
+ ProcDamage(Caster, Target, "Thornstorm", DmgType, MinVal, MaxVal)
+ else
+ ProcDamage(Caster, Target, "Thornstorm", DmgType, MinVal)
+ end
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/Thunderbolt.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/Thunderbolt.lua
new file mode 100755
index 000000000..20f205e77
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/Thunderbolt.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/Thunderbolt.lua
+ Script Author : neatz09
+ Script Date : 2019.04.24 07:04:59
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 195 - 324 magic damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/UntamedRegeneration.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/UntamedRegeneration.lua
new file mode 100755
index 000000000..c30306b42
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/UntamedRegeneration.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/UntamedRegeneration.lua
+ Script Author : Jabantiz
+ Script Date : 2014.01.14 04:01:14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Heals group members (AE) for 107 - 131
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal",MinVal, MaxVal)
+ else
+ SpellHeal("Heal", MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/UntamedShroud.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/UntamedShroud.lua
new file mode 100755
index 000000000..970e4d18f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/UntamedShroud.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/UntamedShroud.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 06:10:39
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+
+function cast(Caster, Target)
+Stealth(2, Target)
+end
+
+
+function remove(Caster, Target)
+RemoveInvis(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Fury/WrathsBlessing.lua b/server/Spells/Spells-Copy/Priest/Druid/Fury/WrathsBlessing.lua
new file mode 100755
index 000000000..d0619669b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Fury/WrathsBlessing.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Druid/Fury/WrathsBlessing.lua
+ Script Author : neatz09
+ Script Date : 2019.10.28 06:10:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants a healer ally bonus healing based on your last direct damage spell amount. This bonus changes every time you cast a damage spell.
diff --git a/server/Spells/Spells-Copy/Priest/Druid/GreaterRegrowth.lua b/server/Spells/Spells-Copy/Priest/Druid/GreaterRegrowth.lua
new file mode 100755
index 000000000..ecd43101c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/GreaterRegrowth.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Druid/GreaterRegrowth.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 54 - 66 instantly and every 2 seconds
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
+
+function tick(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/ProvokingSwarm.lua b/server/Spells/Spells-Copy/Priest/Druid/ProvokingSwarm.lua
new file mode 100755
index 000000000..1493cc2d9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/ProvokingSwarm.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/ProvokingSwarm.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 14 - 17 divine damage on target instantly and every 3 seconds
+-- Decreases Defense of target by 4.6
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Regrowth.lua b/server/Spells/Spells-Copy/Priest/Druid/Regrowth.lua
new file mode 100755
index 000000000..0c3827fe5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Regrowth.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Druid/Regrowth.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 34 - 42 instantly and every 2 seconds
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
+
+function tick(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Snare.lua b/server/Spells/Spells-Copy/Priest/Druid/Snare.lua
new file mode 100755
index 000000000..e775ae22f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Snare.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Druid/Snare.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Slows target by 40.0%
+-- Does not affect Epic targets
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/SpiritoftheBat.lua b/server/Spells/Spells-Copy/Priest/Druid/SpiritoftheBat.lua
new file mode 100755
index 000000000..769b77e6a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/SpiritoftheBat.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/SpiritoftheBat.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Agi, Avoid, Regen, MaxPwr)
+-- Increases AGI of target by 12.1
+AddSpellBonus(Target, 2, Agi)
+-- Adds 0.5% to base avoidance.
+AddSpellBonus(Target, 696, Avoid)
+-- Increases Combat Power Regen of target by 6.1
+AddSpellBonus(Target, 605, Regen)
+-- Increases Max Power of target by 74.2
+AddSpellBonus(Target, 619, MaxPwr)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/SpiritoftheWolf.lua b/server/Spells/Spells-Copy/Priest/Druid/SpiritoftheWolf.lua
new file mode 100755
index 000000000..b650a1e03
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/SpiritoftheWolf.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/SpiritoftheWolf.lua
+ Script Author : theFoof
+ Script Date : 2013.12.16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BuffAmt)
+-- Increases speed of group members (AE) by 20.0%
+-- This effect suspends during combat
+
+ AddSpellBonus(Target, 609, BuffAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/StingingSwarm.lua b/server/Spells/Spells-Copy/Priest/Druid/StingingSwarm.lua
new file mode 100755
index 000000000..0b5389621
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/StingingSwarm.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Druid/StingingSwarm.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 8 - 10 divine damage on target instantly and every 3 seconds
+-- Decreases Defense of target by 2.7
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/SylvanTouch.lua b/server/Spells/Spells-Copy/Priest/Druid/SylvanTouch.lua
new file mode 100755
index 000000000..c59d8ef53
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/SylvanTouch.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/SylvanTouch.lua
+ Script Author : theFoof
+ Script Date : 2013.12.16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+-- Heals target for 119 - 146
+-- Heals target for 52 - 64 every 2 seconds
+
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function tick(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HoTLow, HoTHigh)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Verdure.lua b/server/Spells/Spells-Copy/Priest/Druid/Verdure.lua
new file mode 100755
index 000000000..2bd8ecb15
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Verdure.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/Verdure.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of group members (AE) by 30.4
+-- Increases Mitigation of group members (AE) vs elemental damage by 156
+
+function cast(Caster, Target, HP, Mit)
+ AddSpellBonus(Target, 606, HP)
+ AddSpellBonus(Target, 201, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Vigor.lua b/server/Spells/Spells-Copy/Priest/Druid/Vigor.lua
new file mode 100755
index 000000000..82e18f749
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Vigor.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Vigor.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 05:01:25
+ Script Purpose :
+ :
+--]]
+
+-- Increases WIS of target by 17.8
+-- Increases Max Power of target by 68.8
+
+function cast(Caster, Target, Wis, Pwr)
+ AddSpellBonus(Target, 3, Wis)
+ AddSpellBonus(Target, 619, Pwr)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/ArmorofSeasons.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/ArmorofSeasons.lua
new file mode 100755
index 000000000..4bede3636
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/ArmorofSeasons.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/ArmorofSeasons.lua
+ Script Author : theFoof
+ Script Date : 2013.12.10 12:12:25
+ Script Purpose :
+ :
+--]]
+
+-- Increases Max Health of group members (AE)
+-- If fighter
+-- Increases Mitigation of group members (AE) vs physical damage
+-- If not fighter
+
+
+function cast(Caster, Target, MaxHP, Mit)
+ AddSpellBonus(Target, 606, MaxHP, 1)
+ AddSpellBonus(Target, 200, Mit, 11, 21, 31)
+end
+
+function remove()
+end
+
+
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/AspectoftheForest.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/AspectoftheForest.lua
new file mode 100755
index 000000000..fe84a6149
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/AspectoftheForest.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/AspectoftheForest.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 11:12:18
+ Script Purpose :
+ :
+--]]
+
+-- Increases STA of target
+-- Increases WIS of target
+-- Increases Mitigation of target vs elemental, noxious and arcane damage
+
+function cast(Caster, Target, Sta, Wis, Mit)
+ AddSpellBonus(Target, 1, Sta)
+ AddSpellBonus(Target, 3, Wis)
+ AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+ AddSpellBonus(Target, 203, Mit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Bloom.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Bloom.lua
new file mode 100755
index 000000000..171dcf191
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Bloom.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : HoT (Spell Type)
+ Script Purpose : Generic script for heal-over-time spells
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : JA: Need to determine if HoT's land instantly with the initial heal, or wait til tick()
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal, HOTType, HOTMinVal, HOTMaxVal)
+
+ -- Heal component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+ -- HoT component
+ if HOTType ~= nil then
+ -- Determine if there is a range to HoT values
+ if HOTMaxVal ~= nil and HOTMinVal < HOTMaxVal then
+ ModifyHP(Caster, math.random(HOTMinVal, HOTMaxVal))
+ else
+ ModifyHP(Caster, HOTMinVal)
+ end
+ end
+
+end
+
+function tick(Caster, Target, HealType, HealMinVal, HealMaxVal, HOTType, HOTMinVal, HOTMaxVal)
+
+ if HOTMaxVal ~= nil and HOTMinVal < HOTMaxVal then
+ ModifyHP(Caster, math.random(HOTMinVal, HOTMaxVal))
+ else
+ ModifyHP(Caster, HOTMinVal)
+ end
+
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Cold.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Cold.lua
new file mode 100755
index 000000000..ee9f59fcf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Cold.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : dd.lua
+ Script Purpose : Generic direct damage script
+ Script Author : John Adams
+ Script Date : 2010.01.14
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Dawnstrike.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Dawnstrike.lua
new file mode 100755
index 000000000..3716be9f3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Dawnstrike.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : dd.lua
+ Script Purpose : Generic direct damage script
+ Script Author : John Adams
+ Script Date : 2010.01.14
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, MinDDVal,MaxDDVal)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Equinox.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Equinox.lua
new file mode 100755
index 000000000..ee4129dab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Equinox.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Equinox.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:48
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 13% health and power
+-- Applies Nature's Blessing on termination. Lasts for 1 minute.
+-- Heals target for 3.3% of max health instantly and every 6 seconds
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 98.0
+-- Decreases Lethality of target by 98.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/EssenceoftheGreatBear.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/EssenceoftheGreatBear.lua
new file mode 100755
index 000000000..d8461b6b9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/EssenceoftheGreatBear.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/EssenceoftheGreatBear.lua
+ Script Author : theFoof
+ Script Date : 2013.12.16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StaAmt, MitAmt)
+AddSpellBonus(Target, 1, StaAmt)
+AddSpellBonus(Target, 201, MitAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/FaerieAlly.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/FaerieAlly.lua
new file mode 100755
index 000000000..4507c8dbd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/FaerieAlly.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/FaerieAlly.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 01:11:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/FavoroftheWild.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/FavoroftheWild.lua
new file mode 100755
index 000000000..8b1c50490
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/FavoroftheWild.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/FavoroftheWild.lua
+ Script Author : theFoof
+ Script Date : 2014.1.14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StatBuff, Avoid, MitBuff)
+ AddSpellBonus(Target, 2, StatBuff)
+ AddSpellBonus(Target, 3, StatBuff)
+ AddSpellBonus(Target, 696, Avoid)
+ AddSpellBonus(Target, 201, MitBuff)
+ AddSpellBonus(Target, 202, MitBuff)
+ AddSpellBonus(Target, 203, MitBuff)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Frostbite.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Frostbite.lua
new file mode 100755
index 000000000..18fe42e7c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Frostbite.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Frostbite.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 05:10:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, BonusAmt)
+-- Inflicts 193 - 236 cold damage on target instantly and every 4 seconds
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+ -- Decreases Mitigation of target vs elemental damage by 1048
+AddSpellBonus(Target, 201, BonusAmt)
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+-- Inflicts 193 - 236 cold damage on target instantly and every 4 seconds
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/GreaterFire.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/GreaterFire.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/GreaterFire.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/HealingGrove.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/HealingGrove.lua
new file mode 100755
index 000000000..a531c7703
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/HealingGrove.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/HealingGrove.lua
+ Script Author : neatz09
+ Script Date : 2019.11.03 01:11:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a limited pet to aid the caster
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Healstorm.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Healstorm.lua
new file mode 100755
index 000000000..2b3b09f51
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Healstorm.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Healstorm.lua
+ Script Author : theFoof
+ Script Date : 2013.12.11 12:12:37
+ Script Purpose :
+ :
+--]]
+-- Heals group members (AE) instantly and every 2 seconds
+
+function cast(Caster, Target, HealLow, HealHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function tick(Caster, Target, HealLow, HealHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function remove()
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/HierophanticGenesis.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/HierophanticGenesis.lua
new file mode 100755
index 000000000..3c2d061a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/HierophanticGenesis.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/HierophanticGenesis.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 05:10:53
+ Script Purpose :
+ :
+--]]
+
+
+-- Heals target for 547 - 668 instantly and every 2 seconds
+-- Increases power of target by 43 - 52 instantly and every 2 seconds
+
+function cast(Caster, Target, MinHeal, MaxHeal, MinPwr, MaxPwr)
+SpellHeal("Heal", MinHeal, MaxHeal)
+SpellHeal("Power", MinPwr, MaxPwr)
+end
+
+
+function tick(Caster, Target, MinHeal, MaxHeal, MinPwr, MaxPwr)
+SpellHeal("Heal", MinHeal, MaxHeal)
+SpellHeal("Power", MinPwr, MaxPwr)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Icefall.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Icefall.lua
new file mode 100755
index 000000000..5f21ac847
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Icefall.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Icefall.lua
+ Script Author : theFoof
+ Script Date : 2013.12.10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType1, DmgLow1, DmgHigh1, DmgType2, DmgLow2, DmgHigh2)
+ Say(Caster, "races by model type not added yet")
+-- Inflicts 31 - 38 cold damage on target
+-- Inflicts 31 - 38 cold damage on target
+-- If target is elemental (need to add model races first)
+
+ SpellDamage(Target, DmgType1, DmgLow1, DmgHigh1)
+end
+
+function tick(Caster, Target)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/InfuriatingThorns.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/InfuriatingThorns.lua
new file mode 100755
index 000000000..43be6af65
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/InfuriatingThorns.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/InfuriatingThorns.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:05
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Will absorb physical, elemental, noxious, arcane damage.
+-- When damaged this spell will cast Infuriating Thorns on target's attacker.
+-- Inflicts 896 piercing damage on target
+-- Cannot be modified except by direct means
+-- Grants a total of 3 triggers of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Instinct.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Instinct.lua
new file mode 100755
index 000000000..a414e850c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Instinct.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Instinct.lua
+ Script Author : neatz09
+ Script Date : 2020.03.01 10:03:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell may cast Primal Instincts on target of attack. Lasts for 6.0 seconds. Triggers about 2.4 times per minute.
+-- Inflicts 90 - 109 piercing damage on target
+-- Inflicts 45 - 55 piercing damage on target every 3 seconds
+-- If target is a player or a mercenary
+-- On a hostile ability cast this spell may cast Primal Instincts on target of spell. Lasts for 6.0 seconds. Triggers about 7.0 times per minute.
+-- Inflicts 90 - 109 piercing damage on target
+-- Inflicts 45 - 55 piercing damage on target every 3 seconds
+-- This effect can only trigger once every 8.0 seconds.
+-- If target is a player or a mercenary
+-- Increases Crushing, Piercing, Slashing and Ranged of target by 14.0
+-- Pets cannot trigger Primal Instincts.
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/MinorFlorescence.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/MinorFlorescence.lua
new file mode 100755
index 000000000..171dcf191
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/MinorFlorescence.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : HoT (Spell Type)
+ Script Purpose : Generic script for heal-over-time spells
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : JA: Need to determine if HoT's land instantly with the initial heal, or wait til tick()
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal, HOTType, HOTMinVal, HOTMaxVal)
+
+ -- Heal component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+ -- HoT component
+ if HOTType ~= nil then
+ -- Determine if there is a range to HoT values
+ if HOTMaxVal ~= nil and HOTMinVal < HOTMaxVal then
+ ModifyHP(Caster, math.random(HOTMinVal, HOTMaxVal))
+ else
+ ModifyHP(Caster, HOTMinVal)
+ end
+ end
+
+end
+
+function tick(Caster, Target, HealType, HealMinVal, HealMaxVal, HOTType, HOTMinVal, HOTMaxVal)
+
+ if HOTMaxVal ~= nil and HOTMinVal < HOTMaxVal then
+ ModifyHP(Caster, math.random(HOTMinVal, HOTMaxVal))
+ else
+ ModifyHP(Caster, HOTMinVal)
+ end
+
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesEmbrace.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesEmbrace.lua
new file mode 100755
index 000000000..4276f26eb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesEmbrace.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/NaturesEmbrace.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 11:12:48
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for X - Y
+-- Heals target for A - B every second
+
+function cast(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function tick(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HoTLow, HoTHigh)
+end
+
+function remove()
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesPack.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesPack.lua
new file mode 100755
index 000000000..323b478e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesPack.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/NaturesPack.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 12:11:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons 4 limited pets to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesRenewal.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesRenewal.lua
new file mode 100755
index 000000000..4ba7054ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesRenewal.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/NaturesRenewal.lua
+ Script Author : neatz09
+ Script Date : 2020.03.01 10:03:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Nature's Touch on target. Lasts for 24.0 seconds.
+-- Heals target for 492
+-- Heals target for 123 every 2 seconds
+-- Increases WIS of target by 48.8
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesRestoration.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesRestoration.lua
new file mode 100755
index 000000000..5f0f83dce
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesRestoration.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/NaturesRestoration.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heal over time spells increase healing with each tick. Healing ceases to increase after 5 ticks.
+-- On a healing spell cast this spell has a 50% chance to cast Splash of Nature on caster.
+-- Increases power of caster by 394 - 590
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesTouch.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesTouch.lua
new file mode 100755
index 000000000..c6e319991
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/NaturesTouch.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/NaturesTouch.lua
+ Script Author : neatz09
+ Script Date : 2019.10.16 10:10:31
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Nature's Blessing on termination. Lasts for 1 minute.
+-- Heals target for 3.0% of max health instantly and every 6 seconds
+-- This effect cannot be critically applied.
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- If outside an arena
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/NereidsBoon.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/NereidsBoon.lua
new file mode 100755
index 000000000..5d395403d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/NereidsBoon.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/NereidsBoon.lua
+ Script Author : neatz09
+ Script Date : 2019.11.03 01:11:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows group members (AE) to breathe under water
+-- Grants Fish Vision to group members (AE)
+
+function cast(Caster, Target)
+BreatheUnderwater(Target, true)
+SetVision(Target, 4)
+end
+
+
+function remove(Caster, Target)
+BreatheUnderwater(Target, false)
+SetVision(Target, 0)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Photosynthesis.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Photosynthesis.lua
new file mode 100755
index 000000000..6a701ed6a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Photosynthesis.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Photosynthesis.lua
+ Script Author : theFoof
+ Script Date : 2013.12.10 11:12:20
+ Script Purpose :
+ :
+--]]
+
+-- Heals target instantly and every 2 seconds
+
+function cast(Caster, Target, HealLow, HealHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function tick(Caster, Target, HealLow, HealHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function remove()
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/RegeneratingSpores.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/RegeneratingSpores.lua
new file mode 100755
index 000000000..3bf397cb0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/RegeneratingSpores.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/RegeneratingSpores.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 12:11:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell has a 8% chance to cast Spores on target. Lasts for 10.0 seconds.
+-- Heals target for 31 - 38 instantly and every 2 seconds
+-- If over 50% Health
+-- Heals target for 62 - 75 instantly and every 2 seconds
+-- If under 50% Health
+
+function cast(Caster, Target, OverMin, OverMax, UnderMin, UnderMax)
+if GetHP(Target) > GetPCTOfHP(Target, 33) then
+SpellHeal("Heal", OverMin, OverMax)
+else
+ SpellHeal("Heal", UnderMin, UnderMax)
+ end
+
+end
+
+
+function tick(Caster, Target, OverMin, OverMax, UnderMin, UnderMax)
+if GetHP(Target) > GetPCTOfHP(Target, 33) then
+SpellHeal("Heal", OverMin, OverMax)
+else
+ SpellHeal("Heal", UnderMin, UnderMax)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Reincarnation.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Reincarnation.lua
new file mode 100755
index 000000000..db1a7bfcb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Reincarnation.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Reincarnation.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Reincarnate on termination. Lasts for 1 minute.
+-- Increases All Attributes of target by 15.0%
+-- Increases Attack Speed of target by 31.3
+-- Increases Damage Per Second of target by 36.0
+-- Increases Crushing, Piercing and Slashing of target by 15.0
+-- Heals target for 16.6% of max health
+-- Heals target for 0.6% of max health every 6 seconds
+-- Shapechanges target into a wolf
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 145.0
+-- Decreases Lethality of target by 145.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Root.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Root.lua
new file mode 100755
index 000000000..8c49971b0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Root.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Root.lua
+ Script Author : theFoof
+ Script Date : 2014.3.13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Roots target
+-- Applies Ensnare on termination. Lasts for 12.0 seconds.
+-- Slows target by 28.3%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- 5% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
+
+-- Note: Need support for snares
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 5)
+ AddProc(Target, 15, 5)
+ end
+end
+
+function remove(Caster, Target)
+ if not IsEpic(Target) then
+ RemoveControlEffect(Target, 5)
+ RemoveProc(Target)
+ end
+end
+
+function proc(Caster, Target, ProcType)
+ CancelSpell()
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Sandstorm.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Sandstorm.lua
new file mode 100755
index 000000000..aa23bb880
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Sandstorm.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Sandstorm.lua
+ Script Author : neatz09
+ Script Date : 2020.03.01 10:03:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases group members (AE)'s chance to block by 9.0%
+-- Increases Parry and Deflection of group members (AE) by 6.1
+-- On avoiding an attack this spell has a 20% chance to cast Dust Storm on target's victim.
+-- Decreases Threat to target encounter by 885 - 1,081
+-- If not fighter
+-- Increases Threat to target encounter by 1,425 - 1,621
+-- If fighter
+-- When damaged with a melee weapon this spell has a 20% chance to cast Dust Storm on target's attacker.
+-- Decreases Threat to target encounter by 885 - 1,081
+-- If not fighter
+-- Increases Threat to target encounter by 1,425 - 1,621
+-- If fighter
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanBloom.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanBloom.lua
new file mode 100755
index 000000000..c3740babb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanBloom.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/SylvanBloom.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 11:12:13
+ Script Purpose :
+ :
+--]]
+
+-- Heals target
+-- Heals target every second
+
+function cast(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function tick(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HoTLow, HoTHigh)
+end
+
+function remove()
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanBloomX.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanBloomX.lua
new file mode 100755
index 000000000..f1c50b86b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanBloomX.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/SylvanBloomX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:25
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanEmbrace.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanEmbrace.lua
new file mode 100755
index 000000000..d2e2f9a92
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/SylvanEmbrace.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/SylvanEmbrace.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 01:11:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals group members (AE) for 428 - 524
+-- Heals group members (AE) for 176 - 216 every 2 seconds
+
+function cast(Caster, Target, MinHeal, MaxHeal, HotMin, HotMax)
+SpellHeal("Heal", MinHeal, MaxHeal)
+end
+
+
+function tick(Caster, Target, MinHeal, MaxHeal, HotMin, HotMax)
+SpellHeal("Heal", HotMin, HotMax)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Thorncoat.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Thorncoat.lua
new file mode 100755
index 000000000..ec4df3920
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Thorncoat.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Thorncoat.lua
+ Script Author : Ememjr
+ Script Date : 2019.04.28 02:04:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged with a melee weapon this spell will cast Thorns on target's attacker.
+-- Inflicts 1 piercing damage on target
+function cast(Caster, Target)
+ -- When damaged with a melee weapon this spell will cast Thorns on target's attacker.
+ AddProc(Target, 4, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ if Type == 4 then
+ -- Inflicts 1 piercing damage on target encounter
+ if MaxVal ~= nil and MinVal < MaxVal then
+ ProcDamage(Caster, Target, "Thorns", DmgType, MinVal, MaxVal)
+ else
+ ProcDamage(Caster, Target, "Thorns", DmgType, MinVal)
+ end
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Tranquility.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Tranquility.lua
new file mode 100755
index 000000000..905d5b191
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Tranquility.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Tranquility.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 05:10:21
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Tranquil Healing.
+-- Heals target for 654
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- Dispels 5 levels of any hostile effects on target instantly and every 15 seconds
+-- Casts Tranquil Healing for each successful Dispel.
+-- Heals target for 654
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/TunaresWatch.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/TunaresWatch.lua
new file mode 100755
index 000000000..708eaa0b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/TunaresWatch.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/TunaresWatch.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/Undergrowth.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/Undergrowth.lua
new file mode 100755
index 000000000..e10f31e65
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/Undergrowth.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/Undergrowth.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 05:10:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Natural Undergrowth. Lasts for 46.0 seconds.
+-- Applies Ensnare on termination. Lasts for 12.0 seconds.
+-- Slows target by 36.4%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- Roots target
+-- 5% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 90.
+-- Interrupts target encounter
+-- Decreases AGI of target encounter by 43.0
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/VerdantWhisper.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/VerdantWhisper.lua
new file mode 100755
index 000000000..b2bfe60f7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/VerdantWhisper.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/VerdantWhisper.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 08:10:58
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 42 levels of any hostile effects on group members (AE)
+function cast(Caster, Target, Amt)
+ CureByType(Amt, 0, "Cure")
+end
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/VerdurousJourney.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/VerdurousJourney.lua
new file mode 100755
index 000000000..f5cc63a9a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/VerdurousJourney.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/VerdurousJourney.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 09:10:08
+ Script Purpose :
+ :
+--]]
+
+-- Teleports caster and caster's group within the zone
+function cast(Caster, Target)
+ Evac()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WardenoftheForest.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WardenoftheForest.lua
new file mode 100755
index 000000000..9558d9392
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WardenoftheForest.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WardenoftheForest.lua
+ Script Author : theFoof
+ Script Date : 2014.1.14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Focus, PhysMit, Resists)
+-- Shapechanges caster into a wolf
+-- Grants See Invisibility to caster ***not yet scripted***
+-- Increases Focus of caster by 8.1
+-- Increases Mitigation of caster vs physical damage by 90
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 342
+
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), Focus)
+ AddSpellBonus(Target, 200, PhysMit)
+ AddSpellBonus(Target, 201, Resists)
+ AddSpellBonus(Target, 202, Resists)
+ AddSpellBonus(Target, 203, Resists)
+ SetIllusion(Target, 216)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ ResetIllusion(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WardoftheUntamed.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WardoftheUntamed.lua
new file mode 100755
index 000000000..443102e1b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WardoftheUntamed.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WardoftheUntamed.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 01:11:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) against 13 points of elemental damage
+-- Increases Mitigation of group members (AE) vs elemental damage by 901
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WillowWisp.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WillowWisp.lua
new file mode 100755
index 000000000..e07cd9618
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WillowWisp.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WillowWisp.lua
+ Script Author : neatz09
+ Script Date : 2019.11.09 01:11:21
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Interrupts targets in Area of Effect
+-- Decreases threat priority of targets in Area of Effect by 1 position
+-- Decreases Threat to targets in Area of Effect by 2,593
+-- Roots targets in Area of Effect
+-- If Target is not Epic
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WindsofHealing.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WindsofHealing.lua
new file mode 100755
index 000000000..282bed794
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WindsofHealing.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WindsofHealing.lua
+ Script Author : theFoof
+ Script Date : 2013.12.11 12:12:53
+ Script Purpose :
+ :
+--]]
+
+-- Heals group members (AE) for 67 - 82
+-- Heals group members (AE) for 11 - 14 every second
+
+function cast(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HealLow, HealHigh)
+end
+
+function tick(Caster, Target, HealLow, HealHigh, HoTLow, HoTHigh)
+ SpellHeal("Heal", HoTLow, HoTHigh)
+end
+
+function remove()
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WindsofPermafrost.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WindsofPermafrost.lua
new file mode 100755
index 000000000..926ab1908
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WindsofPermafrost.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WindsofPermafrost.lua
+ Script Author : neatz09
+ Script Date : 2019.09.11 03:09:22
+ Script Purpose :
+ :
+--]]
+-- Inflicts 226 - 276 cold damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DebuffAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+-- Decreases Piercing, Slashing and Crushing of target encounter by 8.6
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), DebuffAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), DebuffAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), DebuffAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WintersBite.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WintersBite.lua
new file mode 100755
index 000000000..a7f0ef9a5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WintersBite.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WintersBite.lua
+ Script Author : neatz09
+ Script Date : 2019.04.22 05:04:30
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 178 - 217 cold damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Warden/WintersSting.lua b/server/Spells/Spells-Copy/Priest/Druid/Warden/WintersSting.lua
new file mode 100755
index 000000000..590c6ec00
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Warden/WintersSting.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Druid/Warden/WintersSting.lua
+ Script Author : neatz09
+ Script Date : 2019.04.22 07:04:25
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 237 - 289 cold damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/WildSpirit.lua b/server/Spells/Spells-Copy/Priest/Druid/WildSpirit.lua
new file mode 100755
index 000000000..1da5eb6be
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/WildSpirit.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Druid/WildSpirit.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:05
+ Script Purpose :
+ :
+--]]
+
+-- Increases AGI and WIS of group members (AE) by 13.1
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 2, BonusAmt)
+ AddSpellBonus(Target, 3, BonusAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Druid/Willowskin.lua b/server/Spells/Spells-Copy/Priest/Druid/Willowskin.lua
new file mode 100755
index 000000000..c067ec085
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/Willowskin.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Druid/Willowskin.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Combat Health Regen of group members (AE) by 11.9
+-- Increases Mitigation of group members (AE) vs physical damage by 131
+
+function cast(Caster, Target, HP, Mit)
+ AddSpellBonus(Target, 604, HP)
+ AddSpellBonus(Target, 200, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Druid/WindsofRenewal.lua b/server/Spells/Spells-Copy/Priest/Druid/WindsofRenewal.lua
new file mode 100755
index 000000000..45ddb3f76
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Druid/WindsofRenewal.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Druid/WindsofRenewal.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 06:01:41
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals group members (AE) for 40 - 49 instantly and every 2 seconds
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
+
+function tick(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/EnduringBreath.lua b/server/Spells/Spells-Copy/Priest/EnduringBreath.lua
new file mode 100755
index 000000000..1335f6dcc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/EnduringBreath.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/EnduringBreath.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.14 12:12:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Allows target to breathe under water
+ BreatheUnderwater(Target, true)
+end
+
+function remove(Caster, Target)
+ BreatheUnderwater(Target, false)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Healing.lua b/server/Spells/Spells-Copy/Priest/Healing.lua
new file mode 100755
index 000000000..9b42b9297
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Healing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Healing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 97 - 119
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/ImprovedArchHealing.lua b/server/Spells/Spells-Copy/Priest/ImprovedArchHealing.lua
new file mode 100755
index 000000000..7165d70d8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/ImprovedArchHealing.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/ImprovedArchHealing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:14
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 91 - 111
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/MastersSmite.lua b/server/Spells/Spells-Copy/Priest/MastersSmite.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/MastersSmite.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/MinorArchHealing.lua b/server/Spells/Spells-Copy/Priest/MinorArchHealing.lua
new file mode 100755
index 000000000..4322cbbab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/MinorArchHealing.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/MinorArchHealing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:17
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 41 - 50
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/MinorHealing.lua b/server/Spells/Spells-Copy/Priest/MinorHealing.lua
new file mode 100755
index 000000000..f2606c1d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/MinorHealing.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/MinorHealing.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:24
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 36 - 45
+
+function cast(Caster, Target, MinVal, MaxVal)
+SpellHeal("Heal", MinVal, MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Revive.lua b/server/Spells/Spells-Copy/Priest/Revive.lua
new file mode 100755
index 000000000..61cb3b1e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Revive.lua
@@ -0,0 +1,41 @@
+--[[
+ Script Name : Spells/Priest/Revive.lua
+ Script Author : theFoof
+ Script Date : 2013.12.13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+
+-- Apply subspell for rez sickness when we support those
+
+-- Resurrects target with 15% health and power
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 38.9
+-- Decreases Lethality of target by 38.9
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- This effect cannot be cast during combat
+-- If outside an arena
+
+
+ Resurrect(15, 15, 1)
+ CancelSpell()
+end
+
+function remove(Caster, Target)
+end
+
+function precast(Caster, Target)
+ if IsInCombat(Caster) then
+ return false
+ end
+ return true
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Auspice.lua b/server/Spells/Spells-Copy/Priest/Shaman/Auspice.lua
new file mode 100755
index 000000000..8c7526cac
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Auspice.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Auspice.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:54
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Power, Health)
+-- Increases Max Power of target by 57.4
+ AddSpellBonus(Target, 619, Power)
+-- Increases Max Health of target by 76.0
+ AddSpellBonus(Target, 606, Health)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/BreathofSpirits.lua b/server/Spells/Spells-Copy/Priest/Shaman/BreathofSpirits.lua
new file mode 100755
index 000000000..101d4b147
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/BreathofSpirits.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Shaman/BreathofSpirits.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:59
+ Script Purpose :
+ :
+--]]
+
+-- Heals group members (AE) for 97 - 119
+-- Increases Max Health of group members (AE) by 15.8
+function cast(Caster, Target, MinHeal, MaxHeal, HP)
+SpellHeal("Heal", MinHeal, MaxHeal)
+AddSpellBonus(Target, 606, HP)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Contagion.lua b/server/Spells/Spells-Copy/Priest/Shaman/Contagion.lua
new file mode 100755
index 000000000..e76d44d6b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Contagion.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Contagion.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 12 disease damage on target instantly and every 4 seconds
+
+function cast(Caster, Target, DoTType, MinVal)
+ Say(Caster, "Race check bonuses not implemented.")
+SpellDamage(Target, DoTType, MinVal)
+end
+
+function tick(Caster, Target, DoTType, MinVal)
+SpellDamage(Target, DoTType, MinVal)
+end
+
+
+-- Inflicts 12 disease damage on target instantly and every 4 seconds
+-- If target is nightblood
+-- Inflicts 12 disease damage on target instantly and every 4 seconds
+-- If target is shadowed folk
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AbhorrentSeal.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AbhorrentSeal.lua
new file mode 100755
index 000000000..62be60288
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AbhorrentSeal.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/AbhorrentSeal.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 09:10:59
+ Script Purpose :
+ :
+--]]
+
+
+-- Decreases STR, AGI and WIS of target by 74.2
+
+function cast(Caster, Target, Str, Agi, Wis)
+ AddSpellBonus(Target, 0, Str)
+ AddSpellBonus(Target, 2, Agi)
+ AddSpellBonus(Target, 3, Wis)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Abomination.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Abomination.lua
new file mode 100755
index 000000000..cf190ae49
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Abomination.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Abomination.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 04:03:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, Health)
+ -- Decreases STR, AGI, WIS and INT of target by 2.7
+ AddSpellBonus(Target, 0, BonusAmt)
+ AddSpellBonus(Target, 2, BonusAmt)
+ AddSpellBonus(Target, 3, BonusAmt)
+ AddSpellBonus(Target, 4, BonusAmt)
+
+ -- Decreases Max Health of target by 0.5%
+ AddSpellBonus(Target, 607, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Abominus.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Abominus.lua
new file mode 100755
index 000000000..729429f6c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Abominus.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Abominus.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 09:10:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Allows group members (AE) to breathe under water
+BreatheUnderwater(Target, true)
+-- Allows group members (AE) to jump under water
+ AddControlEffect(Target, 8)
+-- Allows group members (AE) to walk under water
+ AddControlEffect(Target,7)
+
+end
+
+function remove(Caster, Target)
+BreatheUnderwater(Target, False)
+ RemoveControlEffect(Target, 8)
+ RemoveControlEffect(Target, 7)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AbsoluteCorruption.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AbsoluteCorruption.lua
new file mode 100755
index 000000000..16a120d75
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AbsoluteCorruption.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/AbsoluteCorruption.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 10:10:28
+ Script Purpose :
+ :
+--]]
+
+
+
+-- Inflicts 37 - 46 disease damage on target encounter instantly and every 3 seconds
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Nox)
+-- Interrupts target encounter
+ Interrupt(Caster, Target)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases Mitigation of target encounter vs noxious damage by 414
+ AddSpellBonus(Target, 202, Nox)
+end
+function tick(Caster, Target)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncestralAvenger.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncestralAvenger.lua
new file mode 100755
index 000000000..73a1fe4ac
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncestralAvenger.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/AncestralAvenger.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncientShroud.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncientShroud.lua
new file mode 100755
index 000000000..c5231520f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncientShroud.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/AncientShroud.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 04:03:34
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Ward)
+ -- Wards target against 155 points of all damage
+ AddWard(Ward)
+end
+
+function remove(Caster, Target)
+ RemoveWard()
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncientTerror.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncientTerror.lua
new file mode 100755
index 000000000..cfe5fa6bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/AncientTerror.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/AncientTerror.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 10:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Makes target afraid
+-- 30% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Atrophy.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Atrophy.lua
new file mode 100755
index 000000000..26c862ea4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Atrophy.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Atrophy.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 03:03:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, AtkSpeed, DPS)
+ -- Decreases Attack Speed of target by 9.2
+ AddSpellBonus(Target, 617, AtkSpeed)
+
+ -- Decreases Damage Per Second of target by 5.3
+ AddSpellBonus(Target, 629, DPS)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Balm.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Balm.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Balm.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/BaneofWarding.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/BaneofWarding.lua
new file mode 100755
index 000000000..7884eec55
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/BaneofWarding.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/BaneofWarding.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 09:10:20
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell may cast Curse of Shielding on target of attack. Lasts for 24.0 seconds. Triggers about 2.0 times per minute.
+-- Wards target against 122 points of all damage
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/CarrionWarding.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/CarrionWarding.lua
new file mode 100755
index 000000000..85b346add
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/CarrionWarding.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/CarrionWarding.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 05:03:41
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Ward)
+ -- Wards group members (AE) collectively against 327 total points of all damage
+ AddWard(Ward)
+end
+
+function remove(Caster, Target)
+ RemoveWard(Ward)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/CrystallizeSoul.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/CrystallizeSoul.lua
new file mode 100755
index 000000000..956a0edfe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/CrystallizeSoul.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/CrystallizeSoul.lua
+ Script Author : neatz09
+ Script Date : 2020.01.27 09:01:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a kill this spell has a 30% chance to cast Crystallize Soul on caster.
+-- Summon 1 Distilled Soul (Apprentice)
+
+function cast(Caster, Target, Type, ItemID)
+AddProc(Target, 14, 30)
+end
+
+function proc(Caster, Target, Type, ItemID)
+if HasItem(Caster, ItemID, 1) then
+RemoveItem(Caster, ItemID)
+end
+SummonItem(Caster, ItemID, 1)
+end
+
+
+function remove(Caster, Target)
+RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Curse.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Curse.lua
new file mode 100755
index 000000000..c8662b66c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Curse.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : debuff.lua
+ Script Purpose : Generic Debuff script
+ Script Author : John Adams
+ Script Date : 2008.12.05
+--]]
+
+function cast(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 1
+ -- Need functionality to buff/debuff
+ if DebuffType == "Defense" then
+ -- ModifyDefense(Target, -DebuffValue)
+ end
+ if DebuffType == "Elemental" then
+ -- ModifyHeat(Target, -DebuffValue)
+ -- ModifyCold(Target, -DebuffValue)
+ end
+ if DebuffType == "Noxious" then
+ -- ModifyPoison(Target, -DebuffValue)
+ -- ModifyDisease(Target, -DebuffValue)
+ end
+
+end
+
+function tick(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DebuffType, MinDebuffVal, MaxDebuffVal)
+-- Need functionality to restore original mitigations
+
+ if DebuffType == "Defense" then
+ -- ModifyDefense(Target, Original)
+ end
+ if DebuffType == "Elemental" then
+ -- ModifyHeat(Target, Original)
+ -- ModifyCold(Target, Original)
+ end
+ if DebuffType == "Noxious" then
+ -- ModifyPoison(Target, Original)
+ -- ModifyDisease(Target, Original)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Deathward.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Deathward.lua
new file mode 100755
index 000000000..b1ce0a307
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Deathward.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Deathward.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards target against all damage. The amount is increased the closer the ally is to death.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Defile.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Defile.lua
new file mode 100755
index 000000000..306872eec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Defile.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Defile.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 10:10:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Defile.
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 10% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 20% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 40% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 50% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 60% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 70% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 80% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 90% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 100% Health
+-- Inflicts 51 disease damage on targets in Area of Effect
+-- If under 30% Health
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/DireBalm.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/DireBalm.lua
new file mode 100755
index 000000000..345f71928
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/DireBalm.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/SacrificialRestoration.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 03:03:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Heals target for 44 - 54
+ SpellHeal("Heal", MinVal, MaxVal, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/DireBalmX.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/DireBalmX.lua
new file mode 100755
index 000000000..61f36e7bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/DireBalmX.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2013.11.19
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealMinVal, HealMaxVal)
+ -- Heal Component
+ SpellHeal("Heal", HealMinVal, HealMaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/FuliginousWhip.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/FuliginousWhip.lua
new file mode 100755
index 000000000..d6736919d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/FuliginousWhip.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/FuliginousWhip.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 09:10:09
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 56 - 69 disease damage on target instantly and every 4 seconds
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Haste)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases Haste of target by 6.2
+ AddSpellBonus(Target, 617, Haste)
+end
+function tick(Caster, Target)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/GreaterImprecation.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/GreaterImprecation.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/GreaterImprecation.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Harbinger.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Harbinger.lua
new file mode 100755
index 000000000..c936b199e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Harbinger.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Harbinger.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 04:03:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Sta, Power)
+ -- Increases STA of target by 2.8
+ AddSpellBonus(Target, 1, Sta)
+
+ -- Increases Max Power of target by 14.6
+ AddSpellBonus(Target, 619, Power)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Imprecate.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Imprecate.lua
new file mode 100755
index 000000000..5e85dba21
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Imprecate.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Imprecate.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19 09:11:21
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BuffAmt, DmgType, MinDmg, MaxDmg)
+
+ -- Decreases Mitigation of target vs noxious damage by 21
+ AddSpellBonus(Target, 202, BuffAmt)
+
+ -- Inflicts 10 - 13 disease damage on target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ SpellDamage(Target, DmgType, math.random(MinDmg, MaxDmg))
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+
+end
+
+function remove(Caster, Target, BuffAmt, DmgType, MinDmg, MaxDmg)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Invective.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Invective.lua
new file mode 100755
index 000000000..7fe0da921
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Invective.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Invective.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 10:10:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a hit this spell may cast Deadly Invective on target of attack. Lasts for 24.0 seconds. Triggers about 2.0 times per minute.
+-- Inflicts 35 disease damage on target instantly and every 4 seconds
+-- 44% of target's power consumed will also be drained from target's health
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Maelstrom.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Maelstrom.lua
new file mode 100755
index 000000000..ba2e36c7c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Maelstrom.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Maelstrom.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:55
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 337 - 412 disease damage on target encounter instantly and every 5 seconds
+-- Decreases power of target encounter by 56 - 68 instantly and every 5 seconds
+-- Heals group members (AE) for 365 - 446 instantly and every 5 seconds
+-- Increases power of group members (AE) by 61 - 74 instantly and every 5 seconds
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/MailofSouls.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/MailofSouls.lua
new file mode 100755
index 000000000..7eb011f42
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/MailofSouls.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/MailofSouls.lua
+ Script Author : neatz09
+ Script Date : 2019.10.07 03:10:55
+ Script Purpose :
+ :
+--]]
+-- Dispels 42 levels of any hostile effects on group members (AE)
+function cast(Caster, Target, Amt)
+ CureByType(Amt, 0, "Cure")
+end
+
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Malaise.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Malaise.lua
new file mode 100755
index 000000000..055762a87
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Malaise.lua
@@ -0,0 +1,79 @@
+--[[
+ Script Name : dot_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+
+ else
+
+ DebuffValue = MinDebuffVal
+
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Defense" then
+
+ -- Need functionality to buff/debuff
+ -- ModifyDefense(Target, -DebuffValue)
+
+ end
+
+ if DebuffType == "Elemental" then
+
+ -- Need functionality to buff/debuff
+ -- ModifyHeat(Target, -DebuffValue)
+ -- ModifyCole(Target, -DebuffValue)
+
+ end
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ if DebuffType == "Defense" then
+ -- Need functionality to restore original mitigations
+ -- ModifyDefense(Target, Original)
+ end
+
+ if DebuffType == "Elemental" then
+ -- Need functionality to restore original mitigations
+ -- ModifyHeat(Target, Original)
+ -- ModifyCold(Target, Original)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/MinorSacrificialHeal.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/MinorSacrificialHeal.lua
new file mode 100755
index 000000000..4a1745622
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/MinorSacrificialHeal.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Heal (Spell Type)
+ Script Purpose : Generic script for healing spells
+ Script Author : John Adams
+ Script Date : 2008.12.03
+ Script Note :
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal)
+
+ -- Heal Component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Nightmares.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Nightmares.lua
new file mode 100755
index 000000000..78a40f9e8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Nightmares.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Nightmares.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:38
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 806 - 985 disease damage on target encounter instantly and every 4 seconds
+-- Heals group members (AE) for 5 - 7 instantly and every 4 seconds
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/NoxiousEfflux.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/NoxiousEfflux.lua
new file mode 100755
index 000000000..e054c1776
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/NoxiousEfflux.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/NoxiousEfflux.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 05:03:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Sta, Nox)
+ -- Increases STA of group members (AE) by 3.0
+ AddSpellBonus(Target, 1, BonusAmt)
+
+ -- Increases Mitigation of group members (AE) vs noxious damage by 194
+ AddSpellBonus(Target, 202, Nox)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Purulence.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Purulence.lua
new file mode 100755
index 000000000..1222617d7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Purulence.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Purulence.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) collectively against 1528 total points of all damage
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Putrefy.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Putrefy.lua
new file mode 100755
index 000000000..bc525419f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Putrefy.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Putrefy.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 03:03:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, DoTType, DmgVal)
+ -- Decreases WIS of target by 8.0
+ AddSpellBonus(Target, 3, BonusAmt)
+
+ -- Inflicts 6 poison damage on target instantly and every 4 seconds
+ SpellDamage(Target, DoTType, DmgVal)
+
+end
+
+function tick(Caster, Target, BonusAmt, DoTType, DmgVal)
+ SpellDamage(Target, DoTType, DmgVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Reanimate.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Reanimate.lua
new file mode 100755
index 000000000..90436c3f8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Reanimate.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Reanimate.lua
+ Script Author : neatz09
+ Script Date : 2020.01.27 08:01:02
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Reanimate on termination. Lasts for 1 minute.
+-- Heals target for 30.0% of max health
+-- This effect cannot be critically applied.
+-- Increases power of target by 2.0% instantly and every 4 seconds
+-- This effect cannot be critically applied.
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- If outside an arena
+-- If between levels 1 - 6
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SacrificialRestoration.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SacrificialRestoration.lua
new file mode 100755
index 000000000..345f71928
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SacrificialRestoration.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/SacrificialRestoration.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 03:03:45
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Heals target for 44 - 54
+ SpellHeal("Heal", MinVal, MaxVal, Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Senescence.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Senescence.lua
new file mode 100755
index 000000000..a22d3f129
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Senescence.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Senescence.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 98.0
+-- Decreases Lethality of target by 98.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- Applies Reanimate on termination. Lasts for 1 minute.
+-- Heals target for 30.0% of max health
+-- This effect cannot be critically applied.
+-- Increases power of target by 2.0% instantly and every 4 seconds
+-- This effect cannot be critically applied.
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/ShroudofArmor.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/ShroudofArmor.lua
new file mode 100755
index 000000000..d004828e6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/ShroudofArmor.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/ShroudofArmor.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 04:03:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Resist, Ward)
+ -- Increases Mitigation of group members (AE) vs physical damage by 93
+ -- If not fighter
+ AddSpellBonus(Target, 600, Resist, 11, 21, 31)
+
+ -- Wards group members (AE) against 9 points of elemental, noxious and arcane damage
+ AddWard(Ward, 1, 2)
+end
+
+function tick(Caster, Target)
+ -- No clue on the tick time (6 sec) or amount to regen per tick, just a guess at this point
+ AddToWard(3)
+end
+
+--Missing function for health over level 90
+--last data entry is for max health
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveWard()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SinisterCountenance.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SinisterCountenance.lua
new file mode 100755
index 000000000..fa4ca448f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SinisterCountenance.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/SinisterCountenance.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 05:03:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Sta, Wis, Resist)
+ -- Increases STA of caster by 7.7
+ AddSpellBonus(Target, 1, Sta)
+
+ -- Increases WIS of caster by 28.8
+ AddSpellBonus(Target, 3, Wis)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 428
+ AddSpellBonus(Target, 201, Resist)
+ AddSpellBonus(Target, 202, Resist)
+ AddSpellBonus(Target, 203, Resist)
+
+ -- Grants See Invisibility to caster
+
+ -- Shapechanges caster into a chaos essence
+ SetIllusion(Target, 3717)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ ResetIllusion(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SoulCannibalize.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SoulCannibalize.lua
new file mode 100755
index 000000000..bdacd0ea0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SoulCannibalize.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/SoulCannibalize.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:29
+ Script Purpose :
+ :
+--]]
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Pwr)
+-- Inflicts 23 - 28 divine damage on target instantly and every 3 seconds
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Increases power of caster by 26 instantly and every 3 seconds
+SpellHeal(Power, Pwr)
+end
+
+function tick(Caster, Target)
+-- Inflicts 23 - 28 divine damage on target instantly and every 3 seconds
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Increases power of caster by 26 instantly and every 3 seconds
+SpellHeal(Power, Pwr)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SpiritualCircle.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SpiritualCircle.lua
new file mode 100755
index 000000000..d620a6709
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/SpiritualCircle.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/SpiritualCircle.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TendrilsofHorror.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TendrilsofHorror.lua
new file mode 100755
index 000000000..13c2dd49f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TendrilsofHorror.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/TendrilsofHorror.lua
+ Script Author : neatz09
+ Script Date : 2020.03.24 07:03:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged with a melee weapon this spell has a 8% chance to cast Tendrils of Fear on target's attacker. Lasts for 36.0 seconds.
+-- Decreases DPS of target by 15.2
+-- Decreases Haste of target by 12.1
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TerrorChant.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TerrorChant.lua
new file mode 100755
index 000000000..9a4e074c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TerrorChant.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/TerrorChant.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 04:03:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Hate)
+ -- Decreases Threat to targets in Area of Effect by 323
+ AddHate(Caster, Target, Hate)
+
+ -- Decreases threat priority of targets in Area of Effect by 1 position
+
+ -- Makes targets in Area of Effect afraid
+ -- If Target is not Epic
+ -- 30% chance to dispel when target takes damage
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 6)
+ AddProc(Target, 2, 30.0)
+ end
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ CancelSpell()
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 6)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TribalSpirit.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TribalSpirit.lua
new file mode 100755
index 000000000..d1eeded8f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/TribalSpirit.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/TribalSpirit.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:39
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Adds additional healing to Ancient Shroud
+-- Adds additional healing to Carrion Warding
+-- On a beneficial spell cast this spell has a 12% chance to cast Tribal Spirit on the group. Lasts for 12.0 seconds.
+-- Improves the value of healing and ward spells by 8%.
+-- Reduces elemental, noxious, arcane damage done to group members (AE) by 5%
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Vehemence.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Vehemence.lua
new file mode 100755
index 000000000..8a8fe9db7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Vehemence.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Vehemence.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 05:03:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Sta, Str)
+ -- Increases STA of group members (AE) by 6.9
+ AddSpellBonus(Target, 1, Sta)
+
+ -- Increases STR of group members (AE) by 13.1
+ AddSpellBonus(Target, 0, Str)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Vivication.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Vivication.lua
new file mode 100755
index 000000000..e5d68aa63
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/Vivication.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/Vivication.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Vivication on termination.
+-- Heals target for 16.6% of max health
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/VoiceoftheAncestors.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/VoiceoftheAncestors.lua
new file mode 100755
index 000000000..8b86bdbd6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/VoiceoftheAncestors.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/VoiceoftheAncestors.lua
+ Script Author : neatz09
+ Script Date : 2019.10.10 09:10:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 55 levels of hostile Fear, hostile Root, hostile Stifle, hostile Stun, hostile Daze and hostile Mesmerize effects on group members (AE)
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Defiler/WildAccretion.lua b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/WildAccretion.lua
new file mode 100755
index 000000000..1125da2c7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Defiler/WildAccretion.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Defiler/WildAccretion.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.13 05:03:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Heals group members (AE) for 125 - 153
+ SpellHeal("Heal", MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/EidolicWard.lua b/server/Spells/Spells-Copy/Priest/Shaman/EidolicWard.lua
new file mode 100755
index 000000000..4e8646dd9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/EidolicWard.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/EidolicWard.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards target against 215 points of all damage
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/HealingRitual.lua b/server/Spells/Spells-Copy/Priest/Shaman/HealingRitual.lua
new file mode 100755
index 000000000..fae5448c4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/HealingRitual.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/HealingRitual.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:03
+ Script Purpose :
+ :
+--]]
+
+-- Heals target for 182 - 223
+-- Increases Max Health of target by 27.6
+
+function cast(Caster, Target, MinHeal, MaxHeal, HP)
+SpellHeal("Heal", MinHeal, MaxHeal)
+ AddSpellBonus(Target, 606, HP)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Aid.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Aid.lua
new file mode 100755
index 000000000..2378430af
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Aid.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Heal / Buff (Spell Type)
+ Script Purpose : Generic script for Heal / Buff spells
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal, BuffType, BuffMinVal, BuffMaxVal)
+
+ -- Heal component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+ -- Buff component
+ if BuffType ~= nil then
+
+ if BuffType == "Health" then
+
+ --SetMaxHP(Caster, GetMaxHP(Target) + BuffMinVal)
+ AddSpellBonus(Target, 500, BuffMinVal)
+
+ end
+
+ -- do other buff types here
+
+ end
+
+end
+
+function tick(Caster, Target, HealType, HealMinVal, HealMaxVal, BuffType, BuffMinVal, BuffMaxVal)
+
+ if BuffType == "Health" then
+
+ SetMaxHP(Caster, GetMaxHP(Target) + BuffMinVal)
+
+ end
+
+ -- do other buff types here
+
+end
+
+function remove(Caster, Target, HealType, HealMinVal, HealMaxVal, BuffType, BuffMinVal, BuffMaxVal)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralAvatar.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralAvatar.lua
new file mode 100755
index 000000000..8ade125d0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralAvatar.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/AncestralAvatar.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 09:11:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Stat, Avoid)
+-- Increases AGI, STR and STA of target by 54.4
+ AddSpellBonus(Target, 0, Stat)
+ AddSpellBonus(Target, 1, Stat)
+ AddSpellBonus(Target, 2, Stat)
+-- Adds 1.3% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralBalm.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralBalm.lua
new file mode 100755
index 000000000..d2cf53f53
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralBalm.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/AncestralBalm.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 02:02:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 52 levels of any hostile effects on target
+-- Dispels 52 levels of hostile Fear effects on target
+-- Casts Ancestral Balm Fear Immunity for each successful Dispel. Lasts for 10.0 seconds.
+-- Makes target immune to Fear effects
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- Dispels 52 levels of hostile Daze effects on target
+-- Casts Ancestral Balm Daze Immunity for each successful Dispel. Lasts for 10.0 seconds.
+-- Makes target immune to Daze effects
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- Dispels 52 levels of hostile Root effects on target
+-- Casts Ancestral Balm Root Immunity for each successful Dispel. Lasts for 10.0 seconds.
+-- Makes target immune to Root effects
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- Dispels 52 levels of hostile Stifle effects on target
+-- Casts Ancestral Balm Stifle Immunity for each successful Dispel. Lasts for 10.0 seconds.
+-- Makes target immune to Stifle effects
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- Dispels 52 levels of hostile Stun effects on target
+-- Casts Ancestral Balm Stun Immunity for each successful Dispel. Lasts for 10.0 seconds.
+-- Makes target immune to Stun effects
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralMettle.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralMettle.lua
new file mode 100755
index 000000000..8fd202ffe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralMettle.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/AncestralMettle.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 08:12:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StatAmt, ResistAmt)
+ -- Increases STA of group members (AE) by 3.0
+ AddSpellBonus(Target, 1, StatAmt)
+
+ -- Increases Mitigation of group members (AE) vs noxious damage by 194
+ AddSpellBonus(Target, 202, ResistAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralSavior.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralSavior.lua
new file mode 100755
index 000000000..ebffd88e0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralSavior.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/AncestralSavior.lua
+ Script Author : neatz09
+ Script Date : 2020.02.06 04:02:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Eidolic Savior on caster. Lasts for 36.0 seconds.
+-- Wards target against 327 points of all damage
+-- Heals target for 266
+-- Increases power of target by 61 every 6 seconds
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralSentry.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralSentry.lua
new file mode 100755
index 000000000..1f6882e7a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralSentry.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/AncestralSentry.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:26
+ Script Purpose :
+ :
+--]]
+
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralWard.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralWard.lua
new file mode 100755
index 000000000..bc6938f8a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/AncestralWard.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/AncestralWard.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 07:12:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, WardAmt)
+ -- Wards target against 155 points of all damage
+ AddWard(WardAmt)
+
+ Say(Caster, "Not Implemented: remainder to heal")
+end
+
+function remove(Caster, Target)
+ RemoveWard()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Bolster.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Bolster.lua
new file mode 100755
index 000000000..78ac4907b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Bolster.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Bolster.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 02:02:00
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases All Attributes of target by 11.3%
+-- Enlarges target by 30.6%
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/ColdWind.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/ColdWind.lua
new file mode 100755
index 000000000..c4b36a63b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/ColdWind.lua
@@ -0,0 +1,42 @@
+--[[
+ Script Name : dd_snare.lua
+ Script Purpose : Generic damage + Snare effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, SnareAmount, DispelChance)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Snare component
+ OriginalSpeed = GetSpeed(Target)
+ newSpeed = OriginalSpeed - (OriginalSpeed * (SnareAmount / 100))
+
+ if OriginalSpeed > newSpeed then
+ SetSpeed(Target, newSpeed)
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, SnareAmount, DispelChance)
+--[[
+ OriginalSpeed = GetSpeed(Target)
+ newSpeed = OriginalSpeed - (OriginalSpeed * (SnareAmount / 100))
+
+ if OriginalSpeed > newSpeed then
+ SetSpeed(Target, newSpeed)
+ end
+--]]
+end
+
+function remove(Caster, Target)
+--[[
+ SetSpeed(Target, OriginalSpeed)
+--]]
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Deteriorate.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Deteriorate.lua
new file mode 100755
index 000000000..279076b63
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Deteriorate.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Deteriorate.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 06:12:41
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Decreases STR and AGI of target by 8.0
+ AddSpellBonus(Target, 0, BonusAmt)
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/EbbingSpirit.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/EbbingSpirit.lua
new file mode 100755
index 000000000..0e315e45a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/EbbingSpirit.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/EbbingSpirit.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 09:10:28
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 42 levels of any hostile effects on group members (AE)
+function cast(Caster, Target, Amt)
+ CureByType(Amt, 0, "Cure")
+end
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/EchoesoftheAncients.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/EchoesoftheAncients.lua
new file mode 100755
index 000000000..064b1bc8a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/EchoesoftheAncients.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/EchoesoftheAncients.lua
+ Script Author : neatz09
+ Script Date : 2020.02.03 09:02:12
+ Script Purpose :
+ :
+--]]
+
+-- Increases all damage done to target encounter by 1.35%
+-- Interrupts target encounter
+-- Decreases Mitigation of target encounter vs elemental and noxious damage by 234
+
+function cast(Caster, Target, DmgBonus, Mit)
+ Say(Caster, "Unsure if dmg bonus works or not")
+
+AddSpellBonus(Caster, 704, DmgBonus)
+ Interrupt(Caster, Target)
+ AddSpellBonus(Target, 201, Mit)
+ AddSpellBonus(Target, 202, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster, Target)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Fever.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Fever.lua
new file mode 100755
index 000000000..885631937
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Fever.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+
+ else
+
+ SpellDamage(Target, DOTType, MinDOTVal)
+
+ end
+
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/FieldsoftheGrey.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/FieldsoftheGrey.lua
new file mode 100755
index 000000000..8080644cb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/FieldsoftheGrey.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/FieldsoftheGrey.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Heal on termination.
+-- Heals target for 16.6% of max health
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 98.0
+-- Decreases Lethality of target by 98.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/GlacialFlames.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/GlacialFlames.lua
new file mode 100755
index 000000000..64be598ee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/GlacialFlames.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/GlacialFlames.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 09:11:19
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 58 - 71 cold damage on target instantly and every 3 seconds
+
+
+function cast(Caster, Target, DoTType, MinVal, MaxVal)
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+end
+
+function tick(Caster, Target, DoTType, MinVal, MaxVal)
+ SpellDamage(Target, DoTType, MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Haze.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Haze.lua
new file mode 100755
index 000000000..d5d6da6ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Haze.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Haze.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 05:12:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, SkillAmt)
+ -- Decreases Attack Speed of target by 9.2
+ AddSpellBonus(Target, 617, BonusAmt)
+
+ -- Decreases Slashing, Piercing and Crushing of target by 0.6
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/LamentingSoul.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/LamentingSoul.lua
new file mode 100755
index 000000000..a7ac17d8a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/LamentingSoul.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/LamentingSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.09.27 10:09:03
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases DPS of target by 15.9
+
+function cast(Caster, Target, Amt)
+ AddSpellBonus(Target, 629, Amt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Lethargy.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Lethargy.lua
new file mode 100755
index 000000000..1180f3d7c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Lethargy.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Lethargy.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 09:11:18
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Haste of target encounter by 13.4
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 617, BonusAmt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/LunarAttendant.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/LunarAttendant.lua
new file mode 100755
index 000000000..74f10bb87
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/LunarAttendant.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/LunarAttendant.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 09:11:03
+ Script Purpose :
+ :
+--]]
+
+-- Summons a limited pet to aid the caster
+function cast(Caster, Target, PetID)
+ local x = GetX(Caster)
+ local y = GetY(Caster)
+ local z = GetZ(Caster)
+
+ SummonDumbFirePet(Caster, Target, PetID, x, y, z)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/MinorRitual.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/MinorRitual.lua
new file mode 100755
index 000000000..2378430af
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/MinorRitual.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Heal / Buff (Spell Type)
+ Script Purpose : Generic script for Heal / Buff spells
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, HealType, HealMinVal, HealMaxVal, BuffType, BuffMinVal, BuffMaxVal)
+
+ -- Heal component
+ if HealMinVal < HealMaxVal then
+ ModifyHP(Caster, math.random(HealMinVal, HealMaxVal))
+ else
+ ModifyHP(Caster, HealMinVal)
+ end
+
+ -- Buff component
+ if BuffType ~= nil then
+
+ if BuffType == "Health" then
+
+ --SetMaxHP(Caster, GetMaxHP(Target) + BuffMinVal)
+ AddSpellBonus(Target, 500, BuffMinVal)
+
+ end
+
+ -- do other buff types here
+
+ end
+
+end
+
+function tick(Caster, Target, HealType, HealMinVal, HealMaxVal, BuffType, BuffMinVal, BuffMaxVal)
+
+ if BuffType == "Health" then
+
+ SetMaxHP(Caster, GetMaxHP(Target) + BuffMinVal)
+
+ end
+
+ -- do other buff types here
+
+end
+
+function remove(Caster, Target, HealType, HealMinVal, HealMaxVal, BuffType, BuffMinVal, BuffMaxVal)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Oberon.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Oberon.lua
new file mode 100755
index 000000000..c3d9e9e29
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Oberon.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Oberon.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 01:02:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards target against 1061 points of all damage
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/PathoftheGrey.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/PathoftheGrey.lua
new file mode 100755
index 000000000..a8c43a8b8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/PathoftheGrey.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/PathoftheGrey.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 07:08:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 15% health and power
+-- Applies Heal on termination.
+-- Heals target for 16.6% of max health
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 75.0
+-- Decreases Lethality of target by 75.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Plague.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Plague.lua
new file mode 100755
index 000000000..db029af96
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Plague.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Plague.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 05:12:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DoTType, MinVal)
+ -- Inflicts 6 disease damage on target instantly and every 4 seconds
+ SpellDamage(Target, DoTType, MinVal)
+
+ -- Inflicts 6 disease damage on target instantly and every 4 seconds
+ -- If target is shadowed folk
+ -- Inflicts 6 disease damage on target instantly and every 4 seconds
+ -- If target is nightblood
+ Say(Caster, "Not Implemented: Bonus damage to nightbloods and shadowed folk")
+
+end
+
+function tick(Caster, Target, DoTType, MinVal)
+ -- Inflicts 6 disease damage on target instantly and every 4 seconds
+ SpellDamage(Target, DoTType, MinVal)
+
+ -- Inflicts 6 disease damage on target instantly and every 4 seconds
+ -- If target is shadowed folk
+ -- Inflicts 6 disease damage on target instantly and every 4 seconds
+ -- If target is nightblood
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Premonition.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Premonition.lua
new file mode 100755
index 000000000..6777a4509
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Premonition.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Premonition.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 06:12:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusSta, BonusPower)
+ -- Increases STA of target by 1.9
+ AddSpellBonus(Target, 1, BonusSta)
+
+ -- Increases Max Power of target by 21.9
+ AddSpellBonus(Target, 501, BonusPower)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/PropheticWard.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/PropheticWard.lua
new file mode 100755
index 000000000..8ee9f513b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/PropheticWard.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/PropheticWard.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 09:10:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) against 13 points of noxious damage
+-- Increases Mitigation of group members (AE) vs noxious damage by 261
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RecalloftheGrey.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RecalloftheGrey.lua
new file mode 100755
index 000000000..e069a586c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RecalloftheGrey.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/RecalloftheGrey.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 02:02:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Grey Ward on termination. Lasts for 30.0 seconds.
+-- Wards target against 590 points of all damage
+-- Heals target for 15.0% of max health
+-- This effect cannot be critically applied.
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Haste of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Decreases Haste of target by 5.0
+-- If between levels 1 - 6
+-- Resurrects target with 15% health and power
+-- If outside an arena
+-- If outside an arena
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Rejuvenation.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Rejuvenation.lua
new file mode 100755
index 000000000..f8790c910
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Rejuvenation.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Rejuvenation.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19 08:11:16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BuffAmt, MinHealAmt, MaxHealAmt)
+
+ -- Buff component (health)
+ AddSpellBonus(Target, 606, BuffAmt)
+
+ -- Heal component
+ if MaxHeal ~= nil and MinHeal < MaxHeal then
+ healAmount = math.random(MinHeal, MaxHeal)
+ ModifyHP(Target, healAmount)
+ else
+ ModifyHP(Target, MinHealAmt)
+ end
+
+end
+
+function remove(Caster, Target, BuffAmt, MinHealAmt, MaxHealAmt)
+
+ -- Remove buff (health)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RejuvenationX.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RejuvenationX.lua
new file mode 100755
index 000000000..f8790c910
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RejuvenationX.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Rejuvenation.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19 08:11:16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BuffAmt, MinHealAmt, MaxHealAmt)
+
+ -- Buff component (health)
+ AddSpellBonus(Target, 606, BuffAmt)
+
+ -- Heal component
+ if MaxHeal ~= nil and MinHeal < MaxHeal then
+ healAmount = math.random(MinHeal, MaxHeal)
+ ModifyHP(Target, healAmount)
+ else
+ ModifyHP(Target, MinHealAmt)
+ end
+
+end
+
+function remove(Caster, Target, BuffAmt, MinHealAmt, MaxHealAmt)
+
+ -- Remove buff (health)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RitualHealing.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RitualHealing.lua
new file mode 100755
index 000000000..227b649c1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RitualHealing.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/RitualHealing.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 05:12:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, BonusAmt)
+ -- Heals target for 40 - 49
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellHeal("Heal", math.random(MinVal, MaxVal))
+ else
+ SpellHeal("Heal", MinVal)
+ end
+
+ -- Increases Max Health of target by 6.3
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RunicArmor.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RunicArmor.lua
new file mode 100755
index 000000000..98351a173
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/RunicArmor.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/RunicArmor.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 06:12:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- VIII and above missing max health portion of script - Neatz09
+
+
+function cast(Caster, Target, WardValue, MitValue)
+ -- Wards group members (AE) against 4 points of physical damage
+ AddWard(WardValue)
+
+ -- Increases Mitigation of group members (AE) vs physical damage by 93
+ -- If not fighter
+ local group = GetGroup(Caster)
+ if group ~= nil then
+ for key, value in pairs(group) do
+ if value and GetArchetypeName(value) ~= "fighter" then
+ -- AddSpellBonus(value, 204, MitValue)
+ -- AddSpellBonus(value, 205, MitValue)
+ -- AddSpellBonus(value, 206, MitValue)
+ end
+ end
+ end
+end
+
+function remove(Caster, Target)
+ RemoveWard()
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SlothfulSpirit.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SlothfulSpirit.lua
new file mode 100755
index 000000000..4f705aba4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SlothfulSpirit.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/SlothfulSpirit.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 02:02:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Target will lose 44% more power when power is consumed
+-- On a spell cast this spell will cast Sloth's Habitat on target.
+-- Inflicts 163 - 199 divine damage on target
+-- Grants a total of 3 triggers of the spell.
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritTap.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritTap.lua
new file mode 100755
index 000000000..f9861ad65
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritTap.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/SpiritTap.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:35
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When a group member inflicts damage, that damage is converted into a heal and power restore for the Mystic's group. If the caster enters PVP combat, the duration of this effect will be reduced.
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritoftheMammoth.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritoftheMammoth.lua
new file mode 100755
index 000000000..341081600
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritoftheMammoth.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/SpiritoftheMammoth.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 08:12:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt)
+ -- Increases STA and STR of group members (AE) by 13.1
+ AddSpellBonus(Target, 0, BonusAmt)
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Spirits.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Spirits.lua
new file mode 100755
index 000000000..7d179d0ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Spirits.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Spirits.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 07:12:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Hate)
+ -- Mesmerizes targets in Area of Effect
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 1)
+ end
+
+ -- Decreases Threat to targets in Area of Effect by 323
+ AddHate(Target, Hate)
+
+ -- Decreases threat priority of targets in Area of Effect by 1 position
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritualWarding.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritualWarding.lua
new file mode 100755
index 000000000..598b68120
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/SpiritualWarding.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/SpiritualWarding.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases the power of wards by 30% of the mystic's wisdom
+-- On a beneficial spell cast this spell has a 12% chance to cast Tribal Rage on the group. Lasts for 12.0 seconds.
+-- Group members (AE) will Double Attack on 15% of attacks
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Torpor.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Torpor.lua
new file mode 100755
index 000000000..57589d36a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Torpor.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Torpor.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 02:02:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards target against 334 points of all damage
+-- Heals target for 100 - 123 every 2 seconds
+-- Decreases Haste of target by 25.0
+-- Slows target by 50.0%
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Transcendence.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Transcendence.lua
new file mode 100755
index 000000000..1b4250c0e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/Transcendence.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/Transcendence.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 07:12:36
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MinVal, MaxVal, BonusAmt)
+ -- Heals group members (AE) for 125 - 153
+ if MaxVal ~= nil and MinVal < MaxVal then
+ ModifyHP(Target, math.random(MinVal, MaxVal))
+ else
+ ModifyHP(Target, MinVal)
+ end
+
+ -- Increases Max Health of group members (AE) by 15.8
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/UmbralWarding.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/UmbralWarding.lua
new file mode 100755
index 000000000..8e6dc0bfa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/UmbralWarding.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/UmbralWarding.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 08:12:35
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, WardAmt)
+ -- Wards group members (AE) collectively against 327 total points of all damage
+ AddWard(Target, WardAmt)
+end
+
+function remove(Caster, Target)
+ RemoveWard()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/UrsineAvatar.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/UrsineAvatar.lua
new file mode 100755
index 000000000..f50ed840f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/UrsineAvatar.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/UrsineAvatar.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.13 08:12:12
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StaAmt, WisAmt, MitAmt)
+ -- Shapechanges caster into a bear
+ Say(Caster, "Not Implemented: shape change and see stealth")
+
+ -- Increases STA of caster by 7.7
+ AddSpellBonus(Target, 1, StaAmt)
+
+ -- Increases WIS of caster by 28.8
+ AddSpellBonus(Target, 3, WisAmt)
+
+ -- Grants See Stealth to caster
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 428
+ AddSpellBonus(Target, 201, MitAmt)
+ AddSpellBonus(Target, 202, MitAmt)
+ AddSpellBonus(Target, 203, MitAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/VeliumWinds.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/VeliumWinds.lua
new file mode 100755
index 000000000..3aa1bfc46
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/VeliumWinds.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/VeliumWinds.lua
+ Script Author : John Adams
+ Script Date : 2013.11.19 09:11:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmgVal, MaxDmgVal, SpellID)
+ Say(Caster, "Missing slow components")
+-- Missing Slows Target Component
+ -- Damage component
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, dmgAmount)
+ end
+
+ -- Applies Touch of the Grey. Lasts for 10.0 seconds.
+ CastSpell(Target, 3000, 1, Caster)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WardsoftheEidolon.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WardsoftheEidolon.lua
new file mode 100755
index 000000000..78122b2de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WardsoftheEidolon.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/WardsoftheEidolon.lua
+ Script Author : neatz09
+ Script Date : 2020.02.07 01:02:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) collectively against 1383 total points of all damage
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WaterSpirit.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WaterSpirit.lua
new file mode 100755
index 000000000..1e73e389b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WaterSpirit.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/WaterSpirit.lua
+ Script Author : neatz09
+ Script Date : 2019.09.28 11:09:34
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows group members (AE) to breathe under water
+-- Allows group members (AE) to walk under water
+-- Allows group members (AE) to jump under water
+
+function cast(Caster, Target)
+BreatheUnderwater(Target, true)
+AddControlEffect(Target, 7)
+AddControlEffect(Target, 8)
+end
+
+
+function remove(Caster, Target)
+BreatheUnderwater(Target, false)
+ RemoveControlEffect(Target, 7)
+ RemoveControlEffect(Target, 8)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WrathoftheAncients.lua b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WrathoftheAncients.lua
new file mode 100755
index 000000000..7355dd50a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/Mystic/WrathoftheAncients.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Shaman/Mystic/WrathoftheAncients.lua
+ Script Author : neatz09
+ Script Date : 2019.09.27 10:09:01
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 130 - 159 disease damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/SpiritGuide.lua b/server/Spells/Spells-Copy/Priest/Shaman/SpiritGuide.lua
new file mode 100755
index 000000000..b5088a2f9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/SpiritGuide.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Shaman/SpiritGuide.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:03
+ Script Purpose :
+ :
+--]]
+
+-- This effect cannot be cast during combat
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target, ItemID)
+-- Summon 1 Spirit Guide
+ if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/SpiritoftheBull.lua b/server/Spells/Spells-Copy/Priest/Shaman/SpiritoftheBull.lua
new file mode 100755
index 000000000..ddf44762f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/SpiritoftheBull.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Shaman/SpiritoftheBull.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:56
+ Script Purpose :
+ :
+--]]
+
+-- Increases STR and STA of group members (AE) by 13.1
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 600, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/SpiritoftheWolf.lua b/server/Spells/Spells-Copy/Priest/Shaman/SpiritoftheWolf.lua
new file mode 100755
index 000000000..8b3754f05
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/SpiritoftheWolf.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Priest/Shaman/SpiritoftheWolf.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:07
+ Script Purpose :
+ :
+--]]
+-- Increases speed of group members (AE) by 20.0%
+-- This effect suspends during combat
+
+function cast(Caster, Target, Speed)
+ AddSpellBonus(Target, 609, Speed)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/SpiritualSeal.lua b/server/Spells/Spells-Copy/Priest/Shaman/SpiritualSeal.lua
new file mode 100755
index 000000000..dfdd95c5f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/SpiritualSeal.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Priest/Shaman/SpiritualSeal.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:02
+ Script Purpose :
+ :
+--]]
+
+-- Increases Max Health of group members (AE) by 30.4
+-- Increases Mitigation of group members (AE) vs noxious damage by 156
+
+function cast(Caster, Target, HP, Mit)
+ AddSpellBonus(Target, 606, HP)
+ AddSpellBonus(Target, 202, Mit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/TotemicAid.lua b/server/Spells/Spells-Copy/Priest/Shaman/TotemicAid.lua
new file mode 100755
index 000000000..34ee42494
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/TotemicAid.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Shaman/TotemicAid.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 91 - 111
+-- Increases Max Health of target by 11.3
+
+function cast(Caster, Target, MinHeal, MaxHeal, HP)
+SpellHeal("Heal", MinHeal, MaxHeal)
+ AddSpellBonus(Target, 600, HP)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/UmbralTrap.lua b/server/Spells/Spells-Copy/Priest/Shaman/UmbralTrap.lua
new file mode 100755
index 000000000..3cda5f3c4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/UmbralTrap.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Priest/Shaman/UmbralTrap.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:52
+ Script Purpose :
+ :
+--]]
+
+-- Decreases DPS of target encounter by 10.6
+
+function cast(Caster, Target, DebuffAmt)
+ AddSpellBonus(Target, 629, DebuffAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaman/WailingHaze.lua b/server/Spells/Spells-Copy/Priest/Shaman/WailingHaze.lua
new file mode 100755
index 000000000..e7643582a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaman/WailingHaze.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Priest/Shaman/WailingHaze.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:08
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Haste of target by 9.9
+
+function cast(Caster, Target, Haste)
+AddSpellBonus(Target, 617, Haste)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/AuraofCrippling.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/AuraofCrippling.lua
new file mode 100755
index 000000000..92a838699
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/AuraofCrippling.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/AuraofCrippling.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Aura of Crippling. Lasts for 8.0 seconds.
+-- Decreases Mitigation of targets in Area of Effect vs noxious damage by 510
+-- Decreases Mitigation of targets in Area of Effect vs physical damage by 510
+-- Decreases Mitigation of targets in Area of Effect vs elemental damage by 510
+-- Decreases Mitigation of targets in Area of Effect vs arcane damage by 510
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/Barrage.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/Barrage.lua
new file mode 100755
index 000000000..8b2744b21
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/Barrage.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/Barrage.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:27
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 7 - 11 ranged damage on targets in Area of Effect
+-- Inflicts 7 - 11 ranged damage on targets in Area of Effect
+-- Inflicts 7 - 11 ranged damage on targets in Area of Effect
+-- Requires bow or aim
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BarrierofDissonance.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BarrierofDissonance.lua
new file mode 100755
index 000000000..e50d805ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BarrierofDissonance.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/BarrierofDissonance.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Will absorb all damage when the amount is less than 15% of the target's maximum health. This spell will absorb a total of 50 attacks.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BlackwoodsFocus.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BlackwoodsFocus.lua
new file mode 100755
index 000000000..ca216c1a4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BlackwoodsFocus.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/BlackwoodsFocus.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Blackwood's Focus to qualifying pets.
+-- Heals target for 1.0% of max health instantly and every 3 seconds
+-- Cannot be modified except by direct means
+-- Improves the channeler's heals by 20% of their wisdom.
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BroodCure.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BroodCure.lua
new file mode 100755
index 000000000..b57f85d5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/BroodCure.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/BroodCure.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:06
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 42 levels of any hostile effects on group members (AE)
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelEssence.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelEssence.lua
new file mode 100755
index 000000000..c9d9740e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelEssence.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChannelEssence.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Attempt to channel the target's essence so that you can add it to your construct
+-- Must be engaged in combat
+-- If any of the following are true:
+-- If under 25% Health
+-- If target is of gray difficulty
+-- Certain enemies cannot have their essence taken.
+-- Does not affect Epic targets
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelSoul.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelSoul.lua
new file mode 100755
index 000000000..9aa27876e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelSoul.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChannelSoul.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:42
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+-- This effect cannot be cast during combat
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target, ItemID)
+-- Summon 1 Channeling Vessel
+ if IsPlayer(Target) and HasItem(Target, ItemID) then
+RemoveItem(Target, ItemID)
+end
+SummonItem(Target, ItemID)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledCleansing.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledCleansing.lua
new file mode 100755
index 000000000..5b46b57c0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledCleansing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChanneledCleansing.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels 56 levels of any hostile effects on group members (AE)
+-- Casts Channeled Cleansing for each successful Dispel.
+-- Increases power of target by 397
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
+-- You cannot cast this spell while under the effects of something that supresses the use of group cures!
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledConfusion.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledConfusion.lua
new file mode 100755
index 000000000..451be3cb9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledConfusion.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChanneledConfusion.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:31
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces the group's threat position by 2 and threat to the target encounter. Does not apply to fighters.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledEvacuation.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledEvacuation.lua
new file mode 100755
index 000000000..bbd57be3c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledEvacuation.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChanneledEvacuation.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:41
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Pulls all non-fighter group members to the channeler's location if they are outside of 5 meters away from the channeler. The channeler needs line of sight to pull their targets.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledProtection.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledProtection.lua
new file mode 100755
index 000000000..b0dcf188f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledProtection.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChanneledProtection.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On death this spell will cast Channeler's Protection on caster. Lasts for 36.0 seconds.
+-- Heals target for 495
+-- Target will Dodge 7.2% of incoming attacks
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledResurrection.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledResurrection.lua
new file mode 100755
index 000000000..ba21eebf7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledResurrection.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChanneledResurrection.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Channeled Resurrection.
+-- Resurrects target with 30% health and power
+-- Only affects targets within 8 meters of the channeler
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledTransference.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledTransference.lua
new file mode 100755
index 000000000..84c3d0be5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChanneledTransference.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChanneledTransference.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:00
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Channeled Transference.
+-- Heals group members (AE) for 561
+-- Requires and consumes 15% of your construct's health
+-- If pet over 15% Health
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelersSight.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelersSight.lua
new file mode 100755
index 000000000..f61c42913
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ChannelersSight.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ChannelersSight.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Shows the channeler what targets can have their essences taken
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructRegeneration.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructRegeneration.lua
new file mode 100755
index 000000000..c1fe47fe7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructRegeneration.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ConstructRegeneration.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 5.0% of max health instantly and every 5 seconds
+-- This effect cannot be critically applied.
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructsInterception.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructsInterception.lua
new file mode 100755
index 000000000..9e7449ae1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructsInterception.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ConstructsInterception.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- The channeler's construct will intercept damage for the target. As the construct's health falls, the interception becomes weaker and disables when the construct is below 25% health.
+-- If target is a player or a mercenary
+-- Cannot be applied if Overloaded Interception is active.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructsSacrifice.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructsSacrifice.lua
new file mode 100755
index 000000000..d9867dbea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ConstructsSacrifice.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ConstructsSacrifice.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:57
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Construct's Sacrifice. Lasts for 20.0 seconds.
+-- On any combat or spell hit this spell will cast Construct's Sacrifice on target of attack.
+-- Inflicts 31 - 52 poison damage on target
+-- Grants a total of 5 triggers of the spell.
+-- Requires and consumes 25% of the construct's maximum health. This spell will fail if the construct's health is too low!
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ControlledBacklash.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ControlledBacklash.lua
new file mode 100755
index 000000000..781c427f9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ControlledBacklash.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ControlledBacklash.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Controlled Backlash. Lasts for 10.0 seconds.
+-- Lowers the caster's dissipation of dissonance by 100%
+-- Applies when the target of Construct's Interception or Overloaded Interception dies. Can only trigger once per 90 seconds.
+-- Will absorb all damage.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/DissonantDecimation.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/DissonantDecimation.lua
new file mode 100755
index 000000000..e93e3ffee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/DissonantDecimation.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/DissonantDecimation.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 6 - 10 poison damage on targets in Area of Effect
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/EssenceWeave.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/EssenceWeave.lua
new file mode 100755
index 000000000..4e3097774
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/EssenceWeave.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/EssenceWeave.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Repairs target for 15.0% of max health
+-- This effect cannot be critically applied.
+-- Increases Max Health of target by 20.0%
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/EyeShot.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/EyeShot.lua
new file mode 100755
index 000000000..8f195f081
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/EyeShot.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/EyeShot.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 364 - 608 ranged damage on target
+-- Grants a very high chance to force the target to miss their attacks. Each time the target misses, an increment of this effect is removed.
+-- Does not generate threat
+-- Requires bow or aim
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/HealingArrow.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/HealingArrow.lua
new file mode 100755
index 000000000..ae2e3d7c1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/HealingArrow.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/HealingArrow.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:41
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Healing Arrow. Lasts for 8.0 seconds.
+-- Heals targets in Area of Effect for 203 - 248
+-- Applies to the enemy's target if they are in the same group or raid as the channeler and within 50 meters of them. Otherwise, applies to the channeler.
+-- Inflicts 14 - 24 ranged damage on target
+-- Requires bow or aim
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/HiddenReserves.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/HiddenReserves.lua
new file mode 100755
index 000000000..5da6cb77c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/HiddenReserves.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/HiddenReserves.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:13
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Hidden Reserves.
+-- Repairs target for 10.0% of max health
+-- This effect cannot be critically applied.
+-- This triggers when the construct falls below 75%, 50% or 25% maximum health. It can only trigger once every 60 seconds per threshold.
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/InterferingNoise.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/InterferingNoise.lua
new file mode 100755
index 000000000..3e75efe63
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/InterferingNoise.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/InterferingNoise.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases AGI, INT, STR and WIS of target by 20.0
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/InterposeRedirect.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/InterposeRedirect.lua
new file mode 100755
index 000000000..3bad4f8b8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/InterposeRedirect.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/InterposeRedirect.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Automatically heals the target of Construct's Interception or Overloaded Interception for 75% of the damage intercepted
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MarishaKursBlessing.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MarishaKursBlessing.lua
new file mode 100755
index 000000000..1a4384d4d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MarishaKursBlessing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/MarishaKursBlessing.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of group members (AE) by 24.3
+-- If fighter
+-- Increases Mitigation of group members (AE) vs physical damage by 86
+-- If not fighter
+-- Increases Mitigation of group members (AE) vs elemental and noxious damage by 93
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MarishaKursBlessingX.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MarishaKursBlessingX.lua
new file mode 100755
index 000000000..293d8dc1a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MarishaKursBlessingX.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/MarishaKursBlessingX.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Max Health of group members (AE) by 10.8%
+-- If fighter
+-- Increases Mitigation of group members (AE) vs physical damage by 1176
+-- If not fighter
+-- Increases Mitigation of group members (AE) vs elemental and noxious damage by 1270
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MistofPoison.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MistofPoison.lua
new file mode 100755
index 000000000..6b3a7ddb8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/MistofPoison.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/MistofPoison.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 4 - 6 poison damage on target instantly and every 4 seconds
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/OxygenTunnel.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/OxygenTunnel.lua
new file mode 100755
index 000000000..68ec86447
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/OxygenTunnel.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/OxygenTunnel.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows group members (AE) to breathe under water
+-- Grants Fish Vision to group members (AE)
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/PoisonBolt.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/PoisonBolt.lua
new file mode 100755
index 000000000..8454388d6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/PoisonBolt.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/PoisonBolt.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:47
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 18 - 30 poison damage on target
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/QuickenedRegeneration.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/QuickenedRegeneration.lua
new file mode 100755
index 000000000..9614e10fd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/QuickenedRegeneration.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/QuickenedRegeneration.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 6.0% of max health instantly and every 5 seconds
+-- This effect cannot be critically applied.
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/Redirection.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/Redirection.lua
new file mode 100755
index 000000000..4b7cb0442
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/Redirection.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/Redirection.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Will absorb all damage when the amount is greater than 20% of the target's maximum health. This spell will absorb a total of 2 attacks.
+-- Does not apply to constructs
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/RepairOverload.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/RepairOverload.lua
new file mode 100755
index 000000000..efbecd242
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/RepairOverload.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/RepairOverload.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Lowers the channeler's dissonance dissipation by 100%
+-- Doubles the Dissonance generated by active Conduits that are not repairs
+-- Interpose Redirect, Controlled Backlash and Aura of Crippling cannot trigger while this spell is active
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SalubriousInvocation.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SalubriousInvocation.lua
new file mode 100755
index 000000000..72c7d80e0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SalubriousInvocation.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/SalubriousInvocation.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:22
+ Script Purpose :
+ :
+--]]
+
+-- Heals group members (AE) for 113 - 139
+function cast(Caster, Target, MinHeal, MaxHeal)
+SpellHeal("Heal", MinHeal, MaxHeal)
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SanctuaryofDarkness.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SanctuaryofDarkness.lua
new file mode 100755
index 000000000..eba40de06
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SanctuaryofDarkness.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/SanctuaryofDarkness.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:55
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases in-combat movement speed of caster by 100.0%
+-- Makes caster immune to Root effects
+-- Makes caster immune to Stifle effects
+-- Makes caster immune to Stun effects
+-- Makes caster immune to Fear effects
+-- Makes caster immune to Daze effects
+-- Makes caster immune to Mesmerize effects
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShadowBind.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShadowBind.lua
new file mode 100755
index 000000000..0274451a9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShadowBind.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ShadowBind.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:13
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Interrupts targets in Area of Effect
+-- Slows targets in Area of Effect by 28.3%
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShadowEscape.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShadowEscape.lua
new file mode 100755
index 000000000..960de9032
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShadowEscape.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ShadowEscape.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Teleports the caster up to 15 meters backwards from their current location. This ability can fail if the ground is uneven or there are objects are behind the caster.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShieldofBlackwood.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShieldofBlackwood.lua
new file mode 100755
index 000000000..db3fd510c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShieldofBlackwood.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ShieldofBlackwood.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 11:05:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Blackwood Shroud. Lasts for 3.0 seconds.
+-- Caster will Dodge 100.0% of incoming attacks
+-- Prevents AOE (except when direct)
+-- Interrupts targets in Area of Effect
+-- Decreases threat priority of targets in Area of Effect by 1 position
+-- Decreases Threat to targets in Area of Effect by 1,169
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShrinkConstruct.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShrinkConstruct.lua
new file mode 100755
index 000000000..969b4734c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ShrinkConstruct.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ShrinkConstruct.lua
+ Script Author : neatz09
+ Script Date : 2020.02.13 06:02:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Shrink Servant to qualifying pets.
+-- Shrinks target by 35.0%
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SiphonedProtection.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SiphonedProtection.lua
new file mode 100755
index 000000000..948323215
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SiphonedProtection.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/SiphonedProtection.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Siphoned Protection.
+-- Applies Siphoned Protection. Lasts for 15.0 seconds.
+-- Wards target against 1376 points of all damage
+-- Heals target for 1135
+-- Requires and consumes 15% of your construct's health
+-- If pet over 15% Health
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SwiftAid.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SwiftAid.lua
new file mode 100755
index 000000000..8d5af1654
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/SwiftAid.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/SwiftAid.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:46
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Repairs target for 15.0% of max health
+-- This effect cannot be critically applied.
+-- Increases Max Health of target by 10.0%
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ThirSlaasShell.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ThirSlaasShell.lua
new file mode 100755
index 000000000..f74a6a9d6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/ThirSlaasShell.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/ThirSlaasShell.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:15
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Will absorb all damage when the amount is greater than 30% of the target's maximum health. This spell will absorb a total of 1 attack.
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TriggeredRejuvenation.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TriggeredRejuvenation.lua
new file mode 100755
index 000000000..c9253e599
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TriggeredRejuvenation.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/TriggeredRejuvenation.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When any damage is received this spell will cast Triggered Rejuvenation on target.
+-- Repairs target for 3.0% of max health
+-- This effect cannot be critically applied.
+-- This only triggers when the construct interposes damage!
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TriggeredRestoration.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TriggeredRestoration.lua
new file mode 100755
index 000000000..a5fd3f9ce
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TriggeredRestoration.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/TriggeredRestoration.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When any damage is received this spell will cast Triggered Restoration on target.
+-- Repairs target for 2.0% of max health
+-- This effect cannot be critically applied.
+-- This only triggers when the construct interposes damage!
+-- The healing of this spell cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TruespiritDefiance.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TruespiritDefiance.lua
new file mode 100755
index 000000000..f28ed7f03
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TruespiritDefiance.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/TruespiritDefiance.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:33
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Truespirit Defiance. Lasts for 6.0 seconds.
+-- When any damage is received this spell will cast Truespirit Defiance on target.
+-- Heals target for 538 - 657
+-- Grants a total of 50 triggers of the spell.
+-- Requires and consumes 15% of your construct's health
+-- If pet over 15% Health
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TruespiritRestoration.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TruespiritRestoration.lua
new file mode 100755
index 000000000..b94a9e638
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/TruespiritRestoration.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/TruespiritRestoration.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 464 - 567 instantly and every 2 seconds
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/VectorofLife.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/VectorofLife.lua
new file mode 100755
index 000000000..cbc89757f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/VectorofLife.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/VectorofLife.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:57
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals targets in Area of Effect for 660 - 807
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/VengefulArrow.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/VengefulArrow.lua
new file mode 100755
index 000000000..57c09fea8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/VengefulArrow.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/VengefulArrow.lua
+ Script Author : John Adams
+ Script Date : 2013.11.21 09:11:31
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Requires bow
+ return true
+end
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Inflicts 7 - 12 ranged damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Priest/Shaper/Channeler/WeaponDissonance.lua b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/WeaponDissonance.lua
new file mode 100755
index 000000000..758b4afe7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Shaper/Channeler/WeaponDissonance.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Priest/Shaper/Channeler/WeaponDissonance.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 12:05:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Weapon Damage of target by 10.0
diff --git a/server/Spells/Spells-Copy/Priest/Smite.lua b/server/Spells/Spells-Copy/Priest/Smite.lua
new file mode 100755
index 000000000..3fd144f8e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Smite.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Smite.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:20
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 8 - 10 divine damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Priest/SummonFoodandWater.lua b/server/Spells/Spells-Copy/Priest/SummonFoodandWater.lua
new file mode 100755
index 000000000..be98cf480
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/SummonFoodandWater.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Summon Food and Water
+ Script Purpose : Summons 5 Sacred Food and 5 Sacred Water to the target
+ Script Author : Zcoretri
+ Script Date : 2009.01.10
+ Script Notes : JA: Going to ask LE for an "Array" spell_data type for passing multiple item IDs
+--]]
+
+function cast(Caster, Target, SummonType, MinQty, MaxQty, Item1, Item2)
+
+ if SummonType == "FoodWater" then
+
+ if FoodID ~= nil and WaterID ~= nil then
+ SummonItem(Target, FoodID)
+ SummonItem(Target, WaterID)
+ -- SummonItem(Target, FoodID, MinQty)
+ end
+
+ else
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Priest/Weakness.lua b/server/Spells/Spells-Copy/Priest/Weakness.lua
new file mode 100755
index 000000000..9ea26facc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Weakness.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Priest/Weakness.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 03:01:18
+ Script Purpose :
+ :
+--]]
+
+-- Decreases STR of target by 9.6
+
+function cast(Caster, Target, Str)
+ AddSpellBonus(Target, 0, Str)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Priest/Wrath.lua b/server/Spells/Spells-Copy/Priest/Wrath.lua
new file mode 100755
index 000000000..ff67f18a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Priest/Wrath.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Priest/Wrath.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:39
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 22 - 27 divine damage on target
+
+function cast(Caster, Target, DmgType, DmgMin, DmgMax)
+SpellDamage(Target, DmgType, DmgMin, DmgMax)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Ambush.lua b/server/Spells/Spells-Copy/Scout/Ambush.lua
new file mode 100755
index 000000000..dbd9b6c49
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Ambush.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Ambush.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:52
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 19 - 32 melee damage on target
+-- You must be sneaking to use this ability.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/AstralRavaging.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/AstralRavaging.lua
new file mode 100755
index 000000000..2c914e66a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/AstralRavaging.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/AstralRavaging.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:57
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 54 - 91 melee damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Heals group members (AE) for 2 - 4
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/AstralSoulsiphon.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/AstralSoulsiphon.lua
new file mode 100755
index 000000000..e5d7b90dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/AstralSoulsiphon.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/AstralSoulsiphon.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 262 - 437 melee damage on target encounter
+-- The effect of this ability grows based on Spirituality level.
+-- You must have Tame Exotic Warder to use this Primal.
+-- You must have your warder active to use this ability.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Beastsoul.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Beastsoul.lua
new file mode 100755
index 000000000..4481e28c8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Beastsoul.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/Beastsoul.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 149 - 249 melee damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Increases Haste of group members (AE) by 25.0
+-- Increases Multi Attack of group members (AE) by 25.0
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/BestialVehemence.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/BestialVehemence.lua
new file mode 100755
index 000000000..4d7c07422
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/BestialVehemence.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/BestialVehemence.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 58 - 97 melee damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Increases Potency of group members (AE) by 15.0%
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/BrutalBeatdown.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/BrutalBeatdown.lua
new file mode 100755
index 000000000..0682958a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/BrutalBeatdown.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/BrutalBeatdown.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 827 - 1378 crushing damage on target
+-- The effect of this ability grows based on Feral Rampage level.
+-- You must have Tame Exotic Warder to use this Primal.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CallWarder.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CallWarder.lua
new file mode 100755
index 000000000..de54456a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CallWarder.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/CallWarder.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:06
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Teleports target to caster
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CallousFerocity.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CallousFerocity.lua
new file mode 100755
index 000000000..dd4866ab0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CallousFerocity.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/CallousFerocity.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Caster has a 10.0% chance of having one of their weapons' auto-attack strike the target multiple times.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Chillbarrier.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Chillbarrier.lua
new file mode 100755
index 000000000..b4e350069
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Chillbarrier.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/Chillbarrier.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) against 15 points of all damage
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ChillingClaws.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ChillingClaws.lua
new file mode 100755
index 000000000..f8310b492
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ChillingClaws.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/ChillingClaws.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell may cast Chilling Claws on target of attack. Triggers about 2.4 times per minute.
+-- Inflicts 49 - 59 cold damage on target
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ClawofKhatiSha.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ClawofKhatiSha.lua
new file mode 100755
index 000000000..755d9bdfb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ClawofKhatiSha.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/ClawofKhatiSha.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:29
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 459 - 765 melee damage on target
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CourageousScarring.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CourageousScarring.lua
new file mode 100755
index 000000000..129ffd909
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/CourageousScarring.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/CourageousScarring.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 273 - 456 melee damage on target encounter
+-- Increases Armor Mitigation of group members (AE) by 10-22%
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/DraconicBreath.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/DraconicBreath.lua
new file mode 100755
index 000000000..30af28c5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/DraconicBreath.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/DraconicBreath.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 778 - 1297 heat damage on targets in Area of Effect
+-- The effect of this ability grows based on Feral Rampage level.
+-- You must have Tame Exotic Warder to use this Primal.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/EnchantedBarrier.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/EnchantedBarrier.lua
new file mode 100755
index 000000000..eea395554
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/EnchantedBarrier.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/EnchantedBarrier.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces all damage done to group members (AE) by 10%
+-- Increases power of group members (AE) by 2 - 4
+-- The effect of this ability grows based on Spirituality level.
+-- You must have Tame Exotic Warder to use this Primal.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/EnergizingAssault.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/EnergizingAssault.lua
new file mode 100755
index 000000000..afa6e5372
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/EnergizingAssault.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/EnergizingAssault.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 218 - 364 melee damage on target encounter
+-- Increases power of group members (AE) by 4 - 6
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralPounce.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralPounce.lua
new file mode 100755
index 000000000..ffaeab28d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralPounce.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/FeralPounce.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 428 - 714 melee damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- You must be in stealth.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralRending.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralRending.lua
new file mode 100755
index 000000000..d4ee43fc6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralRending.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/FeralRending.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 620 - 1033 melee damage on target
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Must be flanking or behind
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralStance.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralStance.lua
new file mode 100755
index 000000000..751c7bf84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FeralStance.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/FeralStance.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:33
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Fervor of caster by 8.0
+-- Increases Multi Attack of caster by 17.0
+-- Increases Slashing, Piercing, Ranged and Crushing of caster by 9.9
+-- Using a Primal will activate Feral Rampage on the Beastlord
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FerociousRoar.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FerociousRoar.lua
new file mode 100755
index 000000000..1cdc56184
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FerociousRoar.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/FerociousRoar.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Weapon Damage Bonus of group members (AE) by 10-22%
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FlurryofClaws.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FlurryofClaws.lua
new file mode 100755
index 000000000..4b6ffa4c8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FlurryofClaws.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/FlurryofClaws.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 69 - 115 melee damage on target
+-- Inflicts 69 - 115 melee damage on target
+-- Inflicts 69 - 115 melee damage on target
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FrigidFortification.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FrigidFortification.lua
new file mode 100755
index 000000000..bbdb7c240
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/FrigidFortification.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/FrigidFortification.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:22
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Wards group members (AE) against 5 points of all damage
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLance.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLance.lua
new file mode 100755
index 000000000..fdf45dcbe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLance.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/GlacialLance.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 07:05:27
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 26 - 44 cold damage on target
+-- If weapon equipped in Ranged
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLanceX.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLanceX.lua
new file mode 100755
index 000000000..0fd5ee971
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLanceX.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/GlacialLanceX.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 09:05:41
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 332 - 554 cold damage on target
+-- If weapon equipped in Ranged
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLanceXI.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLanceXI.lua
new file mode 100755
index 000000000..ebd9014f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialLanceXI.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/GlacialLanceXI.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 560 - 934 cold damage on target
+-- If weapon equipped in Ranged
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialRoar.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialRoar.lua
new file mode 100755
index 000000000..f48a769e3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GlacialRoar.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/GlacialRoar.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 89 - 149 cold damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GrinningOnslaught.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GrinningOnslaught.lua
new file mode 100755
index 000000000..78bf964b9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/GrinningOnslaught.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/GrinningOnslaught.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:43
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 218 - 364 melee damage on target encounter
+-- Reduces the power cost of the group's abilities by 30%.
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/HawkEyes.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/HawkEyes.lua
new file mode 100755
index 000000000..abcf51879
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/HawkEyes.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/HawkEyes.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Increases Crit Bonus of caster by 15.0%
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/KaldrahirsLeadership.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/KaldrahirsLeadership.lua
new file mode 100755
index 000000000..a3311da8e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/KaldrahirsLeadership.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/KaldrahirsLeadership.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:18
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 259 - 432 melee damage on target encounter
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- Increases Potency of group members (AE) by 20-44%
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/LuclinsPain.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/LuclinsPain.lua
new file mode 100755
index 000000000..ab028de54
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/LuclinsPain.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/LuclinsPain.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 495 - 825 cold damage on targets in Area of Effect
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/MasterofBeasts.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/MasterofBeasts.lua
new file mode 100755
index 000000000..a02f898c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/MasterofBeasts.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/MasterofBeasts.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:15
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On any combat or spell hit this spell may cast Primal Rage on caster. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Prevents AOE on pet (except when direct)
+-- Increases Crit Bonus of pet by 20.0%
+-- Cannot be modified except by direct means
+-- Reduces the cost of Feral Rampage and Spirituality by 15%
+-- Increases the damage, ward or heal amount of Primals by 20%.
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NeurotoxicVenom.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NeurotoxicVenom.lua
new file mode 100755
index 000000000..42ea60869
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NeurotoxicVenom.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/NeurotoxicVenom.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 399 - 665 poison damage on target
+-- Inflicts 2 - 4 poison damage on target every 2 seconds
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Must be flanking or behind
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NoxiousAssault.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NoxiousAssault.lua
new file mode 100755
index 000000000..a37d7fcf4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NoxiousAssault.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/NoxiousAssault.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 154 - 257 poison damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Increases Crit Bonus of group members (AE) by 10.0%
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NoxiousGrasp.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NoxiousGrasp.lua
new file mode 100755
index 000000000..f2fa99964
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/NoxiousGrasp.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/NoxiousGrasp.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 729 - 1216 poison damage on target
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- Teleports your target in front of you.
+-- If Target is not Epic
+-- This target cannot be moved.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipe.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipe.lua
new file mode 100755
index 000000000..7eab94a5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipe.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/QuickSwipe.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 09:11:24
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DPSAmt, AttackSpeed)
+
+ -- Inflicts 7 - 13 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Decreases Damage Per Second of target by 4.2
+ AddSpellBonus(Target, 629, DPSAmt)
+
+ -- Decreases Attack Speed of target by 3.6
+ AddSpellBonus(Target, 617, AttackSpeed)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipeX.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipeX.lua
new file mode 100755
index 000000000..60af0754b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipeX.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/QuickSwipeX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 366 - 610 melee damage on target
+-- Decreases Damage Per Second of target by 10.4
+-- Decreases Attack Speed of target by 6.6
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipeXI.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipeXI.lua
new file mode 100755
index 000000000..b3ca5b172
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/QuickSwipeXI.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/QuickSwipeXI.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 428 - 714 melee damage on target
+-- Decreases Damage Per Second of target by 11.6
+-- Decreases Attack Speed of target by 6.9
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RapidFlurry.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RapidFlurry.lua
new file mode 100755
index 000000000..abc1bedf8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RapidFlurry.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/RapidFlurry.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:13
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 218 - 364 melee damage on target encounter
+-- Increases attack speed of group members (AE) by 15-33%
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RestorationofMarishaKur.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RestorationofMarishaKur.lua
new file mode 100755
index 000000000..ddea6b4a4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RestorationofMarishaKur.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/RestorationofMarishaKur.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 218 - 364 melee damage on target encounter
+-- Heals group members (AE) for 5 - 8
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Rush.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Rush.lua
new file mode 100755
index 000000000..41d8fcee0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Rush.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/Rush.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 01:10:17
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 35 - 59 melee damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+-- Inflicts 35 - 59 melee damage on target
+-- Inflicts 35 - 59 melee damage on target
+-- Inflicts 35 - 59 melee damage on target
+-- Inflicts 35 - 59 melee damage on target
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RushX.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RushX.lua
new file mode 100755
index 000000000..6b1fef910
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RushX.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/RushX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:46
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 252 - 421 melee damage on target
+-- Inflicts 252 - 421 melee damage on target
+-- Inflicts 252 - 421 melee damage on target
+-- Inflicts 252 - 421 melee damage on target
+-- Inflicts 252 - 421 melee damage on target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RushXI.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RushXI.lua
new file mode 100755
index 000000000..bbafc015d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/RushXI.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/RushXI.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 292 - 486 melee damage on target
+-- Inflicts 292 - 486 melee damage on target
+-- Inflicts 292 - 486 melee damage on target
+-- Inflicts 292 - 486 melee damage on target
+-- Inflicts 292 - 486 melee damage on target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SalivaryExcretion.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SalivaryExcretion.lua
new file mode 100755
index 000000000..dade42a47
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SalivaryExcretion.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SalivaryExcretion.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 559 - 932 poison damage on target
+-- Increases Multi-Attack Chance by 10-22%
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- Increases attack speed by 10-22%
+-- Must be flanking or behind
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageRavaging.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageRavaging.lua
new file mode 100755
index 000000000..2f7932537
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageRavaging.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SavageRavaging.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 912 - 1520 piercing damage on target
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- Must be flanking or behind
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageResilience.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageResilience.lua
new file mode 100755
index 000000000..d8cc56b7a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageResilience.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SavageResilience.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces all damage done to group members (AE) by 3%
+-- Inflicts 48 - 81 melee damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Heals group members (AE) for 2 - 3
+-- Heals group members (AE) for 1 every 3 seconds
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageRuin.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageRuin.lua
new file mode 100755
index 000000000..657036753
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SavageRuin.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SavageRuin.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Mitigation of caster vs physical damage by 313
+-- On any combat or spell hit this spell may cast Savage Ruin on target of attack. Triggers about 5.0 times per minute.
+-- Inflicts 51 - 62 slashing damage on target
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShadowLeap.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShadowLeap.lua
new file mode 100755
index 000000000..8558077e7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShadowLeap.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/ShadowLeap.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 912 - 1520 melee damage on target
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- You must be in stealth.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShalihMarsMandate.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShalihMarsMandate.lua
new file mode 100755
index 000000000..01795dc26
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShalihMarsMandate.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/ShalihMarsMandate.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 306 - 510 melee damage on target
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- Increases Potency by 20-44%
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SharpenedClaws.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SharpenedClaws.lua
new file mode 100755
index 000000000..8c88bfac7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SharpenedClaws.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SharpenedClaws.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:03
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Interrupts target
+-- Inflicts 17 - 21 piercing damage on target
+-- On any combat or spell hit this spell will cast Sharpened Claws on target of attack.
+-- Inflicts 14 - 24 piercing damage on target
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShiverbackEndemic.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShiverbackEndemic.lua
new file mode 100755
index 000000000..e13308428
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShiverbackEndemic.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/ShiverbackEndemic.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 97 - 162 cold damage on target
+-- Inflicts 2 - 3 cold damage on target every 2 seconds
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShrinkWarder.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShrinkWarder.lua
new file mode 100755
index 000000000..fb9c420d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/ShrinkWarder.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/ShrinkWarder.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Shrink Servant to qualifying pets.
+-- Shrinks target by 35.0%
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SilentTalon.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SilentTalon.lua
new file mode 100755
index 000000000..6984b442d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SilentTalon.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SilentTalon.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 608 - 1013 piercing damage on target
+-- Inflicts 4 - 6 piercing damage on target every 2 seconds
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- You must be in stealth.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SonicScreech.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SonicScreech.lua
new file mode 100755
index 000000000..717bae73b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SonicScreech.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SonicScreech.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 760 - 1267 piercing damage on targets in Area of Effect
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- You must be in stealth.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpinechillerBlood.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpinechillerBlood.lua
new file mode 100755
index 000000000..5c440a971
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpinechillerBlood.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SpinechillerBlood.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 02:10:27
+ Script Purpose :
+ :
+--]]
+
+
+-- Inflicts 7 - 12 poison damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, MinVal2, MaxVal2)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function tick(Caster, Target)
+-- Inflicts 2 - 3 poison damage on target instantly and every 4 seconds
+ SpellDamage(Target, DotType, MinVal2, MaxVal2)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpinechillerBloodX.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpinechillerBloodX.lua
new file mode 100755
index 000000000..d29ab00cd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpinechillerBloodX.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SpinechillerBloodX.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:57
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 247 - 412 poison damage on target
+-- Inflicts 62 - 103 poison damage on target instantly and every 4 seconds
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Spiritshroud.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Spiritshroud.lua
new file mode 100755
index 000000000..782435dd9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/Spiritshroud.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/Spiritshroud.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 09:11:30
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Grants stealth to caster
+ -- Suspends caster's movement speed enhancements
+ Stealth(1, Caster)
+end
+
+function remove(Caster, Target)
+ RemoveStealth(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpiritualFeast.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpiritualFeast.lua
new file mode 100755
index 000000000..538e329fd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpiritualFeast.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SpiritualFeast.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:27
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 102 - 171 melee damage on target encounter
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Increases power of group members (AE) by 2 - 3
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpiritualStance.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpiritualStance.lua
new file mode 100755
index 000000000..346efdf1b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SpiritualStance.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SpiritualStance.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Adds 2.4% to base avoidance.
+-- Increases Defense, Parry and Deflection of caster by 19.8
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 1080
+-- Increases the caster's effectiveness of worn armor vs physical damage by 10%
+-- Using a Primal will activate Spirituality on the Beastlord
+-- When a combat art is used this spell will cast Savage Spirit on target.
+-- Increases savagery of caster by 14.0
+-- This effect cannot be critically applied.
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/StareDown.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/StareDown.lua
new file mode 100755
index 000000000..18c826706
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/StareDown.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/StareDown.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:09
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Stuns target
+-- If Target is not Epic
+-- Must be engaged in combat
+-- If under 50% Health
+-- Only affects targets that can be tamed.
+-- Does not affect Epic targets
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAmphibian.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAmphibian.lua
new file mode 100755
index 000000000..495355782
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAmphibian.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderAmphibian.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 07:05:10
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons an amphibian warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAquatic.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAquatic.lua
new file mode 100755
index 000000000..c6113aaf2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAquatic.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderAquatic.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:44
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons an aquatic warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAvian.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAvian.lua
new file mode 100755
index 000000000..2c86a2db7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderAvian.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderAvian.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:24
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons an avian warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBat.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBat.lua
new file mode 100755
index 000000000..9742557fd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBat.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderBat.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:07
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a bat warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBear.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBear.lua
new file mode 100755
index 000000000..6212b76c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBear.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderBear.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:31
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a bear warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBoar.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBoar.lua
new file mode 100755
index 000000000..4172c0ef4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBoar.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderBoar.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a boar warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBovid.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBovid.lua
new file mode 100755
index 000000000..0ef0583e7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderBovid.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderBovid.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a bovid warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderCanine.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderCanine.lua
new file mode 100755
index 000000000..991450c6d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderCanine.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderCanine.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:33
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a canine warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderDire.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderDire.lua
new file mode 100755
index 000000000..e51aa5208
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderDire.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderDire.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a dire warder
+-- You must have Tame Exotic Warder to summon an Exotic Warder.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderDrake.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderDrake.lua
new file mode 100755
index 000000000..04914da61
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderDrake.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderDrake.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a drake warder
+-- You must have Tame Exotic Warder to summon an Exotic Warder.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderEnchanted.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderEnchanted.lua
new file mode 100755
index 000000000..801fb1f0c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderEnchanted.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderEnchanted.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons an enchanted warder
+-- You must have Tame Exotic Warder to summon an Exotic Warder.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderFeline.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderFeline.lua
new file mode 100755
index 000000000..da2ece503
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderFeline.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderFeline.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:03
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a feline warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderInsect.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderInsect.lua
new file mode 100755
index 000000000..21a29056b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderInsect.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderInsect.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:48
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons an insect warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderMystical.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderMystical.lua
new file mode 100755
index 000000000..62ffaf82e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderMystical.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderMystical.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a mystical warder
+-- You must have Tame Exotic Warder to summon an Exotic Warder.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderReptile.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderReptile.lua
new file mode 100755
index 000000000..50d392777
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderReptile.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderReptile.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 09:11:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a reptile warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderRodent.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderRodent.lua
new file mode 100755
index 000000000..474cedc83
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderRodent.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderRodent.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a rodent warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderSimian.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderSimian.lua
new file mode 100755
index 000000000..90199735d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderSimian.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderSimian.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:24
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a simian warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderWarboar.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderWarboar.lua
new file mode 100755
index 000000000..b76791390
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/SummonWarderWarboar.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/SummonWarderWarboar.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:15
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a war boar warder
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameCreature.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameCreature.lua
new file mode 100755
index 000000000..4aaa22615
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameCreature.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TameCreature.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 09:05:06
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows for the taming for alligators and crocodiles.
+-- If target is crocodile
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameInsectWarder.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameInsectWarder.lua
new file mode 100755
index 000000000..2e0c5953d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameInsectWarder.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TameInsectWarder.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows the beastlord to tame insects.
+-- You cannot tame while you have a warder summoned.
+-- Must be engaged in combat
+-- If any of the following are true:
+-- If under 25% Health
+-- If target is of gray difficulty
+-- Certain enemies cannot be tamed.
+-- Does not affect Epic targets
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameWarder.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameWarder.lua
new file mode 100755
index 000000000..80d226121
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TameWarder.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TameWarder.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows the beastlord to tame specific creatures.
+-- You cannot tame while you have a warder summoned.
+-- Must be engaged in combat
+-- If any of the following are true:
+-- If under 50% Health
+-- If target is of gray difficulty
+-- Certain enemies cannot be tamed.
+-- Does not affect Epic targets
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TestFeralStancebr.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TestFeralStancebr.lua
new file mode 100755
index 000000000..939b5c1cd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TestFeralStancebr.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TestFeralStancebr.lua
+ Script Author : neatz09
+ Script Date : 2020.05.09 09:05:34
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases DPS of caster by 76.0
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TestSpiritualStancebr.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TestSpiritualStancebr.lua
new file mode 100755
index 000000000..3b79f45a4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TestSpiritualStancebr.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TestSpiritualStancebr.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 03:10:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Potency of caster by 1.2%
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TruespiritClaws.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TruespiritClaws.lua
new file mode 100755
index 000000000..2b8dfea7f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TruespiritClaws.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TruespiritClaws.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases savagery of caster by 20.0
+-- This effect cannot be critically applied.
+-- Increases DPS of group members (AE) by 15.0
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TruespiritVenom.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TruespiritVenom.lua
new file mode 100755
index 000000000..265491d5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/TruespiritVenom.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/TruespiritVenom.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 09:05:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 396 - 660 poison damage on target
+-- Inflicts 3 - 5 poison damage on target every 2 seconds
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/UllasResolution.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/UllasResolution.lua
new file mode 100755
index 000000000..2cf95b955
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/UllasResolution.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/UllasResolution.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:08
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces all damage done to group members (AE) by 4%
+-- Heals group members (AE) for 3 - 6
+-- Heals group members (AE) for 1 - 2 every 3 seconds
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/VenomFangs.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/VenomFangs.lua
new file mode 100755
index 000000000..dfe32899c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/VenomFangs.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/VenomFangs.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 559 - 932 piercing damage on target
+-- The effect of this ability grows based on Savagery and Feral Rampage level.
+-- Increases Damage Per Second by 20-44%
+-- Must be flanking or behind
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/VineNet.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/VineNet.lua
new file mode 100755
index 000000000..40b809dc1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/VineNet.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/VineNet.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 08:05:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Snare. Lasts for 24.0 seconds.
+-- Slows target by 33.5%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- Decreases Mitigation of target vs elemental and noxious damage by 324
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Beastlord/WildGoring.lua b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/WildGoring.lua
new file mode 100755
index 000000000..575849545
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Beastlord/WildGoring.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Animist/Beastlord/WildGoring.lua
+ Script Author : neatz09
+ Script Date : 2020.05.10 10:05:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 273 - 456 melee damage on target encounter
+-- Increases Damage Per Second of group members (AE) by 10-22%
+-- The effect of this ability grows based on Savagery and Spirituality level.
+-- You must have your warder active to use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Animist/MasterofBeasts.lua b/server/Spells/Spells-Copy/Scout/Animist/MasterofBeasts.lua
new file mode 100755
index 000000000..800e466bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/MasterofBeasts.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Animist/MasterofBeasts.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces the cost of Feral Rampage and Spirituality by 15%
+-- On any combat or spell hit this spell may cast Primal Rage on caster. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Increases Crit Bonus of pet by 20.0%
+-- Prevents AOE on pet (except when direct)
+-- Cannot be modified except by direct means
+-- Increases the damage, ward or heal amount of Primals by 20%.
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/SharpenedClaws.lua b/server/Spells/Spells-Copy/Scout/Animist/SharpenedClaws.lua
new file mode 100755
index 000000000..be35c93ff
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/SharpenedClaws.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Animist/SharpenedClaws.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 29 - 36 piercing damage on target
+-- Interrupts target
+-- On any combat or spell hit this spell will cast Sharpened Claws on target of attack.
+-- Inflicts 25 - 41 piercing damage on target
+-- Grants a total of 1 trigger of the spell.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/ShrinkWarder.lua b/server/Spells/Spells-Copy/Scout/Animist/ShrinkWarder.lua
new file mode 100755
index 000000000..83a8199e8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/ShrinkWarder.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Animist/ShrinkWarder.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:00
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Shrink Servant to qualifying pets.
+-- Shrinks target by 35.0%
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/Spiritshroud.lua b/server/Spells/Spells-Copy/Scout/Animist/Spiritshroud.lua
new file mode 100755
index 000000000..17af5e6a7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/Spiritshroud.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Animist/Spiritshroud.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants stealth to caster
+-- Suspends caster's movement speed enhancements
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Animist/StareDown.lua b/server/Spells/Spells-Copy/Scout/Animist/StareDown.lua
new file mode 100755
index 000000000..7442fbe1c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Animist/StareDown.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Animist/StareDown.lua
+ Script Author : John Adams
+ Script Date : 2013.08.12 08:08:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Stuns target
+-- If Target is not Epic
+-- Must be engaged in combat
+-- If under 50% Health
+-- Only affects targets that can be tamed.
+-- Does not affect Epic targets
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Assail.lua b/server/Spells/Spells-Copy/Scout/Assail.lua
new file mode 100755
index 000000000..450afc53b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Assail.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Assail.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 45 - 76 melee damage on target
+-- You must be sneaking to use this ability.
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/BriasInspiringBallad.lua b/server/Spells/Spells-Copy/Scout/Bard/BriasInspiringBallad.lua
new file mode 100755
index 000000000..325ab3676
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/BriasInspiringBallad.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Bard/BriasInspiringBallad.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08 09:08:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, RegenAmt)
+-- Increases In-Combat Power Regeneration of group members (AE) by 3.8
+
+ AddSpellBonus(Target, 601, RegenAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/CacophonyofBlades.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/CacophonyofBlades.lua
new file mode 100755
index 000000000..2226689d9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/CacophonyofBlades.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/CacophonyofBlades.lua
+ Script Author : neatz09
+ Script Date : 2020.02.29 07:02:55
+ Script Purpose :
+ :
+--]]
+
+
+-- Increases Haste of group members (AE) by 43.9
+-- On a hit this spell will cast Blade Chime on target of attack.
+-- Inflicts 100 - 168 disease damage on target
+
+function cast(Caster, Target, Haste, DmgType, MinVal, MaxVal)
+ AddSpellBonus(Target, 617, Haste)
+ AddProc(Target, 3, 100, nil, 1)
+end
+
+function proc(Caster, Target, Type, Haste, DmgType, MinVal, MaxVal)
+ ProcDamage(Caster, Target, "Blade Chime", DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/ClarasChaoticCacophony.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ClarasChaoticCacophony.lua
new file mode 100755
index 000000000..8e700bc56
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ClarasChaoticCacophony.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/ClarasChaoticCacophony.lua
+ Script Author : neatz09
+ Script Date : 2020.01.24 09:01:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Empowerment of Chaos. Lasts for 1 minute.
+-- Increases Fervor of group members (AE) by 3.1
+-- Cannot be modified except by direct means
+-- Decreases Mitigation of target encounter vs physical damage by 216
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarksongBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarksongBlade.lua
new file mode 100755
index 000000000..d70b1dd0a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarksongBlade.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/DarksongBlade.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType1, DmgLow1, DmgHigh1, DDType2, DmgLow2, DmgHigh2, DoTType, DotAmt)
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts disease damage on target
+-- Inflicts disease damage on target
+-- Inflicts disease damage on target instantly and every 6 seconds
+-- NOTE: If one of these attacks misses, the rest after miss automaticly
+
+ SpellDamage(Target, DDType1, DmgLow1, DmgHigh1)
+
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DDType2, DmgLow2, DmgHigh2)
+ end
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DoTType, DotAmt)
+ end
+end
+
+function tick(Caster, Target, DDType1, DmgLow1, DmgHigh1, DDType2, DmgLow2, DmgHigh2, DoTType, DotAmt)
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DoTType, DotAmt)
+ end
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarosDullBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarosDullBlade.lua
new file mode 100755
index 000000000..8df742e92
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarosDullBlade.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/DarosDullBlade.lua
+ Script Author : theFoof
+ Script Date : 2014.2.20
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ if IsFlanking(Caster, Target) then
+ return true
+ else
+ SendMessage(Caster, "You must be flanking or behind your target to use this ability!", "yellow")
+ return false
+ end
+end
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh, DPS)
+-- Inflicts 24 - 41 melee damage on target
+-- Decreases Damage Per Second of target by 10.9
+-- Must be flanking or behind
+
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+ AddSpellBonus(Target, 629, DPS)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus()
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarosSorrowfulDirge.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarosSorrowfulDirge.lua
new file mode 100755
index 000000000..2fb990658
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DarosSorrowfulDirge.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/DarosSorrowfulDirge.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 02:10:09
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Haste of target encounter by 11.7
+-- Slows target encounter by 16.2%
+function cast(Caster, Target, Haste, Slow)
+ AddSpellBonus(Target, 617, Haste)
+ SetSpeedMultiplier(Target, Slow)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ SetSpeedMultiplier(Target, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/DeadCalm.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DeadCalm.lua
new file mode 100755
index 000000000..aff3e2f53
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DeadCalm.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/DeadCalm.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:14
+ Script Purpose :
+ :
+--]]
+
+-- On a combat hit this spell has a 12% chance to cast Crypt's Revenge on target of attack.
+-- Inflicts 30 - 51 disease damage on target
+
+function cast(Caster, Target)
+ AddProc(Target, 1, 12, nil, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal)
+ ProcDamage(Caster, Target, "Crypt's Revenge", DmgType, MinVal, MaxVal)
+end
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/DeathsDoor.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DeathsDoor.lua
new file mode 100755
index 000000000..23cab202a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/DeathsDoor.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/DeathsDoor.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08 08:12:24
+ Script Purpose :
+ :
+--]]
+
+-- Increases AGI of caster
+-- When damaged this spell has a chance to cast Death Barrier on target's attacker.
+-- Inflicts disease damage on target
+-- Adds to base avoidance.
+-- Increases Mitigation of caster vs physical damage
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage
+
+function cast(Caster, Target, AgiAmt, ProcChance, DDType, DmgLow, DmgHigh, AvoidAmt, PhysMit, EleNoxMit)
+ Say(Caster, "Fervor Not Implemented.")
+ AddSpellBonus(Target, 2, AgiAmt)
+ AddProc(Target, 2, ProcChance)
+ AddSpellBonus(Target, 696, AvoidAmt)
+ AddSpellBonus(Target, 200, PhysMit)
+ AddSpellBonus(Target, 201, EleNoxMit)
+ AddSpellBonus(Target, 202, EleNoxMit)
+end
+
+function proc(Caster, Target, ProcType, AgiAmt, ProcChance, DDType, DmgLow, DmgHigh, AvoidAmt, PhysMit, EleNoxMit)
+ ProcDamage(Caster, Target, "Death Barrier", DDType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveProc(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/ElegyatDeathsDoor.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ElegyatDeathsDoor.lua
new file mode 100755
index 000000000..b1c356823
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ElegyatDeathsDoor.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/ElegyatDeathsDoor.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 09:08:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 123.0
+-- Decreases Lethality of target by 123.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- Applies Elegy on termination.
+-- Heals target for 27.6% of max health
+-- Resurrects target with 10% health and power
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/ElegyofAwakening.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ElegyofAwakening.lua
new file mode 100755
index 000000000..06368a9bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ElegyofAwakening.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/ElegyofAwakening.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 09:08:43
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Resurrects target with 10% health and power
+-- Applies Elegy on termination.
+-- Heals target for 27.6% of max health
+-- Applies Revived Sickness on termination. Lasts for 2 minutes.
+-- Decreases Toughness of target by 145.0
+-- Decreases Lethality of target by 145.0
+-- Decreases All Attributes of target by 20.0%
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 20.0
+-- If not between levels 1 - 6
+-- Decreases Attack Speed of target by 5.0
+-- If between levels 1 - 6
+-- Decreases All Attributes of target by 5.0%
+-- If between levels 1 - 6
+-- If outside an arena
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/GarsinsFuneralMarch.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/GarsinsFuneralMarch.lua
new file mode 100755
index 000000000..badef0291
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/GarsinsFuneralMarch.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/GarsinsFuneralMarch.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Makes target afraid
+-- 30% chance to dispel when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/Gravitas.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/Gravitas.lua
new file mode 100755
index 000000000..62eb97abb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/Gravitas.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/Gravitas.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases the healing and ward of target ally by 18%
+-- Increases the resurrect restoration amount of target ally by 18%
+-- Increases the Fervor of all priest damaging profession abilities by 2.2.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/HarlsRousingTune.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HarlsRousingTune.lua
new file mode 100755
index 000000000..799104c28
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HarlsRousingTune.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/HarlsRousingTune.lua
+ Script Author : theFoof
+ Script Date : 2013.08.11 09:08:41
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, StatAmount, AvoidanceAmt)
+ AddSpellBonus(Caster, 0, StatAmount)
+ AddSpellBonus(Caster, 2, StatAmount)
+ AddSpellBonus(Caster, 696, AvoidanceAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/HauntingStrike.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HauntingStrike.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HauntingStrike.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/HowlofDeath.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HowlofDeath.lua
new file mode 100755
index 000000000..1f866f137
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HowlofDeath.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/HowlofDeath.lua
+ Script Author : neatz09
+ Script Date : 2019.09.29 10:09:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 61 - 101 disease damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinHeal, MaxHeal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+-- Heals caster for 40 - 67
+ SpellHeal("Heal", MinHeal, MaxHeal)
+
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/HymnofHorror.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HymnofHorror.lua
new file mode 100755
index 000000000..062652373
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HymnofHorror.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/HymnofHorror.lua
+ Script Author : neatz09
+ Script Date : 2020.01.24 10:01:00
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- 1% chance to apply Knockdown. Lasts for 1.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Interrupts targets in Area of Effect
+-- Blurs vision of targets in Area of Effect
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/HyransSeethingSonata.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HyransSeethingSonata.lua
new file mode 100755
index 000000000..929da57e9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/HyransSeethingSonata.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/HyransSeethingSonata.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 03:10:16
+ Script Purpose :
+ :
+--]]
+
+-- Increases Hate Gain of target by 17.4%
+-- Increases Aggression of target by 12.4
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 624, Hate)
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), Aggro)
+
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/JaelsDreadfulDeprivation.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/JaelsDreadfulDeprivation.lua
new file mode 100755
index 000000000..8a33d6ecd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/JaelsDreadfulDeprivation.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/JaelsDreadfulDeprivation.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 24 - 41 disease damage on target
+-- Inflicts 24 - 41 disease damage on target
+-- Roots target
+-- If Target is not Epic
+-- If weapon equipped in Ranged
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/JaelsMysteriousMettle.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/JaelsMysteriousMettle.lua
new file mode 100755
index 000000000..19ea42336
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/JaelsMysteriousMettle.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/JaelsMysteriousMettle.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 12:12:20
+ Script Purpose :
+ :
+--]]
+
+-- Increases Parry of group members (AE) by 7.3
+
+function cast(Caster, Target, BuffAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), BuffAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/JarolsSorrowfulRequiem.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/JarolsSorrowfulRequiem.lua
new file mode 100755
index 000000000..b48451c9a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/JarolsSorrowfulRequiem.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/JarolsSorrowfulRequiem.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DDType, DmgLow, DmgHigh)
+-- Inflicts disease damage on target encounter
+
+ SpellDamage(Target, DDType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/LanetsExcruciatingScream.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/LanetsExcruciatingScream.lua
new file mode 100755
index 000000000..e16c14a4d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/LanetsExcruciatingScream.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/LanetsExcruciatingScream.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+-- Dazes target
+-- If Target is not Epic
+-- Inflicts disease damage on target
+-- Resistibility increases against targets higher than level 29. (need to add code for this eventually)
+
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 3)
+ end
+end
+
+function remove(Caster, Target, DmgType, DmgLow, DmgHigh)
+ RemoveControlEffect(Target, 3)
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/LudasNefariousWail.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/LudasNefariousWail.lua
new file mode 100755
index 000000000..78860bf98
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/LudasNefariousWail.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/LudasNefariousWail.lua
+ Script Author : theFoof
+ Script Date : 2013.12.8
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh)
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/MarchofBlades.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/MarchofBlades.lua
new file mode 100755
index 000000000..c809f9739
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/MarchofBlades.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/MarchofBlades.lua
+ Script Author : neatz09
+ Script Date : 2019.10.08 02:10:15
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell may cast Intrepid Strike on caster. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Caster has a 25.0% chance of having one of their weapons' auto-attack strike the target multiple times.
+-- Increases Potency of caster by 25.0%
+-- Cannot be modified except by direct means
+-- Riana's Relentless Tune will improve combat art damage by 10%
+-- Applies the effects of Cacophony of Blades to all raid members.
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/MisfortunesKiss.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/MisfortunesKiss.lua
new file mode 100755
index 000000000..858addb21
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/MisfortunesKiss.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/MisfortunesKiss.lua
+ Script Author : theFoof
+ Script Date : 2013.12.8
+ Script Purpose :
+ :
+--]]
+
+
+function precast(Caster, Target)
+ if IsStealthed(Caster) then
+ return true
+ end
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false, 0
+end
+
+function cast(Caster, Target, DmgType, DmgLow, DmgHigh, WisAmt)
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 18 - 30 melee damage on target
+-- Decreases WIS of target by 5.0
+-- You must be sneaking to use this ability.
+
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+ AddSpellBonus(Target, 3, WisAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/NoxiousSymphony.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/NoxiousSymphony.lua
new file mode 100755
index 000000000..d6857fa5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/NoxiousSymphony.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/NoxiousSymphony.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 05:12:41
+ Script Purpose :
+ :
+--]]
+
+-- Increases Mitigation of raid and group members (AE) vs noxious damage by 252
+
+function cast(Caster, Target, NoxAmt)
+ AddSpellBonus(Target, 202, NoxAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/OrationofSacrifice.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/OrationofSacrifice.lua
new file mode 100755
index 000000000..a1c93e8fb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/OrationofSacrifice.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/OrationofSacrifice.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Heals target for 1 instantly and every 0.3 seconds
+-- Stifles caster
+-- On any combat or spell hit this spell will cast Fierce Combat on target of attack.
+-- Inflicts 2741 - 4569 disease damage on target
+-- This effect can only trigger once every 1.5 second.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/PercussionofStone.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/PercussionofStone.lua
new file mode 100755
index 000000000..afbf9b2d7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/PercussionofStone.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/PercussionofStone.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:20
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When damaged this spell has a 6% chance to cast Stoneskin on target. Lasts for 20.0 seconds.
+-- Will absorb physical damage. This spell will absorb a total of 1 attack.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/RianasRelentlessTune.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/RianasRelentlessTune.lua
new file mode 100755
index 000000000..9af330125
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/RianasRelentlessTune.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/RianasRelentlessTune.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MultiAmt)
+-- Increases Multi Attack Chance of group members (AE) by 9.0
+
+ AddSpellBonus(Target, 641, MultiAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/ScreamofDeath.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ScreamofDeath.lua
new file mode 100755
index 000000000..56d617aed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ScreamofDeath.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/ScreamofDeath.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:36
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Scream of Death on termination. Lasts for 15.0 seconds.
+-- Applies Scream of Death on termination. Lasts for 15.0 seconds.
+-- Inflicts 271 disease damage on target every 3 seconds
+-- Inflicts 181 disease damage on target every 3 seconds
+-- Inflicts 451 - 752 melee damage on target
+-- Inflicts 90 disease damage on target every 3 seconds
+-- You must be sneaking to use this ability.
+-- Must be flanking or behind
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/Shriek.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/Shriek.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/Shriek.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/SideBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/SideBlade.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/SideBlade.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/SingingBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/SingingBlade.lua
new file mode 100755
index 000000000..5695ddb1f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/SingingBlade.lua
@@ -0,0 +1,56 @@
+--[[
+ Script Name : dd_heal.lua
+ Script Purpose : Generic damage + Heal effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "Heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ -- something else
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ -- something else
+ end
+
+end
+
+function remove(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/SongstersLuck.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/SongstersLuck.lua
new file mode 100755
index 000000000..37c76fd7e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/SongstersLuck.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/SongstersLuck.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08 04:12:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt)
+-- Increases Slashing, Crushing, Piercing and Ranged of group members (AE)
+
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/TarvensCripplingCrescendo.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/TarvensCripplingCrescendo.lua
new file mode 100755
index 000000000..6f2560a52
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/TarvensCripplingCrescendo.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/TarvensCripplingCrescendo.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DebuffAmt, DmgType, DmgLow, DmgHigh)
+-- Interrupts target
+-- Decreases Defense of target
+-- Inflicts disease damage on target
+
+ Interrupt(Target)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DebuffAmt)
+ SpellDamage(Target, DmgType, DmgLow, DmgHigh)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/ThurisDolefulThrust.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ThurisDolefulThrust.lua
new file mode 100755
index 000000000..605250ca3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/ThurisDolefulThrust.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/ThurisDolefulThrust.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 07:11:42
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, HealAmt)
+ -- Inflicts 6 - 10 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Heals caster for 3
+ if LastSpellAttackHit() then
+ SpellHeal("Heal", HealAmt, 0, Caster)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/VerliensKeenofDespair.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/VerliensKeenofDespair.lua
new file mode 100755
index 000000000..eccb03746
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/VerliensKeenofDespair.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/VerliensKeenofDespair.lua
+ Script Author : theFoof
+ Script Date : 2013.12.08 09:08:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SlowAmt, HostileChance, DmgChance, DebuffAmt, DebuffType)
+ Say(Caster, "Slow portion not yet scripted for Verlien's Keen of Despair")
+-- Slows target
+-- chance to dispel when target receives hostile action
+-- chance to dispel when target takes damage
+-- Decreases Mitigation of target vs noxious damage
+
+ AddSpellBonus(Target, DebuffType, DebuffAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/WailingStrike.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/WailingStrike.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/WailingStrike.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Dirge/WailoftheBanshee.lua b/server/Spells/Spells-Copy/Scout/Bard/Dirge/WailoftheBanshee.lua
new file mode 100755
index 000000000..a2105c532
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Dirge/WailoftheBanshee.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/WailoftheBanshee.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:31
+ Script Purpose :
+ :
+--]]
+-- Inflicts 290 - 483 disease damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, DotMin)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Applies Banshee's Scream on termination.
+-- Inflicts 97 disease damage on target encounter instantly and every 4 seconds
+SpellDamage(Target, DotType, DotMin)
+end
+
+function tick(Caster, Target)
+ SpellDamage(Target, DotType, DotMin, DotMax)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/DishearteningDescant.lua b/server/Spells/Spells-Copy/Scout/Bard/DishearteningDescant.lua
new file mode 100755
index 000000000..60d55246b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/DishearteningDescant.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Bard/DishearteningDescant.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 12:12:06
+ Script Purpose :
+ :
+--]]
+
+-- Decreases AGI and STR of target encounter by 27.4
+
+function cast(Caster, Target, BuffAmt)
+ AddSkillBonus(Target, 0, BuffAmt)
+ AddSkillBonus(Target, 2, BuffAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/SelosAccelerando.lua b/server/Spells/Spells-Copy/Scout/Bard/SelosAccelerando.lua
new file mode 100755
index 000000000..97775ab1e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/SelosAccelerando.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Bard/SelosAccelerando.lua
+ Script Author : Zcoretri
+ Script Date : 2010.03.30 10:03:38
+ Script Notes : Enter special notes here
+ :
+--]]
+
+function cast(Caster, Target, BuffValue)
+ AddSpellBonus(Target, 609, BuffValue)
+end
+
+function remove(Caster, Target, BuffValue)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Shroud.lua b/server/Spells/Spells-Copy/Scout/Bard/Shroud.lua
new file mode 100755
index 000000000..172872e9b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Shroud.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Bard/Shroud.lua
+ Script Author : theFoof
+ Script Date : 2014.1.16
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+-- Grants stealth to caster
+-- Suspends caster's movement speed enhancements
+ Stealth(1)
+end
+
+function remove(Caster, Target)
+ RemoveStealth()
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/AlinsSereneSerenade.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/AlinsSereneSerenade.lua
new file mode 100755
index 000000000..b2364341d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/AlinsSereneSerenade.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/AlinsSereneSerenade.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 07:02:21
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Hate Gain of group members (AE) by 10.7%
+-- If not fighter
+-- When damaged this spell will cast Serenade on target's attacker.
+-- Decreases Threat to target by 22
+-- If not fighter
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/Allegretto.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Allegretto.lua
new file mode 100755
index 000000000..159dc5b8e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Allegretto.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/Allegretto.lua
+ Script Author : Zcoretri
+ Script Date : 4.April.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, AttackAmt)
+ -- Increases Attack Speed of group members (AE)
+ AddSpellBonus(Target, 617, AttackAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/ArcaneSymphony.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ArcaneSymphony.lua
new file mode 100755
index 000000000..464b2e8e9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ArcaneSymphony.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/ArcaneSymphony.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 03:09:14
+ Script Purpose :
+ :
+--]]
+
+-- Increases Mitigation of raid and group members (AE) vs arcane damage by 252
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 203, BonusAmt)
+
+end
+
+
+function remove(Caster, Target, BonusAmt)
+ RemoveSpellBonus(Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/AriaofMagic.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/AriaofMagic.lua
new file mode 100755
index 000000000..f078c27de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/AriaofMagic.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/AriaofMagic.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:41
+ Script Purpose :
+ :
+--]]
+
+-- On a hostile spell hit this spell has a 30% chance to cast Dissonant Note on target of spell.
+-- Inflicts 161 - 269 mental damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ AddProc(Target, 5, 30, nil, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, Minval, MaxVal)
+ ProcDamage(Caster, Target, "Dissonant Note", DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/AyonicInspiration.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/AyonicInspiration.lua
new file mode 100755
index 000000000..19d92baf4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/AyonicInspiration.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/AyonicInspiration.lua
+ Script Author : neatz09
+ Script Date : 2020.02.12 07:02:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies the effects of Perfection of the Maestro to all raid members.
+-- Aria of Magic will improve hostile spell damage by 10%
+-- On any combat or spell hit this spell may cast Ayonic Hymn on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Inflicts 626 - 940 mental damage on target
+-- Increases Crit Chance of caster by 15.0
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/BreathtakingBellow.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/BreathtakingBellow.lua
new file mode 100755
index 000000000..416bd5752
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/BreathtakingBellow.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/BreathtakingBellow.lua
+ Script Author : neatz09
+ Script Date : 2020.02.12 06:02:49
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- 1% chance to apply Knockdown. Lasts for 1.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Interrupts target encounter
+-- Blurs vision of target encounter
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/BriasEntrancingSonnet.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/BriasEntrancingSonnet.lua
new file mode 100755
index 000000000..86744a574
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/BriasEntrancingSonnet.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/BriasEntrancingSonnet.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 07:02:14
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Charms target
+-- Certain enemies cannot be charmed
+-- Does not affect Epic targets
+-- Does not affect Epic targets
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/BrilliantBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/BrilliantBlade.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/BrilliantBlade.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/CeremonialBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/CeremonialBlade.lua
new file mode 100755
index 000000000..934510f7d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/CeremonialBlade.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/CeremonialBlade.lua
+ Script Author : Zcoretri
+ Script Date : 19.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, DmgType2, MinDmg2, MaxDmg2)
+ -- Inflicts mental damage on target
+ -- Inflicts mental damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DmgType2, MinDmg2, MaxDmg2)
+ end
+end
+
+function remove(Caster, Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/ChaosAnthem.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ChaosAnthem.lua
new file mode 100755
index 000000000..c4763ba3d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ChaosAnthem.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/ChaosAnthem.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Stat)
+-- Inflicts 120 mental damage on target encounter instantly and every 6 seconds
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases WIS of target encounter by 72.3
+ AddSpellBonus(Target, 3, Stat)
+end
+
+function tick(Caster, Target)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/Countersong.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Countersong.lua
new file mode 100755
index 000000000..dd7e41b11
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Countersong.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/Countersong.lua
+ Script Author : neatz09
+ Script Date : 2020.02.12 07:02:54
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Stolen Breath. Lasts for 1 minute.
+-- Increases Potency of group members (AE) by 16.2%
+-- Increases Ability Mod of group members (AE) by 675.0
+-- Cannot be modified except by direct means
+-- Target will reduce the chance for one of their weapons' auto-attack to affect multiple targets by 56.2%
+-- Decreases the damage done by the next spell cast by 10 percent
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/DaelisDanceofBlades.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DaelisDanceofBlades.lua
new file mode 100755
index 000000000..fc507ccd9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DaelisDanceofBlades.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/DaelisDanceofBlades.lua
+ Script Author : Zcoretri
+ Script Date : 4.April.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, AgiAmt, ProcChance, DmgType, MinDmg, MaxDmg, ProcChance2, DmgType2, MinDmg2, MaxDmg2, AvoidAmt, PhysMit, MitAmt)
+ -- Increases AGI of caster by 47.0
+ AddSpellBonus(Target, 2, AgiAmt)
+ -- When damaged with a spell this spell has a 20% chance to cast Song Barrier on target's attacker.
+ AddProc(Target, 2, ProcChance)
+ -- Inflicts 65 - 109 mental damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ -- When damaged with a melee weapon this spell has a 20% chance to cast Song Barrier on target's attacker.
+ AddProc(Target, 2, ProcChance2)
+ -- Inflicts 65 - 109 mental damage on target
+ SpellDamage(Target, DmgType2, MinDmg2, MaxDmg2)
+ -- Adds 14.0% to base avoidance.
+ AddSpellBonus(Target, 696, AvoidAmt)
+ -- Increases Mitigation of caster vs physical damage by 170
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 379
+ AddSpellBonus(Target, 200, PhyMit)
+ AddSpellBonus(Target, 201, MitAmt)
+ AddSpellBonus(Target, 202, MitAmt)
+ AddSpellBonus(Target, 203, MitAmt)
+end
+
+function proc(Caster, Target, AgiAmt, ProcChance, DmgType, MinDmg, MaxDmg, ProcChance2, DmgType2, MinDmg2, MaxDmg2, AvoidAmt, PhysMit, MitAmt)
+ ProcDamage(Caster, Target, "Song Barrier", DmgType, MinDmg, MaxDmg)
+ ProcDamage(Caster, Target, "Song Barrier", DmgType2, MinDmg2, MaxDmg2)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Caster)
+ RemoveProc(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/DancingBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DancingBlade.lua
new file mode 100755
index 000000000..f3582af9f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DancingBlade.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/DancingBlade.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ if IsFlanking(Caster, Target) then
+ return true
+ else
+ SendMessage(Caster, "You need to be flanking or behind your target to use this ability!", "yellow")
+ return false, 0
+ end
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, Mitigation)
+ -- Inflicts melee damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ -- Decreases Mitigation of target vs elemental, noxious and arcane damage
+ AddSpellBonus(Target, 201, Mitigation)
+ AddSpellBonus(Target, 202, Mitigation)
+ AddSpellBonus(Target, 203, Mitigation)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/DemoralizingProcessional.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DemoralizingProcessional.lua
new file mode 100755
index 000000000..e1729052c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DemoralizingProcessional.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/DemoralizingProcessional.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Unsettled March. Lasts for 1 minute.
+-- Increases Fervor of group members (AE) by 2.1
+-- Cannot be modified except by direct means
+-- Decreases AGI, STR, INT and WIS of target encounter by 58.0
+-- Decreases Slashing, Crushing, Piercing, Ranged, Focus, Disruption, Subjugation, Ordination and Aggression of target encounter by 14.8
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/DepressingChant.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DepressingChant.lua
new file mode 100755
index 000000000..8eafc12d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/DepressingChant.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/DepressingChant.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SlowAmt, HostileChance, DmgChance, Mitigation)
+ -- Applies Snare. Lasts for 24.0 seconds.
+ -- Slows target
+ -- chance to dispel when target receives hostile action
+ -- chance to dispel when target takes damage
+ Say(Caster, "Slow portion is not scripted yet!")
+
+ -- Decreases Mitigation of target vs arcane damage
+ AddSpellBonus(Target, 203, Mitigation)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/ElementalConcerto.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ElementalConcerto.lua
new file mode 100755
index 000000000..8e8b2bde4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ElementalConcerto.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/ElementalConcerto.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 02:09:01
+ Script Purpose :
+ :
+--]]
+
+-- Increases Mitigation of raid and group members (AE) vs elemental damage by 554
+
+function cast(Caster, Target, BonusAmt)
+ AddSpellBonus(Target, 201, MitAmt)
+
+end
+
+
+function remove(Caster, Target, BonusAmt)
+ RemoveSpellBonus(Target)
+
+
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/GracefulAvoidance.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/GracefulAvoidance.lua
new file mode 100755
index 000000000..62dfaab75
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/GracefulAvoidance.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/GracefulAvoidance.lua
+ Script Author : Zcoretri
+ Script Date : 4.April.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Defense)
+ -- Increases Defense of group members (AE)
+ AddSkillBonus(Target, 609880714, Defense)
+end
+
+function remove(Caster, Target, Defense)
+ RemoveSkillBonus(Caster)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/JestersCap.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/JestersCap.lua
new file mode 100755
index 000000000..b7b31b861
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/JestersCap.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/JestersCap.lua
+ Script Author : neatz09
+ Script Date : 2020.02.12 07:02:59
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Ability Reuse Speed of target by 22.5%
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/Lullaby.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Lullaby.lua
new file mode 100755
index 000000000..1731c1f5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Lullaby.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/Lullaby.lua
+ Script Author : neatz09
+ Script Date : 2020.02.12 06:02:33
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/MidnightBlade.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/MidnightBlade.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/MidnightBlade.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/NightStrike.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/NightStrike.lua
new file mode 100755
index 000000000..fca117aa7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/NightStrike.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/NightStrike.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ else
+ SendMessage(Caster, "You must be sneaking to use this ability!", "yellow")
+ return false, 0
+ end
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, IntAmt)
+ -- Decreases INT of target by 10.4
+ AddSpellBonus(Target, 4, IntAmt)
+ -- Inflicts melee damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, IntAmt)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/PainfulLamentations.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/PainfulLamentations.lua
new file mode 100755
index 000000000..25c2a8dc3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/PainfulLamentations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/PainfulLamentations.lua
+ Script Author : Zcoretri
+ Script Date : 4.April.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ -- Interrupts target encounter
+ Interrupt(Caster, Target)
+ -- Inflicts mental damage on target encounter
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/PerfectShrill.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/PerfectShrill.lua
new file mode 100755
index 000000000..8ea1744b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/PerfectShrill.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/PerfectShrill.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ -- Inflicts mental damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/PerfectionoftheMaestro.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/PerfectionoftheMaestro.lua
new file mode 100755
index 000000000..a5cf6b1da
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/PerfectionoftheMaestro.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/PerfectionoftheMaestro.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:14
+ Script Purpose :
+ :
+--]]
+
+-- Increases INT of group members (AE) by 75.2
+-- On a hostile spell cast this spell will cast Precise Note on target of spell.
+-- Inflicts 247 - 302 mental damage on target
+
+function cast(Caster, Target, Int, DmgType, MinVal, MaxVal)
+ AddSpellBonus(Target, 4, Int)
+ AddProc(Target, 1, 5, 100, nil, 1)
+end
+
+function proc(Caster, Target, Type, Int, DmgType, MinVal, MaxVal)
+ ProcDamage(Caster, Target, "Precise Note", DmgType, MinVal, MaxVal)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/RaxxylsRousingTune.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/RaxxylsRousingTune.lua
new file mode 100755
index 000000000..1d302e00f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/RaxxylsRousingTune.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/RaxxylsRousingTune.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StatAmt, Mitigation)
+ -- Increases AGI, INT and WIS of group members (AE)
+ AddSpellBonus(Target, 2, StatAmt)
+ AddSpellBonus(Target, 3, StatAmt)
+ AddSpellBonus(Target, 4, StatAmt)
+ -- Increases Mitigation of group members (AE) vs elemental, noxious and arcane damage
+ AddSpellBonus(Target, 201, Mitigation)
+ AddSpellBonus(Target, 202, Mitigation)
+ AddSpellBonus(Target, 203, Mitigation)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/RejuvenatingCelebration.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/RejuvenatingCelebration.lua
new file mode 100755
index 000000000..ba6260104
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/RejuvenatingCelebration.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/RejuvenatingCelebration.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 03:09:52
+ Script Purpose :
+ :
+--]]
+
+
+-- Increases STA of group members (AE) by 63.6
+-- Increases Combat Health Regen of group members (AE) by 125.3
+
+function cast(Caster, Target, Sta, Regen)
+ AddSpellBonus(Target, 1, Sta)
+ AddSpellBonus(Target, 604, Regen)
+
+end
+
+
+function remove(Caster, Target, Sta, Regen)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/RequiemofReflection.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/RequiemofReflection.lua
new file mode 100755
index 000000000..b7c2747ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/RequiemofReflection.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/RequiemofReflection.lua
+ Script Author : neatz09
+ Script Date : 2020.03.07 10:03:02
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When receiving a hostile spell this spell has a 6% chance to cast Requiem of Reflection on target. Lasts for 2 minutes.
+-- When damaged this spell will cast Shock of Sound on target's attacker.
+-- Inflicts 126 - 153 mental damage on target
+-- Grants a total of 3 triggers of the spell.
+-- Will absorb elemental, noxious and arcane damage. This spell will absorb a total of 1 attack.
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/SandrasDeafeningStrike.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/SandrasDeafeningStrike.lua
new file mode 100755
index 000000000..e86faab97
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/SandrasDeafeningStrike.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/SandrasDeafeningStrike.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, MinDebuff, MaxDebuff, MinBuff, MaxBuff)
+ -- Inflicts mental damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ -- Decreases power of target
+ if MaxDebuff ~= nil and MinDebuff < MaxDebuff then
+ DebuffAmt = math.random(MinDebuff, MaxDebuff)
+ else
+ DebuffAmt = MinDebuff
+ end
+
+ AddSpellBonus(Caster, 501, DebuffAmt)
+
+ -- Increases power of caster
+ if MaxBuff ~= nil and MinBuff < MaxBuff then
+ BuffAmt = math.random(MinBuff, MaxBuff)
+ else
+ BuffAmt = MinBuff
+ end
+
+ AddSpellBonus(Caster, 501, BuffAmt)
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, MinDebuff, MaxDebuff, MinBuff, MaxBuff)
+ RemoveSpellBonus(Target)
+ RemoveSpellBonus(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/Shrill.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Shrill.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/Shrill.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/SingingShot.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/SingingShot.lua
new file mode 100755
index 000000000..fef18099f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/SingingShot.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/SingingShot.lua
+ Script Author : Zcoretri
+ Script Date : 4.April.2014
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16) -- (16) = Ranged Weapon slot
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different ranged items yet)
+ return false, 68
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, DmgType2, MinDmg2, MaxDmg2)
+ -- Inflicts mental damage on target x2 if first one hits
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DmgType2, MinDmg2, MaxDmg2)
+ end
+ -- Stifles target
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2) -- Stifle
+ end
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, DmgType2, MinDmg2, MaxDmg2)
+ RemoveControlEffect(Target, 2)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/SongofMagic.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/SongofMagic.lua
new file mode 100755
index 000000000..c62e97489
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/SongofMagic.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/SongofMagic.lua
+ Script Author : neatz09
+ Script Date : 2020.02.11 05:02:15
+ Script Purpose :
+ :
+--]]
+
+
+-- Increases Disruption, Subjugation, Ordination, Ministration and Aggression of group members (AE) by 1.4
+-- Increases Focus of group members (AE) by 2.9
+
+function cast(Caster, Target, SkillAmt, Foc)
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Subjugation"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ordination"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ministration"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), Foc)
+
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/TapEssence.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/TapEssence.lua
new file mode 100755
index 000000000..a43806515
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/TapEssence.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/TapEssence.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 10:10:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, MinPwr, MaxPwr)
+ -- Inflicts 30 - 51 mental damage on target encounter
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+ -- Increases power of group members (AE) by 25 - 42
+ SpellHeal(Power, MinPwr, MaxPwr)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/ThunderousOverture.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ThunderousOverture.lua
new file mode 100755
index 000000000..61c7758f1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/ThunderousOverture.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubador/ThunderousOverture.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 02:09:31
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 416 - 693 mental damage on targets in Area of Effect
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/Troubador/VexingVerses.lua b/server/Spells/Spells-Copy/Scout/Bard/Troubador/VexingVerses.lua
new file mode 100755
index 000000000..8ea5224fb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/Troubador/VexingVerses.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Scout/Bard/Troubadour/VexingVerses.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PwrLoss, HealthLoss, Speed, Defense, DmgType, MinDmg, MaxDmg)
+ -- Decreases Ability Casting Speed of target
+ AddSpellBonus(Target, 664, Speed)
+ -- Decreases Defense of target
+ AddSkillBonus(Target, 609880714, Defense)
+ -- Target will lose 8% more power when power is consumed
+ -- 8% of target's power consumed will also be drained from target's health
+
+ -- Inflicts magic damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function remove(Caster, Target, PwrLoss, HealthLoss, Speed, Defense, DmgType, MinDmg, MaxDmg)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Bard/ZandersChoralRebuff.lua b/server/Spells/Spells-Copy/Scout/Bard/ZandersChoralRebuff.lua
new file mode 100755
index 000000000..8ba0ca4f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Bard/ZandersChoralRebuff.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Scout/Bard/ZandersChoralRebuff.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 09:08:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Mitigation of target encounter vs elemental, noxious and arcane damage by 315
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/CheapShot.lua b/server/Spells/Spells-Copy/Scout/CheapShot.lua
new file mode 100755
index 000000000..d4e643074
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/CheapShot.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/CheapShot.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 03:12:31
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Does not affect Epic targets
+ return (not IsEpic(Target)), 43
+end
+
+function cast(Caster, Target)
+ -- Stuns target
+ AddControlEffect(Target, 4)
+end
+
+function remove(Caster, Target)
+ -- Applies Cheap Shot on termination. Lasts for 2.0 seconds.
+ -- Stuns target
+ -- Does not affect Heroic or Epic targets.
+ if not IsHeroic(Target) then
+ AddSpellTimer(2000, "RemoveStun")
+ else
+ RemoveControlEffect(Target, 4)
+ end
+end
+
+function RemoveStun(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
diff --git a/server/Spells/Spells-Copy/Scout/DirtyTricks.lua b/server/Spells/Spells-Copy/Scout/DirtyTricks.lua
new file mode 100755
index 000000000..49cc05997
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/DirtyTricks.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/DirtyTricks.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:24
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Defense of target by 2.3
+-- If facing target
+
+function cast(Caster, Target, SkillAmt)
+ Say(Caster, "Facing Target not Implemented.")
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Ensnare.lua b/server/Spells/Spells-Copy/Scout/Ensnare.lua
new file mode 100755
index 000000000..f3088c001
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Ensnare.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Ensnare.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Snare. Lasts for 24.0 seconds.
+-- Slows target by 28.6%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- Decreases Mitigation of target vs arcane damage by 214
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Escape.lua b/server/Spells/Spells-Copy/Scout/Escape.lua
new file mode 100755
index 000000000..332ae6b66
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Escape.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Escape.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 09:10:56
+ Script Purpose :
+ :
+--]]
+
+
+-- Teleports caster and caster's group within the zone
+function cast(Caster, Target)
+ Evac()
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Evade.lua b/server/Spells/Spells-Copy/Scout/Evade.lua
new file mode 100755
index 000000000..f28160f2d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Evade.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Evade.lua
+ Script Author : theFoof
+ Script Date : 2013.12.09 04:12:50
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Threat to target
+
+function cast(Caster, Target, HateLow, HateHigh)
+ AddHate(Caster, Target, math.random(HateLow, HateHigh), 1)
+ Say(Caster, "Missing Reposte Immunity")
+end
+
+function remove(Caster, Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/FastStrike.lua b/server/Spells/Spells-Copy/Scout/FastStrike.lua
new file mode 100755
index 000000000..e16b8d483
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/FastStrike.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/FastStrike.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:36
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 16 - 28 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/HiltStrike.lua b/server/Spells/Spells-Copy/Scout/HiltStrike.lua
new file mode 100755
index 000000000..e13719c04
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/HiltStrike.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/HiltStrike.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Stuns target
+-- If Target is not Epic
+-- Inflicts 29 - 36 crushing damage on target
+-- Interrupts target
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/LuckyBreak.lua b/server/Spells/Spells-Copy/Scout/LuckyBreak.lua
new file mode 100755
index 000000000..0c44e0b51
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/LuckyBreak.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/LuckyBreak.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:36
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be engaged in combat
+ return IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+ -- Begins a Heroic Opportunity
+StartHeroicOpportunity(Caster, 31)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Pathfinding.lua b/server/Spells/Spells-Copy/Scout/Pathfinding.lua
new file mode 100755
index 000000000..21b5e355b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Pathfinding.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Pathfinding.lua
+ Script Author : John Adams
+ Script Date : 2010.01.29
+ Script Note :
+ :
+--]]
+
+function cast(Caster, Target, BuffValue)
+ NewSpeed = GetSpeed(Caster)
+ if NewSpeed == 0 then
+ SetSpeed(Caster, BuffValue)
+ else
+ SetSpeed(Caster, NewSpeed + BuffValue)
+ end
+end
+
+function remove(Caster, Target, BuffValue)
+ SetSpeed(Caster, 0)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Ambush.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Ambush.lua
new file mode 100755
index 000000000..c14f71866
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Ambush.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Ambush.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.14 02:04:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ end
+
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 14 - 24 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/ApplyPoison.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ApplyPoison.lua
new file mode 100755
index 000000000..82dc99e80
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ApplyPoison.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/ApplyPoison.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:55
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell may cast Assassin's Hemotoxin on target of attack. Lasts for 24.0 seconds. Triggers about 3.0 times per minute.
+-- Inflicts 268 poison damage on target instantly and every 4 seconds
+-- If profession other than Predator
+-- If profession other than Rogue
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Assail.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Assail.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Assail.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Assassinate.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Assassinate.lua
new file mode 100755
index 000000000..338984f59
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Assassinate.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Assassinate.lua
+ Script Author : neatz09
+ Script Date : 2019.08.12 08:08:47
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 2007 - 3345 melee damage on target
+-- You must be stealthed to use this ability
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ end
+
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 2007 - 3345 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/AssassinsFlurry.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/AssassinsFlurry.lua
new file mode 100755
index 000000000..1366ffa2b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/AssassinsFlurry.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/AssassinsFlurry.lua
+ Script Author : neatz09
+ Script Date : 2020.02.10 06:02:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a combat hit this spell may cast Flurry of Poison on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Inflicts 648 - 972 poison damage on target
+-- Increases Crit Chance of caster by 15.0
+-- Cannot be modified except by direct means
+-- Caster has a 15.0% chance of having one of their weapons' auto-attack strike the target multiple times.
+-- Increases the damage of stealth attacks by 30%.
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Caltrops.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Caltrops.lua
new file mode 100755
index 000000000..29ab304ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Caltrops.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Caltrops.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:10
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Snare, Resist)
+ -- Applies Snare. Lasts for 24.0 seconds.
+ -- Slows target by 28.3%
+ SetSpellSnareValue(Snare)
+ AddControlEffect(Target, 11)
+
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+ AddProc(Target, 2, 5)
+
+ -- Decreases Mitigation of target vs noxious damage by 197
+ AddSpellBonus(Target, 202, BonusAmt)
+end
+
+function proc(Caster, Target, Type)
+ if Type == 2 then
+ RemoveControlEffect(Target, 11)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 11)
+ RemoveSpellBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Concealment.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Concealment.lua
new file mode 100755
index 000000000..2ffd004cd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Concealment.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Concealment.lua
+ Script Author : neatz09
+ Script Date : 2020.02.10 06:02:16
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Hate Gain of caster by 22.5%
+-- On a combat hit this spell will cast Combat Stealth on target. Lasts for 0.1 seconds.
+-- Applies Shroud on termination. Lasts for 36.0 seconds.
+-- Grants stealth to caster
+-- Suspends caster's movement speed enhancements
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/CripplingStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/CripplingStrike.lua
new file mode 100755
index 000000000..536dbc465
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/CripplingStrike.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/CripplingStrike.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 03:09:37
+ Script Purpose :
+ :
+--]]
+-- Must be flanking or behind
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+end
+
+-- Inflicts 386 - 643 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ Say(Caster, "need to add IfLastHit to debuff portion")
+
+-- Decreases Defense of target by 23.5
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+end
+
+function remove(Caster, Target, SkillAmt)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/CunningDefense.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/CunningDefense.lua
new file mode 100755
index 000000000..d051d4146
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/CunningDefense.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/CunningDefense.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Agi, Avoid, OffSkills, Parry, Def)
+ -- Increases AGI of caster by 13.1
+ AddSpellBonus(Target, 2, Agi)
+
+ -- Adds 1.4% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Decreases Slashing and Piercing of caster by 13.8
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkills)
+
+ -- Increases Parry of caster by 7.3
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), Parry)
+
+ -- Increases Defense of caster by 9.7
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeadlyFocus.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeadlyFocus.lua
new file mode 100755
index 000000000..567ce307a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeadlyFocus.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/DeadlyFocus.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 04:10:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Accuracy, Multi, SkillAmt)
+-- Caster will have their chance to hit with a weapon increased by 4.5%
+ AddSpellBonus(Target, 682, Accuracy)
+-- Increases Multi Attack of caster by 29.0
+ AddSpellBonus(Target, 641, Multi)
+-- Increases Piercing, Slashing and Crushing of caster by 10.8
+AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeadlyShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeadlyShot.lua
new file mode 100755
index 000000000..470553444
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeadlyShot.lua
@@ -0,0 +1,38 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/DeadlyShot.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 03:04:40
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if item then
+ if GetItemType(item) == 2 then
+ return true
+ end
+ end
+
+ return false, 68
+end
+
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Inflicts 8 - 13 ranged damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, 0, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, 0, MinVal)
+ end
+
+ if LastSpellAttackHit() then
+ -- Inflicts 8 - 13 ranged damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, 0, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, 0, MinVal)
+ end
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeathBlow.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeathBlow.lua
new file mode 100755
index 000000000..3142221ef
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeathBlow.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/DeathBlow.lua
+ Script Author : neatz09
+ Script Date : 2019.10.12 11:10:37
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Target, Caster) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+function cast(Caster, Target, DmgType, OverMin, OverMax, DmgTyp2, UnderMin, UnderMax)
+-- Inflicts 685 - 1142 melee damage on target
+-- If over 33% Health
+-- Inflicts 2056 - 3426 melee damage on target
+-- If under 33% Health
+if GetHP(Target) > GetPCTOfHP(Target, 33) then
+SpellDamage(Target, DmgType, OverMin, OverMax)
+else
+ SpellDamage(Target, DmgType, UnderMin, UnderMax)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeathMark.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeathMark.lua
new file mode 100755
index 000000000..da497b503
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/DeathMark.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/DeathMark.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 05:04:57
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Triggers)
+ -- When damaged with a melee weapon this spell will cast Agonizing Pain on target.
+ AddProc(Target, 4, 5)
+
+ -- Grants a total of 5 triggers of the spell.
+ SetSpellTriggerCount(Triggers, 1)
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal, Triggers)
+ -- When damaged with a melee weapon this spell will cast Agonizing Pain on target.
+ if Type == 4 then
+ -- Inflicts 79 - 133 piercing damage on target
+ ProcDamage(Caster, Target, "Agonizing Pain", DmgType, MinVal, MaxVal)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Eviscerate.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Eviscerate.lua
new file mode 100755
index 000000000..22fad5019
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Eviscerate.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Eviscerate.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:33
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster,Target)
+ -- You must be sneaking to use this ability.
+ if not IsStealthed(Caster) then
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+ end
+
+if not IsFlanking(Target, Caster) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+end
+
+return true
+
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 144 - 241 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Exacting.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Exacting.lua
new file mode 100755
index 000000000..f298a536a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Exacting.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Exacting.lua
+ Script Author : neatz09
+ Script Date : 2020.02.10 06:02:28
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- All attack-based combat arts with a reuse timer of under 1 minute will deal 30% more melee damage and have their reuse timers lowered.
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/FastStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/FastStrike.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/FastStrike.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/FatalFollowup.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/FatalFollowup.lua
new file mode 100755
index 000000000..452a60aee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/FatalFollowup.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/FatalFollowup.lua
+ Script Author : neatz09
+ Script Date : 2020.02.10 06:02:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 439 - 537 melee damage on target
+-- You must execute certain stealthed combat arts before you can use this ability.
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Gash.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Gash.lua
new file mode 100755
index 000000000..f5c488994
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Gash.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : dot.lua
+ Script Purpose : Generic Damage Over Time script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+--]]
+
+function cast(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, EffectType, DDType, MinDDVal, MaxDDVal)
+
+ -- NoDD is a 0/1 bool flag to perform the remove() component
+ -- DOT component (instant damage)
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+ else
+ SpellDamage(Target, DOTType, MinDOTVal)
+ end
+
+end
+
+function tick(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, EffectType, DDType, MinDDVal, MaxDDVal)
+
+ if MaxDOTVal ~= nil and MinDOTVal < MaxDOTVal then
+ SpellDamage(Target, DOTType, math.random(MinDOTVal, MaxDOTVal))
+ else
+ SpellDamage(Target, DOTType, MinDOTVal)
+ end
+end
+
+function remove(Caster, Target, DOTType, MinDOTVal, MaxDOTVal, EffectType, DDType, MinDDVal, MaxDDVal)
+ SpellDamage(Target, DOTType, math.random(8, 14))
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/GushingWound.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/GushingWound.lua
new file mode 100755
index 000000000..203823700
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/GushingWound.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/GushingWound.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.14 02:04:57
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, MinVal, MaxVal, DmgType2, MinVal2, MaxVal2)
+ -- Inflicts 1 - 2 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, MinVal, MaxVal, DmgType2, MinVal2, MaxVal2)
+ -- Inflicts 2 - 3 piercing damage on target instantly and every 4 seconds
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DoTType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DoTType, MinVal)
+ end
+end
+
+function remove(Caster, Target, DmgType, MinVal, MaxVal, DoTType, MinVal, MaxVal, DmgType2, MinVal2, MaxVal2)
+ -- Applies Untreated Bleeding on termination.
+ -- Inflicts 9 - 14 piercing damage on target
+ ProcDamage(Caster, Target, "Untreated Bleeding", DmgType2, MinVal2, MaxVal2)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/HeadShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/HeadShot.lua
new file mode 100755
index 000000000..7bf0cdfcd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/HeadShot.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/HeadShot.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 03:09:38
+ Script Purpose :
+ :
+--]]
+
+-- If weapon equipped in Ranged
+-- Must be flanking or behind
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if item then
+ if GetItemType(item) == 2 then
+ return true
+ end
+ end
+
+ return false, 68
+end
+
+-- Inflicts 725 - 1209 ranged damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Impale.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Impale.lua
new file mode 100755
index 000000000..83b7b6c9f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Impale.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Impale.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 35 - 58 piercing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Inflicts 10 - 16 piercing damage on target instantly and every 4 seconds
+ if DoTMaxVal ~= nil and DoTMinVal < DoTMaxVal then
+ SpellDamage(Target, DoTDmgType, math.random(DoTMinVal, DoTMaxVal))
+ else
+ SpellDamage(Target, DoTDmgType, DoTMinVal)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+ -- Inflicts 10 - 16 piercing damage on target instantly and every 4 seconds
+ if DoTMaxVal ~= nil and DoTMinVal < DoTMaxVal then
+ SpellDamage(Target, DoTDmgType, math.random(DoTMinVal, DoTMaxVal))
+ else
+ SpellDamage(Target, DoTDmgType, DoTMinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/ImprovisedWeapon.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ImprovisedWeapon.lua
new file mode 100755
index 000000000..3a3a3e07c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ImprovisedWeapon.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/ImprovisedWeapon.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 03:09:23
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 217 - 361 piercing damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/JugularSlice.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/JugularSlice.lua
new file mode 100755
index 000000000..b338bb53a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/JugularSlice.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/JugularSlice.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 05:04:09
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ end
+
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+end
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 217 - 362 slashing damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Stifles target
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 2)
+ end
+
+ -- Resistibility increases against targets higher than level 29.
+end
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/MaskedStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/MaskedStrike.lua
new file mode 100755
index 000000000..6e755bdba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/MaskedStrike.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/MaskedStrike.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 03:04:29
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Target, Caster) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 24 - 41 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ -- Applies Shroud on termination. Lasts for 36.0 seconds.
+ -- Grants stealth to caster
+ -- Suspends caster's movement speed enhancements
+ Say(Caster, "Not Implemented: Stealth after attack")
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Massacre.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Massacre.lua
new file mode 100755
index 000000000..85c5f6aea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Massacre.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Massacre.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 05:04:44
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be in stealth to use this!
+ if not IsStealthed(Caster) then
+ SendMessage(Caster, "You must be in stealth to use this!", "yellow")
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 203 - 339 melee damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/MortalBlade.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/MortalBlade.lua
new file mode 100755
index 000000000..c75d633bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/MortalBlade.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/MortalBlade.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 03:09:36
+ Script Purpose :
+ :
+--]]
+-- You must be in stealth.
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ end
+
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+end
+
+-- Inflicts 400 - 666 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/MurderousDesign.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/MurderousDesign.lua
new file mode 100755
index 000000000..b9c8fa999
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/MurderousDesign.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/MurderousDesign.lua
+ Script Author : neatz09
+ Script Date : 2019.09.28 05:09:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Causes 5% Threat to transfer to target when in combat
+
+function cast(Caster, Target, Xfer)
+ AddThreatTransfer(Caster, Target, Xfer)
+end
+
+function remove(Caster, Target)
+ RemoveThreatTransfer(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/ParalyzingStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ParalyzingStrike.lua
new file mode 100755
index 000000000..77ab10689
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ParalyzingStrike.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/ParalyzingStrike.lua
+ Script Author : neatz09
+ Script Date : 2020.02.10 06:02:27
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 188 - 313 melee damage on target
+-- Roots target
+-- If Target is not Epic
+-- 5% chance to dispel when target takes damage
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/QuickStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/QuickStrike.lua
new file mode 100755
index 000000000..c8673b4b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/QuickStrike.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/QuickStrike.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 08:11:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+
+ -- Inflicts 6 - 10 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTMinVal, DoTMaxVal)
+
+ -- Inflicts 1 slashing damage on target every 4 seconds
+ if DoTMaxVal ~= nil and DoTMinVal < DoTMaxVal then
+ SpellDamage(Target, DoTType, math.random(DoTMinVal, DoTMaxVal))
+ else
+ SpellDamage(Target, DoTType, DoTMinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/ShroudedAttack.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ShroudedAttack.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/ShroudedAttack.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/SlipAway.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/SlipAway.lua
new file mode 100755
index 000000000..29dc2c615
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/SlipAway.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/SlipAway.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 07:11:34
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants See Invisibility to caster
+-- Grants stealth to caster
+-- Suspends caster's movement speed enhancements
+-- This effect cancels during combat
+function precast(Caster)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+Stealth(1, Caster)
+ Say(Caster, "See Invis Not Implemented yet.")
+
+end
+
+function remove(Caster, Target)
+Stealth(0, Caster)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/SpineShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/SpineShot.lua
new file mode 100755
index 000000000..53b06ac83
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/SpineShot.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/SpineShot.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:06
+ Script Purpose :
+ :
+--]]
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Target, Caster) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if item~= nil then
+ if GetItemType(item) == 2 then
+ return true
+ end
+ end
+
+ return false, 68
+end
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Inflicts 189 - 315 ranged damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, 0, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, 0, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/StealthAssault.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/StealthAssault.lua
new file mode 100755
index 000000000..b264502f7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/StealthAssault.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/StealthAssault.lua
+ Script Author : neatz09
+ Script Date : 2019.09.29 11:09:09
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 140 - 234 melee damage on targets in Area of Effect
+-- Inflicts 43 piercing damage on targets in Area of Effect instantly and every 2 seconds
+-- You must be in stealth or have Bloody Assault.
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ end
+
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+end
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DoTType, DoTVal)
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal, DoTType, DoTVal)
+SpellDamage(Target, DoTType, DotVal)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Torture.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Torture.lua
new file mode 100755
index 000000000..b6cf96196
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Torture.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Torture.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:55
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt, BonusAmt)
+ -- Decreases Defense of target by 2.3
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+
+ -- Decreases Mitigation of target vs physical damage by 52
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/Villainy.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Villainy.lua
new file mode 100755
index 000000000..4840eb956
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/Villainy.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/Villainy.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:15
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Agi, Avoid, Multi, PhyMit, SpellMit)
+ -- Increases AGI of caster by 8.7
+ AddSpellBonus(Target, 2, Agi)
+
+ -- Adds 14.0% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Increases Multi Attack Chance of caster by 19.0
+ AddSpellBonus(Target, 641, Multi)
+
+ -- Increases Mitigation of caster vs physical damage by 69
+ AddSpellBonus(Target, 200, PhyMit)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 154
+ AddSpellBonus(Target, 201, SpellMit)
+ AddSpellBonus(Target, 202, SpellMit)
+ AddSpellBonus(Target, 203, SpellMit)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Assassin/WhirlingBlades.lua b/server/Spells/Spells-Copy/Scout/Predator/Assassin/WhirlingBlades.lua
new file mode 100755
index 000000000..a70f990bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Assassin/WhirlingBlades.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Scout/Predator/Assassin/WhirlingBlades.lua
+ Script Author : Jabantiz
+ Script Date : 2014.04.17 04:04:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Def, OffSkills)
+ Say(Caster, "Fervor Not Implemented.")
+
+-- On a melee hit this spell may cast Swipe on target of attack. Triggers about 2.0 times per minute.
+ AddProc(Target, 3, 10)
+
+ -- Decreases Defense of caster by 5.1
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
+
+ -- Increases Slashing, Piercing, Ranged and Crushing of caster by 6.9
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), OffSkills)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkills)
+
+end
+
+function proc(Caster, Target, Type, DmgType, MinVal, MaxVal, Def, OffSkills)
+ -- On a melee hit this spell may cast Swipe on target of attack. Triggers about 2.0 times per minute.
+ if Type == 3 then
+ -- Inflicts 62 - 104 melee damage on target
+ ProcDamage(Caster, Target, "Swipe", DmgType, MinVal, MaxVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/HonedReflexes.lua b/server/Spells/Spells-Copy/Scout/Predator/HonedReflexes.lua
new file mode 100755
index 000000000..757c8ad3c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/HonedReflexes.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Predator/HonedReflexes.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:28
+ Script Purpose :
+ :
+--]]
+
+-- Increases Haste of caster by 23.7
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 617, Haste)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/ArchersFury.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ArchersFury.lua
new file mode 100755
index 000000000..4bcd7405c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ArchersFury.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/ArchersFury.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 07:03:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Dmg, DefAmt, SkillAmt)
+ -- On a ranged hit this spell has a 30% chance to cast Quick Shot on target of attack.
+ AddProc(Target, 18, 30)
+
+ -- Decreases Defense of caster by 5.1
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefAmt)
+
+ -- Increases Crushing, Piercing, Ranged and Slashing of caster by 6.9
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+
+end
+
+function proc(Caster, Target, Type, Dmg, DefAmt, SkillAmt)
+ if Type == 18 then
+ -- Inflicts 83 ranged damage on target
+ ProcDamage(Caster, Target, "Quick Shot", 0, Dmg)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/ArrowRip.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ArrowRip.lua
new file mode 100755
index 000000000..1a093efd3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ArrowRip.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/ArrowRip.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:47
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 212 - 353 melee damage on target
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+ -- Returns the last arrow used to the ranger.
+ if LastSpellAttackHit() then
+ local item = GetEquippedItemBySlot(Caster, 17)
+ if item ~= nil then
+ local item_id = GetItemID(item)
+ SummonItem(Caster, item_id, 1)
+ end
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/BlazingStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/BlazingStrike.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/BlazingStrike.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/BloodyReminder.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/BloodyReminder.lua
new file mode 100755
index 000000000..0c24dd0bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/BloodyReminder.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/BloodyReminder.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 06:03:26
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, TickDmgType, TickDmg, DmgType, MinVal, MaxVal)
+ -- Inflicts 30 piercing damage on target instantly and every 2.6 seconds
+ SpellDamage(Target, TickDmgType, TickDmg)
+
+ -- Inflicts 11 - 18 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function tick(Caster, Target, TickDmgType, TickDmg, DmgType, MinVal, MaxVal)
+ -- Inflicts 30 piercing damage on target instantly and every 2.6 seconds
+ SpellDamage(Target, TickDmgType, TickDmg)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/Coverage.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Coverage.lua
new file mode 100755
index 000000000..399b7bf5d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Coverage.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/Coverage.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 11:08:19
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/CripplingArrow.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/CripplingArrow.lua
new file mode 100755
index 000000000..fc380b9aa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/CripplingArrow.lua
@@ -0,0 +1,37 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/CripplingArrow.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 04:03:07
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+function cast(Caster, Target, MinVal, MaxVal, SkillAmt)
+ -- Inflicts 175 - 293 ranged damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, 0, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, 0, MinVal)
+ end
+
+ -- Decreases Deflection and Parry of target by 10.8
+ AddSkillBonus(Target, GetSkillIDByName("Deflection"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), SkillAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/EaglesTalon.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/EaglesTalon.lua
new file mode 100755
index 000000000..509a6e39e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/EaglesTalon.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/EaglesTalon.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 11:08:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a ranged hit this spell may cast Talon Strike on target of attack. Lasts for 10.0 seconds. Triggers about 2.4 times per minute.
+-- Adds normalized combat art damage based on 20% of your current agility.
+-- Gives caster a 60.0% chance to not use ammunition on an attack
+-- Inflicts 454 - 680 slashing damage on target
+-- Cannot be modified except by direct means
+-- Improves base auto attack multiplier of caster by 0.200
+-- Improves the combat art damage of the ranger by 10%
+-- Cannot be modified except by direct means
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/Emberstrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Emberstrike.lua
new file mode 100755
index 000000000..226fa0fb4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Emberstrike.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/Emberstrike.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.09 08:03:38
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ else
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+ end
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 14 - 23 heat damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/Ensnare.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Ensnare.lua
new file mode 100755
index 000000000..03b815adf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Ensnare.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/Ensnare.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 06:03:27
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Mit, Snare)
+ -- Decreases Mitigation of target vs elemental damage by 197
+ AddSpellBonus(Target, 201, BonusAmt)
+
+ -- Applies Snare. Lasts for 24.0 seconds.
+ -- Slows target by 28.3%
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+ local slow = 100.0 - snare
+ SetSpeedMultiplier(Target, slow)
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/FocusAim.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/FocusAim.lua
new file mode 100755
index 000000000..ed4655182
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/FocusAim.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/FocusAim.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 11:10:31
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Nature's Focus. Lasts for 10.0 seconds.
+-- Group members (AE) will have their chance to hit with a weapon increased by 13.5%
+-- Increases Crushing of group members (AE) by 23.8
+-- Increases Piercing of group members (AE) by 23.8
+-- If profession other than Ranger
+-- Increases Slashing of group members (AE) by 23.8
+-- If profession other than Ranger
+-- Caster will have their chance to hit with a weapon increased by 4.5%
+-- Increases Haste of caster by 29.7
+-- Increases Multi Attack of caster by 34.1
+-- Decreases Slashing and Piercing of caster by 66.0
+-- Increases Ranged of caster by 23.8
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/HawkAttack.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/HawkAttack.lua
new file mode 100755
index 000000000..5a452f9e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/HawkAttack.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/HawkAttack.lua
+ Script Author : neatz09
+ Script Date : 2020.02.03 06:02:23
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons a pet attack hawk
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/HiddenShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/HiddenShot.lua
new file mode 100755
index 000000000..ac7999ca2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/HiddenShot.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/HiddenShot.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 10:10:03
+ Script Purpose :
+ :
+--]]
+
+
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if IsStealthed(Caster) then
+ return true
+ else
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+ end
+ -- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+-- Inflicts 480 - 800 ranged damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/HuntersInstinct.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/HuntersInstinct.lua
new file mode 100755
index 000000000..fa57f2fb3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/HuntersInstinct.lua
@@ -0,0 +1,35 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/HuntersInstinct.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 06:03:14
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Agi, AtkSpeed, CombatMove, Avoid, PhyMit, SpellMit)
+ -- Increases AGI of caster by 8.7
+ AddSpellBonus(Target, 2, Agi)
+
+ -- Increases Attack Speed of caster by 12.4
+ AddSpellBonus(Target, 617, AtkSpeed)
+
+ -- Increases in-combat movement speed of caster by 4.5%
+ AddSpellBonus(Target, 616, CombatMove)
+
+ -- Adds 14.0% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid) -- Not sure on 696 for this stat
+
+ -- Increases Mitigation of caster vs physical damage by 69
+ AddSpellBonus(Target, 200, PhyMit)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 154
+ AddSpellBonus(Target, 201, SpellMit)
+ AddSpellBonus(Target, 202, SpellMit)
+ AddSpellBonus(Target, 203, SpellMit)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/ImmobilizingLunge.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ImmobilizingLunge.lua
new file mode 100755
index 000000000..4597619dc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ImmobilizingLunge.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/ImmobilizingLunge.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 06:03:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 58 - 97 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Roots target
+ -- If Target is not Epic
+ if not IsEpic(Target) then
+ SetSpeedMultiplier(Target, 0)
+ end
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/KillingInstinct.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/KillingInstinct.lua
new file mode 100755
index 000000000..63c59d0dc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/KillingInstinct.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/KillingInstinct.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 03:10:05
+ Script Purpose :
+ :
+--]]
+
+-- Increases Multi Attack of caster by 43.5
+-- Increases Ranged of caster by 16.2
+
+function cast(Caster, Target, Multi, Range)
+AddSpellBonus(Target, 641, Multi)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), Range)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/LightningStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/LightningStrike.lua
new file mode 100755
index 000000000..706d8ffe7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/LightningStrike.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/LightningStrike.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 07:11:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 8 - 13 heat damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/MakeshiftArrows.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/MakeshiftArrows.lua
new file mode 100755
index 000000000..f5bbb4566
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/MakeshiftArrows.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/MakeshiftArrows.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 04:03:05
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Grants a total of 60 triggers of the spell.
+ SetSpellTriggerCount(60, 1)
+
+ -- On a ranged hit this spell will cast Makeshift Arrow on target of attack.
+ AddProc(Caster, 18, 100)
+end
+
+function proc(Caster, Target, Type, DmgType, DmgAmt)
+ -- Inflicts 71 piercing damage on target
+ if Type == 18 then
+ ProcDamage(Caster, Target, "Makeshift Arrow", DmgType, DmgAmt)
+ RemoveTriggerFromSpell(1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Caster)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/MiracleShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/MiracleShot.lua
new file mode 100755
index 000000000..ec7fa6097
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/MiracleShot.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/MiracleShot.lua
+ Script Author : neatz09
+ Script Date : 2019.09.28 05:09:27
+ Script Purpose :
+ :
+--]]
+
+-- Requires bow or aim
+function precast(Caster, Target)
+ -- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+-- Inflicts 170 - 284 ranged damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+end
+
+
+-- Requires you to currently have line of sight or to have acquired the target with line of sight
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/NaturalSelection.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/NaturalSelection.lua
new file mode 100755
index 000000000..f06186031
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/NaturalSelection.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/NaturalSelection.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 07:03:13
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be in stealth to use this!
+ if not IsStealthed(Caster) then
+ SendMessage(Caster, "You must be in stealth to use this!", "yellow")
+ end
+
+ -- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+function cast(Caster, Target, MinVal, MaxVal)
+ -- Inflicts 184 - 308 ranged damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, 0, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, 0, MinVal)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/PrimalReflexes.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/PrimalReflexes.lua
new file mode 100755
index 000000000..9f3feb217
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/PrimalReflexes.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/PrimalReflexes.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 10:10:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Hate Gain of caster by 7.8%
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 624, Hate)
+
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/RangersBlade.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/RangersBlade.lua
new file mode 100755
index 000000000..5b4b08e8b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/RangersBlade.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/RangersBlade.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 06:03:48
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ if not IsStealthed(Caster) then
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false
+ end
+
+ -- Must be flanking or behind
+ if not IsFlanking(Caster, Target) and not IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 153 - 256 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/RearShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/RearShot.lua
new file mode 100755
index 000000000..76f0edb9f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/RearShot.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/RearShot.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.09 08:03:08
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind.", "yellow")
+ return false
+ end
+
+ -- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+function cast(Caster, Target, Snare, MinVal, MaxVal)
+ -- Inflicts 22 - 38 ranged damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, 0, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, 0, MinVal)
+ end
+
+ -- Applies Snare on termination. Lasts for 24.0 seconds.
+ -- Slows target by 27.4%
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+ local slow = 100.0 - snare
+ SetSpeedMultiplier(Target, slow)
+ AddSpellTimer(24000, "RemoveSnare")
+end
+
+function RemoveSnare(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/SearingShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SearingShot.lua
new file mode 100755
index 000000000..bb56081a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SearingShot.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/SearingShot.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 04:03:03
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 9 - 15 heat damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Inflicts 9 - 15 heat damage on target
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/Shadowfire.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Shadowfire.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Shadowfire.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/SnaringShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SnaringShot.lua
new file mode 100755
index 000000000..fcfd2c75d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SnaringShot.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/SnaringShot.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 11:08:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Slows target by 34.9%
+-- Inflicts 149 - 249 ranged damage on target
+-- 10% chance to dispel when target receives hostile action
+-- Requires bow
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/SneakAttack.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SneakAttack.lua
new file mode 100755
index 000000000..035bd8fe8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SneakAttack.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/SneakAttack.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 07:03:05
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ if not IsFlanking(Caster, Target) or not IsBehind(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 27 - 45 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Shroud on termination. Lasts for 36.0 seconds.
+ -- Grants stealth to caster
+ -- Suspends caster's movement speed enhancements
+
+ -- Stelath component will probably need to be a new spell cast from here
+ Say(Caster, "Not implemented yet: Put caster in stealth")
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/Snipe.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Snipe.lua
new file mode 100755
index 000000000..fb18fb44c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/Snipe.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/Snipe.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 06:03:28
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ -- Decreases Defense of target by 3.5
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/SniperShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SniperShot.lua
new file mode 100755
index 000000000..9be85b3a2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SniperShot.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/SniperShot.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 11:10:58
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Knockdown on termination. Lasts for 2.5 seconds.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
+-- Inflicts 2582 - 4303 ranged damage on target
+-- I need to be stealthed!
+-- Requires bow or aim
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/StalkerStrike.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/StalkerStrike.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/StalkerStrike.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/SteadyBow.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SteadyBow.lua
new file mode 100755
index 000000000..4de92e876
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SteadyBow.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/SteadyBow.lua
+ Script Author : neatz09
+ Script Date : 2020.02.03 06:02:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Nature's Focus. Lasts for 10.0 seconds.
+-- Group members (AE) will have their chance to hit with a weapon increased by 17.5%
+-- Increases Crushing of group members (AE) by 144.0
+-- Increases Slashing of group members (AE) by 144.0
+-- If profession other than Ranger
+-- Increases Piercing of group members (AE) by 144.0
+-- If profession other than Ranger
+-- Increases Crit Chance of caster by 33.7
+-- Increases Haste of caster by 67.5
+-- Increases DPS of caster by 94.5
+-- Decreases Slashing and Piercing of caster by 380.0
+-- Increases Ranged of caster by 144.0
+-- Increases Ranged of caster by 126.0
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/StormofArrows.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/StormofArrows.lua
new file mode 100755
index 000000000..ce83d5fbd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/StormofArrows.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/StormofArrows.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 11:10:50
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Requires bow
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+-- Inflicts 602 - 1003 ranged damage on target encounter
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/StreamofArrows.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/StreamofArrows.lua
new file mode 100755
index 000000000..6c2ef90df
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/StreamofArrows.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/StreamofArrows.lua
+ Script Author : neatz09
+ Script Date : 2020.02.03 05:02:48
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 814 - 994 ranged damage on targets in Area of Effect
+
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/SurvivalInstincts.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SurvivalInstincts.lua
new file mode 100755
index 000000000..4fac89559
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/SurvivalInstincts.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/SurvivalInstincts.lua
+ Script Author : Jabantiz
+ Script Date : 2014.03.10 07:03:07
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Agi, Avoid, OffSkill, Parry, Def)
+ -- Increases AGI of caster by 13.1
+ AddSpellBonus(Target, 2, Agi)
+
+ -- Adds 1.4% to base avoidance.
+ AddSpellBonus(Target, 696, Avoid)
+
+ -- Decreases Slashing and Piercing of caster by 13.8
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffAmt)
+
+ -- Increases Parry of caster by 7.3
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), Parry)
+
+ -- Increases Defense of caster by 9.7
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), Def)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/ThornyTrap.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ThornyTrap.lua
new file mode 100755
index 000000000..06501a05a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/ThornyTrap.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/ThornyTrap.lua
+ Script Author : neatz09
+ Script Date : 2020.02.03 05:02:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Sets a trap
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/TrickShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/TrickShot.lua
new file mode 100755
index 000000000..e66dcf6bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/TrickShot.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/TrickShot.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 03:10:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 98 - 164 ranged damage on target
+-- On a melee hit this spell will cast Blamed on target of attack. Lasts for 10.0 seconds.
+-- Increases Hate Gain of target by 30.0%
+-- Grants a total of 1 trigger of the spell.
+-- Requires bow or aim
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Ranger/TripleShot.lua b/server/Spells/Spells-Copy/Scout/Predator/Ranger/TripleShot.lua
new file mode 100755
index 000000000..276c0f6a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Ranger/TripleShot.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Predator/Ranger/TripleShot.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 03:10:20
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if item~= nil then
+ if GetItemType(item) == 2 then
+ return true
+ end
+ end
+
+ return false, 68
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DmgType2, MinVal2, MaxVal2, DmgType3, MinVal3, MaxVal3)
+-- Inflicts 32 - 54 ranged damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Inflicts 64 - 108 ranged damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType2, MinVal2, MaxVal2)
+end
+-- Inflicts 97 - 162 ranged damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType3, MinVal3, MaxVal3)
+end
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Stalk.lua b/server/Spells/Spells-Copy/Scout/Predator/Stalk.lua
new file mode 100755
index 000000000..d7789b53e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Stalk.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Predator/Stalk.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:45
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Threat to target by 2,661 - 4,435
+-- Grants stealth to caster
+-- Suspends caster's movement speed enhancements
diff --git a/server/Spells/Spells-Copy/Scout/Predator/Stealth.lua b/server/Spells/Spells-Copy/Scout/Predator/Stealth.lua
new file mode 100755
index 000000000..f85a97091
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Predator/Stealth.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Predator/Stealth.lua
+ Script Purpose : Stealth
+ Script Author : theFoof
+ Script Date : 2014.1.16
+ Script Notes :
+--]]
+
+function cast(Caster, Target)
+ Stealth(1)
+ AddSpellBonus(Target, 634, 1)
+end
+
+function remove(Caster, Target)
+ RemoveStealth()
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/QuickStrike.lua b/server/Spells/Spells-Copy/Scout/QuickStrike.lua
new file mode 100755
index 000000000..01f424f8b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/QuickStrike.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/QuickStrike.lua
+ Script Author : neatz09
+ Script Date : 2020.01.02 04:01:39
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 6 - 10 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/AmazingReflexes.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/AmazingReflexes.lua
new file mode 100755
index 000000000..12bd9fc09
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/AmazingReflexes.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/AmazingReflexes.lua
+ Script Author : neatz09
+ Script Date : 2020.01.15 03:01:25
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When a combat art is used this spell has a 22% chance to cast Reflexes on target. Lasts for 5.0 seconds.
+-- Prevents AOE (except when direct)
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BackAttack.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BackAttack.lua
new file mode 100755
index 000000000..7a24bf37c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BackAttack.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Backstab.lua
+ Script Purpose : Brigand Direct Damage + DoT
+ Script Author : Zcoretri
+ Script Date : 17.April.2010
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, TickDmgType, TickDmg)
+ -- DD component
+ -- Add check for Caster being behind Target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, dmgAmount)
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+end
+
+function tick(Caster, Target, DmgType, MinDmg, MaxDmg, TickDmgType, TickDmg)
+ SpellDamage(Target, TickDmgType, TickDmg)
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, TickDmgType, TickDmg)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Backstab.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Backstab.lua
new file mode 100755
index 000000000..12c31d22c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Backstab.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Backstab.lua
+ Script Purpose : Brigand positional attack
+ Script Author : Zcoretri
+ Script Date : 13.March.2014
+ Script Notes :
+--]]
+
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ if IsFlanking(Caster, Target) then
+ return true
+ else
+ SendMessage(Caster, "You must be flanking or behind your target to use this ability!", "yellow")
+ end
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, DoTDmgType, DoTDmg)
+ -- Inflicts 9 - 16 melee damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function tick(Caster, Target, DmgType, MinDmg, MaxDmg, DoTDmgType, DoTDmg)
+ SpellDamage(Target, DoTDmgType, DoTDmg)
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, DoTDmgType, DoTDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BandofThugs.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BandofThugs.lua
new file mode 100755
index 000000000..2473ff4cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BandofThugs.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/BandofThugs.lua
+ Script Author : neatz09
+ Script Date : 2020.01.15 03:01:53
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Summons 3 limited pets to aid the caster
+-- Summons 2 limited pets to aid the caster
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BarroomNegotiation.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BarroomNegotiation.lua
new file mode 100755
index 000000000..f419365aa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BarroomNegotiation.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/BarroomNegotiation.lua
+ Script Author : Zcoretri
+ Script Date : 14.March.2014
+ Script Purpose : added last hit clause 5/13/20
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+-- Inflicts melee damage on targets in Area of Effect
+-- Interrupts targets in Area of Effect
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ if LastSpellAttackHit() then
+ Interrupt(Caster, Target)
+end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BatteryandAssault.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BatteryandAssault.lua
new file mode 100755
index 000000000..5b8116edb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BatteryandAssault.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/BatteryandAssault.lua
+ Script Purpose : Brigand Direct Damage
+ Script Author : Zcoretri
+ Script Date : 13.March.2014
+ Script Notes :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, DmgType2, MinDmg2, MaxDmg2)
+-- Inflicts melee damage on target
+-- Inflicts melee damage on target
+-- NOTE: If one of these attacks misses, the rest after miss automaticly
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DmgType2, MinDmg2, MaxDmg2)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Befuddle.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Befuddle.lua
new file mode 100755
index 000000000..3b5bfd6dc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Befuddle.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Befuddle.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:44
+ Script Purpose :
+ :
+--]]
+
+-- On a melee hit this spell may cast Baffle on target of attack. Triggers about 4.0 times per minute.
+-- Decreases Threat to target by 156
+function cast(Caster, Target, Hate)
+ AddProc(Target, 3, 6.25)
+end
+
+function proc(Caster, Target, Type, Hate)
+ ProcHate(Caster, Target, Hate, "Baffle")
+end
+
+function remove(Caster, Target)
+RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BegforMercy.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BegforMercy.lua
new file mode 100755
index 000000000..a793fbc5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BegforMercy.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/BegforMercy.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:02
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces all damage done to target by 32.63% This spell will absorb a total of 3 attacks.
+-- When damaged this spell will cast Beg on target's attacker.
+-- Decreases threat priority of target encounter by 1 position
+-- Decreases Threat to target encounter by 1,007
+-- Grants a total of 3 triggers of the spell.
+-- If profession other than Fighter
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BlackJack.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BlackJack.lua
new file mode 100755
index 000000000..83e4c12a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BlackJack.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/BlackJack.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 11:10:50
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 240 - 401 crushing damage on target
+-- Prevents target from changing direction while active.
+-- If Target is not Epic
+-- Roots target
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Blackguard.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Blackguard.lua
new file mode 100755
index 000000000..44381c1ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Blackguard.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Blackguard.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 09:10:50
+ Script Purpose :
+ :
+--]]
+
+-- Decreases Slashing, Piercing and Crushing of caster by 29.2
+-- Increases Aggression of caster by 11.9
+-- Increases Defense and Parry of caster by 23.8
+--Increases the caster's effectiveness of worn armor vs physical damage by 18%
+function cast(Caster, Target, Offskill, Agro, DefAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), OffSkill)
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), Agro)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefAmt)
+ AddSpellBonus(Target, 678, 18)
+end
+
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Bruise.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Bruise.lua
new file mode 100755
index 000000000..cce620785
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Bruise.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Mug.lua
+ Script Purpose : Brigand Debuff script
+ Script Author : Zcoretri
+ Script Date : 17.April.2010
+--]]
+
+function cast(Caster, Target, Stat, Skill)
+ AddSkillBonus(Target, 609880714, Skill) -- Defense
+ AddSpellBonus(Target, 2, Stat) -- AGI
+end
+
+function tick(Caster, Target, Stat, Skill)
+
+end
+
+function remove(Caster, Target, Stat, Skill)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BumRush.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BumRush.lua
new file mode 100755
index 000000000..09026657f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/BumRush.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Bard/Dirge/BumRush.lua
+ Script Purpose : Brigand positional melee attack + interrupt
+ Script Author : Zcoretri
+ Script Date : 13.March.2014
+ Script Notes :
+--]]
+
+function precast(Caster, Target)
+ if IsFlanking(Caster, Target) then
+ return true
+ else
+ SendMessage(Caster, "You must be flanking or behind your target to use this ability!", "yellow")
+ return false
+ end
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+-- Interrupt the Target
+ Interrupt(Caster, Target)
+-- Inflicts melee damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Cuss.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Cuss.lua
new file mode 100755
index 000000000..c1f42df93
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Cuss.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Cuss.lua
+ Script Author : neatz09
+ Script Date : 2019.10.07 03:10:21
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, CureAmt, Hate)
+-- Interrupts target
+ Interrupt(Target)
+
+-- Dispels 115 levels of arcane beneficial effects on target
+ CureByType(CureAmt, 2, "Cure")
+
+-- Increases Threat to target by 4,720
+ AddHate(Caster, Target, Hate, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Debilitate.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Debilitate.lua
new file mode 100755
index 000000000..d0050feb5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Debilitate.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Debilitate.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 11:10:06
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Target, Caster) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Mit)
+-- Inflicts 561 - 935 melee damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases Mitigation of target vs physical damage by 2160
+AddSpellBonus(Target, 200, Mit)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Deceit.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Deceit.lua
new file mode 100755
index 000000000..88705e272
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Deceit.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Deceit.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 09:05:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Haste of caster by 18.7
+-- On a melee hit this spell may cast Knockdown on target of attack. Lasts for 2.5 seconds. Triggers about 4.0 times per minute.
+-- Throws target back
+-- Blurs vision of target
+-- Stuns target
+-- Does not affect Epic targets
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DesperateThrust.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DesperateThrust.lua
new file mode 100755
index 000000000..3077f9e00
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DesperateThrust.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/DesperateThrust.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 09:10:51
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target)
+-- Inflicts 257 - 428 melee damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases Defense of target by 15.7
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), TgtAmt)
+-- Decreases Defense of caster by 17.4
+ AddSkillBonus(Caster, GetSkillIDByName("Slashing"), CastAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Dispatch.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Dispatch.lua
new file mode 100755
index 000000000..04cc351a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Dispatch.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Dispatch.lua
+ Script Author : neatz09
+ Script Date : 2019.10.07 02:10:30
+ Script Purpose :
+ :
+--]]
+
+-- Must be flanking or behind
+ function precast(Caster, Target)
+ -- Must be flanking or behind
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+end
+
+-- Inflicts 541 - 903 melee damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Debuff)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+-- Decreases Mitigation of target vs physical damage by 4061
+-- Decreases Mitigation of target vs elemental damage by 4061
+-- Decreases Mitigation of target vs noxious damage by 4061
+-- Decreases Mitigation of target vs arcane damage by 4061
+ AddSpellBonus(Target, 200, Debuff)
+ AddSpellBonus(Target, 201, Debuff)
+ AddSpellBonus(Target, 202, Debuff)
+ AddSpellBonus(Target, 203, Debuff)
+end
+
+
+function remove(Caster, Target)
+RemoveSpellBonus(Caster, Target)
+
+end
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DiversionBlade.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DiversionBlade.lua
new file mode 100755
index 000000000..24e38461c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DiversionBlade.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : BumRush.lua
+ Script Purpose : Brigand Direct Damage + Interrupt
+ Script Author : Zcoretri
+ Script Date : 17.April.2010
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ -- Add check for Caster is flanking or behind Target
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, dmgAmount)
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+ --Interrupt(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleBlast.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleBlast.lua
new file mode 100755
index 000000000..833606cff
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleBlast.lua
@@ -0,0 +1,43 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/DoubleBlast.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if not item or GetItemType(item) ~= 2 then
+ -- no item or item is not a ranged item (no way to determine different range items currently)
+ return false, 68
+ end
+
+ return true
+end
+
+function cast(Caster, Target, MinDmg, MaxDmg, MinDmg2, MaxDmg2)
+ -- Inflicts ranged damage on target x2 if first one hits
+ SpellDamage(Target, MinDmg, MaxDmg)
+ if LastSpellAttackHit() then
+ SpellDamage(Target, MinDmg2, MaxDmg2)
+ end
+ -- Applies Knockdown on termination. Lasts for 2.5 seconds.
+ -- Throws target back
+ -- Blurs vision of target
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4) -- Stun
+ Knockback(Caster, Target, 2500)
+ BlurVision(Target, 0.5)
+ end
+
+end
+
+function remove(Caster, Target, MinDmg, MaxDmg, MinDmg2, MaxDmg2)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleDagger.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleDagger.lua
new file mode 100755
index 000000000..788a3d5c0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleDagger.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : BatteryAndAssault.lua
+ Script Purpose : Brigand Direct Damage
+ Script Author : Zcoretri
+ Script Date : 17.April.2010
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg)
+ -- Add check for if first attack misses
+ --if AttackFails == false then
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, dmgAmount)
+ SpellDamage(Target, DmgType, dmgAmount)
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+ --end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleUp.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleUp.lua
new file mode 100755
index 000000000..9d66a02ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/DoubleUp.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/DoubleUp.lua
+ Script Author : neatz09
+ Script Date : 2020.01.15 03:01:40
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Instantly recasts any offensive Combat Art the brigand uses.
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Entangle.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Entangle.lua
new file mode 100755
index 000000000..408caefc6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Entangle.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Entangle.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:54
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Snare on termination. Lasts for 24.0 seconds.
+-- Slows target by 32.0%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+-- Slows target encounter by 38.4%
+-- 5% chance to dispel when target takes damage
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Gouge.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Gouge.lua
new file mode 100755
index 000000000..222f0d3de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Gouge.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Gouge.lua
+ Script Author : Zcoretri
+ Script Date : 14.March.2014
+ Script Purpose : Added ifLastHit 5/13/20
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be in front of or flanking
+ if IsFlanking(Caster, Target) then
+ return true
+ else
+ SendMessage(Caster, "You must be flanking your target to use this ability!", "yellow")
+ return false
+ end
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, Parry)
+ -- Decreases Parry of target by 8.1
+ -- Inflicts 98 - 163 melee damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ if LastSpellAttackHit() then
+ AddSkillBonus(Target, 540022425, Parry)
+end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonue(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/HavocsTreachery.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/HavocsTreachery.lua
new file mode 100755
index 000000000..c0fcce064
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/HavocsTreachery.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/HavocsTreachery.lua
+ Script Author : neatz09
+ Script Date : 2020.05.13 09:05:13
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Improves the Brigand's profession debuffs by 10%.
+-- On a combat hit this spell may cast Havoc's Treachery on target of attack. Lasts for 12.0 seconds. Triggers about 2.4 times per minute.
+-- Inflicts 605 - 907 piercing damage on target
+-- Increases Damage Per Second of caster by 15.0
+-- Cannot be modified except by direct means
+-- Improves the damage of Murderous Rake, Dispatch, Debilitate and Backstab by 30%
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Holdup.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Holdup.lua
new file mode 100755
index 000000000..ce7e90fc8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Holdup.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Holdup.lua
+ Script Purpose : Brigand Debuff + Snare
+ Script Author : Zcoretri
+ Script Date : 14.March.2014
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Slow, Mitigation)
+ -- Debuff component
+ AddSpellBonus(Target, 201, Mitigation)
+end
+
+function tick(Caster, Target, Slow, Mitigation)
+ -- Snare component
+ originalSpeed = GetSpeed(Target)
+ pctChance = math.random(1, 100)
+ --[[
+ if pctChance => 5 then
+ newSpeed = originalSpeed - (originalSpeed * Slow)
+ if originalSpeed > newSpeed then
+ SetSpeed(Target, newSpeed)
+ end
+ end
+ --]]
+end
+
+function remove(Caster, Target, Slow, Mitigation)
+ RemoveSpellBonus(Target)
+ --SetSpeed(Target, originalSpeed)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Mug.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Mug.lua
new file mode 100755
index 000000000..5ab847381
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Mug.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Mug.lua
+ Script Purpose : Brigand Debuff
+ Script Author : Zcoretri
+ Script Date : 14.March.2014
+ Script Notes :
+--]]
+
+function cast(Caster, Target, StatAmt, SkillAmt)
+ AddSkillBonus(Target, 609880714, SkillAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt, SkillAmt)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/MurderousRake.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/MurderousRake.lua
new file mode 100755
index 000000000..5732213a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/MurderousRake.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/MurderousRake.lua
+ Script Author : Zcoretri
+ Script Date : 17.March.2014
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if IsBehind(Caster, Target) then
+ return true
+ else
+ SendMessage(Caster, "You must be flanking or behind your target to use this ability!", "yellow")
+ end
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, Mitigation1)
+-- Decreases Mitigation of target vs elemental and noxious damage by 360
+-- Decreases Mitigation of target vs arcane damage by 360
+-- Inflicts 145 - 241 melee damage on target
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddSpellBonus(Target, 201, Mitigation1)
+ AddSpellBonus(Target, 202, Mitigation1)
+ AddSpellBonus(Target, 203, Mitigation1)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Puncture.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Puncture.lua
new file mode 100755
index 000000000..84f6cb2cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Puncture.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Puncture.lua
+ Script Author : Zcoretri
+ Script Date : 14.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, AttackSpeed)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+ AddSpellBonus(Target, 612, AttackSpeed)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Rob.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Rob.lua
new file mode 100755
index 000000000..e1c3ffba6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Rob.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Rob.lua
+ Script Purpose : Brigand Stealth attack + Debuff
+ Script Author : Zcoretri
+ Script Date : 13.March.2014
+ Script Notes :
+--]]
+
+function precast(Caster, Target)
+ if IsStealthed(Caster) then
+ return true
+ end
+ SendMessage(Caster, "You must be sneaking to use this ability.", "yellow")
+ return false, 0
+end
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, StatAmt)
+-- Inflicts 13 - 21 melee damage on target
+-- Decreases STR of target by 5.0
+ SpellDamage(Target, DmgType, dmgAmount)
+ AddSpellBonus(Target, 0, StatAmt)
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, StatAmt)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Shank.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Shank.lua
new file mode 100755
index 000000000..cc3f2775e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Shank.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Shank.lua
+ Script Author : neatz09
+ Script Date : 2019.10.07 02:10:00
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Target, Caster) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, DotType, DoTMin, DotMax)
+-- Inflicts 70 - 117 melee damage on target
+-- Inflicts 51 piercing damage on target instantly and every 4 seconds
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DotType, DoTMin, DotMax)
+end
+
+
+function tick(Caster, Target)
+SpellDamage(Target, DotType, DoTMin, DotMax)
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Shenanigans.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Shenanigans.lua
new file mode 100755
index 000000000..364cfb9d3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Shenanigans.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/Shenanigans.lua
+ Script Author : neatz09
+ Script Date : 2019.10.17 11:10:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases threat priority of target by 2 positions
+-- Decreases Defense and Parry of caster by 459.0
+-- Stuns caster
+-- When damaged with a melee weapon this spell will cast Surprise Attack on target's attacker.
+-- Inflicts 1577 - 2628 piercing damage on target
+-- Grants a total of 1 trigger of the spell.
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Skew.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Skew.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Skew.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/StreetSmarts.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/StreetSmarts.lua
new file mode 100755
index 000000000..2d135f893
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/StreetSmarts.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/StreetSmarts.lua
+ Script Author : Zcoretri
+ Script Date : 14.March.2014
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, StatAmt, Avoidance, MitAmt1, MitAmt2)
+-- Increases AGI of caster by 15.0
+-- Adds 14.0% to base avoidance.
+-- Increases Mitigation of caster vs physical damage by 152
+-- Increases Mitigation of caster vs elemental, noxious and arcane damage by 183
+ AddSpellBonus(Target, StatAmt)
+ -- AddSkillBonus(Target, , Avoidance)
+ AddSpellBonus(Target, 200, MitAmt1)
+ AddSpellBonus(Target, 201, MitAmt2)
+ AddSpellBonus(Target, 202, MitAmt2)
+ AddSpellBonus(Target, 203, MitAmt2)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/StunningBlow.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/StunningBlow.lua
new file mode 100755
index 000000000..8b06ddb49
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/StunningBlow.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/StunningBlow.lua
+ Script Author : neatz09
+ Script Date : 2019.10.15 09:10:24
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Inflicts 116 - 194 melee damage on target
+-- Stuns target
+-- If Target is not Epic
+-- Resistibility increases against targets higher than level 29.
+ -- Stuns target
+ -- If Target is not Epic
+ -- Resistibility increases against targets higher than level 29.
+ if not IsEpic(Target) then
+ AddControlEffect(Target, 4)
+ end
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+end
+
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/ThievesGuild.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/ThievesGuild.lua
new file mode 100755
index 000000000..c3a2216fa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/ThievesGuild.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Brigand/ThievesGuild.lua
+ Script Author : neatz09
+ Script Date : 2020.01.15 03:01:38
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Accomplice: Increases potency of the partner by 1%.
+-- If three combat arts are used within five seconds.
+-- Applies Partners in Crime: Increases potency of the partner by 1.5%.
+-- If five combat arts are used within five seconds.
+-- Both Accomplice and Partners in Crime can be active at once.
+-- If not brigand
+-- Thieves Guild cannot be cast on someone who is in another brigand's Thieves Guild
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Thrust.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Thrust.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Thrust.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Whack.lua b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Whack.lua
new file mode 100755
index 000000000..36cb15de7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Brigand/Whack.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Rob.lua
+ Script Purpose : Brigand Direct Damage + Debuff
+ Script Author : Zcoretri
+ Script Date : 17.April.2010
+ Script Notes :
+--]]
+
+function cast(Caster, Target, DmgType, MinDmg, MaxDmg, StatAmt)
+ -- Add check for Caster is using sneaking ability
+ if MaxDmg ~= nil and MinDmg < MaxDmg then
+ dmgAmount = math.random(MinDmg, MaxDmg)
+ SpellDamage(Target, DmgType, dmgAmount)
+ else
+ SpellDamage(Target, DmgType, MinDmg)
+ end
+ --AddSpellBonus(Target, 0, StatAmt)
+end
+
+function tick(Caster, Target, DmgType, MinDmg, MaxDmg, StatAmt)
+
+end
+
+function remove(Caster, Target, DmgType, MinDmg, MaxDmg, StatAmt)
+ --RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/CircularStrike.lua b/server/Spells/Spells-Copy/Scout/Rogue/CircularStrike.lua
new file mode 100755
index 000000000..3a9ebd1f8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/CircularStrike.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Scout/Rogue/CircularStrike.lua
+ Script Author : neatz09
+ Script Date : 2019.10.06 09:10:09
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Interrupts targets in Area of Effect
+-- Inflicts 38 - 64 melee damage on targets in Area of Effect
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/DaringAdvance.lua b/server/Spells/Spells-Copy/Scout/Rogue/DaringAdvance.lua
new file mode 100755
index 000000000..9e089d2ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/DaringAdvance.lua
@@ -0,0 +1,36 @@
+--[[
+ Script Name : Spells/Scout/Rogue/DaringAdvance.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 03:12:33
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DefAmt, SkillAmt, DmgType, DmgAmt)
+ -- Decreases Defense of caster by 3.9
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+
+ -- Increases Slashing of caster by 5.3
+ -- Increases Piercing, Crushing and Ranged of caster by 5.3
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), SkillAmt)
+
+ AddProc(Target, 3, 30)
+end
+
+function proc(Caster, Target, Type, DefAmt, SkillAmt, DmgType, DmgAmt)
+ -- On a melee hit this spell may cast Interrupt on target of attack. Triggers about 6.0 times per minute.
+ -- Inflicts 19 melee damage on target
+ -- Interrupts target
+ if Type == 3 then
+ ProcDamage(Caster, Target, "Interrupt", DmgType, DmgAmt)
+ Interrupt(Caster, Target)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveProc(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/QuickFlurry.lua b/server/Spells/Spells-Copy/Scout/Rogue/QuickFlurry.lua
new file mode 100755
index 000000000..0a195e0f5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/QuickFlurry.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Rogue/QuickFlurry.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 03:12:44
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 24 - 40 melee damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Inflicts 24 - 40 melee damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/RuthlessCunning.lua b/server/Spells/Spells-Copy/Scout/Rogue/RuthlessCunning.lua
new file mode 100755
index 000000000..8cf94841c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/RuthlessCunning.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Rogue/RuthlessCunning.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 02:12:59
+ Script Purpose :
+ :
+--]]
+
+-- Increases Multi Attack of caster by 27.2
+
+function cast(Caster, Target, Multi)
+ AddSpellBonus(Target, 641, Multi)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/ShadowSlip.lua b/server/Spells/Spells-Copy/Scout/Rogue/ShadowSlip.lua
new file mode 100755
index 000000000..2d791ed43
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/ShadowSlip.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells/Scout/Rogue/ShadowSlip.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 04:12:17
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HateAmt)
+ -- Decreases threat priority of target by 1 position
+ -- Decreases Threat to target by 283
+ AddHate(Target, HateAmt, 1)
+
+ -- Applies Lie Low on termination. Lasts for 12 hours.
+ -- Grants stealth to caster
+ -- Suspends caster's movement speed enhancements
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Smuggle.lua b/server/Spells/Spells-Copy/Scout/Rogue/Smuggle.lua
new file mode 100755
index 000000000..86d1fe24f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Smuggle.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Smuggle.lua
+ Script Author : theFoof
+ Script Date : 2014.1.16
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ return not IsInCombat(Caster)
+end
+
+function cast(Caster, Target)
+-- Grants stealth to group members (AE)
+-- Suspends group members (AE)'s movement speed enhancements
+-- This effect cannot be cast during combat
+ Stealth(1)
+end
+
+function remove(Caster, Target)
+ RemoveStealth()
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Sneak.lua b/server/Spells/Spells-Copy/Scout/Rogue/Sneak.lua
new file mode 100755
index 000000000..78531bb2e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Sneak.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Sneak.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 01:12:19
+ Script Purpose :
+ :
+--]]
+
+-- Grants stealth to caster
+-- Suspends caster's movement speed enhancements
+-- Grants See Stealth to caster
+
+function cast(Caster, Target)
+ Stealth(1)
+ AddSpellBonus(Target, 633, 1)
+end
+
+function remove(Caster, Target)
+ RemoveStealth()
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/StreetSmarts.lua b/server/Spells/Spells-Copy/Scout/Rogue/StreetSmarts.lua
new file mode 100755
index 000000000..a6e98506f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/StreetSmarts.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Rogue/StreetSmarts.lua
+ Script Author : neatz09
+ Script Date : 2019.12.14 03:12:20
+ Script Purpose :
+ :
+--]]
+
+-- Increases AGI of caster by 10.0
+-- Increases STR of caster by 15.0
+
+function cast(Caster, Target)
+ AddSpellBonus(Target, 2, Agi)
+ AddSpellBonus(Target, 0, Str)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/ArcticBlast.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/ArcticBlast.lua
new file mode 100755
index 000000000..f5e439cb0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/ArcticBlast.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/ArcticBlast.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 03:12:34
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if item then
+ if GetItemType(item) == 2 then
+ return true
+ end
+ end
+
+ return false, 68
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Snare)
+ -- Inflicts 57 - 95 cold damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Inflicts 57 - 95 cold damage on target
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+
+ -- Applies Snare on termination. Lasts for 24.0 seconds.
+ -- Slows target by 29.9%
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+ if LastSpellAttackHit() then
+ SetSpeedMultiplier(Target, (100 - Snare) / 100)
+ AddSpellTimer(24000, "RemoveSnare")
+ end
+end
+
+function RemoveSnare(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/AvoidBlame.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/AvoidBlame.lua
new file mode 100755
index 000000000..113a8c928
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/AvoidBlame.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/AvoidBlame.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 02:12:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, HateAmt)
+ -- On a melee hit this spell may cast Evade on target of attack. Triggers about 4.0 times per minute.
+ AddProc(Target, 3, 20.0)
+end
+
+function proc(Caster, Target, Type, HateAmt)
+ -- Decreases Threat to target by 268
+ if Type == 3 then
+ AddHate(Target, HateAmt, 1)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveProc(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Bladeweaver.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Bladeweaver.lua
new file mode 100755
index 000000000..5ae929a88
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Bladeweaver.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Bladeweaver.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 01:12:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- Increases STA of caster by 0.7
+ AddSpellBonus(Target, 1, BonusAmt)
+
+ -- Increases AGI of caster by 15.0
+ AddSpellBonus(Target, 2, BonusAmt)
+
+ -- Adds 14.0% to base avoidance.
+ AddSpellBonus(Target, 696, BonusAmt)
+
+ -- Increases Mitigation of caster vs physical damage by 82
+ AddSpellBonus(Target, 200, BonusAmt)
+
+ -- Increases Mitigation of caster vs elemental, noxious and arcane damage by 183
+ AddSpellBonus(Target, 201, BonusAmt)
+ AddSpellBonus(Target, 202, BonusAmt)
+ AddSpellBonus(Target, 203, BonusAmt)
+
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/CircleAttack.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/CircleAttack.lua
new file mode 100755
index 000000000..9e0367deb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/CircleAttack.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : dd_dot.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.02
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ -- DD component
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ dmgAmount = math.random(MinDDVal, MaxDDVal)
+ SpellDamage(Target, DDType, dmgAmount)
+ --AddHate(Caster, Target, dmgAmount)
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ --AddHate(Caster, Target, MinDDVal)
+ end
+
+ -- Effect component - only process this code if there is an EffectType param
+ if EffectType ~= nil then
+
+ -- Determine if there is a range to effect values
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ -- Determine EffectType - either a DamageType or a String value passed as param 4
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+ end
+
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, EffectType, DamageType, MinEffectVal, MaxEffectVal)
+
+ if MaxEffectVal ~= nil and MinEffectVal < MaxEffectVal then
+ EffectValue = math.random(MinEffectVal, MaxEffectVal)
+ else
+ EffectValue = MinEffectVal
+ end
+
+ if EffectType == "heal" then
+ ModifyHP(Caster, EffectValue)
+ else
+ SpellDamage(Target, DamageType, EffectValue)
+ end
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DashingSwathe.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DashingSwathe.lua
new file mode 100755
index 000000000..a73788673
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DashingSwathe.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/DashingSwathe.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 02:12:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 159 - 266 melee damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown. Lasts for 1.5 seconds.
+ -- Throws target back
+ -- Stuns target
+ -- Blurs vision of target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockback(Caster, Target, 1500)
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(1500, "RemoveEffects")
+ end
+end
+function RemoveEffects(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DeviousBlade.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DeviousBlade.lua
new file mode 100755
index 000000000..42d89eb19
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DeviousBlade.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/DeviousBlade.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 443 - 542 melee damage on target
+
+--[[function cast(Caster, Target)
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+if LastSpellAttackHit() then
+AddProc
+end--]]
+
+
+
+-- On a melee hit this spell will cast Blamed on target of attack. Lasts for 10.0 seconds.
+-- Increases Hate Gain of target by 30.0%
+-- Grants a total of 1 trigger of the spell.
+-- AddSpellBonus(Target, 624, Hate)
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DisarmingGrin.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DisarmingGrin.lua
new file mode 100755
index 000000000..1f09e786a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DisarmingGrin.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/DisarmingGrin.lua
+ Script Author : neatz09
+ Script Date : 2019.11.07 08:11:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Mesmerizes target
+-- Prevents AOE (except when direct)
+-- Dispelled when target takes damage
+-- Does not affect Epic targets
+-- Resistibility increases against targets higher than level 29.
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Double-Cross.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Double-Cross.lua
new file mode 100755
index 000000000..f0212825a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Double-Cross.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Double-Cross.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:04
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases WIS of target by 6.1
+-- Decreases Defense of target by 2.0
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DoubleCross.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DoubleCross.lua
new file mode 100755
index 000000000..f7b79c467
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/DoubleCross.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/DoubleCross.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.15 08:12:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, BonusAmt, SkillAmt)
+ Say(Caster, "Missing Elemental damage bonus")
+
+-- Decreases WIS of target by 6.1
+ AddSpellBonus(Target, 600, BonusAmt)
+
+ -- Decreases Defense of target by 2.0
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), SkillAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/EnGarde.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/EnGarde.lua
new file mode 100755
index 000000000..405c4f4ad
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/EnGarde.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/EnGarde.lua
+ Script Author : neatz09
+ Script Date : 2020.02.02 03:02:20
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- When a combat art is used this spell has a 15% chance to cast Counterattack on target of combat art.
+-- Inflicts 166 - 276 melee damage on target
+-- When blocked this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
+-- When parried this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
+-- When deflected this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
+-- When riposted this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
+-- On a block this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
+-- On a riposte this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
+-- On a parry this spell will cast Counterattack on target's victim.
+-- Inflicts 166 - 276 melee damage on target
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FancyFootwork.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FancyFootwork.lua
new file mode 100755
index 000000000..e42a79a0c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FancyFootwork.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/FancyFootwork.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 02:12:08
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt, AggAmt, DefAmt)
+ -- Decreases Slashing, Piercing and Crushing of caster by 13.8
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), SkillAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), SkillAmt)
+
+ -- Increases Aggression of caster by 2.4
+ AddSkillBonus(Target, GetSkillIDByName("Aggression"), AggAmt)
+
+ -- Increases Parry and Defense of caster by 4.9
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), DefAmt)
+ AddSkillBonus(Target, GetSkillIDByName("Defense"), DefAmt)
+
+ -- Increases the caster's effectiveness of worn armor vs physical damage by 18%
+ AddSpellBonus(Target, 678, 18)
+
+end
+
+function remove(Caster, Target)
+ RemoveSkillBonus(Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlamboyantStrike.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlamboyantStrike.lua
new file mode 100755
index 000000000..8f5b03e35
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlamboyantStrike.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/FlamboyantStrike.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 01:09:37
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 267 - 446 melee damage on target
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, BonusAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+-- Decreases INT of target by 142.6
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
+
+
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlashofSteel.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlashofSteel.lua
new file mode 100755
index 000000000..bdfcabf5b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlashofSteel.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/FlashofSteel.lua
+ Script Author : John Adams
+ Script Date : 2013.11.20 07:11:31
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, BonusAmt)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ AddSpellBonus(Target, 629, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlurryofBlades.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlurryofBlades.lua
new file mode 100755
index 000000000..b82c0003f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/FlurryofBlades.lua
@@ -0,0 +1,32 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/FlurryofBlades.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:57
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target)
+-- Inflicts 40 - 67 melee damage on target
+SpellDamage(Target, DmgType, MinVal, MaxVal, Mit)
+-- Inflicts 40 - 67 melee damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+-- Inflicts 40 - 67 melee damage on target
+if LastSpellAttackHit() then
+SpellDamage(Target, DmgType, MinVal, MaxVal)
+end
+-- Decreases Mitigation of target vs physical damage by 189
+if LastSpellAttackHit() then
+ AddSpellBonus(Target, 200, Mit)
+
+end
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Hamstring.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Hamstring.lua
new file mode 100755
index 000000000..d8ad305c8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Hamstring.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Hamstring.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 10:10:02
+ Script Purpose :
+ :
+--]]
+
+-- Inflicts 211 - 352 melee damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Snare)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+if LastSpellAttackHit() then
+
+-- Slows target by 37.6%
+-- 5% chance to dispel when target receives hostile action
+-- 5% chance to dispel when target takes damage
+SetSpeedMultiplier(Target, ((100 - Snare) / 100))
+end
+
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/HangmansNoose.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/HangmansNoose.lua
new file mode 100755
index 000000000..b6bb71a48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/HangmansNoose.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/HangmansNoose.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.15 09:12:11
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, Snare, Mit)
+ -- Applies Snare. Lasts for 24.0 seconds.
+ -- Slows target by 28.3%
+ -- 5% chance to dispel when target receives hostile action
+ -- 5% chance to dispel when target takes damage
+ SetSpeedMultiplier(Target, ((100 - Snare) / 100))
+
+ -- Decreases Mitigation of target vs arcane damage by 197
+ AddSpellBonus(Target, 203, Mit)
+end
+
+function remove(Caster, Target)
+ SetSpeedMultiplier(Target, 1)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Hurricane.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Hurricane.lua
new file mode 100755
index 000000000..ece7391ec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Hurricane.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Hurricane.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/InspiredDaring.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/InspiredDaring.lua
new file mode 100755
index 000000000..d043227c5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/InspiredDaring.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/InspiredDaring.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 08:08:49
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/KidneyStab.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/KidneyStab.lua
new file mode 100755
index 000000000..6ec387b31
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/KidneyStab.lua
@@ -0,0 +1,28 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/KidneyStab.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.15 08:12:55
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be flanking or behind
+ return IsFlanking(Target, Caster)
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, BonusAmt)
+ -- Inflicts 29 - 36 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Decreases Mitigation of target vs physical damage by 54
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/LuckyGambit.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/LuckyGambit.lua
new file mode 100755
index 000000000..f98cb455f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/LuckyGambit.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/LuckyGambit.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.15 08:12:23
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 16 - 27 melee damage on targets in Area of Effect
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/LungPuncture.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/LungPuncture.lua
new file mode 100755
index 000000000..400a4a228
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/LungPuncture.lua
@@ -0,0 +1,34 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/LungPuncture.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 03:10:02
+ Script Purpose :
+ :
+--]]
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+end
+-- Inflicts 365 - 609 melee damage on target
+function cast(Caster, Target, DmgType, MinVal, MaxVal, Strike, Skill)
+ SpellDamage(Target, DmgType, MinVal, MaxVal)
+-- Decreases strikethrough chance of target by 5.8%.
+AddSpellBonus(Target, 680, Strike)
+-- Decreases Slashing, Crushing, Piercing, Ranged, Focus, Disruption, Subjugation and Ordination of target by 56.5
+ AddSkillBonus(Target, GetSkillIDByName("Crushing"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Piercing"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Slashing"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Ranged"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Focus"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Disruption"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Subjugation"), Skill)
+ AddSkillBonus(Target, GetSkillIDByName("Ordination"), Skill)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ RemoveSkillBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/PerfectFinesse.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/PerfectFinesse.lua
new file mode 100755
index 000000000..7df756b26
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/PerfectFinesse.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/PerfectFinesse.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:17
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+
+function cast(Caster, Target, Haste, Multi)
+-- Increases Haste of caster by 18.7
+ AddSpellBonus(Target, 617, Haste)
+-- Increases Multi Attack of caster by 21.5
+ AddSpellBonus(Target, 641, Multi)
+end
+
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/RazorEdge.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/RazorEdge.lua
new file mode 100755
index 000000000..b3ede5c9e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/RazorEdge.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/RazorEdge.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 01:12:44
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- Must be in front of or flanking
+ return (not IsBehind(Target, Caster))
+end
+
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal, SkillAmt)
+ -- Inflicts 98 - 163 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Decreases Parry of target by 8.1
+ if LastSpellAttackHit() then
+ AddSkillBonus(Target, GetSkillIDByName("Parry"), SkillAmt)
+ end
+end
+
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Shanghai.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Shanghai.lua
new file mode 100755
index 000000000..67c7cdb9a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Shanghai.lua
@@ -0,0 +1,39 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Shanghai.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.15 08:12:20
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+ -- You must be sneaking to use this ability.
+ return IsStealthed(Caster)
+end
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 13 - 21 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Applies Knockdown on termination. Lasts for 2.5 seconds.
+ -- Blurs vision of target
+ -- Throws target back
+ -- Stuns target
+ -- Does not affect Epic targets
+ if not IsEpic(Target) then
+ Knockdown(Target, Caster, 2500)
+ AddControlEffect(Target, 4)
+ BlurVision(Target, 1.0)
+ AddSpellTimer(2500, "RemoveEffects")
+ end
+end
+
+function RemoveEffects(Caster, Target)
+ RemoveControlEffect(Target, 4)
+ BlurVision(Target, 0)
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SleightofHand.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SleightofHand.lua
new file mode 100755
index 000000000..cd93bd54f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SleightofHand.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/SleightofHand.lua
+ Script Author : neatz09
+ Script Date : 2019.10.24 04:10:42
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Applies Sleight of Hand Immunity on termination. Lasts for 2 minutes.
+-- Target of this spell cannot have Sleight of Hand used on them
+-- Cannot be modified except by direct means
+-- Decreases Threat to target by 1,660
+-- If profession other than Fighter
+-- Increases Threat to target by 2,200
+-- If Fighter
+-- Swaps your current hate position with your target's hate position.
+-- Must be engaged in combat
+-- Cannot cast this on a player who has recently had Sleight of Hand used on them.
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Slice.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Slice.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Slice.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SnapoftheWrist.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SnapoftheWrist.lua
new file mode 100755
index 000000000..0fb22c435
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SnapoftheWrist.lua
@@ -0,0 +1,25 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/SnapoftheWrist.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 01:12:23
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ -- Inflicts 43 - 72 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+
+ -- Inflicts 43 - 72 melee damage on target
+ if LastSpellAttackHit() then
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+ end
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SpineAttack.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SpineAttack.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SpineAttack.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SpuriousBravado.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SpuriousBravado.lua
new file mode 100755
index 000000000..addc3d242
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SpuriousBravado.lua
@@ -0,0 +1,13 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/SpuriousBravado.lua
+ Script Author : neatz09
+ Script Date : 2019.11.04 10:11:56
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- On a melee hit this spell may cast Bravado on caster. Lasts for 20.0 seconds. Triggers about 5.0 times per minute.
+-- Increases Hate Gain of caster by 5.0%
+-- Increases Haste of caster by 28.5
+-- Dispelled when target takes damage
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SteelSwipe.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SteelSwipe.lua
new file mode 100755
index 000000000..333c14d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SteelSwipe.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : dd_debuff.lua
+ Script Purpose : Generic damage + 1 effect script
+ Script Author : John Adams
+ Script Date : 2008.12.04
+ Script Notes : Parameter 4 and 5 are the debuff type and value (param 6 if value is a range)
+--]]
+
+function cast(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+ -- Debuff component
+ -- Determine if there is a range to effect values
+ if MaxDebuffVal ~= nil and MinDebuffVal < MaxDebuffVal then
+ -- JA: for debuff randoms (if any), need to to math.random with precision - I think this function rounds up?
+ DebuffValue = math.random(MinDebuffVal, MaxDebuffVal)
+ else
+ DebuffValue = MinDebuffVal
+ end
+
+ -- Determine DebuffType - either a DamageType or a String value passed as param 4
+ if DebuffType == "Attack" then
+ -- ModifyAttackSpeed(Target, -DebuffValue)
+ elseif DebuffType == "DPS" then
+ -- ModifyDPS(Target, -DebuffValue)
+ elseif DebuffType == "Disease" then
+ -- ModifyDisease(Target, -DebuffValue)
+ elseif DebuffType == "Power" then
+ ModifyPower(Target, -DebuffValue)
+ elseif DebuffType == "Knockback" then
+ SpawnSet(Target, "visual_state", "10900")
+ end
+
+ -- DD component (instant damage)
+ if MaxDDVal ~= nil and MinDDVal < MaxDDVal then
+ SpellDamage(Target, DDType, math.random(MinDDVal, MaxDDVal))
+ else
+ SpellDamage(Target, DDType, MinDDVal)
+ end
+end
+
+function tick(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
+
+function remove(Caster, Target, DDType, MinDDVal, MaxDDVal, DebuffType, MinDebuffVal, MaxDebuffVal)
+
+end
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/StormofSteel.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/StormofSteel.lua
new file mode 100755
index 000000000..c52f666c3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/StormofSteel.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/StormofSteel.lua
+ Script Author : neatz09
+ Script Date : 2019.09.23 01:09:55
+ Script Purpose :
+ :
+--]]
+-- If weapon equipped in Ranged
+function precast(Caster, Target)
+ -- If weapon equipped in Ranged
+ local item = GetEquippedItemBySlot(Caster, 16)
+ if item then
+ if GetItemType(item) == 2 then
+ return true
+ end
+ end
+
+ return false, 68
+end
+
+-- Inflicts 298 - 497 ranged damage on targets in Area of Effect
+
+function cast(Caster, Target, MinVal, MaxVal)
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, MinVal)
+ end
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SwarthyDeception.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SwarthyDeception.lua
new file mode 100755
index 000000000..1ce62a2a5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SwarthyDeception.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/SwarthyDeception.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.16 06:12:40
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, TransferAmt)
+ -- Causes 6% Threat to transfer to target when in combat
+ AddThreatTransfer(Caster, Target, TransferAmt)
+end
+
+
+function remove(Caster, Target)
+ RemoveThreatTransfer(Caster)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SwarthyWays.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SwarthyWays.lua
new file mode 100755
index 000000000..83a9fafaf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/SwarthyWays.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/SwarthyWays.lua
+ Script Author : neatz09
+ Script Date : 2020.02.02 03:02:04
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Flamboyant Strike will gain an additional effect that causes the target to reduce their spell damage by 10%
+-- Increases Potency of caster by 10.0%
+-- On a melee hit this spell may cast Swarthy Chaos on target of attack. Lasts for 12.0 seconds. Triggers about 3.0 times per minute.
+-- Adds an additional 8% hate transfer to Swarthy Deception IV
+-- Inflicts 475 - 713 piercing damage on target
+-- Inflicts 173 - 259 piercing damage on target every 3 seconds
+-- Cannot be modified except by direct means
+-- Cannot be modified except by direct means
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Tease.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Tease.lua
new file mode 100755
index 000000000..e869eabd9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Tease.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Tease.lua
+ Script Author : neatz09
+ Script Date : 2019.10.11 09:10:49
+ Script Purpose :
+ :
+--]]
+
+-- Dispels 35 levels of arcane beneficial effects on target
+function cast(Caster, Target, CureAmt, MinTaunt, MaxTaunt)
+ CureByType(CureAmt, 2, "Cure")
+
+-- Interrupts target
+ Interrupt(Target)
+
+-- Increases Threat to target by 2,110
+ if MaxTaunt ~= nil and MinTaunt < MaxTaunt then
+ AddHate(Caster, Target, math.random(MinTaunt, MaxTaunt))
+ else
+ AddHate(Caster, Target, MinTaunt)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Viscerate.lua b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Viscerate.lua
new file mode 100755
index 000000000..b3174efdf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Rogue/Swashbuckler/Viscerate.lua
@@ -0,0 +1,33 @@
+--[[
+ Script Name : Spells/Scout/Rogue/Swashbuckler/Viscerate.lua
+ Script Author : Jabantiz
+ Script Date : 2013.12.15 08:12:23
+ Script Purpose :
+ :
+--]]
+
+function precast(Caster, Target)
+-- Must be flanking or behind
+ if not IsFlanking(Caster, Target) then
+ SendMessage(Caster, "Must be flanking or behind", "yellow")
+ return false
+ end
+
+ return true
+end
+
+function cast(Caster, Target, BonusAmt, DmgType, MinVal, MaxVal)
+ -- Decreases AGI of target by 5.0
+ AddSpellBonus(Target, 2, BonusAmt)
+
+ -- Inflicts 16 - 27 melee damage on target
+ if MaxVal ~= nil and MinVal < MaxVal then
+ SpellDamage(Target, DmgType, math.random(MinVal, MaxVal))
+ else
+ SpellDamage(Target, DmgType, MinVal)
+ end
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Scout/SinisterStrike.lua b/server/Spells/Spells-Copy/Scout/SinisterStrike.lua
new file mode 100755
index 000000000..a1a2e903f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/SinisterStrike.lua
@@ -0,0 +1,29 @@
+--[[
+ Script Name : Spells/Scout/SinisterStrike.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Mitigation of target vs physical damage by 90
+-- Inflicts 109 - 182 melee damage on target
+-- Must be flanking or behind
+-- If one of the following races:
+-- [None]
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/SneakAttack.lua b/server/Spells/Spells-Copy/Scout/SneakAttack.lua
new file mode 100755
index 000000000..a97c9388e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/SneakAttack.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Scout/SneakAttack.lua
+ Script Author : John Adams
+ Script Date : 2013.08.11 02:08:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target)
+ -- code to cast the spell
+ Say(Caster, "Whoops! Guess this is not implemented yet!")
+
+-- Info from spell_display_effects (remove from script when done)
+-- Inflicts 24 - 41 melee damage on target
+-- Must be flanking or behind
+
+end
+
+function tick(Caster, Target)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Scout/Tracking.lua b/server/Spells/Spells-Copy/Scout/Tracking.lua
new file mode 100755
index 000000000..07f05a126
--- /dev/null
+++ b/server/Spells/Spells-Copy/Scout/Tracking.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : tracking.lua
+ Script Purpose : Tracking spells
+ Script Author : John Adams
+ Script Date : 2008.12.07
+ Script Notes : I am not sure Tracking is a "spell"?
+--]]
+
+function cast(Caster, Target, Type, Min, Max)
+ -- code to cast the spell
+end
+
+function tick(Caster, Target, Type, Min, Max)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target)
+ -- code to remove the spell
+end
diff --git a/server/Spells/Spells-Copy/SummonAnimatedTome.lua b/server/Spells/Spells-Copy/SummonAnimatedTome.lua
new file mode 100755
index 000000000..74e80065a
--- /dev/null
+++ b/server/Spells/Spells-Copy/SummonAnimatedTome.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/SummonAnimatedTome.lua
+ Script Author : Ememjr
+ Script Date : 2019.04.21 08:04:26
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Crit Chance of caster by 2.3
+-- Summons a pet arcane tome
+function cast(Caster, Target, CritChance)
+ AddSpellBonus(Target, 656, CritChance)
+ SummonCosmeticPet(Caster, 150084)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/SummonDrake.lua b/server/Spells/Spells-Copy/SummonDrake.lua
new file mode 100755
index 000000000..5d2ff0dd0
--- /dev/null
+++ b/server/Spells/Spells-Copy/SummonDrake.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : Spells/SummonDrake.lua
+ Script Author : Ememjr
+ Script Date : 2019.04.21 08:04:32
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Increases Ability Reuse Speed of caster by 1.6%
+-- Summons a pet minor drake
+
+function cast(Caster, Target, AbilityReuseSpeed)
+ AddSpellBonus(Target, 662, AbilityReuseSpeed)
+ SummonCosmeticPet(Caster, 150084)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/SummonFamiliar.lua b/server/Spells/Spells-Copy/SummonFamiliar.lua
new file mode 100755
index 000000000..e22d0c283
--- /dev/null
+++ b/server/Spells/Spells-Copy/SummonFamiliar.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/SummonFamiliar.lua
+ Script Author : Ememjr
+ Script Date : 2019.04.21 07:04:37
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+
+function cast(Caster, Target, tier)
+ AddSpellBookEntry(Caster,1001923,tier)
+
+end
diff --git a/server/Spells/Spells-Copy/SummonGargoyle.lua b/server/Spells/Spells-Copy/SummonGargoyle.lua
new file mode 100755
index 000000000..dc4e8a95c
--- /dev/null
+++ b/server/Spells/Spells-Copy/SummonGargoyle.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/SummonGargoyle.lua
+ Script Author : Ememjr
+ Script Date : 2019.04.21 07:04:05
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Decreases Hate Gain of caster by 4.0%
+-- Summons a pet lesser gargoyle
+
+function cast(Caster, Target, HateGain)
+ AddSpellBonus(Target, 624, HateGain)
+ SummonCosmeticPet(Caster, 340083)
+end
+
+function remove(Caster, Target)
+ RemoveSpellBonus(Target)
+ pet = GetCosmeticPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
+
+
+
diff --git a/server/Spells/Spells-Copy/Tradeskills/DurabilityAdd.lua b/server/Spells/Spells-Copy/Tradeskills/DurabilityAdd.lua
new file mode 100755
index 000000000..c988ff312
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/DurabilityAdd.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Tradeskills/DurabilityAdd.lua
+ Script Purpose: Adds durability during crafting
+ Script Author : Jabantiz
+ Script Date : 2012.09.08
+ Script Notes :
+--]]
+
+function cast(Caster, Target, DurabilityAmount)
+ AddSpellBonus(Caster, 801, DurabilityAmount)
+end
+
+function remove(Caster, Target, DurabilityAmount)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/DurabilityAddProgressAdd.lua b/server/Spells/Spells-Copy/Tradeskills/DurabilityAddProgressAdd.lua
new file mode 100755
index 000000000..d7085aa12
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/DurabilityAddProgressAdd.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Tradeskills/DurabilityAddProgressAdd.lua
+ Script Purpose: Adds durability and progress during crafting
+ Script Author : Jabantiz
+ Script Date : 2012.09.08
+ Script Notes :
+--]]
+
+function cast(Caster, Target, ProgressAmount, DurabilityAmount)
+ AddSpellBonus(Caster, 802, ProgressAmount)
+ AddSpellBonus(Caster, 801, DurabilityAmount)
+end
+
+function remove(Caster, Target, ProgressAmount, DurabilityAmount)
+ RemoveSpellBonus(Target)
+end
diff --git a/server/Spells/Spells-Copy/Tradeskills/DurabilityModProgressAdd.lua b/server/Spells/Spells-Copy/Tradeskills/DurabilityModProgressAdd.lua
new file mode 100755
index 000000000..6d0d86033
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/DurabilityModProgressAdd.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Tradeskills/DurabilityModProgressAdd.lua
+ Script Purpose: Modifies Durability while adding Progress during crafting
+ Script Author : John Adams
+ Script Date : 2013.08.10
+ Script Notes :
+--]]
+
+function cast(Caster, Target, DurabilityMod, ProgressAmount)
+ AddSpellBonus(Caster, 801, DurabilityMod)
+ AddSpellBonus(Caster, 802, ProgressAmount)
+end
+
+function remove(Caster, Target, SuccessMod, ProgressAmount)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/DurabilityModSuccessAdd.lua b/server/Spells/Spells-Copy/Tradeskills/DurabilityModSuccessAdd.lua
new file mode 100755
index 000000000..3041cd564
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/DurabilityModSuccessAdd.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Tradeskills/DurabilityModSuccessAdd.lua
+ Script Author : John Adams
+ Script Date : 2013.11.23 12:11:39
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces experimental durability gain by 1.0%.
+-- Increases experimental success chance by 2.0%
+-- Cannot be modified except by direct means
+
+function cast(Caster, Target, DurabilityMod, SuccessAdd)
+ AddSpellBonus(Caster, 800, DurabilityMod)
+ AddSpellBonus(Caster, 804, SuccessAdd)
+end
+
+function remove(Caster, Target, DurabilityMod, SuccessAdd)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/ProgressAdd.lua b/server/Spells/Spells-Copy/Tradeskills/ProgressAdd.lua
new file mode 100755
index 000000000..402e33dde
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/ProgressAdd.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Tradeskills/ProgressAdd.lua
+ Script Purpose: Adds progress during crafting
+ Script Author : Jabantiz
+ Script Date : 2012.09.08
+ Script Notes :
+--]]
+
+function cast(Caster, Target, ProgressAmount)
+ AddSpellBonus(Caster, 802, ProgressAmount)
+end
+
+function remove(Caster, Target, ProgressAmount)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/ProgressModDurabilityAdd.lua b/server/Spells/Spells-Copy/Tradeskills/ProgressModDurabilityAdd.lua
new file mode 100755
index 000000000..9f5bc9c9b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/ProgressModDurabilityAdd.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Tradeskills/ProgressModDurabilityAdd
+ Script Purpose: Modifies Progress while adding Durability during crafting
+ Script Author : John Adams
+ Script Date : 2013.08.10
+ Script Notes :
+--]]
+
+function cast(Caster, Target, ProgressMod, DurabilityAmount)
+ AddSpellBonus(Caster, 802, ProgressMod)
+ AddSpellBonus(Caster, 801, DurabilityAmount)
+end
+
+function remove(Caster, Target, ProgressMod, DurabilityAmount)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/ProgressModSuccessAdd.lua b/server/Spells/Spells-Copy/Tradeskills/ProgressModSuccessAdd.lua
new file mode 100755
index 000000000..5ab0e9fb7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/ProgressModSuccessAdd.lua
@@ -0,0 +1,21 @@
+--[[
+ Script Name : Spells/Tradeskills/ProgressModSuccessAdd.lua
+ Script Author : John Adams
+ Script Date : 2013.11.23 01:11:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Reduces the amount of experimental progress gained by 1.0%.
+-- Increases experimental success chance by 2.0%
+-- Cannot be modified except by direct means
+
+function cast(Caster, Target, ProgressMod, SuccessAdd)
+ AddSpellBonus(Caster, 803, ProgressMod)
+ AddSpellBonus(Caster, 804, SuccessAdd)
+end
+
+function remove(Caster, Target, ProgressMod, SuccessAdd)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/SuccessModDurabilityAdd.lua b/server/Spells/Spells-Copy/Tradeskills/SuccessModDurabilityAdd.lua
new file mode 100755
index 000000000..b863aa6e5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/SuccessModDurabilityAdd.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Tradeskills/SuccessModDurabilityAdd.lua
+ Script Purpose: Modifies Success while adding Durability during crafting
+ Script Author : Jabantiz
+ Script Date : 2012.09.08
+ Script Notes :
+--]]
+
+function cast(Caster, Target, SuccessMod, DurabilityAmount)
+ AddSpellBonus(Caster, 804, SuccessMod)
+ AddSpellBonus(Caster, 801, DurabilityAmount)
+end
+
+function remove(Caster, Target, SuccessMod, DurabilityAmount)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Tradeskills/SuccessModProgressAdd.lua b/server/Spells/Spells-Copy/Tradeskills/SuccessModProgressAdd.lua
new file mode 100755
index 000000000..0bfd3ab63
--- /dev/null
+++ b/server/Spells/Spells-Copy/Tradeskills/SuccessModProgressAdd.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells/Tradeskills/SuccessModProgressAdd.lua
+ Script Purpose: Modifies Success while adding Progress during crafting
+ Script Author : Jabantiz
+ Script Date : 2012.09.08
+ Script Notes :
+--]]
+
+function cast(Caster, Target, SuccessMod, ProgressAmount)
+ AddSpellBonus(Caster, 804, SuccessMod)
+ AddSpellBonus(Caster, 802, ProgressAmount)
+end
+
+function remove(Caster, Target, SuccessMod, ProgressAmount)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/AHalflingsFeast.lua b/server/Spells/Spells-Copy/Traditions/AHalflingsFeast.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/AHalflingsFeast.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/AerialDodging.lua b/server/Spells/Spells-Copy/Traditions/AerialDodging.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/AerialDodging.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/AggressiveStrike.lua b/server/Spells/Spells-Copy/Traditions/AggressiveStrike.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/AggressiveStrike.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/AkanonsInnovation.lua b/server/Spells/Spells-Copy/Traditions/AkanonsInnovation.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/AkanonsInnovation.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Antidote.lua b/server/Spells/Spells-Copy/Traditions/Antidote.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Antidote.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Aquavision.lua b/server/Spells/Spells-Copy/Traditions/Aquavision.lua
new file mode 100755
index 000000000..bde4ccadf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Aquavision.lua
@@ -0,0 +1,10 @@
+--[[
+ Script Name : Spells/Traditions/Aquavision.lua
+ Script Author : neatz09
+ Script Date : 2020.05.17 10:05:30
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants Fish Vision to caster
diff --git a/server/Spells/Spells-Copy/Traditions/ArasaiFlight.lua b/server/Spells/Spells-Copy/Traditions/ArasaiFlight.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ArasaiFlight.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ArasaiSavvy.lua b/server/Spells/Spells-Copy/Traditions/ArasaiSavvy.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ArasaiSavvy.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ArasaisEndurance.lua b/server/Spells/Spells-Copy/Traditions/ArasaisEndurance.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ArasaisEndurance.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ArcaneKnowledge.lua b/server/Spells/Spells-Copy/Traditions/ArcaneKnowledge.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ArcaneKnowledge.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ArcofLightning.lua b/server/Spells/Spells-Copy/Traditions/ArcofLightning.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ArcofLightning.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ArmoroftheFeerrott.lua b/server/Spells/Spells-Copy/Traditions/ArmoroftheFeerrott.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ArmoroftheFeerrott.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/AgileMight.lua b/server/Spells/Spells-Copy/Traditions/Attribute/AgileMight.lua
new file mode 100755
index 000000000..40edaab74
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/AgileMight.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\AgileMight.lua
+ Script Purpose : Increases Strength as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.22
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 0, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/AgileMovements.lua b/server/Spells/Spells-Copy/Traditions/Attribute/AgileMovements.lua
new file mode 100755
index 000000000..fbc46eadb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/AgileMovements.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\AgileMovements.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/AkanonsInnovation.lua b/server/Spells/Spells-Copy/Traditions/Attribute/AkanonsInnovation.lua
new file mode 100755
index 000000000..0a69aab02
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/AkanonsInnovation.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\AkAnonsInnovation.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/ArasaiSavvy.lua b/server/Spells/Spells-Copy/Traditions/Attribute/ArasaiSavvy.lua
new file mode 100755
index 000000000..140881573
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/ArasaiSavvy.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\ArasaiSavvy.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/BruteForce.lua b/server/Spells/Spells-Copy/Traditions/Attribute/BruteForce.lua
new file mode 100755
index 000000000..5f1f6a5b0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/BruteForce.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\BruteForce.lua
+ Script Purpose : Increases Strength as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.22
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 0, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/CazicsEnduringHold.lua b/server/Spells/Spells-Copy/Traditions/Attribute/CazicsEnduringHold.lua
new file mode 100755
index 000000000..d6760b75e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/CazicsEnduringHold.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\CazicsEnduringHold.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/Countenance.lua b/server/Spells/Spells-Copy/Traditions/Attribute/Countenance.lua
new file mode 100755
index 000000000..0fcd92984
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/Countenance.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Countenance.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/DarkenedAgility.lua b/server/Spells/Spells-Copy/Traditions/Attribute/DarkenedAgility.lua
new file mode 100755
index 000000000..407807aea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/DarkenedAgility.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\DarkenedAgility.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/DwarvenFortitude.lua b/server/Spells/Spells-Copy/Traditions/Attribute/DwarvenFortitude.lua
new file mode 100755
index 000000000..2f8eef970
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/DwarvenFortitude.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\DwarvenFortitude.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/ElvenWisdom.lua b/server/Spells/Spells-Copy/Traditions/Attribute/ElvenWisdom.lua
new file mode 100755
index 000000000..dc5002804
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/ElvenWisdom.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\ElvenWisdom.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/EnduranceOfEarthAndWater.lua b/server/Spells/Spells-Copy/Traditions/Attribute/EnduranceOfEarthAndWater.lua
new file mode 100755
index 000000000..4dead4662
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/EnduranceOfEarthAndWater.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\EnduranceOfEarthAndWater.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/EnhancedIntellect.lua b/server/Spells/Spells-Copy/Traditions/Attribute/EnhancedIntellect.lua
new file mode 100755
index 000000000..0667180eb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/EnhancedIntellect.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\EnhancedIntellect.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/EternalLearning.lua b/server/Spells/Spells-Copy/Traditions/Attribute/EternalLearning.lua
new file mode 100755
index 000000000..ce58ee9a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/EternalLearning.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\EternalLearning.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/FaydarkChampionsAgility.lua b/server/Spells/Spells-Copy/Traditions/Attribute/FaydarkChampionsAgility.lua
new file mode 100755
index 000000000..e63bbd6f4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/FaydarkChampionsAgility.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\FaydarkChampionsAgility.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/FleetFooted.lua b/server/Spells/Spells-Copy/Traditions/Attribute/FleetFooted.lua
new file mode 100755
index 000000000..c3155783a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/FleetFooted.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\FleetFooted.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/FocusedDetermination.lua b/server/Spells/Spells-Copy/Traditions/Attribute/FocusedDetermination.lua
new file mode 100755
index 000000000..3e7a55edc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/FocusedDetermination.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\FocusedDetermination.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/HalfElfQuickThinking.lua b/server/Spells/Spells-Copy/Traditions/Attribute/HalfElfQuickThinking.lua
new file mode 100755
index 000000000..bd5e9e92d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/HalfElfQuickThinking.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\HalfElfQuickThinking.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/HeartyConstitution.lua b/server/Spells/Spells-Copy/Traditions/Attribute/HeartyConstitution.lua
new file mode 100755
index 000000000..690e49ee2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/HeartyConstitution.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\HeartyConstitution.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/Insight.lua b/server/Spells/Spells-Copy/Traditions/Attribute/Insight.lua
new file mode 100755
index 000000000..4ba66b383
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/Insight.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Insight.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/IntellectOfTheSage.lua b/server/Spells/Spells-Copy/Traditions/Attribute/IntellectOfTheSage.lua
new file mode 100755
index 000000000..24ef091a8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/IntellectOfTheSage.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\IntellectOfTheSage.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/IntellecualStudies.lua b/server/Spells/Spells-Copy/Traditions/Attribute/IntellecualStudies.lua
new file mode 100755
index 000000000..d6709ce7e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/IntellecualStudies.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\IntellecualStudies.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/IntelligentDesigns.lua b/server/Spells/Spells-Copy/Traditions/Attribute/IntelligentDesigns.lua
new file mode 100755
index 000000000..00f24dc18
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/IntelligentDesigns.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\IntelligentDesigns.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/KejaansInspiration.lua b/server/Spells/Spells-Copy/Traditions/Attribute/KejaansInspiration.lua
new file mode 100755
index 000000000..67c76d2d8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/KejaansInspiration.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\KejaansInspiration.lua
+ Script Purpose : Increases Strength as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.22
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 0, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/LastOneStanding.lua b/server/Spells/Spells-Copy/Traditions/Attribute/LastOneStanding.lua
new file mode 100755
index 000000000..1c8df8803
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/LastOneStanding.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\LastOneStanding.lua
+ Script Purpose : Increases Stamina as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 1, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/MarrsInsight.lua b/server/Spells/Spells-Copy/Traditions/Attribute/MarrsInsight.lua
new file mode 100755
index 000000000..d13365253
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/MarrsInsight.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\MarrsInsight.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/MechanicalVambraces.lua b/server/Spells/Spells-Copy/Traditions/Attribute/MechanicalVambraces.lua
new file mode 100755
index 000000000..c41420ba5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/MechanicalVambraces.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\MechanicalVambraces.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/PresumedBrilliance.lua b/server/Spells/Spells-Copy/Traditions/Attribute/PresumedBrilliance.lua
new file mode 100755
index 000000000..1e360ef80
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/PresumedBrilliance.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\PresumedBrilliance.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/PursuitOfKnowledge.lua b/server/Spells/Spells-Copy/Traditions/Attribute/PursuitOfKnowledge.lua
new file mode 100755
index 000000000..07b236172
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/PursuitOfKnowledge.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\PursuitOfKnowledge.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/SathirianLegacy.lua b/server/Spells/Spells-Copy/Traditions/Attribute/SathirianLegacy.lua
new file mode 100755
index 000000000..2d5924f4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/SathirianLegacy.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\SathirianLegacy.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/SpiritOfVahKerrath.lua b/server/Spells/Spells-Copy/Traditions/Attribute/SpiritOfVahKerrath.lua
new file mode 100755
index 000000000..83895531b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/SpiritOfVahKerrath.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\SpiritOfVahKerrath.lua
+ Script Purpose : Increases Intelligence as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 4, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/StubbornButWise.lua b/server/Spells/Spells-Copy/Traditions/Attribute/StubbornButWise.lua
new file mode 100755
index 000000000..23d5e14a1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/StubbornButWise.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\StubbornButWise.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/TheMightOfBristlebane.lua b/server/Spells/Spells-Copy/Traditions/Attribute/TheMightOfBristlebane.lua
new file mode 100755
index 000000000..107b3de60
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/TheMightOfBristlebane.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\TheMightOfBristlebane.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/TunaresGuidance.lua b/server/Spells/Spells-Copy/Traditions/Attribute/TunaresGuidance.lua
new file mode 100755
index 000000000..8c147db95
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/TunaresGuidance.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\TunaresGuidance.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/UncommonInsight.lua b/server/Spells/Spells-Copy/Traditions/Attribute/UncommonInsight.lua
new file mode 100755
index 000000000..8708f800c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/UncommonInsight.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\UncommonInsight.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/VampiricReflexes.lua b/server/Spells/Spells-Copy/Traditions/Attribute/VampiricReflexes.lua
new file mode 100755
index 000000000..8b89911cf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/VampiricReflexes.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\VampiricReflexes.lua
+ Script Purpose : Increases Agility as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 2, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfExperience.lua b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfExperience.lua
new file mode 100755
index 000000000..f253e5401
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfExperience.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\WisdomOfExperience.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfRivervale.lua b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfRivervale.lua
new file mode 100755
index 000000000..b76608b53
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfRivervale.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\WisdomOfRivervale.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfTheAges.lua b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfTheAges.lua
new file mode 100755
index 000000000..3d341f1ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfTheAges.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\WisdomOfTheAges.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfTheOldOak.lua b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfTheOldOak.lua
new file mode 100755
index 000000000..419805407
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Attribute/WisdomOfTheOldOak.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\WisdomOfTheOldOak.lua
+ Script Purpose : Increases Wisdom as you level
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 3, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Ayr`DalAdornment.lua b/server/Spells/Spells-Copy/Traditions/Ayr`DalAdornment.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Ayr`DalAdornment.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/BarbaricRage.lua b/server/Spells/Spells-Copy/Traditions/BarbaricRage.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/BarbaricRage.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/BattleReprieve.lua b/server/Spells/Spells-Copy/Traditions/BattleReprieve.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/BattleReprieve.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/BattleRest.lua b/server/Spells/Spells-Copy/Traditions/BattleRest.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/BattleRest.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Blizzard.lua b/server/Spells/Spells-Copy/Traditions/Blizzard.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Blizzard.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/BodybyButcherblock.lua b/server/Spells/Spells-Copy/Traditions/BodybyButcherblock.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/BodybyButcherblock.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/BogBully.lua b/server/Spells/Spells-Copy/Traditions/BogBully.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/BogBully.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Brewmaster.lua b/server/Spells/Spells-Copy/Traditions/Brewmaster.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Brewmaster.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/BruteStrength.lua b/server/Spells/Spells-Copy/Traditions/BruteStrength.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/BruteStrength.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Camo.lua b/server/Spells/Spells-Copy/Traditions/Camo.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Camo.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Camouflage.lua b/server/Spells/Spells-Copy/Traditions/Camouflage.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Camouflage.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/CarpentersTouch.lua b/server/Spells/Spells-Copy/Traditions/CarpentersTouch.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/CarpentersTouch.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/CastingFury.lua b/server/Spells/Spells-Copy/Traditions/CastingFury.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/CastingFury.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/CazicThulesGift.lua b/server/Spells/Spells-Copy/Traditions/CazicThulesGift.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/CazicThulesGift.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ChemicalCalculations.lua b/server/Spells/Spells-Copy/Traditions/ChemicalCalculations.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ChemicalCalculations.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Chemist.lua b/server/Spells/Spells-Copy/Traditions/Chemist.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Chemist.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ClearMind.lua b/server/Spells/Spells-Copy/Traditions/ClearMind.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ClearMind.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ClockworkArmy.lua b/server/Spells/Spells-Copy/Traditions/ClockworkArmy.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ClockworkArmy.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Clothier.lua b/server/Spells/Spells-Copy/Traditions/Clothier.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Clothier.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Adoration.lua b/server/Spells/Spells-Copy/Traditions/Combat/Adoration.lua
new file mode 100755
index 000000000..cf6694189
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Adoration.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Adoration.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/AidOfTheStouthearted.lua b/server/Spells/Spells-Copy/Traditions/Combat/AidOfTheStouthearted.lua
new file mode 100755
index 000000000..61fcabe4f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/AidOfTheStouthearted.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\AidOfTheStouthearted.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/AncestralIre.lua b/server/Spells/Spells-Copy/Traditions/Combat/AncestralIre.lua
new file mode 100755
index 000000000..41da61a6d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/AncestralIre.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\AnscestralIre.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Dark Elf - Increases Double Attack Chance 2%
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 641, Modifier)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/BlessingTouch.lua b/server/Spells/Spells-Copy/Traditions/Combat/BlessingTouch.lua
new file mode 100755
index 000000000..a3d5ad890
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/BlessingTouch.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\BlessingTouch.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/BlockingExpertise.lua b/server/Spells/Spells-Copy/Traditions/Combat/BlockingExpertise.lua
new file mode 100755
index 000000000..7e65c2398
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/BlockingExpertise.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Combat\BlockingExpertise.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Barbarian - Increases Deflection by 2.0 and Shield Effectiveness by 2%
+--]]
+
+function cast(Caster, Target, Deflection, Shield)
+ AddSkillBonus(Target, 3850377186, Deflection)
+ --AddSpellBonus(Target,,Shield)
+end
+
+function remove(Caster, Target, Deflection, Shield)
+ RemoveSkillBonus(Target)
+ --RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Bloodletting.lua b/server/Spells/Spells-Copy/Traditions/Combat/Bloodletting.lua
new file mode 100755
index 000000000..5dcaa9824
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Bloodletting.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Blootletting.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Brainy.lua b/server/Spells/Spells-Copy/Traditions/Combat/Brainy.lua
new file mode 100755
index 000000000..2779f5d68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Brainy.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Brainy.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/BravefootTenacity.lua b/server/Spells/Spells-Copy/Traditions/Combat/BravefootTenacity.lua
new file mode 100755
index 000000000..876b29627
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/BravefootTenacity.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\BravefootTenacity.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/BrellsFocus.lua b/server/Spells/Spells-Copy/Traditions/Combat/BrellsFocus.lua
new file mode 100755
index 000000000..43a086c4d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/BrellsFocus.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\BrellsFocus.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/CastingFury.lua b/server/Spells/Spells-Copy/Traditions/Combat/CastingFury.lua
new file mode 100755
index 000000000..6d1b1e18e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/CastingFury.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\CastingFury.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/ClarityDuringBattle.lua b/server/Spells/Spells-Copy/Traditions/Combat/ClarityDuringBattle.lua
new file mode 100755
index 000000000..7a5c630e8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/ClarityDuringBattle.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\ClarityDuringBattle.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/ClawedStrikes.lua b/server/Spells/Spells-Copy/Traditions/Combat/ClawedStrikes.lua
new file mode 100755
index 000000000..190c690e4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/ClawedStrikes.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\ClawedStrikes.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/CombatHealing.lua b/server/Spells/Spells-Copy/Traditions/Combat/CombatHealing.lua
new file mode 100755
index 000000000..6b1410e10
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/CombatHealing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\CombatHealing.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/CriticalDeflection.lua b/server/Spells/Spells-Copy/Traditions/Combat/CriticalDeflection.lua
new file mode 100755
index 000000000..a30fffa88
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/CriticalDeflection.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\CriticalDeflection.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/CriticalShielding.lua b/server/Spells/Spells-Copy/Traditions/Combat/CriticalShielding.lua
new file mode 100755
index 000000000..82caa6d3f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/CriticalShielding.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\CriticalShielding.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DarkCelerity.lua b/server/Spells/Spells-Copy/Traditions/Combat/DarkCelerity.lua
new file mode 100755
index 000000000..82339a0e5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DarkCelerity.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DarkCelerity.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Dark Elf - Improves the casting speed of hostile spells by 2%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DefensiveMight.lua b/server/Spells/Spells-Copy/Traditions/Combat/DefensiveMight.lua
new file mode 100755
index 000000000..e79aeba99
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DefensiveMight.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DefensiveMight.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DemonicFocus.lua b/server/Spells/Spells-Copy/Traditions/Combat/DemonicFocus.lua
new file mode 100755
index 000000000..b44351f63
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DemonicFocus.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DemonicFocus.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DevotionToTheArts.lua b/server/Spells/Spells-Copy/Traditions/Combat/DevotionToTheArts.lua
new file mode 100755
index 000000000..3bb852c78
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DevotionToTheArts.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DevotionToTheArts.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DivineCasting.lua b/server/Spells/Spells-Copy/Traditions/Combat/DivineCasting.lua
new file mode 100755
index 000000000..58273bdaf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DivineCasting.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DivineCasting.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Barbarian - Improves the casting speed of beneficial spells by 2%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DleresFightingStance.lua b/server/Spells/Spells-Copy/Traditions/Combat/DleresFightingStance.lua
new file mode 100755
index 000000000..9ed31ef76
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DleresFightingStance.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DleresFightingStance.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/DodgingBlows.lua b/server/Spells/Spells-Copy/Traditions/Combat/DodgingBlows.lua
new file mode 100755
index 000000000..9fdff93c8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/DodgingBlows.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\DodgingBlows.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/FaeQuickThinking.lua b/server/Spells/Spells-Copy/Traditions/Combat/FaeQuickThinking.lua
new file mode 100755
index 000000000..9a844e122
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/FaeQuickThinking.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells\Tradidtions\FaeQuickThinking.lua
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+ Script Notes : Improves the casting speed of beneficial spells by 2%.
+--]]
+
+function cast(Caster, Target, Defense, SkillAmt, Stats)
+ --AddSpellBonus(Target, 0, Stats) -- STR needs to fixed to allow 0
+end
+
+function tick(Caster, Target, Type, Min, Max)
+
+end
+
+function remove(Caster, Target, Type, Min, Max)
+ --RemoveSkillBonus(Target)
+ --RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/FocusOfTunare.lua b/server/Spells/Spells-Copy/Traditions/Combat/FocusOfTunare.lua
new file mode 100755
index 000000000..7b0e8ee24
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/FocusOfTunare.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\FocusOfTunare.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/FocusedProwess.lua b/server/Spells/Spells-Copy/Traditions/Combat/FocusedProwess.lua
new file mode 100755
index 000000000..a98db6194
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/FocusedProwess.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\FocusedProwess.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/FormidableTraining.lua b/server/Spells/Spells-Copy/Traditions/Combat/FormidableTraining.lua
new file mode 100755
index 000000000..945b4e441
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/FormidableTraining.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\FormidableTraining.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/GoodBlocking.lua b/server/Spells/Spells-Copy/Traditions/Combat/GoodBlocking.lua
new file mode 100755
index 000000000..576e91f3c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/GoodBlocking.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\GoodBlocking.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/GraceOfFear.lua b/server/Spells/Spells-Copy/Traditions/Combat/GraceOfFear.lua
new file mode 100755
index 000000000..2910907a8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/GraceOfFear.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\GraceOfFear.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/GuidanceOfMarr.lua b/server/Spells/Spells-Copy/Traditions/Combat/GuidanceOfMarr.lua
new file mode 100755
index 000000000..1209b4bbd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/GuidanceOfMarr.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\GuidanceOfMarr.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/HastyDecisions.lua b/server/Spells/Spells-Copy/Traditions/Combat/HastyDecisions.lua
new file mode 100755
index 000000000..25ca52df4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/HastyDecisions.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\HastyDecisions.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/HealingGrace.lua b/server/Spells/Spells-Copy/Traditions/Combat/HealingGrace.lua
new file mode 100755
index 000000000..570144201
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/HealingGrace.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\HealingGrace.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/HealingTouch.lua b/server/Spells/Spells-Copy/Traditions/Combat/HealingTouch.lua
new file mode 100755
index 000000000..602c2b857
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/HealingTouch.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\HealingTouch.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Barbarian - Increases Ministration by 5.0
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ AddSkillBonus(Target, 366253016, SkillAmt)
+end
+
+function remove(Caster, Target, SkillAmt)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/HendisFortitude.lua b/server/Spells/Spells-Copy/Traditions/Combat/HendisFortitude.lua
new file mode 100755
index 000000000..33c3f7f56
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/HendisFortitude.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\HendisFortitude.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/HighPriestsGuidance.lua b/server/Spells/Spells-Copy/Traditions/Combat/HighPriestsGuidance.lua
new file mode 100755
index 000000000..cede88ffc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/HighPriestsGuidance.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\HighPriestsGuidance.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/HoldStrong.lua b/server/Spells/Spells-Copy/Traditions/Combat/HoldStrong.lua
new file mode 100755
index 000000000..e1f380265
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/HoldStrong.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\HoldStrong.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MarshalsSkill.lua b/server/Spells/Spells-Copy/Traditions/Combat/MarshalsSkill.lua
new file mode 100755
index 000000000..175fe10fd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MarshalsSkill.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MarshalsSkill.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MasterfulSorcery.lua b/server/Spells/Spells-Copy/Traditions/Combat/MasterfulSorcery.lua
new file mode 100755
index 000000000..bc69a842b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MasterfulSorcery.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MasterfulSorcery.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Dark Elf - Increases Disruption and Subjugation by 5.0
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ AddSkillBonus(Target, 613995491, SkillAmt) -- Disruption
+ AddSkillBonus(Target, 882983852, SkillAmt) -- Subjugation
+end
+
+function remove(Caster, Target, SkillAmt)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MechanizedPierces.lua b/server/Spells/Spells-Copy/Traditions/Combat/MechanizedPierces.lua
new file mode 100755
index 000000000..bac995389
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MechanizedPierces.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MechanizedPierces.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MemoriesOfGuk.lua b/server/Spells/Spells-Copy/Traditions/Combat/MemoriesOfGuk.lua
new file mode 100755
index 000000000..6e0e4f81c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MemoriesOfGuk.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MemoriesOfGuk.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MentalDomination.lua b/server/Spells/Spells-Copy/Traditions/Combat/MentalDomination.lua
new file mode 100755
index 000000000..56865f172
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MentalDomination.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MentalDomination.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Merciless.lua b/server/Spells/Spells-Copy/Traditions/Combat/Merciless.lua
new file mode 100755
index 000000000..1975e3d0f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Merciless.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Merciless.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MightOfTheLeatherfoot.lua b/server/Spells/Spells-Copy/Traditions/Combat/MightOfTheLeatherfoot.lua
new file mode 100755
index 000000000..37e163f4f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MightOfTheLeatherfoot.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MightOfTheLeatherfoot.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MindOverMatter.lua b/server/Spells/Spells-Copy/Traditions/Combat/MindOverMatter.lua
new file mode 100755
index 000000000..41af9f6b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MindOverMatter.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MindOverMatter.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/MurrarSharsGuidance.lua b/server/Spells/Spells-Copy/Traditions/Combat/MurrarSharsGuidance.lua
new file mode 100755
index 000000000..c72e64275
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/MurrarSharsGuidance.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\MurrarSharsGuidance.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/NimblePaws.lua b/server/Spells/Spells-Copy/Traditions/Combat/NimblePaws.lua
new file mode 100755
index 000000000..6a33ff8f9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/NimblePaws.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\NimblePaws.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/NimbleStriking.lua b/server/Spells/Spells-Copy/Traditions/Combat/NimbleStriking.lua
new file mode 100755
index 000000000..325f5d4e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/NimbleStriking.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\NimbleStriking.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/NobilityOfFaith.lua b/server/Spells/Spells-Copy/Traditions/Combat/NobilityOfFaith.lua
new file mode 100755
index 000000000..6de2a172b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/NobilityOfFaith.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\NobilityOfFaith.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/OffensivelySkilled.lua b/server/Spells/Spells-Copy/Traditions/Combat/OffensivelySkilled.lua
new file mode 100755
index 000000000..810f1c471
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/OffensivelySkilled.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\OffensivelySkilled.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/PaladinsShieldTraining.lua b/server/Spells/Spells-Copy/Traditions/Combat/PaladinsShieldTraining.lua
new file mode 100755
index 000000000..cc1334084
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/PaladinsShieldTraining.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\PaladinsShieldTraining.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/PiercingArrows.lua b/server/Spells/Spells-Copy/Traditions/Combat/PiercingArrows.lua
new file mode 100755
index 000000000..45d8b04f8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/PiercingArrows.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\PiercingArrows.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/ProficientSwipe.lua b/server/Spells/Spells-Copy/Traditions/Combat/ProficientSwipe.lua
new file mode 100755
index 000000000..2d173b2d4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/ProficientSwipe.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\ProficientSwipe.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/PunctureWounds.lua b/server/Spells/Spells-Copy/Traditions/Combat/PunctureWounds.lua
new file mode 100755
index 000000000..96b4ceea7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/PunctureWounds.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\PunctureWounds.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/QuickBanishing.lua b/server/Spells/Spells-Copy/Traditions/Combat/QuickBanishing.lua
new file mode 100755
index 000000000..a28a7182d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/QuickBanishing.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\QuickBanishing.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/QuickThinking.lua b/server/Spells/Spells-Copy/Traditions/Combat/QuickThinking.lua
new file mode 100755
index 000000000..33dccdd5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/QuickThinking.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\QuickThinking.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/QuietStorm.lua b/server/Spells/Spells-Copy/Traditions/Combat/QuietStorm.lua
new file mode 100755
index 000000000..a316cd824
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/QuietStorm.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\QuietStorm.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/RallosianArmyTraining.lua b/server/Spells/Spells-Copy/Traditions/Combat/RallosianArmyTraining.lua
new file mode 100755
index 000000000..ad6e5eeb9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/RallosianArmyTraining.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\RallosianArmyTraining.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/RallosianReflexes.lua b/server/Spells/Spells-Copy/Traditions/Combat/RallosianReflexes.lua
new file mode 100755
index 000000000..fcd7213ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/RallosianReflexes.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\RallosianReflexes.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/RatongaReflexes.lua b/server/Spells/Spells-Copy/Traditions/Combat/RatongaReflexes.lua
new file mode 100755
index 000000000..9970360a5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/RatongaReflexes.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\RatongaRelexes.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/RootedMind.lua b/server/Spells/Spells-Copy/Traditions/Combat/RootedMind.lua
new file mode 100755
index 000000000..52590ae43
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/RootedMind.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\RootedMind.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SharpWitted.lua b/server/Spells/Spells-Copy/Traditions/Combat/SharpWitted.lua
new file mode 100755
index 000000000..d0580b0f0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SharpWitted.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SharpWitted.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Dark Elf - Increases Piercing and Ranged by 5.0
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ AddSkillBonus(Target, 3048574950, SkillAmt) -- Piercing
+ AddSkillBonus(Target, 1756482397, SkillAmt) -- Ranged
+end
+
+function remove(Caster, Target, SkillAmt)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SkilledDefender.lua b/server/Spells/Spells-Copy/Traditions/Combat/SkilledDefender.lua
new file mode 100755
index 000000000..bfdde7cfe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SkilledDefender.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SkilledDefender.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes : Barbarian - Increases Parry, Defense, and Deflection by 5.0
+--]]
+
+function cast(Caster, Target, Parry, Defense, Deflection)
+ AddSkillBonus(Target, 540022425, Parry)
+ AddSkillBonus(Target, 609880714, Defense)
+ AddSkillBonus(Target, 3850377186, Deflection)
+end
+
+function remove(Caster, Target, Parry, Defense, Deflection)
+ RemoveSkillBonus(Target)
+ RemoveSkillBonus(Target)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SoldiersOfTunaresAlacrity.lua b/server/Spells/Spells-Copy/Traditions/Combat/SoldiersOfTunaresAlacrity.lua
new file mode 100755
index 000000000..f98344415
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SoldiersOfTunaresAlacrity.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SoldiersOfTunareAlacrity.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SpeedyPaws.lua b/server/Spells/Spells-Copy/Traditions/Combat/SpeedyPaws.lua
new file mode 100755
index 000000000..be3fe07b1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SpeedyPaws.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SpeedyPaws.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SpikedShoes.lua b/server/Spells/Spells-Copy/Traditions/Combat/SpikedShoes.lua
new file mode 100755
index 000000000..f767265ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SpikedShoes.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SpikedShoes.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Stabby.lua b/server/Spells/Spells-Copy/Traditions/Combat/Stabby.lua
new file mode 100755
index 000000000..bbb0b0a56
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Stabby.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Stabby.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SteadfastDefender.lua b/server/Spells/Spells-Copy/Traditions/Combat/SteadfastDefender.lua
new file mode 100755
index 000000000..7ab585f90
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SteadfastDefender.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SteadfastDefender.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/StoutDefense.lua b/server/Spells/Spells-Copy/Traditions/Combat/StoutDefense.lua
new file mode 100755
index 000000000..d60b6e66c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/StoutDefense.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\StoutDefense.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Stubbornness.lua b/server/Spells/Spells-Copy/Traditions/Combat/Stubbornness.lua
new file mode 100755
index 000000000..8640cda8c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Stubbornness.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Stubbornness.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SupernaturalSpeed.lua b/server/Spells/Spells-Copy/Traditions/Combat/SupernaturalSpeed.lua
new file mode 100755
index 000000000..c6878ee77
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SupernaturalSpeed.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SupernaturalSpeed.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/SwiftSwings.lua b/server/Spells/Spells-Copy/Traditions/Combat/SwiftSwings.lua
new file mode 100755
index 000000000..3ea3b9798
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/SwiftSwings.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\SwiftSwings.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/TeachingsOfBayle.lua b/server/Spells/Spells-Copy/Traditions/Combat/TeachingsOfBayle.lua
new file mode 100755
index 000000000..acf1c8aa9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/TeachingsOfBayle.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\TeachingsOfBayle.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/TheoreticalImprovements.lua b/server/Spells/Spells-Copy/Traditions/Combat/TheoreticalImprovements.lua
new file mode 100755
index 000000000..defa0f513
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/TheoreticalImprovements.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\TheoreticalImprovements.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/TinyStings.lua b/server/Spells/Spells-Copy/Traditions/Combat/TinyStings.lua
new file mode 100755
index 000000000..175f60a23
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/TinyStings.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\TinyStings.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/ToolsOfFear.lua b/server/Spells/Spells-Copy/Traditions/Combat/ToolsOfFear.lua
new file mode 100755
index 000000000..e03aee3bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/ToolsOfFear.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\ToolsOfFear.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/TrueshotsAura.lua b/server/Spells/Spells-Copy/Traditions/Combat/TrueshotsAura.lua
new file mode 100755
index 000000000..1cb7ed05e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/TrueshotsAura.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\TrueshotsAura.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/Victory.lua b/server/Spells/Spells-Copy/Traditions/Combat/Victory.lua
new file mode 100755
index 000000000..7b615b0f2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/Victory.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\Victory.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/WiggingWhiskers.lua b/server/Spells/Spells-Copy/Traditions/Combat/WiggingWhiskers.lua
new file mode 100755
index 000000000..8e1d3258f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/WiggingWhiskers.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\WiggingWhiskers.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Combat/WordsOfHonor.lua b/server/Spells/Spells-Copy/Traditions/Combat/WordsOfHonor.lua
new file mode 100755
index 000000000..3046dbf0e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Combat/WordsOfHonor.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Combat\WordsOfHonor.lua
+ Script Author : Zcoretri
+ Script Date : 2013.03.26
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/ConnoisseurofFineWines.lua b/server/Spells/Spells-Copy/Traditions/ConnoisseurofFineWines.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ConnoisseurofFineWines.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/DarkAgenda.lua b/server/Spells/Spells-Copy/Traditions/DarkAgenda.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/DarkAgenda.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/DarkEnvy.lua b/server/Spells/Spells-Copy/Traditions/DarkEnvy.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/DarkEnvy.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/DefenderofEverfrost.lua b/server/Spells/Spells-Copy/Traditions/DefenderofEverfrost.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/DefenderofEverfrost.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/DefenderofKaladim.lua b/server/Spells/Spells-Copy/Traditions/DefenderofKaladim.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/DefenderofKaladim.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/DefensiveColoration.lua b/server/Spells/Spells-Copy/Traditions/DefensiveColoration.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/DefensiveColoration.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Diplomacy.lua b/server/Spells/Spells-Copy/Traditions/Diplomacy.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Diplomacy.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Diversity.lua b/server/Spells/Spells-Copy/Traditions/Diversity.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Diversity.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/DwarvenFortitude.lua b/server/Spells/Spells-Copy/Traditions/DwarvenFortitude.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/DwarvenFortitude.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ElvenHeritage.lua b/server/Spells/Spells-Copy/Traditions/ElvenHeritage.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ElvenHeritage.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ElvenReflexes.lua b/server/Spells/Spells-Copy/Traditions/ElvenReflexes.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ElvenReflexes.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ElvenWisdom.lua b/server/Spells/Spells-Copy/Traditions/ElvenWisdom.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ElvenWisdom.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ElvishSpirits.lua b/server/Spells/Spells-Copy/Traditions/ElvishSpirits.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ElvishSpirits.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/EnvironmentalAdaptability.lua b/server/Spells/Spells-Copy/Traditions/EnvironmentalAdaptability.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/EnvironmentalAdaptability.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ErudsTeachings.lua b/server/Spells/Spells-Copy/Traditions/ErudsTeachings.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ErudsTeachings.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/EscapingDive.lua b/server/Spells/Spells-Copy/Traditions/EscapingDive.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/EscapingDive.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/EsotericStudy.lua b/server/Spells/Spells-Copy/Traditions/EsotericStudy.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/EsotericStudy.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FaeDexterity.lua b/server/Spells/Spells-Copy/Traditions/FaeDexterity.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FaeDexterity.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FaeFlight.lua b/server/Spells/Spells-Copy/Traditions/FaeFlight.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FaeFlight.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FallingGrace.lua b/server/Spells/Spells-Copy/Traditions/FallingGrace.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FallingGrace.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FaydarksChampion.lua b/server/Spells/Spells-Copy/Traditions/FaydarksChampion.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FaydarksChampion.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FaydwerFashions.lua b/server/Spells/Spells-Copy/Traditions/FaydwerFashions.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FaydwerFashions.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Featherfall.lua b/server/Spells/Spells-Copy/Traditions/Featherfall.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Featherfall.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FlashofInsight.lua b/server/Spells/Spells-Copy/Traditions/FlashofInsight.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FlashofInsight.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ForestFire.lua b/server/Spells/Spells-Copy/Traditions/ForestFire.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ForestFire.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ForestKnowledge.lua b/server/Spells/Spells-Copy/Traditions/ForestKnowledge.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ForestKnowledge.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ForestNavigation.lua b/server/Spells/Spells-Copy/Traditions/ForestNavigation.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ForestNavigation.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ForgeInvention.lua b/server/Spells/Spells-Copy/Traditions/ForgeInvention.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ForgeInvention.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FueledByHate.lua b/server/Spells/Spells-Copy/Traditions/FueledByHate.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FueledByHate.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FuryofFelwithe.lua b/server/Spells/Spells-Copy/Traditions/FuryofFelwithe.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FuryofFelwithe.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/FuryofInnoruuk.lua b/server/Spells/Spells-Copy/Traditions/FuryofInnoruuk.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/FuryofInnoruuk.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/GiftoftheFaydark.lua b/server/Spells/Spells-Copy/Traditions/GiftoftheFaydark.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/GiftoftheFaydark.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/GiftoftheInnothule.lua b/server/Spells/Spells-Copy/Traditions/GiftoftheInnothule.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/GiftoftheInnothule.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/GildingofFelwithe.lua b/server/Spells/Spells-Copy/Traditions/GildingofFelwithe.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/GildingofFelwithe.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Gills.lua b/server/Spells/Spells-Copy/Traditions/Gills.lua
new file mode 100755
index 000000000..eed5d85c8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Gills.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Traditions/Gills.lua
+ Script Author : neatz09
+ Script Date : 2019.04.18 11:04:19
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Allows caster to breathe under water
+
+
+function cast(Caster, Target)
+BreatheUnderwater(Spawn, true)
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Glide.lua b/server/Spells/Spells-Copy/Traditions/Glide.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Glide.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/GracefulMovements.lua b/server/Spells/Spells-Copy/Traditions/GracefulMovements.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/GracefulMovements.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/HalasianAuthority.lua b/server/Spells/Spells-Copy/Traditions/HalasianAuthority.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/HalasianAuthority.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Hardiness.lua b/server/Spells/Spells-Copy/Traditions/Hardiness.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Hardiness.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/HarmoniousMind.lua b/server/Spells/Spells-Copy/Traditions/HarmoniousMind.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/HarmoniousMind.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/HatefulMind.lua b/server/Spells/Spells-Copy/Traditions/HatefulMind.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/HatefulMind.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/HealthyAppetite.lua b/server/Spells/Spells-Copy/Traditions/HealthyAppetite.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/HealthyAppetite.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/HerbalSupplementation.lua b/server/Spells/Spells-Copy/Traditions/HerbalSupplementation.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/HerbalSupplementation.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Herbology.lua b/server/Spells/Spells-Copy/Traditions/Herbology.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Herbology.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Hover.lua b/server/Spells/Spells-Copy/Traditions/Hover.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Hover.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/HuntersFury.lua b/server/Spells/Spells-Copy/Traditions/HuntersFury.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/HuntersFury.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/IllusionClockwork.lua b/server/Spells/Spells-Copy/Traditions/IllusionClockwork.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/IllusionClockwork.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ImpenetrableWill.lua b/server/Spells/Spells-Copy/Traditions/ImpenetrableWill.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ImpenetrableWill.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Infravision.lua b/server/Spells/Spells-Copy/Traditions/Infravision.lua
new file mode 100755
index 000000000..593141b58
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Infravision.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traditions/Infravision.lua
+ Script Author : neatz09
+ Script Date : 2019.04.17 09:04:52
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Grants Infravision to caster
+
+function cast(Caster, Target)
+ Say(Target, "Hah, nice try! That's not implemented yet!")
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Innate/KeeperOfTheForest.lua b/server/Spells/Spells-Copy/Traditions/Innate/KeeperOfTheForest.lua
new file mode 100755
index 000000000..ef736a232
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Innate/KeeperOfTheForest.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : Spells\Tradidtions\KeeperOfTheForest.lua
+ Script Author : Zcoretri
+ Script Date : 2012.07.31
+ Script Notes : Reduces gathering and foresting by 1 second.
+--]]
+
+function cast(Caster, Target, Defense, SkillAmt, Stats)
+ --AddSpellBonus(Target, 0, Stats) -- STR needs to fixed to allow 0
+end
+
+function tick(Caster, Target, Type, Min, Max)
+
+end
+
+function remove(Caster, Target, Type, Min, Max)
+ --RemoveSkillBonus(Target)
+ --RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/InnoruuksGift.lua b/server/Spells/Spells-Copy/Traditions/InnoruuksGift.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/InnoruuksGift.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/InnothulesBlessing.lua b/server/Spells/Spells-Copy/Traditions/InnothulesBlessing.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/InnothulesBlessing.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/InstrumentsoftheUnderfoot.lua b/server/Spells/Spells-Copy/Traditions/InstrumentsoftheUnderfoot.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/InstrumentsoftheUnderfoot.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/IntellectoftheSage.lua b/server/Spells/Spells-Copy/Traditions/IntellectoftheSage.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/IntellectoftheSage.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/IntellectualFeasting.lua b/server/Spells/Spells-Copy/Traditions/IntellectualFeasting.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/IntellectualFeasting.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/IntricateCreations.lua b/server/Spells/Spells-Copy/Traditions/IntricateCreations.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/IntricateCreations.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Junglewalk.lua b/server/Spells/Spells-Copy/Traditions/Junglewalk.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Junglewalk.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/KeeperoftheForest.lua b/server/Spells/Spells-Copy/Traditions/KeeperoftheForest.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/KeeperoftheForest.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/LightFooted.lua b/server/Spells/Spells-Copy/Traditions/LightFooted.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/LightFooted.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/LostintheCrowd.lua b/server/Spells/Spells-Copy/Traditions/LostintheCrowd.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/LostintheCrowd.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MagicProtection.lua b/server/Spells/Spells-Copy/Traditions/MagicProtection.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MagicProtection.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MagicalProtection.lua b/server/Spells/Spells-Copy/Traditions/MagicalProtection.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MagicalProtection.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MagicalTeachings.lua b/server/Spells/Spells-Copy/Traditions/MagicalTeachings.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MagicalTeachings.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MagicoftheFae.lua b/server/Spells/Spells-Copy/Traditions/MagicoftheFae.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MagicoftheFae.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ManiacalMadness.lua b/server/Spells/Spells-Copy/Traditions/ManiacalMadness.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ManiacalMadness.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ManyMarches.lua b/server/Spells/Spells-Copy/Traditions/ManyMarches.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ManyMarches.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MasteroftheShadows.lua b/server/Spells/Spells-Copy/Traditions/MasteroftheShadows.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MasteroftheShadows.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MasteroftheTumpyTonic.lua b/server/Spells/Spells-Copy/Traditions/MasteroftheTumpyTonic.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MasteroftheTumpyTonic.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MeldrathsTeachings.lua b/server/Spells/Spells-Copy/Traditions/MeldrathsTeachings.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MeldrathsTeachings.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MenderoftheMire.lua b/server/Spells/Spells-Copy/Traditions/MenderoftheMire.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MenderoftheMire.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MiningExpertise.lua b/server/Spells/Spells-Copy/Traditions/MiningExpertise.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MiningExpertise.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MisfitsTrickery.lua b/server/Spells/Spells-Copy/Traditions/MisfitsTrickery.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MisfitsTrickery.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/MixedKnowledge.lua b/server/Spells/Spells-Copy/Traditions/MixedKnowledge.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/MixedKnowledge.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Multitalented.lua b/server/Spells/Spells-Copy/Traditions/Multitalented.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Multitalented.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/NaturalRecovery.lua b/server/Spells/Spells-Copy/Traditions/NaturalRecovery.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/NaturalRecovery.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/NeriakPrecision.lua b/server/Spells/Spells-Copy/Traditions/NeriakPrecision.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/NeriakPrecision.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/AncestralBlessing.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/AncestralBlessing.lua
new file mode 100755
index 000000000..9b8e52d5f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/AncestralBlessing.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\AncestralBlessing.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/AnotherRound.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/AnotherRound.lua
new file mode 100755
index 000000000..c84be9441
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/AnotherRound.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\AnotherRound.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/AsceticDiscipline.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/AsceticDiscipline.lua
new file mode 100755
index 000000000..c40706631
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/AsceticDiscipline.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\AsceticDiscipline.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/AutomatedPoisonDispenser.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/AutomatedPoisonDispenser.lua
new file mode 100755
index 000000000..9153ef7cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/AutomatedPoisonDispenser.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\AutomatedPoisonDispenser.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/BattleReady.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/BattleReady.lua
new file mode 100755
index 000000000..36de13418
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/BattleReady.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\BattleReady.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/BindWound.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/BindWound.lua
new file mode 100755
index 000000000..6dd497cef
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/BindWound.lua
@@ -0,0 +1,18 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\BindWound.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.28
+ Script Notes : Heals for 2% of max health while out of combat
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurrHealth = GetHP(Caster)
+ MaxHealth = GetMaxHP(Caster)
+ if IsInCombat(Caster) then
+ -- Do Nothing
+ elseif CurrHealth < MaxHealth then
+ healAmount = MaxHealth * Modifier
+ ModifyHP(Caster, healAmount)
+ end
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/BlessingOfTheMeal.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/BlessingOfTheMeal.lua
new file mode 100755
index 000000000..60e753b39
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/BlessingOfTheMeal.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\BlessingOfTheMeal.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/BristlebanesBlessing.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/BristlebanesBlessing.lua
new file mode 100755
index 000000000..6a3dce67f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/BristlebanesBlessing.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\BristlebanesBlessing.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ChargeIntoBattle.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ChargeIntoBattle.lua
new file mode 100755
index 000000000..7a242702a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ChargeIntoBattle.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ChargeIntoBattle.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/CloakOfDarkness.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/CloakOfDarkness.lua
new file mode 100755
index 000000000..228d5b245
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/CloakOfDarkness.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\CloakOfDarkness.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/CloakingDevice.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/CloakingDevice.lua
new file mode 100755
index 000000000..c0beaa778
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/CloakingDevice.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\CloakingDevice.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ConnoisseurOfFineWines.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ConnoisseurOfFineWines.lua
new file mode 100755
index 000000000..7aa40555e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ConnoisseurOfFineWines.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ConnoisseurOfFineWines.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/DelayedThirst.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/DelayedThirst.lua
new file mode 100755
index 000000000..ff610655e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/DelayedThirst.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\DelayedThirst.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ElvishSpirits.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ElvishSpirits.lua
new file mode 100755
index 000000000..849349ab4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ElvishSpirits.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ElvishSpirits.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/Empowered.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/Empowered.lua
new file mode 100755
index 000000000..98b76071a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/Empowered.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\Empowered.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/EternalYouth.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/EternalYouth.lua
new file mode 100755
index 000000000..6bea8d226
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/EternalYouth.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\EternalYouth.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ExpertChemistry.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ExpertChemistry.lua
new file mode 100755
index 000000000..d630aaa69
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ExpertChemistry.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ExpertChemistry.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ExtendedMarch.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ExtendedMarch.lua
new file mode 100755
index 000000000..e08c1303d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ExtendedMarch.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ExtendedMarch.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/FastTwitched.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/FastTwitched.lua
new file mode 100755
index 000000000..8cd138b47
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/FastTwitched.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\FastTwitched.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ForestNavigation.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ForestNavigation.lua
new file mode 100755
index 000000000..f0f7bfc38
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ForestNavigation.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ForestNavigation.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/FrostedAles.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/FrostedAles.lua
new file mode 100755
index 000000000..134e1886f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/FrostedAles.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\FrostedAles.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.28
+ Script Notes : Increases duration of tradeskilled drinks by 10%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/GatherMana.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/GatherMana.lua
new file mode 100755
index 000000000..456a6d5b7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/GatherMana.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\GatherMana.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/GracefulLanding.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/GracefulLanding.lua
new file mode 100755
index 000000000..93a36d405
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/GracefulLanding.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\GracefulLanding.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/HastenedStudy.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/HastenedStudy.lua
new file mode 100755
index 000000000..2e8f37744
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/HastenedStudy.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\HastenedStudy.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/IrefulWill.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/IrefulWill.lua
new file mode 100755
index 000000000..89094262c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/IrefulWill.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\IrefulWill.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases out-of-combat power regen based on level
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 601, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/KerraSpeed.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/KerraSpeed.lua
new file mode 100755
index 000000000..a4d17fa07
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/KerraSpeed.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\KerraSpeed.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/LastSecondHop.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/LastSecondHop.lua
new file mode 100755
index 000000000..bb3d210b7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/LastSecondHop.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\LastSecondHop.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/MasterOfTheShadows.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/MasterOfTheShadows.lua
new file mode 100755
index 000000000..35df5d4f7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/MasterOfTheShadows.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\MasterOfTheShadows.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases stealth/invisible movement speed by 15.0%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/MeditativeContemplation.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/MeditativeContemplation.lua
new file mode 100755
index 000000000..490409af2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/MeditativeContemplation.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\MeditativeContemplation.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/NapTime.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/NapTime.lua
new file mode 100755
index 000000000..6df4dee67
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/NapTime.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\NapTime.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/NaturalAthlete.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/NaturalAthlete.lua
new file mode 100755
index 000000000..9a423b3ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/NaturalAthlete.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\NaturalAthlete.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/NobleGallop.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/NobleGallop.lua
new file mode 100755
index 000000000..e92426f96
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/NobleGallop.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\NobleGallop.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/NomadicHealing.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/NomadicHealing.lua
new file mode 100755
index 000000000..7570c6d95
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/NomadicHealing.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\NomadicHealing.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.28
+ Script Notes : Increases out-of-combat power regen based on level
+--]]
+
+function cast(Caster, Target, Modifier)
+ Level = GetLevel(Target)
+ BonusAmt = Level * Modifier
+ AddSpellBonus(Target, 601, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/OnlyTheFinestIngredients.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/OnlyTheFinestIngredients.lua
new file mode 100755
index 000000000..eca411e2c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/OnlyTheFinestIngredients.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\OnlyTheFinesIngredients.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/OptimumDosage.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/OptimumDosage.lua
new file mode 100755
index 000000000..70cad22a4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/OptimumDosage.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\OptimumDosage.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/PixieDust.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/PixieDust.lua
new file mode 100755
index 000000000..b60850a73
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/PixieDust.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\PixieDust.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/PoisonExpertise.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/PoisonExpertise.lua
new file mode 100755
index 000000000..5f97ffbe3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/PoisonExpertise.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\PoisonExpertise.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases trigger count of poisons by 25.0%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/PoisonousPlants.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/PoisonousPlants.lua
new file mode 100755
index 000000000..79929e431
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/PoisonousPlants.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\PoisonousPlants.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ProtectiveSkin.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ProtectiveSkin.lua
new file mode 100755
index 000000000..f266f9b13
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ProtectiveSkin.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ProtectiveSkin.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/QuickGetaway.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/QuickGetaway.lua
new file mode 100755
index 000000000..1e993d765
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/QuickGetaway.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\QuickGetaway.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/QuickRecovery.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/QuickRecovery.lua
new file mode 100755
index 000000000..7c6f42a12
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/QuickRecovery.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\QuickRecovery.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/QuickRecuperation.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/QuickRecuperation.lua
new file mode 100755
index 000000000..117aefc7e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/QuickRecuperation.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\QuickRecuperation.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/QuitSittinAround.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/QuitSittinAround.lua
new file mode 100755
index 000000000..4997aa90d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/QuitSittinAround.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\QuitSittinAround.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/RationWater.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/RationWater.lua
new file mode 100755
index 000000000..9122354b5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/RationWater.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\RationWater.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ReflexiveLanding.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ReflexiveLanding.lua
new file mode 100755
index 000000000..7c3344775
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ReflexiveLanding.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ReflexiveLanding.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/Restore.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/Restore.lua
new file mode 100755
index 000000000..91a070d84
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/Restore.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\Restore.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ReturnToFormation.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ReturnToFormation.lua
new file mode 100755
index 000000000..bd179de46
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ReturnToFormation.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ReturnToFormation.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SecretsOfTheUnderfoot.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SecretsOfTheUnderfoot.lua
new file mode 100755
index 000000000..c454911ae
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SecretsOfTheUnderfoot.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SecretsOfTheUnderfoot.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ShadowStalker.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ShadowStalker.lua
new file mode 100755
index 000000000..d644d104c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ShadowStalker.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ShadowStalker.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/Shadowlurker.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/Shadowlurker.lua
new file mode 100755
index 000000000..0f23a681b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/Shadowlurker.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\Shadowlurker.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ShamanisticFasting.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ShamanisticFasting.lua
new file mode 100755
index 000000000..c26395240
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ShamanisticFasting.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ShamanisticFasting.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SlowMetabolism.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SlowMetabolism.lua
new file mode 100755
index 000000000..d3f7a8953
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SlowMetabolism.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SlowMetabolism.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SmokedMeats.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SmokedMeats.lua
new file mode 100755
index 000000000..c88438296
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SmokedMeats.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SmokedMeats.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SoftLandings.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SoftLandings.lua
new file mode 100755
index 000000000..1d31ab4cb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SoftLandings.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SoftLandings.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.28
+ Script Notes : Decreases falling damage by 15%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/StealthyAcrobatics.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/StealthyAcrobatics.lua
new file mode 100755
index 000000000..d550b5b68
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/StealthyAcrobatics.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\StealthyAcrobatics.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/StrongAdditives.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/StrongAdditives.lua
new file mode 100755
index 000000000..ea338ce42
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/StrongAdditives.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\StrongAdditives.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SturdyBones.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SturdyBones.lua
new file mode 100755
index 000000000..6d9fb56fe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SturdyBones.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SturdyBones.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SturdyFeet.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SturdyFeet.lua
new file mode 100755
index 000000000..8d2779c37
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SturdyFeet.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SturdyFeet.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SwampFeet.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SwampFeet.lua
new file mode 100755
index 000000000..ebfe98c5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SwampFeet.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SwampFeet.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/SwiftRecovery.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/SwiftRecovery.lua
new file mode 100755
index 000000000..c13f814b0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/SwiftRecovery.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\SwiftRecovery.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/TastyBrew.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/TastyBrew.lua
new file mode 100755
index 000000000..390996a36
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/TastyBrew.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\TastyBrew.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/ToxicFinesse.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/ToxicFinesse.lua
new file mode 100755
index 000000000..0a489da16
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/ToxicFinesse.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\ToxicFinesse.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/TrainingTechniques.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/TrainingTechniques.lua
new file mode 100755
index 000000000..ddacae2d5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/TrainingTechniques.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\TrainingTechniques.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/UnderCoverOfTheVale.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/UnderCoverOfTheVale.lua
new file mode 100755
index 000000000..727419d5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/UnderCoverOfTheVale.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\UnderCoverOfTheVale.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/VitalityOfTheSwamp.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/VitalityOfTheSwamp.lua
new file mode 100755
index 000000000..898c5ebf5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/VitalityOfTheSwamp.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\VitalityOfTheSwamp.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/WalkItOff.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/WalkItOff.lua
new file mode 100755
index 000000000..07531b95b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/WalkItOff.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\WalkItOff.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/WillfulPersistence.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/WillfulPersistence.lua
new file mode 100755
index 000000000..c67c4cba2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/WillfulPersistence.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\WillfulPersistence.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.012.01
+ Script Notes : Increases duration of tradeskilled potions by 15%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Noncombat/WoodlandRegeneration.lua b/server/Spells/Spells-Copy/Traditions/Noncombat/WoodlandRegeneration.lua
new file mode 100755
index 000000000..8d58abc1a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Noncombat/WoodlandRegeneration.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Traditions\Noncombat\WoodlandRegeneration.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.27
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/OggokianAggression.lua b/server/Spells/Spells-Copy/Traditions/OggokianAggression.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/OggokianAggression.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/OggokianTrade.lua b/server/Spells/Spells-Copy/Traditions/OggokianTrade.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/OggokianTrade.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Perserverance.lua b/server/Spells/Spells-Copy/Traditions/Perserverance.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Perserverance.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/PitifulPlea.lua b/server/Spells/Spells-Copy/Traditions/PitifulPlea.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/PitifulPlea.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/PoisonCrafter.lua b/server/Spells/Spells-Copy/Traditions/PoisonCrafter.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/PoisonCrafter.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/PoisonExpertise.lua b/server/Spells/Spells-Copy/Traditions/PoisonExpertise.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/PoisonExpertise.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/PoisonPlay.lua b/server/Spells/Spells-Copy/Traditions/PoisonPlay.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/PoisonPlay.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ArcaneKnowledge.lua b/server/Spells/Spells-Copy/Traditions/Pools/ArcaneKnowledge.lua
new file mode 100755
index 000000000..a95c3b4dd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ArcaneKnowledge.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ArcaneKnowledge.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/BashersWill.lua b/server/Spells/Spells-Copy/Traditions/Pools/BashersWill.lua
new file mode 100755
index 000000000..c4fc4637a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/BashersWill.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\BashersWill.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/Bloodthirsty.lua b/server/Spells/Spells-Copy/Traditions/Pools/Bloodthirsty.lua
new file mode 100755
index 000000000..0ce37f4c3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/Bloodthirsty.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Bloodthirsty.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ClockworkArmor.lua b/server/Spells/Spells-Copy/Traditions/Pools/ClockworkArmor.lua
new file mode 100755
index 000000000..0cef066fb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ClockworkArmor.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ClockworkArmor.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/CoatedWings.lua b/server/Spells/Spells-Copy/Traditions/Pools/CoatedWings.lua
new file mode 100755
index 000000000..fe92434b4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/CoatedWings.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\CoatedWings.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/CollectiveThoughts.lua b/server/Spells/Spells-Copy/Traditions/Pools/CollectiveThoughts.lua
new file mode 100755
index 000000000..58993e368
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/CollectiveThoughts.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\CollectiveThoughts.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.29
+ Script Notes : Increases Mana Pool by 3.0%
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/DubiousFocus.lua b/server/Spells/Spells-Copy/Traditions/Pools/DubiousFocus.lua
new file mode 100755
index 000000000..9fda98f51
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/DubiousFocus.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\DubiousFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Health Pool by 3.0%
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurHP = GetMaxHP(Target)
+ BonusAmt = CurHP * Modifier
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/EnhancedIntellect.lua b/server/Spells/Spells-Copy/Traditions/Pools/EnhancedIntellect.lua
new file mode 100755
index 000000000..404b7d59e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/EnhancedIntellect.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\EnhancedIntellect.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/FlashOfInsight.lua b/server/Spells/Spells-Copy/Traditions/Pools/FlashOfInsight.lua
new file mode 100755
index 000000000..ac168597d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/FlashOfInsight.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\FlashOfInsight.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/FocusOfTheValorous.lua b/server/Spells/Spells-Copy/Traditions/Pools/FocusOfTheValorous.lua
new file mode 100755
index 000000000..817f91cec
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/FocusOfTheValorous.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\FocusOfTheValorous.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/GiftOfTunare.lua b/server/Spells/Spells-Copy/Traditions/Pools/GiftOfTunare.lua
new file mode 100755
index 000000000..f5aa36711
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/GiftOfTunare.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\GiftOfTunare.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/HatefulMind.lua b/server/Spells/Spells-Copy/Traditions/Pools/HatefulMind.lua
new file mode 100755
index 000000000..a0e375fab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/HatefulMind.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\HatefulMind.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Mana Pool by 3.0%
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/HonorOfInsight.lua b/server/Spells/Spells-Copy/Traditions/Pools/HonorOfInsight.lua
new file mode 100755
index 000000000..63f4dab58
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/HonorOfInsight.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\HonorOfInsight.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/InnerFocus.lua b/server/Spells/Spells-Copy/Traditions/Pools/InnerFocus.lua
new file mode 100755
index 000000000..5c0804464
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/InnerFocus.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\InnerFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/JumjumRegimen.lua b/server/Spells/Spells-Copy/Traditions/Pools/JumjumRegimen.lua
new file mode 100755
index 000000000..7904f2586
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/JumjumRegimen.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\JumjumRegimen.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/LegacyOfBrell.lua b/server/Spells/Spells-Copy/Traditions/Pools/LegacyOfBrell.lua
new file mode 100755
index 000000000..e1040d926
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/LegacyOfBrell.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\LegacyOfBrell.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/LegacyOfTheShissar.lua b/server/Spells/Spells-Copy/Traditions/Pools/LegacyOfTheShissar.lua
new file mode 100755
index 000000000..7f2eaa810
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/LegacyOfTheShissar.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\LegacyOfTheShissar.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/LegendaryTenacity.lua b/server/Spells/Spells-Copy/Traditions/Pools/LegendaryTenacity.lua
new file mode 100755
index 000000000..8e27057de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/LegendaryTenacity.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\LegendayTenacity.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/LegionnairesFocus.lua b/server/Spells/Spells-Copy/Traditions/Pools/LegionnairesFocus.lua
new file mode 100755
index 000000000..7e35be781
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/LegionnairesFocus.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\LegionnairesFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/MagicOfTheArasai.lua b/server/Spells/Spells-Copy/Traditions/Pools/MagicOfTheArasai.lua
new file mode 100755
index 000000000..3749deb89
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/MagicOfTheArasai.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\MagicOfTheArasai.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/MagicOfTheFae.lua b/server/Spells/Spells-Copy/Traditions/Pools/MagicOfTheFae.lua
new file mode 100755
index 000000000..54ac8932a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/MagicOfTheFae.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\MagicOfTheFae.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ManiacalMadness.lua b/server/Spells/Spells-Copy/Traditions/Pools/ManiacalMadness.lua
new file mode 100755
index 000000000..57a918ce3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ManiacalMadness.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ManiacalMadness.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/MeditativeStae.lua b/server/Spells/Spells-Copy/Traditions/Pools/MeditativeStae.lua
new file mode 100755
index 000000000..d78c19753
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/MeditativeStae.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\MeditativeState.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/MiddaySnack.lua b/server/Spells/Spells-Copy/Traditions/Pools/MiddaySnack.lua
new file mode 100755
index 000000000..70ecebe40
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/MiddaySnack.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\MiddaySnack.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/RallosZeksBlessing.lua b/server/Spells/Spells-Copy/Traditions/Pools/RallosZeksBlessing.lua
new file mode 100755
index 000000000..04ba27167
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/RallosZeksBlessing.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\RallosZeksBlessing.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ResilianceOfTheUnderfoot.lua b/server/Spells/Spells-Copy/Traditions/Pools/ResilianceOfTheUnderfoot.lua
new file mode 100755
index 000000000..8f2940edf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ResilianceOfTheUnderfoot.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ResilianceOfTheUnderfoot.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ResilientMind.lua b/server/Spells/Spells-Copy/Traditions/Pools/ResilientMind.lua
new file mode 100755
index 000000000..33bd821e1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ResilientMind.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ResilientMind.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/RuggedFortitude.lua b/server/Spells/Spells-Copy/Traditions/Pools/RuggedFortitude.lua
new file mode 100755
index 000000000..59ecb5679
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/RuggedFortitude.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\RuggedFortitude.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/Ruggedness.lua b/server/Spells/Spells-Copy/Traditions/Pools/Ruggedness.lua
new file mode 100755
index 000000000..6d19fa237
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/Ruggedness.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Ruggedness.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ShortButStrong.lua b/server/Spells/Spells-Copy/Traditions/Pools/ShortButStrong.lua
new file mode 100755
index 000000000..40d3f129d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ShortButStrong.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ShortButStrong.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/SpiritualBoon.lua b/server/Spells/Spells-Copy/Traditions/Pools/SpiritualBoon.lua
new file mode 100755
index 000000000..6e4256103
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/SpiritualBoon.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\SpiritualBoon.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/SpontaneousMetamorphosis.lua b/server/Spells/Spells-Copy/Traditions/Pools/SpontaneousMetamorphosis.lua
new file mode 100755
index 000000000..32f16f94c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/SpontaneousMetamorphosis.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\SpontaneousMetamorphosis.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/TheoreticalImprovements.lua b/server/Spells/Spells-Copy/Traditions/Pools/TheoreticalImprovements.lua
new file mode 100755
index 000000000..aa13b2d4c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/TheoreticalImprovements.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\TheoreticalImprovements.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/ThoughtsOfFelwithe.lua b/server/Spells/Spells-Copy/Traditions/Pools/ThoughtsOfFelwithe.lua
new file mode 100755
index 000000000..97cab52a4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/ThoughtsOfFelwithe.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\ThoughtsOfFelwithe.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/TribalKnowledge.lua b/server/Spells/Spells-Copy/Traditions/Pools/TribalKnowledge.lua
new file mode 100755
index 000000000..e710ecce2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/TribalKnowledge.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\TribalKnowledge.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/TribalStrength.lua b/server/Spells/Spells-Copy/Traditions/Pools/TribalStrength.lua
new file mode 100755
index 000000000..c42cbf169
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/TribalStrength.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\TribalStrength.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.29
+ Script Notes : Increases Health Pool by 3.0%
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurHP = GetMaxHP(Target)
+ BonusAmt = CurHP * Modifier
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/VampiricWill.lua b/server/Spells/Spells-Copy/Traditions/Pools/VampiricWill.lua
new file mode 100755
index 000000000..b7ba67ebe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/VampiricWill.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\VampiricWill.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/VitalityOfTheFeirDal.lua b/server/Spells/Spells-Copy/Traditions/Pools/VitalityOfTheFeirDal.lua
new file mode 100755
index 000000000..93730b83c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/VitalityOfTheFeirDal.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\VitalityOfTheFeirDal.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Pools/WillOfTheAnchored.lua b/server/Spells/Spells-Copy/Traditions/Pools/WillOfTheAnchored.lua
new file mode 100755
index 000000000..377407f0b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Pools/WillOfTheAnchored.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Pools\WillOfTheAnchored.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/ProficientSwimmer.lua b/server/Spells/Spells-Copy/Traditions/ProficientSwimmer.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ProficientSwimmer.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/PursuitoftheArcane.lua b/server/Spells/Spells-Copy/Traditions/PursuitoftheArcane.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/PursuitoftheArcane.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/RallosZeksBlessing.lua b/server/Spells/Spells-Copy/Traditions/RallosZeksBlessing.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/RallosZeksBlessing.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/RallosianReadiness.lua b/server/Spells/Spells-Copy/Traditions/RallosianReadiness.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/RallosianReadiness.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/RebelliousSpirit.lua b/server/Spells/Spells-Copy/Traditions/RebelliousSpirit.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/RebelliousSpirit.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ReflexiveLanding.lua b/server/Spells/Spells-Copy/Traditions/ReflexiveLanding.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ReflexiveLanding.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ReptilianAncestry.lua b/server/Spells/Spells-Copy/Traditions/ReptilianAncestry.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ReptilianAncestry.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/Adaptable.lua b/server/Spells/Spells-Copy/Traditions/Resists/Adaptable.lua
new file mode 100755
index 000000000..cb4dcae64
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/Adaptable.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\Adaptable.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/Antidote.lua b/server/Spells/Spells-Copy/Traditions/Resists/Antidote.lua
new file mode 100755
index 000000000..9f1037fde
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/Antidote.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\Antidote.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ArcanicFortitude.lua b/server/Spells/Spells-Copy/Traditions/Resists/ArcanicFortitude.lua
new file mode 100755
index 000000000..46b297a31
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ArcanicFortitude.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ArcanicFortitude.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ArmorOfTheFeerrott.lua b/server/Spells/Spells-Copy/Traditions/Resists/ArmorOfTheFeerrott.lua
new file mode 100755
index 000000000..2d95e0b14
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ArmorOfTheFeerrott.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ArmorOfTheFeerrott.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/DefyMagic.lua b/server/Spells/Spells-Copy/Traditions/Resists/DefyMagic.lua
new file mode 100755
index 000000000..59681c056
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/DefyMagic.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\DefyMagic.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/DevoutBarrier.lua b/server/Spells/Spells-Copy/Traditions/Resists/DevoutBarrier.lua
new file mode 100755
index 000000000..80ae40d41
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/DevoutBarrier.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\DevoutBarrier.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.29
+ Script Notes : Increases Arcane mitigation based on level
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/DidntEvenFeelIt.lua b/server/Spells/Spells-Copy/Traditions/Resists/DidntEvenFeelIt.lua
new file mode 100755
index 000000000..740671adc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/DidntEvenFeelIt.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\DidntEvenFeekIt.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ElementalBarrier.lua b/server/Spells/Spells-Copy/Traditions/Resists/ElementalBarrier.lua
new file mode 100755
index 000000000..172a499fd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ElementalBarrier.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ElementalBarrier.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ElementalDefiance.lua b/server/Spells/Spells-Copy/Traditions/Resists/ElementalDefiance.lua
new file mode 100755
index 000000000..606d4834c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ElementalDefiance.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ElementalDefiance.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Elemental mitigation based on level
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 201, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ElementalDurability.lua b/server/Spells/Spells-Copy/Traditions/Resists/ElementalDurability.lua
new file mode 100755
index 000000000..69868c71b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ElementalDurability.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ElementalDurability.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ElementalFortitude.lua b/server/Spells/Spells-Copy/Traditions/Resists/ElementalFortitude.lua
new file mode 100755
index 000000000..3538bd2a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ElementalFortitude.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ElementalFortitude.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ElementalMastery.lua b/server/Spells/Spells-Copy/Traditions/Resists/ElementalMastery.lua
new file mode 100755
index 000000000..8682221e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ElementalMastery.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ElementalMastery.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/EnvironmentalAdaptability.lua b/server/Spells/Spells-Copy/Traditions/Resists/EnvironmentalAdaptability.lua
new file mode 100755
index 000000000..5ce6d934c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/EnvironmentalAdaptability.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\EnvironmentalAdaptability.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/FocusOfWarfare.lua b/server/Spells/Spells-Copy/Traditions/Resists/FocusOfWarfare.lua
new file mode 100755
index 000000000..b1b634c40
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/FocusOfWarfare.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\FocusOfWarfare.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/FurCoat.lua b/server/Spells/Spells-Copy/Traditions/Resists/FurCoat.lua
new file mode 100755
index 000000000..085696cf5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/FurCoat.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\FurCoat.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/HardenedScales.lua b/server/Spells/Spells-Copy/Traditions/Resists/HardenedScales.lua
new file mode 100755
index 000000000..38457c61e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/HardenedScales.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\HardenedScales.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/HiddenTracks.lua b/server/Spells/Spells-Copy/Traditions/Resists/HiddenTracks.lua
new file mode 100755
index 000000000..ee2cd821e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/HiddenTracks.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\HiddenTracks.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/LeatherSkin.lua b/server/Spells/Spells-Copy/Traditions/Resists/LeatherSkin.lua
new file mode 100755
index 000000000..acfe557f1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/LeatherSkin.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\LeatherSkin.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/LightbringersProtection.lua b/server/Spells/Spells-Copy/Traditions/Resists/LightbringersProtection.lua
new file mode 100755
index 000000000..ed95c8420
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/LightbringersProtection.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\LightbringersProtection.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/MagicPah.lua b/server/Spells/Spells-Copy/Traditions/Resists/MagicPah.lua
new file mode 100755
index 000000000..513e4b175
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/MagicPah.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\MagicPah.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/MagicalProtection.lua b/server/Spells/Spells-Copy/Traditions/Resists/MagicalProtection.lua
new file mode 100755
index 000000000..d79f1e72d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/MagicalProtection.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\MagicalProtection.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/OggokianStubbornness.lua b/server/Spells/Spells-Copy/Traditions/Resists/OggokianStubbornness.lua
new file mode 100755
index 000000000..d5a7936bd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/OggokianStubbornness.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\OggokianStubbornness.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ProtectiveEyewear.lua b/server/Spells/Spells-Copy/Traditions/Resists/ProtectiveEyewear.lua
new file mode 100755
index 000000000..ffe054376
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ProtectiveEyewear.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ProtectiveEyewear.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/PutridHide.lua b/server/Spells/Spells-Copy/Traditions/Resists/PutridHide.lua
new file mode 100755
index 000000000..dac7fa966
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/PutridHide.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\PutridHide.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/RemedialWill.lua b/server/Spells/Spells-Copy/Traditions/Resists/RemedialWill.lua
new file mode 100755
index 000000000..54b337e69
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/RemedialWill.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\RemedialWill.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/RivervalesProtection.lua b/server/Spells/Spells-Copy/Traditions/Resists/RivervalesProtection.lua
new file mode 100755
index 000000000..526daffee
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/RivervalesProtection.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\RivervalesProtection.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/RobustMight.lua b/server/Spells/Spells-Copy/Traditions/Resists/RobustMight.lua
new file mode 100755
index 000000000..9b4886f7e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/RobustMight.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\RobustMight.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ShieldOfBark.lua b/server/Spells/Spells-Copy/Traditions/Resists/ShieldOfBark.lua
new file mode 100755
index 000000000..636e463d4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ShieldOfBark.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ShieldOfBark.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ShieldOfNature.lua b/server/Spells/Spells-Copy/Traditions/Resists/ShieldOfNature.lua
new file mode 100755
index 000000000..80ad23f5a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ShieldOfNature.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ShieldOfNature.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/SlipperyHide.lua b/server/Spells/Spells-Copy/Traditions/Resists/SlipperyHide.lua
new file mode 100755
index 000000000..7f1d01ca9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/SlipperyHide.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\SlipperyHide.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/Spirituality.lua b/server/Spells/Spells-Copy/Traditions/Resists/Spirituality.lua
new file mode 100755
index 000000000..da90877e4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/Spirituality.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\Spirituality.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/StrongBlood.lua b/server/Spells/Spells-Copy/Traditions/Resists/StrongBlood.lua
new file mode 100755
index 000000000..4b3f43709
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/StrongBlood.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\StrongBlood.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/TenetOfTakishHiz.lua b/server/Spells/Spells-Copy/Traditions/Resists/TenetOfTakishHiz.lua
new file mode 100755
index 000000000..c7a103e69
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/TenetOfTakishHiz.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\TenetOfTakishHiz.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ToughScales.lua b/server/Spells/Spells-Copy/Traditions/Resists/ToughScales.lua
new file mode 100755
index 000000000..5e96bfc25
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ToughScales.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ToughScales.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ToxicIntimacy.lua b/server/Spells/Spells-Copy/Traditions/Resists/ToxicIntimacy.lua
new file mode 100755
index 000000000..6b73bf695
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ToxicIntimacy.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ToxicIntimacy.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Noxious mitigation based on level
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 202, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/ToxicProtection.lua b/server/Spells/Spells-Copy/Traditions/Resists/ToxicProtection.lua
new file mode 100755
index 000000000..ab0a02413
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/ToxicProtection.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\ToxicProtection.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/TundraRuggedness.lua b/server/Spells/Spells-Copy/Traditions/Resists/TundraRuggedness.lua
new file mode 100755
index 000000000..e52b0967b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/TundraRuggedness.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\TundraRuggedness.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.01.29
+ Script Notes : Increases physical mitigation based on level
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 200, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Resists/UndeadResilience.lua b/server/Spells/Spells-Copy/Traditions/Resists/UndeadResilience.lua
new file mode 100755
index 000000000..953cc1607
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Resists/UndeadResilience.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells\Traditions\Resist\UndeadResilience.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.03.29
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurLevel = GetLevel(Target)
+ BonusAmt = CurLevel * Modifier
+ AddSpellBonus(Target, 203, BonusAmt)
+end
+
+function remove(Caster, Target, Modifier)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/RockThrower.lua b/server/Spells/Spells-Copy/Traditions/RockThrower.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/RockThrower.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/RodentReflexes.lua b/server/Spells/Spells-Copy/Traditions/RodentReflexes.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/RodentReflexes.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/RushintoBattle.lua b/server/Spells/Spells-Copy/Traditions/RushintoBattle.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/RushintoBattle.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ShadowLurker.lua b/server/Spells/Spells-Copy/Traditions/ShadowLurker.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ShadowLurker.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ShieldofNature.lua b/server/Spells/Spells-Copy/Traditions/ShieldofNature.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ShieldofNature.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ShoulderSlam.lua b/server/Spells/Spells-Copy/Traditions/ShoulderSlam.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ShoulderSlam.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/SoulMending.lua b/server/Spells/Spells-Copy/Traditions/SoulMending.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/SoulMending.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Spirituality.lua b/server/Spells/Spells-Copy/Traditions/Spirituality.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Spirituality.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/SprintIntoBattle.lua b/server/Spells/Spells-Copy/Traditions/SprintIntoBattle.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/SprintIntoBattle.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/SteamfontsMagicalBarrier.lua b/server/Spells/Spells-Copy/Traditions/SteamfontsMagicalBarrier.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/SteamfontsMagicalBarrier.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/StreetThug.lua b/server/Spells/Spells-Copy/Traditions/StreetThug.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/StreetThug.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Stride.lua b/server/Spells/Spells-Copy/Traditions/Stride.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Stride.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/StrongHeart.lua b/server/Spells/Spells-Copy/Traditions/StrongHeart.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/StrongHeart.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/SummonFilthyWater.lua b/server/Spells/Spells-Copy/Traditions/SummonFilthyWater.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/SummonFilthyWater.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/SummonHalasianBrew.lua b/server/Spells/Spells-Copy/Traditions/SummonHalasianBrew.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/SummonHalasianBrew.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/SwampBreath.lua b/server/Spells/Spells-Copy/Traditions/SwampBreath.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/SwampBreath.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/TastyThings.lua b/server/Spells/Spells-Copy/Traditions/TastyThings.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TastyThings.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/TendWounds.lua b/server/Spells/Spells-Copy/Traditions/TendWounds.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TendWounds.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/TenetofTakish`Hiz.lua b/server/Spells/Spells-Copy/Traditions/TenetofTakish`Hiz.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TenetofTakish`Hiz.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/TheFocisMagicalProtection.lua b/server/Spells/Spells-Copy/Traditions/TheFocisMagicalProtection.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TheFocisMagicalProtection.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ThulesGuidance.lua b/server/Spells/Spells-Copy/Traditions/ThulesGuidance.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ThulesGuidance.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/ToxicProtection.lua b/server/Spells/Spells-Copy/Traditions/ToxicProtection.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/ToxicProtection.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/AgileCreations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/AgileCreations.lua
new file mode 100755
index 000000000..9dc1cfa12
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/AgileCreations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\AgileCreations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/AlchemicIngenuity.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/AlchemicIngenuity.lua
new file mode 100755
index 000000000..27007f6a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/AlchemicIngenuity.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\AlchemicIngenuity.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ArcaneUnderstanding.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ArcaneUnderstanding.lua
new file mode 100755
index 000000000..a5350abd0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ArcaneUnderstanding.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ArcaneUnderstanding.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/AttentionToDetails.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/AttentionToDetails.lua
new file mode 100755
index 000000000..3c2e49eea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/AttentionToDetails.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\AttentionToDetails.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/AyrDalAdornment.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/AyrDalAdornment.lua
new file mode 100755
index 000000000..94aa89f9b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/AyrDalAdornment.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\AyrDalAdornment.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/BreakingDownTheTrash.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/BreakingDownTheTrash.lua
new file mode 100755
index 000000000..1296b8c79
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/BreakingDownTheTrash.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\BreakingDownTheTrash.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/BrellsBlessing.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/BrellsBlessing.lua
new file mode 100755
index 000000000..fb6c00647
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/BrellsBlessing.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\BrellsBlessing.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Brewmaster.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Brewmaster.lua
new file mode 100755
index 000000000..67f80d228
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Brewmaster.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Brewmaster.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Artistry by 5.0
+--]]
+
+function cast(Caster, Target, Bonus)
+ AddSkillBonus(Target, 3881305672, Bonus)
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/CarpentersTouch.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/CarpentersTouch.lua
new file mode 100755
index 000000000..e2221d90e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/CarpentersTouch.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\CarpentersTouch.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ChasingBallsOfYarn.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ChasingBallsOfYarn.lua
new file mode 100755
index 000000000..a52b5d737
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ChasingBallsOfYarn.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ChasingBallsOfYarn.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ChemicalCalculations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ChemicalCalculations.lua
new file mode 100755
index 000000000..c1964a917
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ChemicalCalculations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ChemicalCalculations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Chemist.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Chemist.lua
new file mode 100755
index 000000000..4a39d26b0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Chemist.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Chemist.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Clothier.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Clothier.lua
new file mode 100755
index 000000000..f07b13722
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Clothier.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Clothier.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/CraftyConcentrations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/CraftyConcentrations.lua
new file mode 100755
index 000000000..acd23f5d0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/CraftyConcentrations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\CraftyConcentrations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkArmament.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkArmament.lua
new file mode 100755
index 000000000..2bf0f8c86
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkArmament.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DarkArmament.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Metal Shaping by 5.0
+--]]
+
+function cast(Caster, Target, Bonus)
+ AddSkillBonus(Target, 3108933728, Bonus)
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkMedicine.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkMedicine.lua
new file mode 100755
index 000000000..1476814d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkMedicine.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DarkMedicine.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkPerfectionist.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkPerfectionist.lua
new file mode 100755
index 000000000..fca84f9a8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DarkPerfectionist.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DarkPerfectionist.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DexterousCreations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DexterousCreations.lua
new file mode 100755
index 000000000..0565eaf5c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DexterousCreations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DextrousCreations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Diversity.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Diversity.lua
new file mode 100755
index 000000000..c9cbdae7d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Diversity.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Diversity.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DurableGoods.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DurableGoods.lua
new file mode 100755
index 000000000..ba5ec06f9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DurableGoods.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DurableGoods.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Durability per round by 2.0
+--]]
+
+function cast(Caster, Target, DuraMod)
+
+end
+
+function remove(Caster, Target, DuraMod)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DwarvenCraftsmanship.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DwarvenCraftsmanship.lua
new file mode 100755
index 000000000..18482c6fa
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DwarvenCraftsmanship.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DwarvenCraftsmenship.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/DwarvenDurability.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/DwarvenDurability.lua
new file mode 100755
index 000000000..41bb5f958
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/DwarvenDurability.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\DwarvenDurability.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/EsotericStudy.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/EsotericStudy.lua
new file mode 100755
index 000000000..f7efa7ea3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/EsotericStudy.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\EsotericStudy.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Excellence.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Excellence.lua
new file mode 100755
index 000000000..6f6a8d045
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Excellence.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Excellence.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ExperimentalTechnique.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ExperimentalTechnique.lua
new file mode 100755
index 000000000..6f0517d17
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ExperimentalTechnique.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ExperimentalTechnique.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/FaydwerFashions.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/FaydwerFashions.lua
new file mode 100755
index 000000000..9b105da67
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/FaydwerFashions.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\FaydwerFashions.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/FervorOfMarr.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/FervorOfMarr.lua
new file mode 100755
index 000000000..292524a80
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/FervorOfMarr.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\FervorOfMarr.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/FieldRepairs.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/FieldRepairs.lua
new file mode 100755
index 000000000..7283a9758
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/FieldRepairs.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\FieldRepairs.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/FinestCreations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/FinestCreations.lua
new file mode 100755
index 000000000..55d4f92d2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/FinestCreations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\FinestCreations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/FinestRobesAround.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/FinestRobesAround.lua
new file mode 100755
index 000000000..9af382a00
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/FinestRobesAround.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\FinestRobesAround.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ForestKnowledge.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ForestKnowledge.lua
new file mode 100755
index 000000000..f589b8084
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ForestKnowledge.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ForestKnowledge.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ForgeInvention.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ForgeInvention.lua
new file mode 100755
index 000000000..7e57dfe75
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ForgeInvention.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ForgeInvention.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/FortuneOfTheFeerrott.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/FortuneOfTheFeerrott.lua
new file mode 100755
index 000000000..75bc5c0b7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/FortuneOfTheFeerrott.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\FortuneOfTheFeerrott.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/GemcraftingExcellence.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/GemcraftingExcellence.lua
new file mode 100755
index 000000000..6f9e6277d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/GemcraftingExcellence.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\GemcraftExcellence.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/GiftOfTheFaydark.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/GiftOfTheFaydark.lua
new file mode 100755
index 000000000..dd899e45a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/GiftOfTheFaydark.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\GiftOfTheFaydark.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/GiftOfTheLand.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/GiftOfTheLand.lua
new file mode 100755
index 000000000..d114bd9cb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/GiftOfTheLand.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\GiftOfTheLand.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/GildingOfFelwithe.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/GildingOfFelwithe.lua
new file mode 100755
index 000000000..fc0ba6f8c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/GildingOfFelwithe.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\GildingOfFelwithe.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/GnomishIngenuity.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/GnomishIngenuity.lua
new file mode 100755
index 000000000..566e92c48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/GnomishIngenuity.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\GnomishIngenuity.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/GracefulAssembly.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/GracefulAssembly.lua
new file mode 100755
index 000000000..7d1588ddd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/GracefulAssembly.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\GracefulAssembly.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/HalasianArtistry.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/HalasianArtistry.lua
new file mode 100755
index 000000000..a4dfdb3f3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/HalasianArtistry.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\HalasianArtistry.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Reduces power cost of Carpentry skills by 9%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Herbology.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Herbology.lua
new file mode 100755
index 000000000..479b42bd6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Herbology.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Herbology.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Chemistry by 5.0
+--]]
+
+function cast(Caster, Target, Bonus)
+ AddSkillBonus(Target, 2557647574, Bonus)
+end
+
+function remove(Caster, Target, Bonus)
+ RemoveSkillBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/HypotheticalExperimentation.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/HypotheticalExperimentation.lua
new file mode 100755
index 000000000..f7c4889a6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/HypotheticalExperimentation.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\HypotheticalExperimentation.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/IngeniousTrades.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/IngeniousTrades.lua
new file mode 100755
index 000000000..8f5eb409e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/IngeniousTrades.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\IngeniousTrade.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/InstrumentsOfTheUnderfoot.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/InstrumentsOfTheUnderfoot.lua
new file mode 100755
index 000000000..499e8e7be
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/InstrumentsOfTheUnderfoot.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\InstrumentsOfTheUnderfoot.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/IntricateCreations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/IntricateCreations.lua
new file mode 100755
index 000000000..ca159bfdc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/IntricateCreations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\IntricateCreations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/IntricateDesigns.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/IntricateDesigns.lua
new file mode 100755
index 000000000..e5f9dc4ff
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/IntricateDesigns.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\IntricateDesigns.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/KruzzsLuck.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/KruzzsLuck.lua
new file mode 100755
index 000000000..24fccfc8a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/KruzzsLuck.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\KruzzsLuck.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/LegionsQuatermaster.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/LegionsQuatermaster.lua
new file mode 100755
index 000000000..5c7bcd9f7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/LegionsQuatermaster.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\LegionsQuartermaster.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/MagicalTeachings.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/MagicalTeachings.lua
new file mode 100755
index 000000000..9b641e572
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/MagicalTeachings.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\MagicalTeachings.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ManderOfTheMire.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ManderOfTheMire.lua
new file mode 100755
index 000000000..d624d4cfe
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ManderOfTheMire.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ManderOfTheMire.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/MasterOfTheTumpyTonic.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/MasterOfTheTumpyTonic.lua
new file mode 100755
index 000000000..e51a2e2c1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/MasterOfTheTumpyTonic.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\MasterOfTheTumpyTonic.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/MeticulousCraftsmanship.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/MeticulousCraftsmanship.lua
new file mode 100755
index 000000000..84e97cfed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/MeticulousCraftsmanship.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\MeticulousCraftsmanship.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Mithril.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Mithril.lua
new file mode 100755
index 000000000..6e16be280
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Mithril.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Mithril.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/MooshgasTutelage.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/MooshgasTutelage.lua
new file mode 100755
index 000000000..c1e6a0a0b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/MooshgasTutelage.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\MooshgasTutelage.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/MoreGlue.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/MoreGlue.lua
new file mode 100755
index 000000000..70ad456bc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/MoreGlue.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\MoreGlue.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/NaimisTutelage.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/NaimisTutelage.lua
new file mode 100755
index 000000000..05d4a47b7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/NaimisTutelage.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\NaimisTutelage.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/NaturalPrgression.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/NaturalPrgression.lua
new file mode 100755
index 000000000..3f3de0dd0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/NaturalPrgression.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\NaturalProgression.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/NeriakPrecision.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/NeriakPrecision.lua
new file mode 100755
index 000000000..7d563a4a4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/NeriakPrecision.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\NeriakPrecision.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/NobleCrafting.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/NobleCrafting.lua
new file mode 100755
index 000000000..9980228cd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/NobleCrafting.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\NobleCrafting.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/OggokianDurability.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/OggokianDurability.lua
new file mode 100755
index 000000000..5f5ef83cb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/OggokianDurability.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\OggokianDurability.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/OkkokianTrade.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/OkkokianTrade.lua
new file mode 100755
index 000000000..a776f03b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/OkkokianTrade.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\OkkokianTrade.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PantsPatcher.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PantsPatcher.lua
new file mode 100755
index 000000000..0f190e060
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PantsPatcher.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PantsPatcher.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PoisonCrafter.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PoisonCrafter.lua
new file mode 100755
index 000000000..a67fe6fb5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PoisonCrafter.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PoisonCrafter.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Durability per round by 2.0 during Alchemy
+--]]
+
+function cast(Caster, Target, DuraMod)
+
+end
+
+function remove(Caster, Target, DuraMod)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PoisonPlay.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PoisonPlay.lua
new file mode 100755
index 000000000..7d8434eac
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PoisonPlay.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PoisonPlay.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PracticedTinkering.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PracticedTinkering.lua
new file mode 100755
index 000000000..db6fcbe1c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PracticedTinkering.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PracticedTinkering.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PrehelsileTail.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PrehelsileTail.lua
new file mode 100755
index 000000000..312780251
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PrehelsileTail.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PrehelsileTail.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PristineWork.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PristineWork.lua
new file mode 100755
index 000000000..6899804e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PristineWork.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PristineWork.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ProfoundFocus.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ProfoundFocus.lua
new file mode 100755
index 000000000..d1470323a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ProfoundFocus.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ProfoundFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/PursuitOfTheArcane.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/PursuitOfTheArcane.lua
new file mode 100755
index 000000000..bb4529332
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/PursuitOfTheArcane.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\PursuitOfTheArcane.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Reduces power cost of Sage reaction arts by 10%
+--]]
+
+function cast(Caster, Target, Modifier)
+
+end
+
+function remove(Caster, Target, Modifier)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/QuickAssembly.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/QuickAssembly.lua
new file mode 100755
index 000000000..463a21dc7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/QuickAssembly.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\QuickAssembly.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/RallosianReadiness.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/RallosianReadiness.lua
new file mode 100755
index 000000000..5584df923
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/RallosianReadiness.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\RallosianReadiness.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/RubTheMuddOff.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/RubTheMuddOff.lua
new file mode 100755
index 000000000..669d0a15f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/RubTheMuddOff.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\RubTheMuddOff.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SaplingKnowledge.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SaplingKnowledge.lua
new file mode 100755
index 000000000..d006a692f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SaplingKnowledge.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SaplingKnowledge.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Scalesmith.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Scalesmith.lua
new file mode 100755
index 000000000..97b34e471
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Scalesmith.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Scalesmith.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ScholarlyPursuit.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ScholarlyPursuit.lua
new file mode 100755
index 000000000..d3547036a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ScholarlyPursuit.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ScholarlyPursuit.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ScribingsOfThePious.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ScribingsOfThePious.lua
new file mode 100755
index 000000000..65abc619c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ScribingsOfThePious.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ScribingsOfThePious.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SkilledArtistry.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkilledArtistry.lua
new file mode 100755
index 000000000..022c1a090
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkilledArtistry.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SkilledArtistry.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulCreations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulCreations.lua
new file mode 100755
index 000000000..f7b9a2519
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulCreations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SkillfulCreations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulPaws.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulPaws.lua
new file mode 100755
index 000000000..a1616b94e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulPaws.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SkillfulPaws.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulTriumph.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulTriumph.lua
new file mode 100755
index 000000000..d864228b0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SkillfulTriumph.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SkillfulTriumph.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases success chance by 2.0%
+--]]
+
+function cast(Caster, Target, SuccessMod)
+
+end
+
+function remove(Caster, Target, SuccessMod)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SuccessfulCreations.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SuccessfulCreations.lua
new file mode 100755
index 000000000..794b25472
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SuccessfulCreations.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SuccessfulCreations.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases Durability per round by 1.0 and success chance by 1%
+--]]
+
+function cast(Caster, Target, DuraMod, SuccessMod)
+
+end
+
+function remove(Caster, Target, DuraMod, SuccessMod)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/SwiftScamper.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/SwiftScamper.lua
new file mode 100755
index 000000000..83252042e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/SwiftScamper.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\SwiftScamper.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TeachingsOfBrell.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TeachingsOfBrell.lua
new file mode 100755
index 000000000..26c6937de
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TeachingsOfBrell.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TeachingsOfBrell.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TimberShaper.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TimberShaper.lua
new file mode 100755
index 000000000..5bbc1522e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TimberShaper.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TimberShaper.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TinkeredFocus.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TinkeredFocus.lua
new file mode 100755
index 000000000..a91f130ef
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TinkeredFocus.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TinkeredFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TrainedFocus.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TrainedFocus.lua
new file mode 100755
index 000000000..37e22410c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TrainedFocus.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TrainedFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Transmography.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Transmography.lua
new file mode 100755
index 000000000..ca1eb4c50
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Transmography.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Transmography.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TrollGourmet.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TrollGourmet.lua
new file mode 100755
index 000000000..b39a87d64
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TrollGourmet.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TrollGourmet.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TwiddysArtistry.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TwiddysArtistry.lua
new file mode 100755
index 000000000..f18de0e61
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TwiddysArtistry.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TwiddysArtistry.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/TwiddysInsight.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/TwiddysInsight.lua
new file mode 100755
index 000000000..05c0fad07
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/TwiddysInsight.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\TwiddysInsight.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/UnflinchingFocus.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/UnflinchingFocus.lua
new file mode 100755
index 000000000..dcb6f67bb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/UnflinchingFocus.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\UnflinchingFocus.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/UnyieldingDetermination.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/UnyieldingDetermination.lua
new file mode 100755
index 000000000..b771e3a27
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/UnyieldingDetermination.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\UnyieldingDetermination.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.02.01
+ Script Notes : Increases progress gain by 2.0%
+--]]
+
+function cast(Caster, Target, ProgressMod)
+
+end
+
+function remove(Caster, Target, ProgressMod)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/VerifiedHypothesis.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/VerifiedHypothesis.lua
new file mode 100755
index 000000000..6940e89e9
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/VerifiedHypothesis.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\VerifiedHypothesis.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/WeaponForger.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/WeaponForger.lua
new file mode 100755
index 000000000..b9e2fb63c
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/WeaponForger.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\WeaponForger.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/WeaponProduction.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/WeaponProduction.lua
new file mode 100755
index 000000000..212e49a8f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/WeaponProduction.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\WeaponProduction.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/Whipstich.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/Whipstich.lua
new file mode 100755
index 000000000..b06a0a205
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/Whipstich.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\Whipstich.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/Tradeskill/ZealotryOfMarr.lua b/server/Spells/Spells-Copy/Traditions/Tradeskill/ZealotryOfMarr.lua
new file mode 100755
index 000000000..57269d022
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Tradeskill/ZealotryOfMarr.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells\Tradidtions\Tradeskill\ZealotryOfMarr.lua
+ Script Purpose :
+ Script Author : Zcoretri
+ Script Date : 2013.04.02
+ Script Notes :
+--]]
+
+function cast(Caster, Target, Bonus)
+
+end
+
+function remove(Caster, Target, Bonus)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traditions/TrainingoftheKoada`Dal.lua b/server/Spells/Spells-Copy/Traditions/TrainingoftheKoada`Dal.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TrainingoftheKoada`Dal.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/Transmography.lua b/server/Spells/Spells-Copy/Traditions/Transmography.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Transmography.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/TrollGourmet.lua b/server/Spells/Spells-Copy/Traditions/TrollGourmet.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TrollGourmet.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/TundraEndurance.lua b/server/Spells/Spells-Copy/Traditions/TundraEndurance.lua
new file mode 100755
index 000000000..e9128f1cc
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/TundraEndurance.lua
@@ -0,0 +1,11 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/UrbanSprawl.lua b/server/Spells/Spells-Copy/Traditions/UrbanSprawl.lua
new file mode 100755
index 000000000..3647e267d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/UrbanSprawl.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : Spells/Commoner/UrbanSprawl.lua
+ Script Author : John
+ Script Date : 2012.07.07 12:07:26
+ Script Notes : Enter special notes here
+ :
+--]]
+
+function cast(Caster, Target, SkillAmt)
+ AddSkillBonus(Target, 418532101, SkillAmt) -- Slashing
+end
+
+function tick(Caster, Target, Type, Min, Max)
+ -- code to process each call_frequency (tick) set in spell_tiers
+end
+
+function remove(Caster, Target, Type, Min, Max)
+ -- code to remove the spell
+end
+
diff --git a/server/Spells/Spells-Copy/Traditions/Versatility.lua b/server/Spells/Spells-Copy/Traditions/Versatility.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/Versatility.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/VitalityoftheFier`Dal.lua b/server/Spells/Spells-Copy/Traditions/VitalityoftheFier`Dal.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/VitalityoftheFier`Dal.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WarWounds.lua b/server/Spells/Spells-Copy/Traditions/WarWounds.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WarWounds.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WardofGlyphs.lua b/server/Spells/Spells-Copy/Traditions/WardofGlyphs.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WardofGlyphs.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WeaponForger.lua b/server/Spells/Spells-Copy/Traditions/WeaponForger.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WeaponForger.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WeaponProduction.lua b/server/Spells/Spells-Copy/Traditions/WeaponProduction.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WeaponProduction.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WilltoSurvive.lua b/server/Spells/Spells-Copy/Traditions/WilltoSurvive.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WilltoSurvive.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WindWalker.lua b/server/Spells/Spells-Copy/Traditions/WindWalker.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WindWalker.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/WisdomoftheFaydark.lua b/server/Spells/Spells-Copy/Traditions/WisdomoftheFaydark.lua
new file mode 100755
index 000000000..834c73b3e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/WisdomoftheFaydark.lua
@@ -0,0 +1,12 @@
+--[[
+ Script Name : {generic header}
+ Script Purpose :
+ Script Author : John Adams
+ Script Date : 2012.09.08
+ Script Notes : temp script to stop world errors
+--]]
+
+function cast(Caster, Target)
+
+
+end
diff --git a/server/Spells/Spells-Copy/Traditions/dome.bat b/server/Spells/Spells-Copy/Traditions/dome.bat
new file mode 100755
index 000000000..694d4586b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traditions/dome.bat
@@ -0,0 +1,153 @@
+@echo off
+copy SprintIntoBattle.lua BarbaricRage.lua
+copy SprintIntoBattle.lua BattleReprieve.lua
+copy SprintIntoBattle.lua Blizzard.lua
+copy SprintIntoBattle.lua Brewmaster.lua
+copy SprintIntoBattle.lua DefenderofEverfrost.lua
+copy SprintIntoBattle.lua HalasianAuthority.lua
+copy SprintIntoBattle.lua Herbology.lua
+copy SprintIntoBattle.lua WarWounds.lua
+copy SprintIntoBattle.lua SummonHalasianBrew.lua
+copy SprintIntoBattle.lua FaydarksChampion.lua
+copy SprintIntoBattle.lua FueledByHate.lua
+copy SprintIntoBattle.lua FuryofInnoruuk.lua
+copy SprintIntoBattle.lua HatefulMind.lua
+copy SprintIntoBattle.lua Hover.lua
+copy SprintIntoBattle.lua InnoruuksGift.lua
+copy SprintIntoBattle.lua MasteroftheShadows.lua
+copy SprintIntoBattle.lua PoisonCrafter.lua
+copy SprintIntoBattle.lua PoisonExpertise.lua
+copy SprintIntoBattle.lua PursuitoftheArcane.lua
+copy SprintIntoBattle.lua TheFocisMagicalProtection.lua
+copy SprintIntoBattle.lua AggressiveStrike.lua
+copy SprintIntoBattle.lua BodybyButcherblock.lua
+copy SprintIntoBattle.lua DefenderofKaladim.lua
+copy SprintIntoBattle.lua DwarvenFortitude.lua
+copy SprintIntoBattle.lua MasteroftheTumpyTonic.lua
+copy SprintIntoBattle.lua MiningExpertise.lua
+copy SprintIntoBattle.lua RushintoBattle.lua
+copy SprintIntoBattle.lua StrongHeart.lua
+copy SprintIntoBattle.lua WeaponForger.lua
+copy SprintIntoBattle.lua ArcofLightning.lua
+copy SprintIntoBattle.lua CastingFury.lua
+copy SprintIntoBattle.lua Chemist.lua
+copy SprintIntoBattle.lua ClearMind.lua
+copy SprintIntoBattle.lua ErudsTeachings.lua
+copy SprintIntoBattle.lua FallingGrace.lua
+copy SprintIntoBattle.lua IntellectoftheSage.lua
+copy SprintIntoBattle.lua IntellectualFeasting.lua
+copy SprintIntoBattle.lua MagicalProtection.lua
+copy SprintIntoBattle.lua WardofGlyphs.lua
+copy SprintIntoBattle.lua AkanonsInnovation.lua
+copy SprintIntoBattle.lua ChemicalCalculations.lua
+copy SprintIntoBattle.lua ClockworkArmy.lua
+copy SprintIntoBattle.lua FlashofInsight.lua
+copy SprintIntoBattle.lua ForgeInvention.lua
+copy SprintIntoBattle.lua HealthyAppetite.lua
+copy SprintIntoBattle.lua IllusionClockwork.lua
+copy SprintIntoBattle.lua LostintheCrowd.lua
+copy SprintIntoBattle.lua MeldrathsTeachings.lua
+copy SprintIntoBattle.lua SteamfontsMagicalBarrier.lua
+copy SprintIntoBattle.lua Ayr`DalAdornment.lua
+copy SprintIntoBattle.lua Camouflage.lua
+copy SprintIntoBattle.lua ElvenHeritage.lua
+copy SprintIntoBattle.lua ElvenReflexes.lua
+copy SprintIntoBattle.lua ForestNavigation.lua
+copy SprintIntoBattle.lua GiftoftheFaydark.lua
+copy SprintIntoBattle.lua Hardiness.lua
+copy SprintIntoBattle.lua MisfitsTrickery.lua
+copy SprintIntoBattle.lua MixedKnowledge.lua
+copy SprintIntoBattle.lua RebelliousSpirit.lua
+copy SprintIntoBattle.lua TendWounds.lua
+copy SprintIntoBattle.lua AHalflingsFeast.lua
+copy SprintIntoBattle.lua ArcaneKnowledge.lua
+copy SprintIntoBattle.lua ConnoisseurofFineWines.lua
+copy SprintIntoBattle.lua ElvenWisdom.lua
+copy SprintIntoBattle.lua EsotericStudy.lua
+copy SprintIntoBattle.lua FuryofFelwithe.lua
+copy SprintIntoBattle.lua GildingofFelwithe.lua
+copy SprintIntoBattle.lua GracefulMovements.lua
+copy SprintIntoBattle.lua HarmoniousMind.lua
+copy SprintIntoBattle.lua IntricateCreations.lua
+copy SprintIntoBattle.lua TenetofTakish`Hiz.lua
+copy SprintIntoBattle.lua TrainingoftheKoada`Dal.lua
+copy SprintIntoBattle.lua Clothier.lua
+copy SprintIntoBattle.lua Diplomacy.lua
+copy SprintIntoBattle.lua Diversity.lua
+copy SprintIntoBattle.lua EnvironmentalAdaptability.lua
+copy SprintIntoBattle.lua Multitalented.lua
+copy SprintIntoBattle.lua Perserverance.lua
+copy SprintIntoBattle.lua UrbanSprawl.lua
+copy SprintIntoBattle.lua Versatility.lua
+copy SprintIntoBattle.lua WilltoSurvive.lua
+copy SprintIntoBattle.lua DefensiveColoration.lua
+copy SprintIntoBattle.lua ProficientSwimmer.lua
+copy SprintIntoBattle.lua ReptilianAncestry.lua
+copy SprintIntoBattle.lua ArmoroftheFeerrott.lua
+copy SprintIntoBattle.lua BattleRest.lua
+copy SprintIntoBattle.lua BruteStrength.lua
+copy SprintIntoBattle.lua ImpenetrableWill.lua
+copy SprintIntoBattle.lua ManyMarches.lua
+copy SprintIntoBattle.lua OggokianAggression.lua
+copy SprintIntoBattle.lua OggokianTrade.lua
+copy SprintIntoBattle.lua RallosZeksBlessing.lua
+copy SprintIntoBattle.lua RallosianReadiness.lua
+copy SprintIntoBattle.lua RockThrower.lua
+copy SprintIntoBattle.lua ShoulderSlam.lua
+copy SprintIntoBattle.lua Antidote.lua
+copy SprintIntoBattle.lua DarkAgenda.lua
+copy SprintIntoBattle.lua InstrumentsoftheUnderfoot.lua
+copy SprintIntoBattle.lua PitifulPlea.lua
+copy SprintIntoBattle.lua PoisonPlay.lua
+copy SprintIntoBattle.lua RodentReflexes.lua
+copy SprintIntoBattle.lua ShadowLurker.lua
+copy SprintIntoBattle.lua SoulMending.lua
+copy SprintIntoBattle.lua StreetThug.lua
+copy SprintIntoBattle.lua BogBully.lua
+copy SprintIntoBattle.lua CazicThulesGift.lua
+copy SprintIntoBattle.lua GiftoftheInnothule.lua
+copy SprintIntoBattle.lua InnothulesBlessing.lua
+copy SprintIntoBattle.lua ManiacalMadness.lua
+copy SprintIntoBattle.lua MenderoftheMire.lua
+copy SprintIntoBattle.lua SummonFilthyWater.lua
+copy SprintIntoBattle.lua SwampBreath.lua
+copy SprintIntoBattle.lua TastyThings.lua
+copy SprintIntoBattle.lua ThulesGuidance.lua
+copy SprintIntoBattle.lua TrollGourmet.lua
+copy SprintIntoBattle.lua Camo.lua
+copy SprintIntoBattle.lua ElvishSpirits.lua
+copy SprintIntoBattle.lua FaydwerFashions.lua
+copy SprintIntoBattle.lua ForestFire.lua
+copy SprintIntoBattle.lua KeeperoftheForest.lua
+copy SprintIntoBattle.lua LightFooted.lua
+copy SprintIntoBattle.lua NaturalRecovery.lua
+copy SprintIntoBattle.lua ShieldofNature.lua
+copy SprintIntoBattle.lua VitalityoftheFier`Dal.lua
+copy SprintIntoBattle.lua WisdomoftheFaydark.lua
+copy SprintIntoBattle.lua AerialDodging.lua
+copy SprintIntoBattle.lua EscapingDive.lua
+copy SprintIntoBattle.lua FaeDexterity.lua
+copy SprintIntoBattle.lua FaeFlight.lua
+copy SprintIntoBattle.lua Featherfall.lua
+copy SprintIntoBattle.lua ForestKnowledge.lua
+copy SprintIntoBattle.lua Glide.lua
+copy SprintIntoBattle.lua MagicoftheFae.lua
+copy SprintIntoBattle.lua MagicalTeachings.lua
+copy SprintIntoBattle.lua ToxicProtection.lua
+copy SprintIntoBattle.lua WindWalker.lua
+copy SprintIntoBattle.lua AerialDodging.lua
+copy SprintIntoBattle.lua ArasaiFlight.lua
+copy SprintIntoBattle.lua ArasaiSavvy.lua
+copy SprintIntoBattle.lua ArasaisEndurance.lua
+copy SprintIntoBattle.lua DarkEnvy.lua
+copy SprintIntoBattle.lua MagicProtection.lua
+copy SprintIntoBattle.lua NeriakPrecision.lua
+copy SprintIntoBattle.lua Transmography.lua
+copy SprintIntoBattle.lua CarpentersTouch.lua
+copy SprintIntoBattle.lua HerbalSupplementation.lua
+copy SprintIntoBattle.lua HuntersFury.lua
+copy SprintIntoBattle.lua Junglewalk.lua
+copy SprintIntoBattle.lua ReflexiveLanding.lua
+copy SprintIntoBattle.lua Spirituality.lua
+copy SprintIntoBattle.lua Stride.lua
+copy SprintIntoBattle.lua WeaponProduction.lua
diff --git a/server/Spells/Spells-Copy/Traits/Agile.lua b/server/Spells/Spells-Copy/Traits/Agile.lua
new file mode 100755
index 000000000..5ae5428b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Agile.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Agile.lua
+ Script Purpose : Increases Agility by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Attentive.lua b/server/Spells/Spells-Copy/Traits/Attentive.lua
new file mode 100755
index 000000000..ca6b582c1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Attentive.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Attentive.lua
+ Script Purpose : Increases In-Combat Power Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 601, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Brawny.lua b/server/Spells/Spells-Copy/Traits/Brawny.lua
new file mode 100755
index 000000000..a6e00b258
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Brawny.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Brawny.lua
+ Script Purpose : Increases Strength by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.22
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 0, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Brilliant.lua b/server/Spells/Spells-Copy/Traits/Brilliant.lua
new file mode 100755
index 000000000..0b5be2d48
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Brilliant.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Brilliant.lua
+ Script Purpose : Increases Intelligence by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 4, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Cabalistic.lua b/server/Spells/Spells-Copy/Traits/Cabalistic.lua
new file mode 100755
index 000000000..824f503b6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Cabalistic.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Cabalistic.lua
+ Script Purpose : Increases mitigation vs arcane damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Calm.lua b/server/Spells/Spells-Copy/Traits/Calm.lua
new file mode 100755
index 000000000..22fca32ba
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Calm.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Calm.lua
+ Script Purpose : Increases In-Combat Power Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 601, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Centered.lua b/server/Spells/Spells-Copy/Traits/Centered.lua
new file mode 100755
index 000000000..6bc5b7da8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Centered.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Centered.lua
+ Script Purpose : Increases Max Power by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.07.22
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Clever.lua b/server/Spells/Spells-Copy/Traits/Clever.lua
new file mode 100755
index 000000000..019012fd4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Clever.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Clever.lua
+ Script Purpose : Increases Intelligence by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 4, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/ColdBlooded.lua b/server/Spells/Spells-Copy/Traits/ColdBlooded.lua
new file mode 100755
index 000000000..f7b64b5be
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/ColdBlooded.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/ColdBlooded.lua
+ Script Purpose : Increases mitigation vs elemental damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 203, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Concentration.lua b/server/Spells/Spells-Copy/Traits/Concentration.lua
new file mode 100755
index 000000000..70bb12374
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Concentration.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Concentration.lua
+ Script Purpose : Increases In-Combat Power Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 601, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Cryptic.lua b/server/Spells/Spells-Copy/Traits/Cryptic.lua
new file mode 100755
index 000000000..3508d2a4d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Cryptic.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Cryptic.lua
+ Script Purpose : Increases mitigation vs arcane damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Dauntless.lua b/server/Spells/Spells-Copy/Traits/Dauntless.lua
new file mode 100755
index 000000000..693bd0803
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Dauntless.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Dauntless.lua
+ Script Purpose : Increases Max Health by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurHealth = GetMaxHealth(Target)
+ BonusAmt = CurHealth * Modifier
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Deft.lua b/server/Spells/Spells-Copy/Traits/Deft.lua
new file mode 100755
index 000000000..b359858cd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Deft.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Deft.lua
+ Script Purpose : Increases Agility by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Devout.lua b/server/Spells/Spells-Copy/Traits/Devout.lua
new file mode 100755
index 000000000..6a5660034
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Devout.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Devout.lua
+ Script Purpose : Increases mitigation vs noxious damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 209, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Dexterous.lua b/server/Spells/Spells-Copy/Traits/Dexterous.lua
new file mode 100755
index 000000000..9504e51e7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Dexterous.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Dexterous.lua
+ Script Purpose : Increases Agility by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Durable.lua b/server/Spells/Spells-Copy/Traits/Durable.lua
new file mode 100755
index 000000000..1047c1b26
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Durable.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Durable.lua
+ Script Purpose : Increases Stamina by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 1, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Enduring.lua b/server/Spells/Spells-Copy/Traits/Enduring.lua
new file mode 100755
index 000000000..e8f86f252
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Enduring.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Enduring.lua
+ Script Purpose : Increases Stamina by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 1, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Enlightened.lua b/server/Spells/Spells-Copy/Traits/Enlightened.lua
new file mode 100755
index 000000000..364412f39
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Enlightened.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Enlightened.lua
+ Script Purpose : Increases Wisdom by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 3, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Fireborn.lua b/server/Spells/Spells-Copy/Traits/Fireborn.lua
new file mode 100755
index 000000000..656cf1ae6
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Fireborn.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Fireborn.lua
+ Script Purpose : Increases mitigation vs elemental damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Focused.lua b/server/Spells/Spells-Copy/Traits/Focused.lua
new file mode 100755
index 000000000..de4e13e66
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Focused.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Focused.lua
+ Script Purpose : Increases Max Power by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Force.lua b/server/Spells/Spells-Copy/Traits/Force.lua
new file mode 100755
index 000000000..9be702be3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Force.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Force.lua
+ Script Purpose : Increases Strength by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 0, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Frostborn.lua b/server/Spells/Spells-Copy/Traits/Frostborn.lua
new file mode 100755
index 000000000..a66c84422
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Frostborn.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Frostborn.lua
+ Script Purpose : Increases mitigation vs elemental damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 203, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Halcyon.lua b/server/Spells/Spells-Copy/Traits/Halcyon.lua
new file mode 100755
index 000000000..e931caec1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Halcyon.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Halcyon.lua
+ Script Purpose : Increases Max Power by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Hardened.lua b/server/Spells/Spells-Copy/Traits/Hardened.lua
new file mode 100755
index 000000000..17513c391
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Hardened.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Hardened.lua
+ Script Purpose : Increases mitigation vs physical damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 200, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Hardy.lua b/server/Spells/Spells-Copy/Traits/Hardy.lua
new file mode 100755
index 000000000..20462c2a0
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Hardy.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Hardy.lua
+ Script Purpose : Increases mitigation vs physical damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 200, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Healthy.lua b/server/Spells/Spells-Copy/Traits/Healthy.lua
new file mode 100755
index 000000000..ea105b4c4
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Healthy.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Healthy.lua
+ Script Purpose : Increases In-Combat Health Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 600, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Hygienic.lua b/server/Spells/Spells-Copy/Traits/Hygienic.lua
new file mode 100755
index 000000000..9828b8f67
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Hygienic.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Hygienic.lua
+ Script Purpose : Increases mitigation vs noxiuos damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 209, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Insightful.lua b/server/Spells/Spells-Copy/Traits/Insightful.lua
new file mode 100755
index 000000000..6106a82a8
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Insightful.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Insightful.lua
+ Script Purpose : Increases Wisdom by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.22
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 3, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Intelligent.lua b/server/Spells/Spells-Copy/Traits/Intelligent.lua
new file mode 100755
index 000000000..1e563281d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Intelligent.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Intelligent.lua
+ Script Purpose : Increases Intelligence by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 4, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Intent.lua b/server/Spells/Spells-Copy/Traits/Intent.lua
new file mode 100755
index 000000000..cb23ce5ab
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Intent.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Intent.lua
+ Script Purpose : Increases mitigation vs arcane damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Intrepid.lua b/server/Spells/Spells-Copy/Traits/Intrepid.lua
new file mode 100755
index 000000000..a36451f3d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Intrepid.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Intrepid.lua
+ Script Purpose : Increases In-Combat Health Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 600, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Lively.lua b/server/Spells/Spells-Copy/Traits/Lively.lua
new file mode 100755
index 000000000..caf495432
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Lively.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Lively.lua
+ Script Purpose : Increases In-Combat Health Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 600, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Lucid.lua b/server/Spells/Spells-Copy/Traits/Lucid.lua
new file mode 100755
index 000000000..b8434c89d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Lucid.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Lucid.lua
+ Script Purpose : Increases In-Combat Power Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 601, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Muscular.lua b/server/Spells/Spells-Copy/Traits/Muscular.lua
new file mode 100755
index 000000000..c73324488
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Muscular.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Muscular.lua
+ Script Purpose : Increases Strength by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 0, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Nimble.lua b/server/Spells/Spells-Copy/Traits/Nimble.lua
new file mode 100755
index 000000000..fe87ae71a
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Nimble.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Nimble.lua
+ Script Purpose : Increases Agility by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Perceptive.lua b/server/Spells/Spells-Copy/Traits/Perceptive.lua
new file mode 100755
index 000000000..19f91e238
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Perceptive.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Perceptive.lua
+ Script Purpose : Increases Wisdom by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 3, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Powerful.lua b/server/Spells/Spells-Copy/Traits/Powerful.lua
new file mode 100755
index 000000000..0fcc00474
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Powerful.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Powerful.lua
+ Script Purpose : Increases Strength by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 0, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Pristine.lua b/server/Spells/Spells-Copy/Traits/Pristine.lua
new file mode 100755
index 000000000..1fecd6b27
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Pristine.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Pristine.lua
+ Script Purpose : Increases mitigation vs noxious damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 209, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Purity.lua b/server/Spells/Spells-Copy/Traits/Purity.lua
new file mode 100755
index 000000000..550fa432b
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Purity.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Purity.lua
+ Script Purpose : Increases mitigation vs noxious damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 209, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Recondite.lua b/server/Spells/Spells-Copy/Traits/Recondite.lua
new file mode 100755
index 000000000..fe9904cf7
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Recondite.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Recondite.lua
+ Script Purpose : Increases mitigation vs arcane damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Resilient.lua b/server/Spells/Spells-Copy/Traits/Resilient.lua
new file mode 100755
index 000000000..0b4fda24f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Resilient.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Resilient.lua
+ Script Purpose : Increases mitigation vs elemental damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 203, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Resistant.lua b/server/Spells/Spells-Copy/Traits/Resistant.lua
new file mode 100755
index 000000000..062800425
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Resistant.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Resistant.lua
+ Script Purpose : Increases mitigation vs physical damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 200, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Resolute.lua b/server/Spells/Spells-Copy/Traits/Resolute.lua
new file mode 100755
index 000000000..910a39feb
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Resolute.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Resolute.lua
+ Script Purpose : Increases Stamina by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 1, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Rigid.lua b/server/Spells/Spells-Copy/Traits/Rigid.lua
new file mode 100755
index 000000000..9be63a1bd
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Rigid.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Rigid.lua
+ Script Purpose : Increases mitigation vs physical damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 200, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Robust.lua b/server/Spells/Spells-Copy/Traits/Robust.lua
new file mode 100755
index 000000000..3d67dc9b1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Robust.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Robust.lua
+ Script Purpose : Increases Max Health by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurHealth = GetMaxHealth(Target)
+ BonusAmt = CurHealth * Modifier
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Sanitary.lua b/server/Spells/Spells-Copy/Traits/Sanitary.lua
new file mode 100755
index 000000000..69ef6e478
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Sanitary.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Sanitary.lua
+ Script Purpose : Increases mitigation vs noxious damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 209, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Savvy.lua b/server/Spells/Spells-Copy/Traits/Savvy.lua
new file mode 100755
index 000000000..2c7709b09
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Savvy.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Savvy.lua
+ Script Purpose : Increases Intelligence by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 4, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Serene.lua b/server/Spells/Spells-Copy/Traits/Serene.lua
new file mode 100755
index 000000000..bb13e1844
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Serene.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Serene.lua
+ Script Purpose : Increases Max Power by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurPower = GetMaxPower(Target)
+ BonusAmt = CurPower * Modifier
+ AddSpellBonus(Target, 501, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Sharp.lua b/server/Spells/Spells-Copy/Traits/Sharp.lua
new file mode 100755
index 000000000..034bf7ce5
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Sharp.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Sharp.lua
+ Script Purpose : Increases Intelligence by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 4, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Spry.lua b/server/Spells/Spells-Copy/Traits/Spry.lua
new file mode 100755
index 000000000..d4ca6ff81
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Spry.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Spry.lua
+ Script Purpose : Increases Agility by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 2, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Stalwart.lua b/server/Spells/Spells-Copy/Traits/Stalwart.lua
new file mode 100755
index 000000000..598da46ed
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Stalwart.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Stalwart.lua
+ Script Purpose : Increases In-Combat Health Regen by 5.0
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ AddSpellBonus(Target, 600, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Stout.lua b/server/Spells/Spells-Copy/Traits/Stout.lua
new file mode 100755
index 000000000..72fd105bf
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Stout.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Stout.lua
+ Script Purpose : Increases Max Health by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurHealth = GetMaxHealth(Target)
+ BonusAmt = CurHealth * Modifier
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Strong.lua b/server/Spells/Spells-Copy/Traits/Strong.lua
new file mode 100755
index 000000000..30559bc42
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Strong.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Strong.lua
+ Script Purpose : Increases Strength by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 0, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Sturdy.lua b/server/Spells/Spells-Copy/Traits/Sturdy.lua
new file mode 100755
index 000000000..0d21b7392
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Sturdy.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : Spells\Traditions\Pools\Sturdy.lua
+ Script Purpose : Increases Max Health by 2.5%
+ Script Author : Zcoretri
+ Script Date : 2012.09.11
+--]]
+
+function cast(Caster, Target, Modifier)
+ CurHealth = GetMaxHealth(Target)
+ BonusAmt = CurHealth * Modifier
+ AddSpellBonus(Target, 500, BonusAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Tough.lua b/server/Spells/Spells-Copy/Traits/Tough.lua
new file mode 100755
index 000000000..daabfea85
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Tough.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Tough.lua
+ Script Purpose : Increases mitigation vs physical damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 200, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Transcendent.lua b/server/Spells/Spells-Copy/Traits/Transcendent.lua
new file mode 100755
index 000000000..733760079
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Transcendent.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Transcendent.lua
+ Script Purpose : Increases mitigation vs arcane damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Untainted.lua b/server/Spells/Spells-Copy/Traits/Untainted.lua
new file mode 100755
index 000000000..1b168b2b2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Untainted.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Untainted.lua
+ Script Purpose : Increases mitigation vs noxious damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 209, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Unyielding.lua b/server/Spells/Spells-Copy/Traits/Unyielding.lua
new file mode 100755
index 000000000..ebc01e6b3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Unyielding.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Unyielding.lua
+ Script Purpose : Increases mitigation vs physical damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 200, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Vigorous.lua b/server/Spells/Spells-Copy/Traits/Vigorous.lua
new file mode 100755
index 000000000..c967398e2
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Vigorous.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Vigorous.lua
+ Script Purpose : Increases Stamina by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 1, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Visionary.lua b/server/Spells/Spells-Copy/Traits/Visionary.lua
new file mode 100755
index 000000000..34f14d0a3
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Visionary.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Visionary.lua
+ Script Purpose : Increases Wisdom by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 3, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Vital.lua b/server/Spells/Spells-Copy/Traits/Vital.lua
new file mode 100755
index 000000000..cb1b6e82d
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Vital.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Vital.lua
+ Script Purpose : Increases Stamina by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 1, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/WarmBlooded.lua b/server/Spells/Spells-Copy/Traits/WarmBlooded.lua
new file mode 100755
index 000000000..adff497ea
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/WarmBlooded.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Warmblooded.lua
+ Script Purpose : Increases mitigation vs elemental damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 203, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Weathered.lua b/server/Spells/Spells-Copy/Traits/Weathered.lua
new file mode 100755
index 000000000..3008bfc5e
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Weathered.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Weathered.lua
+ Script Purpose : Increases mitigation vs elemental damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 203, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Willed.lua b/server/Spells/Spells-Copy/Traits/Willed.lua
new file mode 100755
index 000000000..575a49c3f
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Willed.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells/Traits/Willed.lua
+ Script Purpose : Increases mitigation vs arcane damage by 270
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 205, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Traits/Wise.lua b/server/Spells/Spells-Copy/Traits/Wise.lua
new file mode 100755
index 000000000..91409cbc1
--- /dev/null
+++ b/server/Spells/Spells-Copy/Traits/Wise.lua
@@ -0,0 +1,14 @@
+--[[
+ Script Name : Spells\Traits\Wise.lua
+ Script Purpose : Increases Wisdom by 4
+ Script Author : Zcoretri
+ Script Date : 2012.07.30
+--]]
+
+function cast(Caster, Target, StatAmt)
+ AddSpellBonus(Target, 3, StatAmt)
+end
+
+function remove(Caster, Target, StatAmt)
+ RemoveSpellBonus(Target)
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/Weakness.lua b/server/Spells/Spells-Copy/Weakness.lua
new file mode 100755
index 000000000..d8a63d630
--- /dev/null
+++ b/server/Spells/Spells-Copy/Weakness.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/Weakness.lua
+ Script Author : neatz09
+ Script Date : 2020.05.11 07:05:11
+ Script Purpose :
+ :
+--]]
+
+-- Info from spell_display_effects (remove from script when done)
+-- Dispels when an Advantage is used
+-- Allows the beastlord to use advantages!
+
+function cast(Caster, Target)
+
+end
diff --git a/server/Spells/Spells-Copy/blank.lua b/server/Spells/Spells-Copy/blank.lua
new file mode 100755
index 000000000..9dc10a3d1
--- /dev/null
+++ b/server/Spells/Spells-Copy/blank.lua
@@ -0,0 +1,5 @@
+-- DO NOT DELETE - needed for reference_spell_effects testing
+function cast(Caster, Target)
+
+end
+
diff --git a/server/Spells/Spells-Copy/commands.lua b/server/Spells/Spells-Copy/commands.lua
new file mode 100755
index 000000000..9078f3735
--- /dev/null
+++ b/server/Spells/Spells-Copy/commands.lua
@@ -0,0 +1,121 @@
+--[[
+ Script Name : Spells/commands.lua
+ Script Purpose : Process game "commands" that use a cast bar
+ Script Author : Everyone
+ Script Date : Anytime
+ Script Notes : Use spells_data to link to the specific command(s)
+--]]
+
+function cast(Caster, Target, Type)
+ -- JA: commenting out other functions since revamp of database renders the IDs/Spawns invalid (2013/08/18)
+ if Type == "ThrowSnowball" then
+ ThrowSnowball(Caster, Target)
+ end
+--[[
+ if Type == "Examine" then
+ Examine(Caster, Target)
+ elseif Type == "Grab Soil" then
+ GrabSoil(Caster, Target)
+ elseif Type == "Plant Seeds" then
+ PlantSeeds(Caster, Target)
+ elseif Type == "Burn Tent" then
+ BurnTent(Caster, Target)
+ elseif Type == "Destroy Totem" then
+ DestroyTotem(Caster, Target)
+ elseif Type == "Smack Hive" then
+ SmackHive(Caster, Target)
+ elseif Type == "Help Down" then
+ HelpDown(Caster, Target)
+ elseif Type == "Read Gravestone" then
+ ReadGravestone(Caster, Target)
+ elseif Type == "ClimbTheBench" then
+ ClimbTheBench(Caster, Target)
+ elseif Type == "PullYourselfThroughTheFoliage" then
+ PullYourselfThroughTheFoliage(Caster, Target)
+ elseif Type == "InspectBox" then
+ InspectBox(Caster, Target)
+ elseif Type == "ThrowSnowball" then
+ ThrowSnowball(Caster, Target)
+ end
+--]]
+end
+
+function GrabSoil(Caster, Target)
+ if HasQuest(Caster, 60) and not QuestStepIsComplete(Caster, 60, 3) then
+ -- Mana-Enriched Soil
+ SummonItem(Caster, 6463)
+ end
+end
+
+function PlantSeeds(Caster, Target)
+end
+
+function BurnTent(Caster, Target)
+ BurnSpawn = GetSpawn(Target, 2780218)
+ SpawnSet(BurnSpawn, "visual_state", "6866")
+ SpawnSet(Target, "show_command_icon", "0")
+
+ KillSpawn(Target, Caster, 0) -- kill the tent to get journal update
+ KillSpawn(BurnSpawn, Caster, 0) -- kill the cube to put out the "tent/'s fire"
+end
+
+function DestroyTotem(Caster, Target)
+ SpawnSet(Target, "destroy_totem", "0")
+ SpawnSet(Target, "show_command_icon", "0")
+ KillSpawn(Target, Caster)
+end
+
+function SmackHive(Caster, Target)
+ SpawnSet(Target, "show_command_icon", 0)
+
+ -- 20% chance to spawn a Queen bee
+ -- 80% chance to spawn a soldier bee
+ choice = math.random(1, 100)
+
+ if choice <= 20 then
+ -- spawn a Queen bee
+ SpawnMob(GetZone(Target), 2780092, false, GetX(Target), GetY(Target), GetZ(Target))
+ else
+ -- spawn a soldier bee
+ SpawnMob(GetZone(Target), 2780088, false, GetX(Target), GetY(Target), GetZ(Target))
+ end
+
+ AddTimer(Target, 60000, "enable_command_icon_beeHive")
+end
+
+function HelpDown(Caster, Target)
+ SpawnSet(Target, "show_command_icon", 0)
+ SpawnMob(GetZone(Caster), 2530232, false, 268.05, -5.08, -10.95, 101.63)
+ Despawn(Target)
+ newHalfling = GetSpawn(Caster, 2530232)
+
+ --temporary. the poor halfling will climb back into the tree when the Moraks respawn
+ AddTimer(newHalfling, 30000, "ClimbTree")
+end
+
+function Examine(Caster, Target)
+end
+
+function ReadGravestone(Caster, Target)
+ SpawnMob(GetZone(Caster), 1960199, false, 967.581, -17.0745, -821.035, 159.344)
+ UlinirBush = GetSpawn(Caster, 1960199)
+ Ilaen = GetSpawn(Caster, 1960126)
+ PlayFlavor(Ilaen, "voiceover/english/tutorial_revamp/ilaen_lilac/qey_adv02_ruins_revamp/qst_woodelf_ilaen_lilac_ulinir_d84a1bb.mp3", "You are wise to know Ulinir is worth your time. Speak with me if you wish to use your wisdom for a greater good.", "", 1864539566, 4233668295, Caster)
+ AddTimer(UlinirBush, 30000, "DespawnBush")
+end
+
+function ClimbTheBench(Caster, Target)
+ SetPosition(Caster, 761.79, -20.38, 314.48)
+end
+
+function PullYourselfThroughTheFoliage(Caster, Target)
+ SetPosition(Caster, 743.47, -20.35, 306.85)
+end
+
+function InspectBox(Caster, Target)
+ SetStepComplete(Caster, 142, 3)
+end
+
+function ThrowSnowball(Caster, Target)
+ SpawnSet(Caster, "visual_state", "1224")
+end
\ No newline at end of file
diff --git a/server/Spells/Spells-Copy/gm_spells.lua b/server/Spells/Spells-Copy/gm_spells.lua
new file mode 100755
index 000000000..620f5ef6e
--- /dev/null
+++ b/server/Spells/Spells-Copy/gm_spells.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : Spells/gm_spells.lua
+ Script Purpose : Handles all GM spells
+ Script Author : GMS !
+ Script Date : Anytime
+ Script Notes : Use spells_data to link to the specific command(s)
+--]]
+
+function cast(Caster, Target, Type)
+ if Type == "MoonJump" then
+ MoonJump(Caster, Target)
+ end
+end
+
+function MoonJump(Caster, Target)
+ SetServerControlFlag(Caster, 4, 16, 1)
+end
\ No newline at end of file
diff --git a/server/Spells/Summoner/Level1Pet.lua b/server/Spells/Summoner/Level1Pet.lua
new file mode 100755
index 000000000..5fbd5ebb8
--- /dev/null
+++ b/server/Spells/Summoner/Level1Pet.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Summoner/Level1Pet.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.03.09 07:03:13
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PetID, Dif, HPMod, PWMod, Sz, SList)
+ Pet = SummonPet(Caster, PetID)
+ local Level = GetLevel(Pet)
+ local HP = Level * HPMod
+ local PW = Level * PWMod
+ local CasterInt = GetInt(Caster)
+ local StrMod = Dif * 3
+ local Str = CasterInt + StrMod
+ local NewHP = math.floor(HP)
+ local NewPW = math.floor(PW)
+
+ SpawnSet(Pet, "difficulty", Dif)
+ SpawnSet(Pet, "size", Sz)
+ --SetSpellList(Pet, SList)
+ SetMaxHP(Pet, NewHP)
+ ModifyHP(Pet, NewHP)
+ SetMaxPower(Pet, NewPW)
+ ModifyPower(Pet, NewPW)
+
+ --Set Pet Attributes
+ SetInfoStructFloat(Pet, "str", Str)
+ SetStrBase(Pet, Str)
+ SetInfoStructFloat(Pet, "agi", CasterInt)
+ SetAgiBase(Pet, CasterInt)
+ SetInfoStructFloat(Pet, "sta", CasterInt)
+ SetStaBase(Pet, CasterInt)
+ SetInfoStructFloat(Pet, "intel", CasterInt)
+ SetIntBase(Pet, CasterInt)
+ SetInfoStructFloat(Pet, "wis", CasterInt)
+ SetWisBase(Pet, CasterInt)
+
+ end
+
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
diff --git a/server/Spells/Summoner/TellurianRecruit.lua b/server/Spells/Summoner/TellurianRecruit.lua
new file mode 100755
index 000000000..536a349e3
--- /dev/null
+++ b/server/Spells/Summoner/TellurianRecruit.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Summoner/TellurianRecruit.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.13 03:11:51
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PetID, Dif, NotUsed, HPMod, PWMod, Sz, SList)
+ Pet = SummonPet(Caster, PetID, 23)
+ local Level = GetLevel(Pet)
+ local HP = Level * HPMod
+ local PW = Level * PWMod
+ local CasterInt = GetInt(Caster)
+ local StrMod = Dif * 3
+ local Str = CasterInt + StrMod
+ local NewHP = math.floor(HP)
+ local NewPW = math.floor(PW)
+
+ SpawnSet(Pet, "difficulty", Dif)
+ SpawnSet(Pet, "size", Sz)
+ SetSpellList(Pet, SList)
+ SetMaxHP(Pet, NewHP)
+ ModifyHP(Pet, NewHP)
+ SetMaxPower(Pet, NewPW)
+ ModifyPower(Pet, NewPW)
+
+ --Set Pet Attributes
+ SetInfoStructFloat(Pet, "str", Str)
+ SetStrBase(Pet, Str)
+ SetInfoStructFloat(Pet, "agi", CasterInt)
+ SetAgiBase(Pet, CasterInt)
+ SetInfoStructFloat(Pet, "sta", CasterInt)
+ SetStaBase(Pet, CasterInt)
+ SetInfoStructFloat(Pet, "intel", CasterInt)
+ SetIntBase(Pet, CasterInt)
+ SetInfoStructFloat(Pet, "wis", CasterInt)
+ SetWisBase(Pet, CasterInt)
+
+ end
+
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
diff --git a/server/Spells/Summoner/TellurianRecruitV2.lua b/server/Spells/Summoner/TellurianRecruitV2.lua
new file mode 100755
index 000000000..99415c6eb
--- /dev/null
+++ b/server/Spells/Summoner/TellurianRecruitV2.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : Spells/Summoner/TellurianRecruitV2.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.22 01:11:59
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, PetID, SpellList, SpawnScript)
+ -- Summons a pet
+ SummonPet(Caster, PetID)
+ Pet=GetPet(Caster)
+ SetSpellList(Pet, SpellList)
+ SpawnSet(Pet, "spawn_script", SpawnScript)
+end
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
diff --git a/server/Spells/Summoner/TellurianRecruit_App1.lua b/server/Spells/Summoner/TellurianRecruit_App1.lua
new file mode 100755
index 000000000..746a215b3
--- /dev/null
+++ b/server/Spells/Summoner/TellurianRecruit_App1.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Summoner/TellurianRecruit_App1.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.12 09:11:37
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, PetID)
+ -- Summons a pet
+ SummonPet(Caster, PetID)
+
+ -- Basic fomula for hp/power
+ pet = GetPet(Caster)
+ local Level = GetLevel(pet)
+ local power = Level *10 + Level*2
+ local hp = Level*10 + Level*2
+ SpawnSet(pet, "hp", hp)
+ SpawnSet(pet, "power", power)
+
+end
+
+function remove(Caster, Target)
+ pet = GetPet(Caster)
+ if pet ~= nil then
+ DismissPet(pet)
+ end
+end
+--]]
+
+
diff --git a/server/Spells/Tradeskills/DurabilityAdd.lua b/server/Spells/Tradeskills/DurabilityAdd.lua
index c988ff312..d61cb6cb7 100755
--- a/server/Spells/Tradeskills/DurabilityAdd.lua
+++ b/server/Spells/Tradeskills/DurabilityAdd.lua
@@ -6,8 +6,9 @@
Script Notes :
--]]
-function cast(Caster, Target, DurabilityAmount)
+function cast(Caster, Target, DurabilityAmount, Power)
AddSpellBonus(Caster, 801, DurabilityAmount)
+ SetPower( Caster, GetPower(Caster) - GetPCTOfPower(Caster, 15))
end
function remove(Caster, Target, DurabilityAmount)
diff --git a/server/Spells/Tradeskills/ProgressAdd.lua b/server/Spells/Tradeskills/ProgressAdd.lua
index 402e33dde..5ff4dc4f3 100755
--- a/server/Spells/Tradeskills/ProgressAdd.lua
+++ b/server/Spells/Tradeskills/ProgressAdd.lua
@@ -8,6 +8,7 @@
function cast(Caster, Target, ProgressAmount)
AddSpellBonus(Caster, 802, ProgressAmount)
+ SetPower( Caster, GetPower(Caster) - GetPCTOfPower(Caster,15))
end
function remove(Caster, Target, ProgressAmount)
diff --git a/server/Spells/Traditions/BadgerThrash.lua b/server/Spells/Traditions/BadgerThrash.lua
new file mode 100755
index 000000000..e62b4bd7e
--- /dev/null
+++ b/server/Spells/Traditions/BadgerThrash.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : Spells/Traditions/BadgerThrash.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 06:09:16
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, DmgType, LowDmg, HighDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalLow = LowDmg + math.floor(DmgBonus)
+ TotalHigh = HighDmg + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, TotalLow, TotalHigh)
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DmgType, TotalLow, TotalHigh)
+ SpellDamage(Target, DmgType, TotalLow, TotalHigh)
+
+ end
+end
diff --git a/server/Spells/Traditions/Choke.lua b/server/Spells/Traditions/Choke.lua
new file mode 100755
index 000000000..e22435053
--- /dev/null
+++ b/server/Spells/Traditions/Choke.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Traditions/Choke.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 11:09:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
diff --git a/server/Spells/Traditions/Despair.lua b/server/Spells/Traditions/Despair.lua
new file mode 100755
index 000000000..4c93c520b
--- /dev/null
+++ b/server/Spells/Traditions/Despair.lua
@@ -0,0 +1,55 @@
+--[[
+ Script Name : Spells/Traditions/Despair.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.27 08:09:20
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddControlEffect(Target, 2)
+ end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2790)
+ else
+ SpawnSet(Target,"visual_state",2790)
+ end
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+ SpawnSet(Target,"visual_state",35558)
+end
diff --git a/server/Spells/Traditions/DullClawClamp.lua b/server/Spells/Traditions/DullClawClamp.lua
new file mode 100755
index 000000000..30bdbdb02
--- /dev/null
+++ b/server/Spells/Traditions/DullClawClamp.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Traditions/DullClawClamp.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.12 04:10:56
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 5
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = math.floor(LvlBonus + StatBonus) * 2
+
+ MaxDmg = MaxVal + DmgBonus
+ MinDmg = MinVal + DmgBonus
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/InfectiousTouch.lua b/server/Spells/Traditions/InfectiousTouch.lua
new file mode 100755
index 000000000..2cfc766a5
--- /dev/null
+++ b/server/Spells/Traditions/InfectiousTouch.lua
@@ -0,0 +1,44 @@
+--[[
+ Script Name : Spells/Traditions/InfectiousTouch.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 06:09:02
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MainDmg, DoTDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalDmg = MainDmg + math.floor(DmgBonus)
+
+
+ SpellDamage(Target, DmgType, MainDmg, MainDmg)
+end
+
+
+function tick(Caster, Target, DmgType, MainDmg, DoTDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 11
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalDoT = DoTDmg + math.floor(DmgBonus)
+
+
+ SpellDamage(Target, DmgType, TotalDoT, TotalDoT)
+end
diff --git a/server/Spells/Traditions/LashingTongue.lua b/server/Spells/Traditions/LashingTongue.lua
index bf18431d6..1daa10995 100755
--- a/server/Spells/Traditions/LashingTongue.lua
+++ b/server/Spells/Traditions/LashingTongue.lua
@@ -15,5 +15,26 @@
--]]
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end
\ No newline at end of file
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddControlEffect(Target, 4)
+ end
+
+ function remove(Caster, Target)
+ RemoveControlEffect(Target, 4)
+
+end
+
diff --git a/server/Spells/Traditions/Maul.lua b/server/Spells/Traditions/Maul.lua
index 88361460b..6ad705103 100755
--- a/server/Spells/Traditions/Maul.lua
+++ b/server/Spells/Traditions/Maul.lua
@@ -1,18 +1,54 @@
--[[
Script Name : Spells/Traditions/Maul.lua
- Script Author : neatz09
- Script Date : 2022.05.21 05:05:22
+ Script Author : LordPazuzu
+ Script Date : 3/8/2023
Script Purpose :
:
--]]
---[[ Info from spell_display_effects (remove from script when done)
-
-*Inflicts 7 slashing damage on target instantly and every 8 seconds
-
---]]
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
end
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+ SetInfoStructString(Caster, "visual_state", "persist_damage")
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2790)
+ else
+ SpawnSet(Target,"visual_state",2790)
+ end
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal)
+ SpawnSet(Target,"visual_state",35558)
+end
diff --git a/server/Spells/Traditions/MultiLegStamp.lua b/server/Spells/Traditions/MultiLegStamp.lua
new file mode 100755
index 000000000..9ff27a795
--- /dev/null
+++ b/server/Spells/Traditions/MultiLegStamp.lua
@@ -0,0 +1,30 @@
+--[[
+ Script Name : Spells/Traditions/MultiLegStamp.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 04:09:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, LowDmg, HighDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalLow = LowDmg + math.floor(DmgBonus)
+ TotalHigh = HighDmg + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, TotalLow, TotalHigh)
+ if LastSpellAttackHit() then
+ SpellDamage(Target, DmgType, TotalLow, TotalHigh)
+ SpellDamage(Target, DmgType, TotalLow, TotalHigh)
+
+ end
+end
diff --git a/server/Spells/Traditions/NecroticVenom.lua b/server/Spells/Traditions/NecroticVenom.lua
new file mode 100755
index 000000000..03329b9e6
--- /dev/null
+++ b/server/Spells/Traditions/NecroticVenom.lua
@@ -0,0 +1,51 @@
+--[[
+ Script Name : Spells/Traditions/NecroticVenom.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.29 03:08:53
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MainVal, DoTVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 5
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalDmg = MainVal + LvlBonus
+ SpellDamage(Target, 2, TotalDmg, TotalDmg)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2774)
+ else
+ SpawnSet(Target,"visual_state",2774)
+ end
+end
+
+
+function tick(Caster, Target, MainVal, DoTVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 5
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ PowerDrain = 0 - DoTVal - LvlBonus
+ ModifyPower(Target, PowerDrain)
+ --Emote(Caster, "'s Necrotic Venom poisons"...Target..."draining"...PowerDrain..."points of power.")
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2774)
+ else
+ SpawnSet(Target,"visual_state",2774)
+ end
+end
+
+function remove(Caster, Target)
+ SpawnSet(Target,"visual_state",35542)
+end
diff --git a/server/Spells/Traditions/ObsidianShards.lua b/server/Spells/Traditions/ObsidianShards.lua
new file mode 100755
index 000000000..fc070b19d
--- /dev/null
+++ b/server/Spells/Traditions/ObsidianShards.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Traditions/ObsidianShards.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.26 03:09:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/PincerStrike.lua b/server/Spells/Traditions/PincerStrike.lua
new file mode 100755
index 000000000..c7beb1139
--- /dev/null
+++ b/server/Spells/Traditions/PincerStrike.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Traditions/PincerStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.20 01:10:09
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
diff --git a/server/Spells/Traditions/PoisonWeb.lua b/server/Spells/Traditions/PoisonWeb.lua
new file mode 100755
index 000000000..72ec67565
--- /dev/null
+++ b/server/Spells/Traditions/PoisonWeb.lua
@@ -0,0 +1,54 @@
+--[[
+ Script Name : Spells/Traditions/PoisonWeb.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.30 01:08:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddControlEffect(Target, 5)
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 5)
+
+end
+
+
+
diff --git a/server/Spells/Traditions/PoisonousPinch.lua b/server/Spells/Traditions/PoisonousPinch.lua
new file mode 100755
index 000000000..38c410b15
--- /dev/null
+++ b/server/Spells/Traditions/PoisonousPinch.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : Spells/Traditions/PoisonousPinch.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.10 06:09:50
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, Crush, Poison)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalDmg = Crush + LvlBonus
+ SpellDamage(Target, 1, TotalDmg, TotalDmg)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2774)
+ else
+ SpawnSet(Target,"visual_state",2774)
+ end
+
+end
+
+function tick(Caster, Target, Crush, Poison)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DoTDmg = Poison + LvlBonus
+ SpellDamage(Target, 9, DoTDmg, DotDmg)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2774)
+ else
+ SpawnSet(Target,"visual_state",2774)
+ end
+
+end
+
+function remove(Caster, Target)
+ SpawnSet(Target,"visual_state",35542)
+end
diff --git a/server/Spells/Traditions/PulverizeRock.lua b/server/Spells/Traditions/PulverizeRock.lua
new file mode 100755
index 000000000..4bdda4df7
--- /dev/null
+++ b/server/Spells/Traditions/PulverizeRock.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Traditions/PulverizeRock.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.26 03:09:22
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/ScorpionicPoison.lua b/server/Spells/Traditions/ScorpionicPoison.lua
new file mode 100755
index 000000000..0a4dd4140
--- /dev/null
+++ b/server/Spells/Traditions/ScorpionicPoison.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Traditions/ScorpionicPoison.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.10.20 01:10:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
diff --git a/server/Spells/Traditions/ShadowVenom.lua b/server/Spells/Traditions/ShadowVenom.lua
new file mode 100755
index 000000000..733d51e16
--- /dev/null
+++ b/server/Spells/Traditions/ShadowVenom.lua
@@ -0,0 +1,47 @@
+--[[
+ Script Name : Spells/Traditions/ShadowVenom.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.30 02:08:01
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+
diff --git a/server/Spells/Traditions/SnakePoison.lua b/server/Spells/Traditions/SnakePoison.lua
new file mode 100755
index 000000000..4d2e7368a
--- /dev/null
+++ b/server/Spells/Traditions/SnakePoison.lua
@@ -0,0 +1,46 @@
+--[[
+ Script Name : Spells/Traditions/SnakePoison.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.24 11:09:36
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 7
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
diff --git a/server/Spells/Traditions/SnappingMandible.lua b/server/Spells/Traditions/SnappingMandible.lua
index 937adaa8d..d97e25dc5 100755
--- a/server/Spells/Traditions/SnappingMandible.lua
+++ b/server/Spells/Traditions/SnappingMandible.lua
@@ -13,5 +13,19 @@
--]]
function cast(Caster, Target, DmgType, MinVal, MaxVal)
- SpellDamage(Target, DmgType, MinVal, MaxVal)
-end
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/SpiderPoison.lua b/server/Spells/Traditions/SpiderPoison.lua
new file mode 100755
index 000000000..48036c26d
--- /dev/null
+++ b/server/Spells/Traditions/SpiderPoison.lua
@@ -0,0 +1,45 @@
+--[[
+ Script Name : Spells/Traditions/SpiderPoison.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.25 03:09:44
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 50
+ StatBonus = GetInt(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/Stab.lua b/server/Spells/Traditions/Stab.lua
new file mode 100755
index 000000000..63207ae41
--- /dev/null
+++ b/server/Spells/Traditions/Stab.lua
@@ -0,0 +1,27 @@
+--[[
+ Script Name : Spells/Traditions/Stab.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.27 08:09:59
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 10
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus * 2 + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
+
diff --git a/server/Spells/Traditions/Thrash.lua b/server/Spells/Traditions/Thrash.lua
new file mode 100755
index 000000000..49507ce08
--- /dev/null
+++ b/server/Spells/Traditions/Thrash.lua
@@ -0,0 +1,57 @@
+--[[
+ Script Name : Spells/Traditions/Thrash.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.29 11:08:40
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+ AddControlEffect(Target, 2)
+ end
+
+
+function tick(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",2790)
+ else
+ SpawnSet(Target,"visual_state",2790)
+ end
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+end
+
+
+function remove(Caster, Target)
+ RemoveControlEffect(Target, 2)
+ SpawnSet(Target,"visual_state",35558)
+end
+
+
diff --git a/server/Spells/Traditions/ThrustingStrike.lua b/server/Spells/Traditions/ThrustingStrike.lua
new file mode 100755
index 000000000..c00d2dd98
--- /dev/null
+++ b/server/Spells/Traditions/ThrustingStrike.lua
@@ -0,0 +1,26 @@
+--[[
+ Script Name : Spells/Traditions/ThrustingStrike.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.09.26 03:09:18
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MinVal, MaxVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 13
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ MaxDmg = MaxVal + math.floor(DmgBonus)
+ MinDmg = MinVal + math.floor(DmgBonus)
+
+ SpellDamage(Target, DmgType, MinDmg, MaxDmg)
+
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/Ultravision.lua b/server/Spells/Traditions/Ultravision.lua
index 849b3e7d3..6d9ccf58c 100755
--- a/server/Spells/Traditions/Ultravision.lua
+++ b/server/Spells/Traditions/Ultravision.lua
@@ -10,7 +10,7 @@
-- Grants Ultravision to caster
function cast(Caster, Target)
-SetVision(Target, 1)
+ SetVision(Target, 255)
Say(Caster, "may be the wrong vision set")
end
diff --git a/server/Spells/Traditions/VenomousBite.lua b/server/Spells/Traditions/VenomousBite.lua
new file mode 100755
index 000000000..a70987a3f
--- /dev/null
+++ b/server/Spells/Traditions/VenomousBite.lua
@@ -0,0 +1,48 @@
+--[[
+ Script Name : Spells/Traditions/VenomousBite.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.27 02:08:03
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, MainVal, DoTVal)
+ Level = GetLevel(Caster)
+ SpellLevel = 3
+ Mastery = SpellLevel + 50
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ TotalDmg = MainVal + LvlBonus
+ SpellDamage(Target, 2, TotalDmg, TotalDmg)
+end
+
+
+function tick(Caster, Target, MainVal, DoTVal)
+ SetInfoStructString(Target, "visual_state", "result_poison_rain_damage")
+ Level = GetLevel(Caster)
+ SpellLevel = 4
+ Mastery = SpellLevel + 3
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ PowerDrain = 0 - DoTVal - LvlBonus
+ ModifyPower(Target, PowerDrain)
+ if IsPlayer(Target) and GetClientVersion(Target) <= 526 then
+ SpawnSet(Target,"visual_state",3227)
+ else
+ SpawnSet(Target,"visual_state",3227)
+ end
+
+ --SpellHeal("Power", PowerDrain, PowerDrain, Target)
+end
+
+function remove(Caster, Target, DoTType, MinVal, MaxVal)
+ SpawnSet(Target,"visual_state",0)
+end
\ No newline at end of file
diff --git a/server/Spells/Traditions/ViciousBite.lua b/server/Spells/Traditions/ViciousBite.lua
new file mode 100755
index 000000000..f7e005a4c
--- /dev/null
+++ b/server/Spells/Traditions/ViciousBite.lua
@@ -0,0 +1,50 @@
+--[[
+ Script Name : Spells/Traditions/ViciousBite.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.08.29 07:08:06
+ Script Purpose :
+ :
+--]]
+
+function cast(Caster, Target, DmgType, MainDmg, DoTDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalDmg = MainDmg + math.floor(DmgBonus)
+
+
+ SpellDamage(Target, DmgType, MainDmg, MainDmg)
+end
+
+
+function tick(Caster, Target, DmgType, MainDmg, DoTDmg)
+ Level = GetLevel(Caster)
+ SpellLevel = 1
+ Mastery = SpellLevel + 50
+ StatBonus = GetStr(Caster) / 10
+
+ if Level < Mastery then
+ LvlBonus = Level - SpellLevel
+ else LvlBonus = Mastery - SpellLevel
+ end
+
+ DmgBonus = LvlBonus + StatBonus
+ TotalDoT = DoTDmg + math.floor(DmgBonus)
+
+
+ SpellDamage(Target, DmgType, TotalDoT, TotalDoT)
+end
+
+
+function remove(Caster, Target)
+
+end
+
diff --git a/server/Spells/UnifyingEssence.lua b/server/Spells/UnifyingEssence.lua
new file mode 100755
index 000000000..6239127aa
--- /dev/null
+++ b/server/Spells/UnifyingEssence.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : Spells/UnifyingEssence.lua
+ Script Author : LordPazuzu
+ Script Date : 2022.11.26 03:11:51
+ Script Purpose :
+ :
+--]]
+
+
+function cast(Caster, Target, PowerProc)
+
+ ModifyPower(Target, PowerProc)
+
+end
+
diff --git a/server/ZoneScripts/Antonica.lua b/server/ZoneScripts/Antonica.lua
index d9fa3170e..a26017b99 100755
--- a/server/ZoneScripts/Antonica.lua
+++ b/server/ZoneScripts/Antonica.lua
@@ -1,20 +1,209 @@
--[[
Script Name : antonica.lua
Script Purpose : Handles events in Antonica
- Script Author : Jabantiz/neatz09
- Script Date : 6/16/2016/ 2/23/19
+ Script Author : Jabantiz/neatz09/Dorbin
+ Script Date : 6/16/2016/ 2/23/19 12/6/23
Script Notes :
--]]
-function init_zone_script(zone)
- SetLocationProximityFunction(zone, -2128.93, -28.4328, 614.081, 10, "GriffonTower", "Leave") -- Steppes from Qeynos
- SetLocationProximityFunction(zone, -904.472, -7.23051, -610.321, 10, "GriffonTower", "Leave") -- Oracle from Qeynos
- SetLocationProximityFunction(zone, 337.246, -17.3142, 537.882, 10, "GriffonTower", "Leave") -- Qeynos from Steppes
- SetLocationProximityFunction(zone, -912.659, -7.21881, -599.911, 10, "GriffonTower", "Leave") -- Oracle from Steppes
- SetLocationProximityFunction(zone, 327.727, -17.3058, 529.95, 10, "GriffonTower", "Leave") -- Qeynos from Oracle
- SetLocationProximityFunction(zone, -2136.6, -28.5276, 608.087, 10, "GriffonTower", "Leave") -- Steppese from oracle
+function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone, -2128.93, -28.4328, 614.081, 10, "GriffonTower", "Leave") -- Steppes from Qeynos
+ SetLocationProximityFunction(Zone, -904.472, -7.23051, -610.321, 10, "GriffonTower", "Leave") -- Oracle from Qeynos
+ SetLocationProximityFunction(Zone, 337.246, -17.3142, 537.882, 10, "GriffonTower", "Leave") -- Qeynos from Steppes
+ SetLocationProximityFunction(Zone, -912.659, -7.21881, -599.911, 10, "GriffonTower", "Leave") -- Oracle from Steppes
+ SetLocationProximityFunction(Zone, 327.727, -17.3058, 529.95, 10, "GriffonTower", "Leave") -- Qeynos from Oracle
+ SetLocationProximityFunction(Zone, -2136.6, -28.5276, 608.087, 10, "GriffonTower", "Leave") -- Steppese from oracle
+
+ SetLocationProximityFunction(Zone,127.20, -24.88, 468.20, 60, "CraterLake","LeaveLocation")
+ SetLocationProximityFunction(Zone,-102.51, -18.43, 100.64, 95, "CentralFarmlands","LeaveLocation")
+ SetLocationProximityFunction(Zone,-123.97, -16.37, 585.85, 35, "QeynosHills","LeaveLocation")
+ SetLocationProximityFunction(Zone,-442.50, 2.15, 551.88, 25, "Claymore","LeaveLocation")
+ SetLocationProximityFunction(Zone,-503.16, -18.23, 396.36, 95, "QeynosPlains","LeaveLocation")
+ SetLocationProximityFunction(Zone,-753.87, -3.03, 592.89, 160, "ArcherWoods","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1191.42, -20.26, 261.38, 70, "QeynosHighway","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1299.50, 38.29, 44.79, 20, "BellsofVhalen","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1506.60, -14.37, -11.08, 55, "GladeoftheCoven","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1567.28, 2.28, 609.58, 90, "BrambleWoods","LeaveLocation")
+ SetLocationProximityFunction(Zone,424.28, -43.66, 733.90, 50, "ClodwindPoint","LeaveLocation")
+ SetLocationProximityFunction(Zone,348.00, -9.39, 809.95, 35, "MarinersIsland","LeaveLocation")
+ SetLocationProximityFunction(Zone,188.45, -19.38, 863.55, 35, "CastawayIsland","LeaveLocation")
+ SetLocationProximityFunction(Zone,5.57, -9.66, 1028.04, 35, "QeynosSheperdsIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,-796.74, -28.08, 1029.75, 30, "WoodedIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,-917.46, -17.69, 1052.23, 30, "MemorialIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,-327,-14,-501 , 55, "WatchtowerPlains","LeaveLocation")
+ SetLocationProximityFunction(Zone,326.08,-35.05,-517.55, 30, "MistyIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,241.24, -29.62, -682.48, 25, "BridgewayIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,334.98, -21.37, -621.86, 30, "AbandonedIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,361.84, -19.69, -664.18, 18, "TombofVarsoon","LeaveLocation")
+ SetLocationProximityFunction(Zone,382.58, -31.81, -798.15, 25, "LonelyIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,382.58, -31.81, -798.15, 20, "TravelersIsle","LeaveLocation")
+ SetLocationProximityFunction(Zone,-376.53, -0.70, -369.36, 85, "ArdentHills","LeaveLocation")
+ SetLocationProximityFunction(Zone,-555.33, -12.85, -319.13, 18, "KeepoftheArdentNeedle","LeaveLocation")
+ SetLocationProximityFunction(Zone,-804.55, -32.01, -422.03, 50, "TowerLands","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1033.81, 14.12, -630.33, 20, "ToweroftheOracles","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1410.68, -13.88, -742.63, 100, "RuinsofCaltorsis","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1865, -38, -550, 70, "WindstalkerVillage","LeaveLocation")
+ SetLocationProximityFunction(Zone,-2182.37, -11.79, -818.23, 100, "WindstalkerHighlands","LeaveLocation")
+ SetLocationProximityFunction(Zone,-2262.04, -24.72, -570.99, 90, "CoastalGrove","LeaveLocation")
+ SetLocationProximityFunction(Zone,-2048.99, 15.74, -483.06, 20, "FangbreakerKeep","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1851.41, -22.03, -194.27, 90, "NorthernFarmlands","LeaveLocation")
+ SetLocationProximityFunction(Zone,-2104, -43, 438, 20, "KeepoftheGnollSlayer","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1755, -14, 521, 80, "GnollslayerHighlands","LeaveLocation")
+ SetLocationProximityFunction(Zone,-1973.00, -20.08, 640.00, 80, "ScarecrowFields","LeaveLocation")
+ SetLocationProximityFunction(Zone,-2082.70, 47.26, 1029.12, 100, "HiddenVale","LeaveLocation")
+
end
+function HiddenVale(Zone,Player)
+ SendPopUpMessage(Player, "Hidden Vale", 255, 255, 0)
+end
+
+function ScarecrowFields(Zone,Player)
+ SendPopUpMessage(Player, "Scarecrow Fields", 255, 255, 0)
+end
+
+function GnollslayerHighlands(Zone,Player)
+ SendPopUpMessage(Player, "Gnollslayer Highlands", 255, 255, 0)
+end
+
+function KeepoftheGnollSlayer(Zone,Player)
+ SendPopUpMessage(Player, "Keep of The Gnollslayer", 255, 255, 0)
+end
+
+function NorthernFarmlands(Zone,Player)
+ SendPopUpMessage(Player, "Northern Farmlands", 255, 255, 0)
+end
+
+function FangbreakerKeep(Zone,Player)
+ SendPopUpMessage(Player, "Fangbreaker Keep", 255, 255, 0)
+end
+
+function CoastalGrove(Zone,Player)
+ SendPopUpMessage(Player, "Coastal Grove", 255, 255, 0)
+end
+
+function WindstalkerHighlands(Zone,Player)
+ SendPopUpMessage(Player, "Windstalker Highlands", 255, 255, 0)
+end
+
+function WindstalkerVillage(Zone,Player)
+ SendPopUpMessage(Player, "Windstalker Village", 255, 255, 0)
+end
+
+function RuinsofCaltorsis(Zone,Player)
+ SendPopUpMessage(Player, "Ruins of Caltorsis", 255, 255, 0)
+end
+
+function ToweroftheOracles(Zone,Player)
+ SendPopUpMessage(Player, "Tower of the Oracles", 255, 255, 0)
+end
+
+
+function TowerLands(Zone,Player)
+ SendPopUpMessage(Player, "Tower Lands", 255, 255, 0)
+end
+
+function KeepoftheArdentNeedle(Zone,Player)
+ SendPopUpMessage(Player, "Keep of The Ardent Needle", 255, 255, 0)
+end
+
+function ArdentHills(Zone,Player)
+ SendPopUpMessage(Player, "Ardent Hills", 255, 255, 0)
+end
+
+function TravelersIsle(Zone,Player)
+ SendPopUpMessage(Player, "Traveler's Isle", 255, 255, 0)
+end
+
+function LonelyIsle(Zone,Player)
+ SendPopUpMessage(Player, "Lonely Isle", 255, 255, 0)
+end
+
+function TombofVarsoon(Zone,Player)
+ SendPopUpMessage(Player, "Tomb of Varsoon", 255, 255, 0)
+end
+
+function AbandonedIsle(Zone,Player)
+ SendPopUpMessage(Player, "Abandoned Isle", 255, 255, 0)
+end
+
+function BridgewayIsle(Zone,Player)
+ SendPopUpMessage(Player, "Bridgeway Isle", 255, 255, 0)
+end
+
+function MistyIsle(Zone,Player)
+ SendPopUpMessage(Player, "Misty Isle", 255, 255, 0)
+end
+
+function WatchtowerPlains(Zone,Player)
+ SendPopUpMessage(Player, "Watchtower Plains", 255, 255, 0)
+end
+
+function MemorialIsle(Zone,Player)
+ SendPopUpMessage(Player, "Memorial Isle", 255, 255, 0)
+end
+
+function WoodedIsle(Zone,Player)
+ SendPopUpMessage(Player, "Wooded Isle", 255, 255, 0)
+end
+
+function QeynosSheperdsIsle(Zone,Player)
+ SendPopUpMessage(Player, "Qeynos Shepard's Isle", 255, 255, 0)
+end
+
+function CastawayIsland(Zone,Player)
+ SendPopUpMessage(Player, "Castaway Island", 255, 255, 0)
+end
+
+function MarinersIsland(Zone,Player)
+ SendPopUpMessage(Player, "Mariner's Island", 255, 255, 0)
+end
+
+function CraterLake(Zone,Player)
+ SendPopUpMessage(Player, "Crater Lake", 255, 255, 0)
+end
+
+function CentralFarmlands(Zone,Player)
+ SendPopUpMessage(Player, "Central Farmlands", 255, 255, 0)
+end
+
+function QeynosHills(Zone,Player)
+ SendPopUpMessage(Player, "Qeynos Hills", 255, 255, 0)
+end
+
+function Claymore(Zone,Player)
+ SendPopUpMessage(Player, "Claymore Monument", 255, 255, 0)
+end
+
+function QeynosPlains(Zone,Player)
+ SendPopUpMessage(Player, "Qeynos Plains", 255, 255, 0)
+end
+
+function ArcherWoods(Zone,Player)
+ SendPopUpMessage(Player, "Archer Woods", 255, 255, 0)
+end
+
+function QeynosHighway(Zone,Player)
+ SendPopUpMessage(Player, "Qeynos Highway", 255, 255, 0)
+end
+
+function BellsofVhalen(Zone,Player)
+ SendPopUpMessage(Player, "The Bells of Vhalen", 255, 255, 0)
+end
+
+function GladeoftheCoven(Zone,Player)
+ SendPopUpMessage(Player, "Glade of the Coven", 255, 255, 0)
+end
+
+function BrambleWoods(Zone,Player)
+ SendPopUpMessage(Player, "Bramble Woods", 255, 255, 0)
+end
+
+function ClodwindPoint(Zone,Player)
+ SendPopUpMessage(Player, "Coldwind Point", 255, 255, 0)
+end
+
+
function player_entry(zone, player)
SendPopUpMessage(player, "Antonica", 230, 230, 230)
end
@@ -31,11 +220,12 @@ end
function dusk(zone)
end
-function GriffonTower(zone, Spawn)
+function GriffonTower(Zone, Spawn)
if IsPlayer(Spawn) and IsOnAutoMount(Spawn) then
EndAutoMount(Spawn)
end
end
function Leave(zone, Spawn)
-end
\ No newline at end of file
+end
+
diff --git a/server/ZoneScripts/BeggarsCourt.lua b/server/ZoneScripts/BeggarsCourt.lua
index c6f5c3fb7..11363b004 100755
--- a/server/ZoneScripts/BeggarsCourt.lua
+++ b/server/ZoneScripts/BeggarsCourt.lua
@@ -13,6 +13,7 @@ local A_ROMMULS_LOYALIST = 1370067
local THAEN_SEVELLOS = 1370066
function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone,63.94, -6.18, 100.11, 12, "Shrine","LeaveLocation")
SetLocationProximityFunction(Zone, 82.78, -7.08, 112.83, 10, "InRange", "LeaveRange")
SetLocationProximityFunction(Zone, 70.43, 5.02, -22.17, 20, "InRangeQuest4", "LeaveRange")
@@ -54,5 +55,10 @@ function InRangeQuest4(Zone, Spawn)
end
end
-function LeaveRange(zone, Spawn)
-end
\ No newline at end of file
+function player_entry(Zone, Player)
+ SendPopUpMessage(Player, "Beggar's Court", 255, 255, 255)
+end
+
+function Shrine(Zone,Player)
+ SendPopUpMessage(Player, "Fountain of Divine Retribution", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/BrawlersDojo.lua b/server/ZoneScripts/BrawlersDojo.lua
new file mode 100755
index 000000000..722c58d63
--- /dev/null
+++ b/server/ZoneScripts/BrawlersDojo.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : ZoneScripts/BrawlersDojo.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 07:12:07
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+SendMessage(Player, "Incense wafts in the air as aspiring brawlers hone their skill. Challenge them to a sparring match to prove yourself.", 230, 230, 230)
+
+end
+
diff --git a/server/ZoneScripts/BuccaneersHideout.lua b/server/ZoneScripts/BuccaneersHideout.lua
new file mode 100755
index 000000000..68ef48d27
--- /dev/null
+++ b/server/ZoneScripts/BuccaneersHideout.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/BuccaneersHideout.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 08:12:17
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+SendMessage(Player, "Muffled whimpers break through the sounds of salty chatter and sloshing steins.", 230, 230, 230)
+end
+
diff --git a/server/ZoneScripts/Classic_forest.lua b/server/ZoneScripts/Classic_forest.lua
index 40d3f1508..36bba4088 100755
--- a/server/ZoneScripts/Classic_forest.lua
+++ b/server/ZoneScripts/Classic_forest.lua
@@ -7,10 +7,13 @@
--]]
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,1083.63, -3.04, -777.39, 12, "MageTower","LeaveLocation")
end
function player_entry(Zone, Player)
SendPopUpMessage(Player, "The Forest Ruins", 255, 255, 255)
end
+function MageTower(Zone,Player)
+ SendPopUpMessage(Player, "The Ruined Mage Tower", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/Commonlands.lua b/server/ZoneScripts/Commonlands.lua
index 47f7ec050..9428e3652 100755
--- a/server/ZoneScripts/Commonlands.lua
+++ b/server/ZoneScripts/Commonlands.lua
@@ -6,7 +6,8 @@
Script Notes :
--]]
-
+--local SearchForTheMissing = 573
+--local AFesteringProblem = 5800
function init_zone_script(zone)
SetLocationProximityFunction(zone, 757.39, -31.98, -585.17, 10, "GriffonTower", "Leave") -- Nektulos (from Freeport)
@@ -21,7 +22,7 @@ end
function player_entry(zone, player)
-SendPopUpMessage(player, "The Commonlands", 230, 230, 230)
+ SendPopUpMessage(player, "The Commonlands", 230, 230, 230)
end
function enter_location(zone, spawn, grid)
diff --git a/server/ZoneScripts/DownBelow_Classic.lua b/server/ZoneScripts/DownBelow_Classic.lua
index bf5934f64..ff67dfef6 100755
--- a/server/ZoneScripts/DownBelow_Classic.lua
+++ b/server/ZoneScripts/DownBelow_Classic.lua
@@ -7,12 +7,23 @@
--]]
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,7.19, 0.30, -140.27, 17, "ShrineofEstle","LeaveLocation")
end
+function ShrineofEstle(Zone,Player)
+ SendPopUpMessage(Player, "The Shrine of Estle", 255, 255, 0)
+ end
+
function player_entry(Zone, Player)
SendPopUpMessage(Player, "The Down Below", 230, 230, 230)
SendMessage(Player, "You have entered The Down Below.")
-SendMessage(Player, "A foul breeze brushes your cheek, as the stench of death envelops you.")
+local choice = MakeRandomInt(1,3)
+if choice == 1 then
+SendMessage(Player, "A foul breeze brushes your cheek as the stench of death envelops you.")
+elseif choice == 2 then
+SendMessage(Player, "The scraping of bone can be heard in the distance.")
+elseif choice == 3 then
+SendMessage(Player, "Noises echo from creatures in distant chambers, natural and unnatural.")
+end
end
diff --git a/server/ZoneScripts/ElddarGrove.lua b/server/ZoneScripts/ElddarGrove.lua
index fc399828a..0f4f7082a 100755
--- a/server/ZoneScripts/ElddarGrove.lua
+++ b/server/ZoneScripts/ElddarGrove.lua
@@ -9,13 +9,18 @@
dofile("SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua")
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,659.21, -10.21, -376.89, 12, "Arbos","LeaveLocation")
end
function player_entry(Zone, Player)
SendPopUpMessage(Player, "The Elddar Grove", 230, 230, 230)
end
+function Arbos(Zone,Player)
+ SendPopUpMessage(Player, "Arbos, The Great Tree", 255, 255, 0)
+ end
+
+
function dawn(Zone)
local Antonia = GetSpawnByLocationID(Zone,412938)
if Antonia ~=nil then
diff --git a/server/ZoneScripts/FarJourneyFreeport.lua b/server/ZoneScripts/FarJourneyFreeport.lua
index 80821dda3..c71777227 100755
--- a/server/ZoneScripts/FarJourneyFreeport.lua
+++ b/server/ZoneScripts/FarJourneyFreeport.lua
@@ -8,6 +8,14 @@
seen_step_45 = false
+function player_entry(Zone, player)
+ SetHeading(player,180)
+end
+
+function init_zone_script(Zone)
+end
+
+
function signal_changed(zone, player, signal)
if signal == "sys_client_avatar_ready" and HasQuest(player, 524) == false and HasCompletedQuest(player, 524) == false then
i = 1
@@ -19,6 +27,7 @@ function signal_changed(zone, player, signal)
end
i = i + 1
until spawn == nil
+
InstructionWindow(player, 10.0, "Welcome to Norrath, the world of EverQuest II. Left click on the help button at any time for more detailed help and information.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_001_63779ca0.mp3", 3450229107, 2555116653, "introduction", "", "continue")
ShowWindow(player, "MainHUD.StartMenu", 1)
FlashWindow(player, "MainHUD.StartMenu.help", 10.0)
@@ -41,13 +50,13 @@ function signal_changed(zone, player, signal)
InstructionWindow(player, -1.0, "Double left click on Captain Varlos to interact with him.", "", 0, 0, "tutorial_stage_6", "", "server")
SetTutorialStep(player, 5)
end
- if signal == "tutorial_stage_9" and GetTutorialStep(player) == 8 then
+--[[ if signal == "tutorial_stage_9" and GetTutorialStep(player) == 8 then
ShowWindow(player, "MainHUD.StartMenu", 0)
FlashWindow(player, "MainHUD.StartMenu.quest_journal", 0.0)
InstructionWindow(player, -1.0, "The quest journal will keep track of all important quest information for you.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_008_dea98146.mp3", 1585802421, 4158930887, "tutorial_stage_10", "", "continue")
SetTutorialStep(player, 9)
end
---[[ if signal == "tutorial_stage_10" and GetTutorialStep(player) == 9 then
+ if signal == "tutorial_stage_10" and GetTutorialStep(player) == 9 then
FlashWindow(player, "Journals.ActiveQuest", 6.5)
InstructionWindow(player, -1.0, "This is your quest helper. It displays the current step of your active quest.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_009_7270f5ed.mp3", 1886677883, 3646680727, "tutorial_stage_13", "", "continue")
SetTutorialStep(player, 10)
@@ -57,10 +66,12 @@ function signal_changed(zone, player, signal)
ShowWindow(player, "Journals.JournalsQuest", 0)
SetTutorialStep(player, 13)
end
+ --]]
if (signal == "tutorial_stage_15" and GetTutorialStep(player) == 14) or (signal == "sys_client_avatar_ready" and HasQuest(player, 524) == true and GetQuestStep(player, 524) == 2) then
InstructionWindow(player, -1.0, "Move your mouse pointer over the boxes. Notice that your mouse pointer changes shape again, and the boxes start to glow. Double left click to open each of the boxes.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_012_9ba468fb.mp3", 1009896073, 25784171, "tutorial_stage_16", "Double left click on a box to open it.", "server")
SetTutorialStep(player, 15)
end
+--[[
if signal == "tutorial_stage_18" and GetTutorialStep(player) == 16 then
ShowWindow(player, "Inventory.Inventory", 0)
InstructionWindow(player, -1.0, "Managing your inventory and equipment is very important. It is how you use all of the gear that you will find on your adventures. Left click on the inventory button.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_015_46f20016.mp3", 2394903675, 552673556, "tutorial_stage_19", "Open your inventory. (click on the inventory button)", "open Inventory")
@@ -111,11 +122,11 @@ function signal_changed(zone, player, signal)
InstructionWindow(player, -1.0, "Notice the tunic now occupies the chest equipment slot and you are now wearing it.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_018_8786e939.mp3", 3902294834, 2836623234, "tutorial_stage_22", "", "continue")
FlashWindow(player, "Inventory.Inventory.EquipmentPage.EqSlot3", 6.0)
SetTutorialStep(player, 21)
- end]]--
+ end
if signal == "tutorial_stage_22" and GetTutorialStep(player) == 21 then
FlashWindow(player, "Inventory.Inventory.EquipmentPage.Chest3", 0.0)
InstructionWindow(player, -1.0, "Waulon is waiting for you to return with his hat. Close your inventory window and go talk to him. Remember, double left clicking on Waulon will start the conversation.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_019_9da1b75d.mp3", 741062937, 535829184, "tutorial_stage_23", "Double left click on Waulon to hail him.", "server")
- end
+ end]]--
if signal == "sys_client_avatar_ready" and HasQuest(player, 524) == true and GetQuestStep(player, 524) == 5 then
InstructionWindow(player, -1.0, "A merchant is a special type of character who buys and sells things. Find and double left click on Merchant Vim to start a transaction.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_020_6ea052d3.mp3", 4250953579, 3003156164, "tutorial_stage_24", "Double left click on Merchant Vim.", "server")
SetTutorialStep(player, 24)
@@ -213,7 +224,7 @@ function signal_changed(zone, player, signal)
end
if signal == "tutorial_stage_50" then
SetTutorialStep(player, 50)
- InstructionWindow(player, -1.0, "Notice that your experience point display is now empty, and your maximum health and power have increased.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_047_5c382a71.mp3", 1130515024, 564825664, "tutorial_stage_51", "", "continue")
+ InstructionWindow(player, -1.0, "Notice that your experience point display is now empty, and your maximum health and power have increased.", "voiceover/english/narrator/boat_06p_tutorial02/narrator_047_5c382a71.mp3", 1130515024, 564825664, "", "", "continue")
FlashWindow(player, "MainHUD.Player.HealthBarBkg", 6.0)
FlashWindow(player, "MainHUD.Player.ManaBarBkg", 6.0)
FlashWindow(player, "MainHUD.Player.Name", 6.0)
diff --git a/server/ZoneScripts/GaranelRestingPlace.lua b/server/ZoneScripts/GaranelRestingPlace.lua
new file mode 100755
index 000000000..ca461c36b
--- /dev/null
+++ b/server/ZoneScripts/GaranelRestingPlace.lua
@@ -0,0 +1,22 @@
+--[[
+ Script Name : ZoneScripts/GaranelRestingPlace.lua
+ Script Author : Premierio015
+ Script Date : 2023.04.22 12:04:14
+ Script Purpose :
+ :
+--]]
+
+local TheseBootsWereMadeFor = 5805 -- These Boots Were Made For QUEST ID
+local theGhostofGaranelRucksifID = 133784536
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+if HasQuest(Player, TheseBootsWereMadeFor) then
+zone = GetZone(Player)
+ SpawnGaranelRucksif = SpawnByLocationID(zone, theGhostofGaranelRucksifID)
+ end
+end
+
diff --git a/server/ZoneScripts/HiddenVillage.lua b/server/ZoneScripts/HiddenVillage.lua
new file mode 100755
index 000000000..1cfb89dcc
--- /dev/null
+++ b/server/ZoneScripts/HiddenVillage.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/HiddenVillage.lua
+ Script Author : neatz09
+ Script Date : 2023.12.12 03:12:48
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+
+end
+
diff --git a/server/ZoneScripts/IsleRefuge1.lua b/server/ZoneScripts/IsleRefuge1.lua
index b6a54aaf6..186e2abdd 100755
--- a/server/ZoneScripts/IsleRefuge1.lua
+++ b/server/ZoneScripts/IsleRefuge1.lua
@@ -7,8 +7,6 @@
--]]
-
-
function player_entry(Zone, Spawn)
SendPopUpMessage(Spawn, "The Isle of Refuge", 230, 230, 230)
end
diff --git a/server/ZoneScripts/Kugup.lua b/server/ZoneScripts/Kugup.lua
new file mode 100755
index 000000000..0f5c8ae81
--- /dev/null
+++ b/server/ZoneScripts/Kugup.lua
@@ -0,0 +1,31 @@
+--[[
+ Script Name : ZoneScripts/Kugup.lua
+ Script Author : neatz09
+ Script Date : 2023.12.12 03:12:14
+ Script Purpose :
+ :
+--]]
+
+Zone = 123
+local UncoveringtheFroglokSecret = 5936
+
+function init_zone_script(zone)
+end
+
+function player_entry(zone, player)
+ if not HasQuest(player, UncoveringtheFroglokSecret) and not HasCompletedQuest(player, UncoveringtheFroglokSecret) then
+ OfferQuest(nil, player, UncoveringtheFroglokSecret)
+ end
+end
+
+function enter_location(zone, spawn, grid)
+end
+
+function leave_location(zone, spawn, grid)
+end
+
+function dawn(zone)
+end
+
+function dusk(zone)
+end
\ No newline at end of file
diff --git a/server/ZoneScripts/Longshadow.lua b/server/ZoneScripts/Longshadow.lua
new file mode 100755
index 000000000..d2cebab19
--- /dev/null
+++ b/server/ZoneScripts/Longshadow.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : ZoneScripts/Longshadow.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.14 11:10:34
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone,-0.58, 2.07, -0.01, 12, "KnowledgePortal","LeaveLocation")
+
+end
+
+function player_entry(Zone, Player)
+ SendPopUpMessage(Player, "Longshadow Alley", 255, 255, 255)
+end
+
+function KnowledgePortal(Zone,Player)
+ SendPopUpMessage(Player, "The Destroyed Knowledge Portal", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/MakeshiftArena.lua b/server/ZoneScripts/MakeshiftArena.lua
new file mode 100755
index 000000000..60842fc2a
--- /dev/null
+++ b/server/ZoneScripts/MakeshiftArena.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/MakeshiftArena.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 07:12:38
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+SendMessage(Player, "The crowd is growing restless awaiting your upcoming match.", 230, 230, 230)
+end
+
diff --git a/server/ZoneScripts/MemorialIsland.lua b/server/ZoneScripts/MemorialIsland.lua
index 15c3daa27..a80e502cd 100755
--- a/server/ZoneScripts/MemorialIsland.lua
+++ b/server/ZoneScripts/MemorialIsland.lua
@@ -1,8 +1,7 @@
function init_zone_script(Zone)
- SetLocationProximityFunction(Zone, 0, 0, 0, 50, "Memorial_InRange")
-
+-- SetLocationProximityFunction(Zone, 0, 0, 0, 50, "Memorial_InRange")
end
function Memorial_InRange(Zone, Player)
- SendPopUpMessage(Player, "Memorial Island: Dedicated to the wonderful people who helped make EverQuest 2 happen.", 244, 66, 134)
+-- SendPopUpMessage(Player, "Memorial Island: Dedicated to the wonderful people who helped make EverQuest 2 happen.", 244, 66, 134)
end
\ No newline at end of file
diff --git a/server/ZoneScripts/NorthQeynos.lua b/server/ZoneScripts/NorthQeynos.lua
index f71213c34..ff650f0c7 100755
--- a/server/ZoneScripts/NorthQeynos.lua
+++ b/server/ZoneScripts/NorthQeynos.lua
@@ -9,9 +9,18 @@
dofile("SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua")
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,293.00, -18.10, -20.88, 12, "ClaymorePlaza","LeaveLocation")
+ SetLocationProximityFunction(Zone,473.95, -18.76, -345.05, 18, "IronforgeEstate","LeaveLocation")
end
+function ClaymorePlaza(Zone,Player)
+ SendPopUpMessage(Player, "The Claymore Plaza", 255, 255, 0)
+ end
+
+function IronforgeEstate(Zone,Player)
+ SendPopUpMessage(Player, "The Ironforge Estate", 255, 255, 0)
+ end
+
function player_entry(Zone, Player)
SendPopUpMessage(Player, "North Qeynos", 230, 230, 230)
end
@@ -20,7 +29,7 @@ end
function dawn(Zone)
local Antonia = GetSpawnByLocationID(Zone,379658)
if Antonia ~=nil then
-local choice = MakeRandomInt(1,5) -- Atonia's Speechs - #5 represents a skipped speech
+local choice = MakeRandomInt(1,5) -- Antonia's Speechs - #5 represents a skipped speech
if choice == 1 then
PlayAnimation(Antonia, 10756)
AddTimer(Antonia, 2000, "visage01")
diff --git a/server/ZoneScripts/Oakmyst_Classic.lua b/server/ZoneScripts/Oakmyst_Classic.lua
index 3a47ebb51..1bce6713d 100755
--- a/server/ZoneScripts/Oakmyst_Classic.lua
+++ b/server/ZoneScripts/Oakmyst_Classic.lua
@@ -7,10 +7,13 @@
--]]
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,924.78, 2.03, -270.69, 12, "ClearwaterPond","LeaveLocation")
end
function player_entry(Zone, Player)
SendPopUpMessage(Player, "Oakmyst Forest", 255, 255, 255)
end
+function ClearwaterPond(Zone,Player)
+ SendPopUpMessage(Player, "Clearwater Pond", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/OutpostOverlord.lua b/server/ZoneScripts/OutpostOverlord.lua
index 0adf45b88..e9e1d0aea 100755
--- a/server/ZoneScripts/OutpostOverlord.lua
+++ b/server/ZoneScripts/OutpostOverlord.lua
@@ -10,18 +10,30 @@ local WelcomeToNorrath = 362
local TheArtOfCombat = 132
-function init_zone_script(Zone)
- SetLocationProximityFunction(Zone, -13.41, -4.94, 220.74, 20, "OfferQuestLocation", "LeaveLocation")
+function init_zone_script(zone)
+ SetLocationProximityFunction(zone, -13.41, -4.94, 220.74, 20, "OfferQuestLocation", "LeaveLocation")
end
-function OfferQuestLocation (Zone, Player)
- if not HasQuest(Player, WelcomeToNorrath) and not HasCompletedQuest(Player, WelcomeToNorrath)
+function OfferQuestLocation (zone, Player)
+ if GetClass(Player)==0 and GetLevel(Player)<3 then
+ ZoneRef = GetZone("IsleRefuge1")
+ Zone(ZoneRef,Player)
+ elseif not HasQuest(Player, WelcomeToNorrath) and not HasCompletedQuest(Player, WelcomeToNorrath)
and not HasQuest(Player, TheArtOfCombat) and not HasCompletedQuest(Player, TheArtOfCombat) then
OfferQuest(nil, Player, WelcomeToNorrath)
end
end
-function LeaveLocation(Zone, Player)
+function LeaveLocation(zone, Player)
end
+function player_entry(zone, Player)
+ if GetClass(Player)==0 and GetLevel(Player)<3 then
+ ZoneRef = GetZone("IsleRefuge1")
+ Zone(ZoneRef,Player)
+ else
+ AddPlayerMail(Player, "EQ2EmulatorDevTeam", "Welcome", "Welcome to EQ2Emulator, this project is currently in Pre-Alpha. The best developed content follows the Commoner towards class progression. This is experienced by talking to Captain Varlos starting on the Far Journey or using the Desert of Flames client during character creation.\n\nWe appreciate feedback and bug reports for existing content, and are always looking for additional talent! Thank you for testing and enjoy your stay! -The EQ2EMU Team", 2)
+ SendPopUpMessage(Player, "Outpost of the Overlord", 230, 230, 230)
+ end
+end
diff --git a/server/ZoneScripts/Peatbog_Classic.lua b/server/ZoneScripts/Peatbog_Classic.lua
index 71c2fa956..02df6a392 100755
--- a/server/ZoneScripts/Peatbog_Classic.lua
+++ b/server/ZoneScripts/Peatbog_Classic.lua
@@ -7,10 +7,14 @@
--]]
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,667.05, -33.56, 494.87, 12, "TwoLogsPond","LeaveLocation")
end
+
function player_entry(Zone, Player)
SendPopUpMessage(Player, "The Peat Bog", 230, 230, 230)
end
+function TwoLogsPond(Zone,Player)
+ SendPopUpMessage(Player, "Two Logs Pond", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/QeynosHarbor.lua b/server/ZoneScripts/QeynosHarbor.lua
index 227ea0fcc..377f79db0 100755
--- a/server/ZoneScripts/QeynosHarbor.lua
+++ b/server/ZoneScripts/QeynosHarbor.lua
@@ -35,9 +35,14 @@ local RANGER = 39
local ASSASSIN = 40
-function init_zone_script(zone)
+function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone,736.83, -20.84, -36.27, 10, "Clock","LeaveLocation")
end
+function Clock(Zone,Player)
+ SendPopUpMessage(Player, "The Clock of Ak'Anon", 255, 255, 0)
+ end
+
function player_entry(Zone, Spawn)
SendPopUpMessage(Spawn, "Qeynos Harbor", 230, 230, 230)
if GetFactionAmount(Spawn, 11) >0 and not HasQuest (Spawn,5588) and not HasCompletedQuest(Spawn,5588) and GetLevel(Spawn)>=20 then
diff --git a/server/ZoneScripts/QueensColony.lua b/server/ZoneScripts/QueensColony.lua
index 8f9d04e8e..e02c0c142 100755
--- a/server/ZoneScripts/QueensColony.lua
+++ b/server/ZoneScripts/QueensColony.lua
@@ -10,39 +10,47 @@ local WelcomeToNorrath = 133
local TheArtOfCombat = 132
local TheSourceOfEvil = 164
-function init_zone_script(Zone)
- SetLocationProximityFunction(Zone, -13.41, -4.94, 220.74, 20, "OfferQuestLocation", "LeaveLocation")
- SetLocationProximityFunction(Zone, 152.24, 3.69, -173.34, 15, "BladeMasterLocation", "LeaveLocation")
+function init_zone_script(zone)
+ SetLocationProximityFunction(zone, -13.41, -4.94, 220.74, 20, "OfferQuestLocation", "LeaveLocation")
+ SetLocationProximityFunction(zone, 152.24, 3.69, -173.34, 15, "BladeMasterLocation", "LeaveLocation")
end
-function OfferQuestLocation (Zone, Player)
- if not HasQuest(Player, WelcomeToNorrath) and not HasCompletedQuest(Player, WelcomeToNorrath)
+function OfferQuestLocation (zone, Player)
+ if GetClass(Player)==0 and GetLevel(Player)<3 then
+ ZoneRef = GetZone("IsleRefuge1")
+ Zone(ZoneRef,Player)
+ elseif not HasQuest(Player, WelcomeToNorrath) and not HasCompletedQuest(Player, WelcomeToNorrath)
and not HasQuest(Player, TheArtOfCombat) and not HasCompletedQuest(Player, TheArtOfCombat) then
OfferQuest(nil, Player, WelcomeToNorrath)
end
end
-function BladeMasterLocation(Zone, Player)
+function BladeMasterLocation(zone, Player)
if HasQuest(Player, TheSourceOfEvil) and GetQuestStep(Player, TheSourceOfEvil) == 4 then
- local blade = SpawnMob(Zone, 2530032, false, 154.12, 1.87, -175.74, 349.984)
+ local blade = SpawnMob(zone, 2530032, false, 154.12, 1.87, -175.74, 349.984)
if blade ~= nil then
Attack(blade, Player)
end
end
end
-function LeaveLocation(Zone, Player)
+function LeaveLocation(zone, Player)
end
-function enter_location(Zone, Player, GridID)
+function enter_location(zone, Player, GridID)
if GridID == 771354606 then
SendPopUpMessage(Player, "Sunset Meadow", 255, 255, 0)
end
end
-function player_entry(Zone, Spawn)
-AddPlayerMail(Spawn, "EQ2EmulatorDevTeam", "Welcome", "Welcome to EQ2Emulator, this project is currently in Pre-Alpha. We appreciate feedback and bug reports for existing content, and are always looking for additional talent! Thank you for testing and enjoy your stay! -The EQ2EMU Team", 2)
-SendPopUpMessage(Spawn, "The Queen's Colony", 230, 230, 230)
+function player_entry(zone, Player)
+ if GetClass(Player)==0 and GetLevel(Player)<3 then
+ ZoneRef = GetZone("IsleRefuge1")
+ Zone(ZoneRef,Player)
+ else
+ AddPlayerMail(Player, "EQ2EmulatorDevTeam", "Welcome", "Welcome to EQ2Emulator, this project is currently in Pre-Alpha. The best developed content follows the Commoner towards class progression. This is experienced by talking to Captain Varlos starting on the Far Journey or using the Desert of Flames client during character creation.\n\nWe appreciate feedback and bug reports for existing content, and are always looking for additional talent! Thank you for testing and enjoy your stay! -The EQ2EMU Team", 2)
+ SendPopUpMessage(Player, "The Queen's Colony", 230, 230, 230)
+ end
end
diff --git a/server/ZoneScripts/SinkingSands.lua b/server/ZoneScripts/SinkingSands.lua
new file mode 100644
index 000000000..02e397a49
--- /dev/null
+++ b/server/ZoneScripts/SinkingSands.lua
@@ -0,0 +1,52 @@
+--[[
+ Script Name : ZoneScripts/SinkingSands.lua
+ Script Author : premierio015
+ Script Date : 2023.12.15 09:12:09
+ Script Purpose :
+ :
+--]]
+
+local KallonsVengeance = 5938
+
+
+
+function player_entry(Zone, Player)
+
+end
+
+function init_zone_script(zone)
+ SetLocationProximityFunction(zone, -437.17, -76.6709, -982.485, 5, "CarpetKeeper", "Leave") -- Twin Tears(from Port of Tears)
+ SetLocationProximityFunction(zone, -1435.21, -227.165, -389.284, 5, "CarpetKeeper", "Leave") -- To Port of Tears(from Twin Tears)
+ SetLocationProximityFunction(zone, -2015.96, -232.919, 602.109, 5, "CarpetKeeper", "Leave") -- To Onerock Isle( from Port of Tears)
+ SetLocationProximityFunction(zone, -1435.4, -226.695, -374.085, 5, "CarpetKeeper", "Leave") -- To Port of Tears(from Undercity Arena)
+ SetLocationProximityFunction(zone, -1457.96, -226.741, -399.553, 5, "CarpetKeeper", "Leave") -- To Port of Tears( from Onerock Isle)
+end
+
+
+
+
+
+function LeaveLocation(zone, Player)
+end
+
+function enter_location(zone, spawn, grid)
+end
+
+function leave_location(zone, spawn, grid)
+end
+
+function dawn(zone)
+end
+
+function dusk(zone)
+end
+
+
+function CarpetKeeper(zone, Spawn)
+ if IsPlayer(Spawn) and IsOnAutoMount(Spawn) then
+ EndAutoMount(Spawn)
+ end
+end
+
+function Leave(zone, Spawn)
+end
\ No newline at end of file
diff --git a/server/ZoneScripts/SouthQeynos.lua b/server/ZoneScripts/SouthQeynos.lua
index c19269ffd..eb6e85082 100755
--- a/server/ZoneScripts/SouthQeynos.lua
+++ b/server/ZoneScripts/SouthQeynos.lua
@@ -8,9 +8,13 @@
dofile("SpawnScripts/NorthQeynos/QueenAntoniaBayle.lua")
function init_zone_script(Zone)
-
+ SetLocationProximityFunction(Zone,479.03, -9.20, 127.18, 10, "FountofStorms","LeaveLocation")
end
+function FountofStorms(Zone,Player)
+ SendPopUpMessage(Player, "Fountain of Storms", 255, 255, 0)
+ end
+
function player_entry(Zone, Player)
SendPopUpMessage(Player, "South Qeynos", 230, 230, 230)
end
diff --git a/server/ZoneScripts/TempleSt.lua b/server/ZoneScripts/TempleSt.lua
new file mode 100755
index 000000000..d21151507
--- /dev/null
+++ b/server/ZoneScripts/TempleSt.lua
@@ -0,0 +1,19 @@
+--[[
+ Script Name : ZoneScripts/TempleSt.lua
+ Script Author : Dorbin
+ Script Date : 2023.10.28 07:10:20
+ Script Purpose :
+ :
+--]]
+function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone,38.46, 3.04, 95.59, 15, "DefiledTemple","LeaveLocation")
+
+end
+
+function player_entry(Zone, Player)
+ SendPopUpMessage(Player, "Temple Street", 255, 255, 255)
+end
+
+function DefiledTemple(Zone,Player)
+ SendPopUpMessage(Player, "The Defiled Temple", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/The Sprawl.lua b/server/ZoneScripts/The Sprawl.lua
new file mode 100755
index 000000000..7007d82cf
--- /dev/null
+++ b/server/ZoneScripts/The Sprawl.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : ZoneScripts/The Sprawl.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.06 05:06:44
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone,49.83, 3.05, 108.07, 12, "MagusMill","LeaveLocation")
+
+end
+
+function player_entry(Zone, Player)
+ SendPopUpMessage(Player, "The Sprawl", 255, 255, 255)
+end
+
+function MagusMill(Zone,Player)
+ SendPopUpMessage(Player, "The Black Magus Mill", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/TheDisconcertingMeditation.lua b/server/ZoneScripts/TheDisconcertingMeditation.lua
new file mode 100755
index 000000000..a479c6a26
--- /dev/null
+++ b/server/ZoneScripts/TheDisconcertingMeditation.lua
@@ -0,0 +1,23 @@
+--[[
+ Script Name : ZoneScripts/TheDisconcertingMeditation.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.21 03:11:31
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+EnterMessage(Zone,Player)
+SpawnSet(Player,"visual_state",496)
+
+end
+
+function EnterMessage(Zone,Player)
+ SendMessage(Player, "You feel that the meditation will only last a short time. You must hurry!","yellow")
+ SendPopUpMessage(Player, "You feel that the meditation will only last a short time. You must hurry!",250,250,250)
+ PlaySound(Player,"sounds/ui/ui_warning.wav", GetX(Player), GetY(Player), GetZ(Player))
+end
diff --git a/server/ZoneScripts/TheGraveyard_Classic.lua b/server/ZoneScripts/TheGraveyard_Classic.lua
new file mode 100755
index 000000000..18a882a42
--- /dev/null
+++ b/server/ZoneScripts/TheGraveyard_Classic.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/TheGraveyard_Classic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.06 05:06:33
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+
+end
+
diff --git a/server/ZoneScripts/TheRuins_Classic.lua b/server/ZoneScripts/TheRuins_Classic.lua
new file mode 100755
index 000000000..8a5de84f4
--- /dev/null
+++ b/server/ZoneScripts/TheRuins_Classic.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/TheRuins_Classic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.06 05:06:47
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+
+end
+
diff --git a/server/ZoneScripts/TheSunkenCity_Classic.lua b/server/ZoneScripts/TheSunkenCity_Classic.lua
new file mode 100755
index 000000000..4090b470f
--- /dev/null
+++ b/server/ZoneScripts/TheSunkenCity_Classic.lua
@@ -0,0 +1,20 @@
+--[[
+ Script Name : ZoneScripts/TheSunkenCity_Classic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.06 05:06:29
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+ SetLocationProximityFunction(Zone,7.78, 0.21, -61.99, 12, "ShrineofPrexus","LeaveLocation")
+
+end
+
+function player_entry(Zone, Player)
+ SendPopUpMessage(Player, "Sunken City", 255, 255, 255)
+end
+
+function ShrineofPrexus(Zone,Player)
+ SendPopUpMessage(Player, "The Shrine of Prexus", 255, 255, 0)
+ end
\ No newline at end of file
diff --git a/server/ZoneScripts/TheThievesWay_Classic.lua b/server/ZoneScripts/TheThievesWay_Classic.lua
new file mode 100755
index 000000000..a53d61c32
--- /dev/null
+++ b/server/ZoneScripts/TheThievesWay_Classic.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/TheThievesWay_Classic.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.06.06 05:06:11
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+
+end
+
diff --git a/server/ZoneScripts/TroubledHaunt.lua b/server/ZoneScripts/TroubledHaunt.lua
new file mode 100755
index 000000000..00a574651
--- /dev/null
+++ b/server/ZoneScripts/TroubledHaunt.lua
@@ -0,0 +1,15 @@
+--[[
+ Script Name : ZoneScripts/TroubledHaunt.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.27 01:11:19
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+end
+
diff --git a/server/ZoneScripts/WayfarersRest.lua b/server/ZoneScripts/WayfarersRest.lua
new file mode 100755
index 000000000..85b808a2a
--- /dev/null
+++ b/server/ZoneScripts/WayfarersRest.lua
@@ -0,0 +1,16 @@
+--[[
+ Script Name : ZoneScripts/WayfarersRest.lua
+ Script Author : Dorbin
+ Script Date : 2022.11.15 04:11:06
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+ PlaySound(Player,"sounds/ambient/amb_tavern1.wav",0,0,0)
+end
+
diff --git a/server/ZoneScripts/WestFreeport.lua b/server/ZoneScripts/WestFreeport.lua
new file mode 100755
index 000000000..9d06b77a8
--- /dev/null
+++ b/server/ZoneScripts/WestFreeport.lua
@@ -0,0 +1,24 @@
+--[[
+ Script Name : ZoneScripts/WestFreeport.lua
+ Script Author : LordPazuzu
+ Script Date : 2023.11.02 08:11:14
+ Script Purpose :
+ :
+--]]
+
+
+function preinit_zone_script(Zone)
+
+ RemoveWidgetFromZoneMap(Zone, 3680524526)
+
+end
+
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+
+end
+
diff --git a/server/ZoneScripts/qey_epic11_l10_arbor.lua b/server/ZoneScripts/qey_epic11_l10_arbor.lua
new file mode 100755
index 000000000..0390be0d4
--- /dev/null
+++ b/server/ZoneScripts/qey_epic11_l10_arbor.lua
@@ -0,0 +1,17 @@
+--[[
+ Script Name : ZoneScripts/qey_epic11_l10_arbor.lua
+ Script Author : Dorbin
+ Script Date : 2022.12.19 08:12:43
+ Script Purpose :
+ :
+--]]
+
+function init_zone_script(Zone)
+
+end
+
+function player_entry(Zone, Player)
+ SendMessage(Player,"Crackling can be heard from the other room. Something has disturbed this home recently.")
+
+end
+